Signup to the waiting list!
A person asked me a question a few days ago. The person wanted to start a blog, and they decided to write their own platform for it, using Angular in the frontend.
My reply was that if the goal was blogging, then they had to scratch that idea, and use an off the shelf solution.
That must have been badly received, as I didn’t get a reply, but my point is this: if you want to create a blog and be serious at it, then use the most boring and bulletproof thing you can find. Definitely don’t work on your blog infrastructure if you want to do any serious blogging.
The tech must go out of the way, you should only focus on the content.
Otherwise you’ll spend most of your free time tweaking the blog platform (which - let’s be clear - no one except you cares about) instead of writing content. No one cares about that infrastructure.
If you want to make a video, are you going to write a YouTube clone first? Can it handle 100M simultaneous visitors? Reminds me of people wanting to write video games and starting to build a physics engine first, never ending the game in the process.
I use Hugo, a static site generator.
Hugo is the best one for me as it’s focused on blogging and markdown. It is boring. Its templating language is boring. It’s so boring that when I have to tweak something I fall asleep. I love it.
The best feature of Hugo is that it’s fast, I think mostly thanks to the use of Go under the hoods. Looks like a boring feature these days.
“Look at Gatsby, it’s so fancy and shiny!”
Gatsby (just used as an example, nothing against it) is already too much fancy for my taste, even though it’s a great tech. Why? It makes you focus too much on the tech and less on the outcome. As a developer, you might feel that is awesome, but it’s not. React, GraphQL, it’s all a bit too exciting.
It reminds me of Redux, and people excited about the demo with “time travel”, a really useful feature for day to day coding [end of joke]. People happily overcomplicated their apps just to use a shiny tech.
Let’s talk about prefetching for example. Do we really need prefetching when a static site is already as fast as possible? Are our blog visitors asking for it? What are the cons? What can go wrong?
Remember Murphy’s law: “Anything that can go wrong will go wrong”
I once talked to a person that started a blog using Gatsby only to realize they didn’t enable server side rendering, even though they though they had it enabled, which made the blog nearly invisible to Google (yes I know they execute JS sometimes, but bear with me, stick to boring server side rendering).
In an average blog, you get an average of 1.1 / 1.2 page view per user. This means the vast majority of your users are going to come to your site, probably via Google, take a quick look and go away. Do you really need to prefetch all your links? Why waste all that data and power?
Let’s stop going against Gatsby, I really like it as a tool to make websites and apps.
My point was that to start a simple blog, you don’t need probably 80% of what it does. Use a simpler tool, a tool made just for blogging, and definitely don’t write your own.
This applies to more complex applications. Should you use the technology you know since 10 years, or should you jump on that cool tech you know nothing about, but everyone talks nicely about? Should you use Rails, or Elixir? Should I write my next app in TypeScript or Reason? C, Go or Rust?
Lots and lots of man hours are lost forever as we collectively jump from old library to new library and from old framework to new framework. Think jQuery, Backbone and Ember, plus all the gazillions ones that came before or after them. Think AngularJS vs Angular. Think all the PHP frameworks that came before Laravel took the PHP world by storm. Remember the NoSQL “revolution” that made us all reconsider using MySQL in favor of fancier and more flexible database systems? Turns out SQL is still going strong.
“Just use MySQL, the boring tech revolution is here” Marty Weiner, Reddit CTO, 2016
Most of the tools that developers consider industry standards are built by huge companies like Google and Facebook and they are perfect for their needs. A small team or solo developer might happen to have the same needs, but is that likely? Or is it all driven by the peer pressure and hype? Or by marketing?
One rule is that you know the pitfalls of your platform, the grass is always greener on the other side of the fence, and you like to imagine new platforms being 100% perfect. That never happens, and the devil is in the details.
Details that maybe you mastered in years of investing in that stack that now looks boring to you, because you are an engineer! You like challenges! You don’t want to miss out on the opportunity to learn new things!
You can still do it.
I think that you should always experiment, create side projects, but when it comes to critical platforms (like your blog platform, that’s critical if you are serious at it), the boring tech is better. And understanding this concept is part of becoming a senior developer.
More lab tutorials:
- The stack I use to run this blog
- 8 good reasons to become a software developer
- SEO for developers writing blogs
- Review of the book The 4-Hour Work Week
- Build a lifestyle business
- Build your own platform
- As an indie maker, what kind of product should you build?
- Create your own job security
- Developers, learn marketing
- The freedom of a product business
- Generating value
- Have a purpose for your business
- The idea is nothing
- The niche
- Remote working for software developers
- Product / market fit
- The best podcasts for frontend developers
- Why should I create an email list?
- Disconnect time from money
- The scarcity principle applied to software products
- The social proof principle
- How I added Dark Mode to my website
- My notes on the Deep Work book
- The pros of using a boring stack
- How to estimate programming time
- On going independent as a developer
- How to learn how to learn
- Why interview questions for programming jobs are so difficult?
- Do I need a degree to be a programmer?
- Everyone can learn programming
- How to be productive
- How to get the real number of pageviews of a static site
- Have you filled a developer bucket today?
- How I record my videos
- All the software projects I made in the past
- Tutorial purgatory from the perspective of a tutorial maker
- Every developer should have a blog. Here’s why, and how to stick with it
- Having a business mindset for developers
- How to write Unmaintainable Code
- What is Imposter Syndrome
- How to work from home without going crazy
- How I prototype a Web Page
- You should be the worst developer in your team
- How to start a blog using Hugo
- Write what you don't know
- How to block distractions using uBlock Origin
- Coding is an art
- I wrote 1 blog post every day for 2 years. Here's 5 things I learned about SEO
- Dealing with the fire
- On being a generalist
- The Developer’s Dilemma
- My plan for being hired as a Go developer. In 2017
- Productivity gains of using a Mac and an iOS device
- How to go from tutorials to your own project
- This is my little Digital Garden
- How to start freelancing as a developer
- Sharing the Journey Towards Building a Software Product Business
- Subfolder vs subdomain
- How I use text expanding to save time
- Software is a superpower
- I love books
- How I decided to create a new projects management app
- On using IndexedDB as the main database
- How to automatically cut silence in videos