Screaming into the void
This isn't the first time I've built somewhere to publish my displaced, angry, or sometimes concerningly macabre thoughts.
The first time around, I used React with Contentful as a content management system which, if I'm being frank, was completely pointless. At the time, it was a fun experiment, but I've developed even more as an engineer since then. And I 'm enjoying client-side about as much as you'd enjoy it if I was in your house at night.
React is now, basically, totally out of the wheelhouse for any personal projects that I'm going to develop. Why? Because I don't need it. I am more than aware of the full spectrum of client-side frameworks available — but none of them are really, truly holding my interest.
Predictably, the question on your mind is now, most likely, "If you're not using client-side, what are you using?"
Well, that, amongst the follow-ups:
- "But why don't you need client-side?"
- "What if you want to make something super interactive?"
- "But isn't client-side* just easier?"
The answer to those questions, and more, is: fuck you.
Stop being so small-minded. Everyone and their mother has built something in React, Vue, Angular, Svelte, or one of the many other derivatives of modern, "progressive" frameworks at this point.
"Consider the elephant..."
I've stepped back a decade: I've written this in PHP. Yes, PHP: Hypertext Preprocessor.
I've been using PHP a lot more in the past 18 months and I'm enjoying it more than ever. I've re-upped Symfony as a target for what I want to use to build now but, for Starless specifically, I decided to dive into something entirely different: Tempest.
Do I love Tempest now? Do I think it's perfect? Am I going to statically recommend that everything is now built in it?
The shortest answer? Once again: fuck you.
You're being small-minded again. Tempest was a tool I wanted to try and now I have. Not everything you use needs you to vouch for it at every possible available moment.
Do I love it? No. I went into the project in one mindset, exited with another, and had my own issues along the way.
Do I hate it? No. I can see its value and, at some point, I might end up needing it for a project where it's the best use case.
Whilst I don't have the greatest feelings about Tempest right now, I have a huge amount of respect for its creator, Brent Roose and I can see what he's going for. Does every decision align with my own personal preferences? No. And that is more than okay.
Perfection whilst simultaneously being right
Tempest aside, I basically write content directly in the repository as Markdown with front-matter and that's it.
It's not new. It's not fancy. It's just clean. It works.
PHP has made immense, growing strides in the past decade and is genuinely one of my preferred languages again. We're going to ignore the immutable and never-ending debate around generics and just assume that, at some point, we will have them. And, yes, enumerations are a bit weird.
Even so, the paradigm works. The framework loads, processes the content it knows it has to process, in the way it's been told to process it, and then that's it. The content is displayed.
It works. It does what it needs to. It does it cleanly. And I didn't need a fucking virtual machine in the browser just to render some Markdown.
Once all of this dawned on me, being a programmer was a lot easier. I used to have a real problem with perfection. Whatever I wrote was supposed to be perfect, to the point it blocked me, constantly. But there is a middle ground.
Is everything in my code for Starless perfect?
No.
Should it be?
No.
Will it be?
In the future, Starless will be feature-complete. That doesn't necessarily mean it's going to be the best code in the world. It does mean it's going to be the best code for Starless though.
I've read this weirdly aggressive entry. What now?
Whatever you want. Close the tab and forget it exists, or send it to someone. Laugh, vent, cry. Who cares?
I do have a few more things I want to add though. Starless is, by no means, complete and I'm still using it as an experiment to have long-term experience with Tempest. There's components of the framework I don't use but would like to. There's features that I want to add that I don't necessarily want to talk about until they're done.
For now though, if you want to see what the code actually looks like, it's all live on GitHub.
In the future, expect more posts that are, fairly obviously, going to dive into the darker side of being an engineer, from my own personal and professional experiences.