Why Write a Blog In the First Place?
Tech blogs may be a dime a dozen, but that doesn't matter: blogging is my favorite way to share topics I enjoy - and with the freedom to write on my own schedule.
I've traditionally been reliant on social media to share tech topics with my peers, but social media in 2023 is a mess. Twitter/X/whatever is awful, Threads hasn't impressed me yet, and LinkedIn doesn't feel very genuine.
Once I decided to start a new blog, I had to choose among (literally) thousands of blog platforms and services. Rather than do that, I did the sensible thing any developer would do: I wrote my own self-hosted blog platform!
But why? To reinforce and prove out everything I deeply believe about software.
What Makes Great Software
Software is hard. That's a truth that extends to every possible measure: software is hard to write, hard to maintain, and hard to impress every user.
Over the years I have found that the best software focuses on simplicity. Software should be:
- simple to use
- simple to understand
- simple to modify & maintain
- readily available (which usually means open source)
On the surface, really good software solves a single problem with as few complications as possible - it serves a simple purpose. This makes software easy to understand for users ("I need to do something and this app does exactly that!"). Software should be written with straightforward code - not clever code, not obtuse code - just enough code to solve a problem (accompanying documentation helps). As a result of simple, easy-to-read code, software can be maintained over time by a variety of developers. If software is open source or written so simply, it should be able to be modified and used on any platform today and tomorrow without worrying about compatibility issues.
That's what software should be.
The Why
Beyond demonstrating my fundamental beliefs about how software should work, I wrote my own blog platform for a variety of practical reasons.
A Learning Opportunity
The blog engine I created for Sitecore Spark (my Sitecore-focused blog) was built on .NET Framework 4.7, so I decided to port that to .NET 6 with an MVC architecture as a learning exercise on where .NET is nowadays. I learned a lot about the latest versions of .NET, C# (target-typed new expressions are a thing!), and JavaScript.
.NET (previously .NET Core) is a flexible, modern, multi-platform technology that iterates nicely on my 15 years of .NET Framework experience, so I was able to get up and running quickly without having to learn a new ecosystem.
Full Control
I didn't need the bells and whistles of a platform like WordPress or wanted to deal with the lock-in of a hosted platform. Quite simply, I want to control the full experience - for both myself as a developer and for end users. A blog platform is actually pretty simple software to write: store posts, list posts, and display a post.
Open Source Matters
I've traditionally been a closed-source software kind of guy - it's certainly helped me get a solid paycheck for sure! But the fun stuff - my passion projects, learning opportunities, speaking engagements, and hobby demoes - are always put out in the open. I hope others learn from my code (both the good and the bad) as much as I've learned from the open source code of others.
SQLite
I'm being realistic about my scaling needs: as where SparkServer used SQL Server Express for a data store, I integrated a built-in SQLite database for my new blog platform. It's perfectly performant, simple to deploy, and easy to backup. As a bonus, it's far less resource intensive on Azure-based web server, so my hosting costs stay down.
SparkServer Lite on GitHub
My new blog platform is called SparkServer Lite and is fully open source on GitHub. Check out the source, clone it, fork it, or just tinker with it if you'd like!