- The site platform
- The theme
- Where do I host the site
- The posts
- What do I do to promote the posts
- My workflow for posting an article
- Post images
- The newsletter
- That’s it!
The site platform
This site is a static site built using Hugo, the popular static site generator built using the Go programming language.
I want my site to be as dumb as possible, which means less points of failure. A static site satisfies this requirement, and provides many nice advantages as well.
The reason I chose Hugo are:
- generates plain HTML files, which make it faster than having to process every request server-side
- a static site is more flexible in terms of deployment and hosting
- it’s really fast, my local live reloading is instant and I don’t have to wait 10 seconds to recompile (
not every platform can do this on my 2010 Macbook Promy 2018 MacBook Air is faster but I still welcome speed)
- I like Go
- it’s simple
I originally used the Ghostwriter theme, slightly optimized and tweaked to serve my needs. I changed it so much over time that it’s now unrecognizable, but it was a great way to start.
Where do I host the site
I use Netlify. Here I describe how I automatically deploy my posts and schedule them.
Don’t exclusively write on Medium or on other platforms. Find out why you should focus on your own platform.
I write the posts using Markdown in Bear - awesome app. Markdown is a great format because it’s very portable - I could move to any other static site generator in a minute if I want, since using Markdown there’s no lock-in, but I’m very happy with Hugo.
What do I do to promote the posts
I post them on Twitter and add them in the email newsletter which I send every week. That’s basically it. I used to post articles on Hacker News or Reddit, but it mostly did nothing all the times I tried, so I stopped doing it. I’d still recommend doing it when starting out.
Posts are automatically picked up by Google. Find out my SEO tips.
My workflow for posting an article
When I write a blog post, I set the published date in the future.
I have a bad memory, so I write down everything. I have a list of scheduled posts in the Apple Notes app and I try to keep more than two weeks of content in front of me, so I don’t have anxiety about not knowing what I am going to publish or write about. This is key: there is nothing that can get in the way of daily publishing.
I push all my content to a private GitHub repository, which is synchronized to Netlify thanks to their Git integration.
Every time I push to GitHub, Netlify deploys an updated copy of the site.
I just run an IFTTT webhook every morning at 08:00 CET to automatically trigger a new deploy on Netlify, which will publish the blog post of the day (I date every post at 7:00 AM, just to be sure).
I might be sleeping or walking the dog at 8 AM, yet the post is published.
It’s nice to have this piece of the infrastructure out of my mind. I just know a post is going to be published.
It’s also going to be posted on Twitter automatically, thanks to another IFTTT applet which is linked to my RSS feed.
I make sure all the post images are optimized using ImageOptim, to avoid useless bandwidth usage and a faster page speed.
Sometimes I use an app to generate a banner image for the post, which is also used in the Twitter card.
I used to create an ASCII-text image, using TAAG.
I sometimes draw images using the iPad and an Apple Pencil. I use the Sketches app, it’s great. I am not gifted at all for drawing, I just like doing something kind of funny. It’s my own blog, so I can publish crappy artwork if I like.
2019 update: I rarely make banner images now
2020 update: I automated the OG images generation for my posts
I have one main newsletter. I send an email every week, with the list of the posts I wrote during the week, plus any new resource I create.
I used ConvertKit in the past. It’s great tool to start. Now I use a self-hosted solution called Sendy.
Find out why you should create an email list.
Twitter is a great platform for me. I have more than 9000 followers, which is not huge, but it’s not a small number.
Even though I joined Twitter in 2007, I never really used it effectively. I only started a few months ago to get any kind of interaction with the people out there 🙃
I have a script that runs on Glitch and it’s triggered 2 times a day by IFTTT. I explain it here. Basically I have a list of posts on Airtable that I posted in the past and I want to repurpose on Twitter.
It’s sad to write a post, share it once and never post it again, but doing it manually it’s 1) tedious 2) not something I can do consistently 3) had to track which posts I shared already.
It’s a job perfect for a machine, that posts them while I am sleeping, 2 times every day.
I wrote 12 free ebooks. I use GitBook to write them, the original self-hosted GitBook project available here, not the thing that you find on gitbook.com.
As for my blog posts, I write the drafts using Bear and when I think they are ready I export to a folder and I create an index. That’s basically it. I made a template for the books which I reuse, and I’m pretty happy about it.
I might update this post in the future, right now this is all I use and do to run this blog.
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