Recently, I went to a Waffle House for the first time. It was really cool. I wasn’t there to eat, though; I went there for an interview.
I think if they found out that was the first time I’ve ever been to a Waffle House they would die. (…and then not hire me lol)
Did y’all survive Independence Day weekend? I think I did. I hope.
I think it may be time in the next few days to perform my server move from Vultr to Hetzner… again. I switched back to Vultr because I was not very impressed with the performance I was getting from Hetzner. Notably, I would have to shut down my webserver in order to rebuild the site when I was still using Next.js. There is a trade-off for better performance, though… I am paying double what I paid Hetzner per month for the privilege. Ouch.
So, considering I still don’t have a job, I should have made this move before I moved (which is another thing to add to the “things I should have thought about before I graduated and moved multiple states away” list) — but now that I am actively coming up on a situation where I need multiple separate VPS’s in order to do what I want, it would be much more cost-effective to go back to Hetzner. So… that’s what I’m going to be doing soon.
If y’all have any tips on how to build a CI/CD system for sites like mine (Astro + NGINX reverse proxy) or how to Dockerize Astro sites, specifically as part of a Forgejo Action (i swear to god it has been a lot harder than it needs to be to make a containerized setup work), please reach out opens in a new tab. I am just a widdle gal and I don’t know what the fuck I’m doing and everything is just way too confusing.
Finally, right now I am writing this journal entry in iA Writer opens in a new tab, but I think for my next entry I should be crazy and write it using a Neovim Markdown extension… Technically, since they’re written in Lua, I could make my own extension to add basic MDX parsing for the components I use (for example, making MDXCallouts look a little more like they would in the browser)… which would also be a good excuse to start thinking about how I could represent these components in plaintext or Geminispace opens in a new tab (remind me to make a blog post about Geminispace one day like I’ve wanted to for a whole year now lmao).
Whoops, never mind, it still doesn’t update dynamically. I’m going to screm
Good news: the sharefeed is now an Astro content collection! Thanks to the recent upgrade, it was a lot easier to turn it into a content collection.
Bad news: due to the re-formatting of sharefeed entries I had to do in order for this to work, I might have made your RSS readers see all the entries as new items. Whoops.
More good news: I’ve now got a basic Micropub implementation
going that can create, update, and delete journal entries as well as create new sharefeed entries. Using Postman opens in a new tab to test the API, it just works!
More bad news: turns out if I want to make the Micropub implementation work the way I want it to, I need to make sure that both the journal and sharefeed pages server-rendered pages instead of prerendered static pages. I don’t think this will impact performance too much, but if I didn’t do this, just an endpoint on the webserver wouldn’t be enough to automatically update the site.
Eventually, I would want to make this stuff more “isolated”, possibly with a separate Express opens in a new tab worker… but the main concern I have right now is setting up proper OAuth2 Bearer Token authentication. Ideally, I would set up a completely different server for authentication… which costs money. Right now, I just want to get everything else working, then put the project on the back-burner until I get the auth system figured out (since I’ll also need that auth system for the comments section I plan on implementing).
Finally, fun fact: This post was actually written in iA Writer opens in a new tab, transferred to Postman, then sent to my dev server through the Micropub protocol. Yay!
Whoops, I forgot to update the RSS feed to work with the new content collection system. So I did that.
…and I also updated it to now
include journal entires, and
include both the published date and the updated date (since apparently date on the library I use is put into the updated field
on the Atom feed because OF COURSE IT DOES).
So that’s fun! Hopefully I didn’t break your feeds too bad. I also hope that sending the rendered HTML of each entry actually works…
we’ll see! 0:3
A day later and I did the tedious part: converting the big journal page into a series of individual .mdx files in an Astro content
collection. That was… fun.
It turns out that Astro slipped an overhaul of their content collection system right under my nose when I wasn’t looking. In their
5.0 update, opens in a new tab they upgraded the system into a full-fledged “content layer”
( heyyyyyy opens in a new tab) that supports processing all sorts of #content and #data from literally anywhere you want.
Part of this update was literally giving you the freedom to process the data however you want, replacing the weird type attribute
with a new loader attribute that you can slot either the two built-in functions (representing the two old type’s) ooooooor your
own bespoke function for whatever content you want to work with. It’s actually really cool… and slightly breaking compared to the old
system. Whoops. So, just to be on the safe side for the future, I migrated from the old system to the new system.
After that, it was pretty simple to get the new journal set up… it was just really tedious to make all the new individual files and copy
all of the content over. Honestly, it kinda made me wish I had a generative AI agent handy, but I would rather move slowly and ensure that
everything works right than move fast and break everything with AI slop. I also decided to make the now and todo sections of the journal
their own files for later use with Micropub opens in a new tab. This way, I can (eventually) not only make new journal entries
outside a code editor, but I can also update those journal entries and the now & todo sections outside a code editor!!! How sick would
that be???
Now that I’ve done all that, though… look!!! Pages!!!!! It isn’t just one giant page anymore!!!!!! Currently, I’ve got it set to display
10 entries on each page, but I might tweak that later. I’ve also got it set up to only display the now and todo sections
on the first page, and only display the really old entries section on the last page. Pretty slick, huh?
My main worry when implementing this was that all of the async stuff I had to add to get this to work would mean excess loading, but I think
I can solve that by making this page static instead of server-rendered (the pages are precompiled with all of their content, so
when the browser requests the page, all the server needs to do is hand the browser that precompiled page instead of having to go and fetch
all of the content it needs first). All of the blog posts are handled this way, so I figured it would be worth it to do it for the journal
page as well.
Also, while I haven’t started implementing it yet (I’m waiting for the weekend to do that), I have started looking at the
Micropub specification… opens in a new tab and it seems like a really good “baby’s first protocol implementation project”.
Everything is very straightforward & well laid-out, and both the h-entry and h-cite microformats seem great for what I am personally
looking for. The Micropub protocol itself seems pretty loose when it comes to what you can do
through it: as long as the client and the server agree, you can exchange whatever data you want. So, for instance, I can staple a
note field to my h-cite entry for use with the sharefeed and hope none of the
IndieWeb opens in a new tab people get mad at me for sacrilege. Alternatively, I could make the in-reply-to field in my
h-entry its own h-cite object so I use the same base microformat for both journal entires and sharefeed posts, but I think that might
be a bit too tryhard… I’ll figure it out once I get a base implementation going for journal entries.
Finally, I made some other miscelaneous changes lately. For example, I got rid of that stupid external link icon and replaced it with a more
subtle change: all links (within markdown, at least) now have underlines, and they are dashed if they are internal links and dotted if they
are external. Will anyone notice this? Probably not. Do I need a better solution? Yes. But that’s for later me.
I think I’m finally starting to get to the point where editing a big long Markdown document for my journal is starting to make less sense.
The way I’ve got things set up right now, it’s hard for me to publish my journal entries in my RSS feed, as I would need to scrape this
document for date headings. However, if I use Astro’s built-in “content” system instead (like I already do with all of my blog posts), I
will be able to parse those MDX files just like I do with my blog posts when it comes to RSS. It will also mean I will finally be able to
build pagination into this page very easily: since each journal entry would be its own “object”
instead of a part of one massive document, I can make the actual journal page whatever I want and process each entry however I want.
It would also mean I could technically build some sort of API to automatically submit journal entries to my site whenever I want, like
through Micropub. opens in a new tab Since MDX is just plain text when you boil it down to its bare elements, it would be
trivial to send that plain text through Micropub, save that text to a new .mdx file, then recompile the site to serve that new entry within
a few minutes. It would also also mean that I can use Micropub to produce sharefeed entries as well, but that may require
wrangling JSON file editing (unless I also times 3 migrate the sharefeed into its own content collection and unify every type of #content on
this site under one spaceship roof).
I’ve added my plans to the todo list up top so we can all keep track of what I’m doing… which reminds me, I should probably finish that
unlisted article I linked up there, huh? I’m also not sure exactly what I’m supposed to do with the now section… I mostly use it
for shitposting or random status updates whenever I touch this page. I get the feeling that I’m supposed to do more with that section, like
listing out the books I’m reading (none atm) or what projects I’m working on (this site, trying not to starve)… but I don’t really have
much to put in there other than. whatever.
I made a cool little thing. It’s called the Sharefeed Entry Tool opens in a new tab and it’s my way of decreasing
the friction between me seeing something cool and logging it in the sharefeed . It auto-generates a JSON object with
the url of the webpage, the current date and time, and if it detects metadata it can grab on the current page, all the other data I would
need to make the sharefeed entry. It currently supports all Substack websites, Medium, YouTube, GitHub, and more… and I only made it
in a day or two. Without AI.
I really want to make a blog post about it soon, so I’m going to hold off on rambling about it too much for now. Instead, I’m going to
share this cool ambient piece with a real Rhodes opens in a new tab and try to calm down after a slightly
stressful day. Mwwwah, love you, bye.
June 14, 2025
I did it. I graduated from college with a bachelor’s in computer science. I have an… okay GPA — worse than I would like it to be, but considering everything, I think
everything turned out okay in the end. I also got some silly certificate and a cool “emphasis” but none of those really matter.
Now I just need to get a job. And I don’t think that will happen.
I moved to an area that is absolutely not condusive to my current line of work. I would need to relocate again or get a remote job to find something good, and even then,
the market is absolutely horrible right now. Everyone wants to fire. No one wants to hire. It’s going to take me a minimum of three months to find a decent job. I can’t
wait that long.
So, here’s what I am going to do: I’m going to see if I can get some income. Work a minimum-wage service job for less than I made in college. From there, I can wait for
the market to decide I matter. I’ll network constantly, looking for new opportunities. I’ll continue doing what I’m currently doing, working on this site and at FurSquared opens in a new tab,
to continue to hone my skills and find more ways to network.
I’ll also be looking at solidifying one additional side project that I can slap on a portfolio. For example, I recently discovered the right way (for me) to use Notion: use
the database tool to quickly organize personal data in a fast and intuitive way. I currently have on a second monitor (!!!) a kanban board full of the job applications I’m managing
that I can easily turn into a Gantt chart to visualize when I need to take next steps. It’s lovely. But it has limitations. I can only look at one view at a time;
I can’t combine them. Automations are locked behind a paywall. Everything is in the cloud in servers I do not control, which means if some big brain hacker wanted to see
all the anime I want to watch for some reason, they might be able to find a way.
Ideally, I would want the automations to be something I can easily “script” using
a language like Lua or Python (so more advanced automations can be made without having to push through a silly visual workflow). I would also have the views
themselves be more customizable, also possibly with a scripting language. Finally, I can start everything as a local-only app w/ a basic SQLite database and eventually
work my way to self-hosted paradise (so eventually I can make my own mobile apps for it!!)
This may be a bit too over my head, especially considering a big reason why Notion works
so well for me right now is because it’s right there and Just Works™… but there’s a little shit in the bottom-right corner that periodically animates itself
to goad me to look at it, click on it, and remember it’s their stupid AI thing they desperately want me to use and I want that twink obliterated. So, the perfect
reason to reinvent the wheel :3
Since it has been again a hot minute since I wrote a blog post, I’m going to make a new one real quick about my misadventures moving to a new setup and
what I plan to do now that I am out of school.
I tried creating a CI/CD system with Docker containers and Forgejo Actions… and it worked once. Now it doesn’t work.
I’m going to revert back to my old method, which involves a local node server managed with PM2, and figure out why Docker refused to cooperate later.
I made this system so I didn’t have to think about pushing changes, but since I clearly have to think about this a lot more with this system, it just
isn’t worth it.
Today I learned that NetNewsWire opens in a new tab added an extension to Safari that puts a little RSS button to the left of the address bar.
When you click it, it auto-magically finds the RSS feed for the website you’re currently on and opens the “New Feed” dialog on NetNewsWire w/ the
feed’s URL already copy-pasted into the dialog box. Found a new blog that you think is neat? Two clicks ( philip opens in a new tab)
and that blog can be added to your RSS reader, ready to view on both your laptop and your phone whenever you want (remember, this app has iCloud sync! :3).
I immediately went through my sharefeed and added as many blogs as I could to NetNewsWire. I doubled the amount of blogs in my “Blogs” folder.
I feel like a god.
…But I also realized how neglected my sharefeed has become lately. The last entry to it before today was in August. Of last year. Ouch.
Have I just run out of content to regurgitate? Nope. I’m still glued to my Hacker News Telegram bot opens in a new tab, saving articles that look cool.
I just haven’t read many of them to the point where I feel comfortable doing my blog equivalent of a retwskeet yet. I save, but I do not engage.
I hoard instead of currate.
I’m not sure how to fix this other than… doing the freakin’ thing more often. I’ve thought about automating the process of adding new entries
a little more, maybe with a tiny wizard script that asks for each field and then adds that object to the JSON array… but I feel like making
that whole thing work would be overengineering, as opening up the JSON array itself and adding the object myself is just as easy.
Hopefully, this little button in Safari will help me keep tabs on sites I like better. I’ve really enjoyed the thought of using RSS readers, but
I keep running into little issues with them. NetNewsWire has solved most of them, but even then I get more outside problems like “oh god why did
I add this news website, now I get like 100 new articles a day about things I don’t care about and half of them are ads and I can’t keep track of
all of these posts aaaaaaaaaaa”. The more I replace these big news sites with a bunch of smaller blogs, the better my RSS experience will be, I think.
note
This is my call-to-action: If YOU use RSS readers to subscribe to blogs and other websites you enjoy, please email me with what sites you
subscribe to! I would love to hear about more cool places on the internet from other like-minded people.
Oh, and I’ve decided it would be a cool idea to make a blogroll to more explicitly recommend sites and people I find cool.
I’m still wanting to flesh it out a little more before I publish it for real, but I hope it will be a good resource when it is released.
In fact, it has officially been six-ish months since this version of my website has been around
(yes, it’s only been two since I switched to Astro, but since that was more of a technical migration rather
than a whole website redesign, I’m not counting that lol).
On one hand, it is really cool that I’ve settled on something that I can feel proud of every time I look at it.
On the other hand, my god do I need to put more stuff on here.
So, here’s the current plan:
Make an editing pass on the last blog post (FINALLY) so I can stop worrying about it.
Just. Write. Goddammit.
Theeeeeen maybe we can worry about that fancy comments system I keep fantasizing about.
Heck, if you want to leave me a note on one of my blog posts, there’s a great way to do so: email me! Or fedi me!! Or bsky me (ok maybe dont do that because i rarely use bsky)!!!
The main reason I want to implement a comments system is to build a community… but I can’t really do that if
there are no people to fill it. So if you want to be a part of that, let me know.
…Completely unrelated question, does anyone want to see an eleboog.com IRC chatroom?
As I said in my now entry, my hyperfixation has returned to this website. I do not control the hyperfixation, and I wish it would hyperfixate on class instead, but since this is still somewhat productive, I’m okay with it being here for now.
The main thing that I did was add my first “interactive” element: the accordion.
When you click or tap on the box, it unfurls into a section that can contain literally anything I want… like an image of another accordion!
A screenshot of the "todo" accordion I currently have at the top of this page. Unchecked tasks include "Potentially add an extra 'new-tab' flag to MDX links (a space & '+'' after the link in the parentheses? that might be too complicated
to implement nicely tho)" and "Set up a dev version of this site & start implementing the account system!". Checked tasks include "Make external links open in a new tab. This should be pretty easy to implement." and "Automatically insert an 'external link; icon on links that open in a new tab."
However, there’s a problem with this: it requires Javascript to function. I want my site to be completely functional without Javascript. So,
there is a fallback for if JS is disabled.
A screenshot of that same "todo" accordion but with Javascript disabled. It just looks like a regular section of the page, but with a special icon showing that it was meant to be an accordion.
Now that I know how to make stuff like this and give them noscript fallbacks, I feel much more confident about “Phase 2” of my site (implementing a comments section and account system).
The prototype version of my site with an accounts system should be coming out by mid-December. It will likely be hosted on a completely separate server (not on Hetzner lmao) and require manual approval to sign up. I’ll make sure to give you a little badge next to your name in the comments if you help me out with beta testing, though :3
Currently, my ideas for Phase 2 consist of the following:
Accounts will not use passwords. There will be two authentication methods available: passkeys and single sign-on. SSO is the easier of the two, as it just refers to using another site to log onto this one (right now, Google, Microsoft, and Discord are the sites I’m thinking of using for SSO). Passkeys are more secure but not fully ready for prime-time and obscure in documentation. I’m implementing them partly as a challenge to myself and partly as a way to yell at everyone else “HEY!!! THESE ARE COOL!!! WE SHOULD USE THESE MORE!!!!” I’ll be sure to make a guide on how to sign up with passkeys and/or add passkeys to an existing account for those who are not in the know yet. Eventually, I will want to fully move my account system to only use passkeys, but I recognize that I can’t do that now with the current state passkeys are in.
Even after the beta, I’ll likely have account signups operate under a manual approval / application system. Basically, you’ll have to prove to me that you aren’t a bot or a Nazi, and if I believe you, I’ll let you in. This is my way of preventing spam and exploitation of my site.
I want the accounts system to be flexible enough to where they can be used for things other than just my comments section. If I ever make a forum on my site again, the forum will use these accounts. I also want accounts to have their own profile pages so if you see someone in the comments you think is cool, you can check out their profile and follow them on other places. I want the comments section to be its own sort of community, and stuff like profile pages helps reinforce that aspect of community imo.
Is this way too much effort for an obscure blog’s comments section? Yes. Is this just a way for me get more portfolio work done and justify it with a lofty humanitarian goal? Yes. But I think it will be worth it. It will be another thing to set my blog apart and hopefully encourage more people to check it out… and possibly give me money opens in a new tab.
The writing contained within this site may contain the author's personal opinions. These opinions do not represent any of the author's employers or other organizations the author is a part of — past, present, or future.