On May 13, I’ll be giving a talk about Starting A Blog at JetBrains’ .NET Days Online. This post is a companion to the presentation but should serve as an excellent general-use guide for anyone starting their blogging adventure. Starting a blog may feel daunting, but after reading this post, we should have a few different approaches to starting and maintaining a blogging presence.

In general, blogging is a fun way to learn in public, help others during their career, make new friends, and expand the possibilities of our career prospects.

We’ll be breaking down the sections into general advice and then actionable steps we can take to start our blog.

Background

I have been blogging for over 10 years around the topics of .NET with varying levels of success. This blog saw a reboot at the end of 2019, with me purging much of the historical posts, reworking valuable posts with updated content, and continuing to grow my archives. I was first inspired by my .NET heroes to write and learn in the open. Their public presence made me want to share my journey with others, even if it was fraught with mistakes and potentially ill-guided advice. I enjoy writing and reading other folks’ work in the community, and that is the first necessary step.

Human Advice

The section will go through some human-focused advice I would give anyone starting a blog. Some of the information is technical, and some of it is up for interpretation.

Custom Domains

A custom domain is critical for anyone starting an online presence. Having a unique outlet on the internet distinguishes us from folks hosting on a subdomain of another property: khalidabuhakmeh.com is always going to be better than khalidabuhakmeh.wordpress.com.

A custom domain also allows us some flexibility in the future to migrate our content between platforms with limited interruptions. Some recommended places to purchase a domain name include:

You Are Unique

Starting a blog can fill us with a lot of self-doubts. We may feel the content we are writing is derivative, dull, and that no one will want to read it. I am here to tell you that any new perspective on a topic is worth having in the world. Every developer has a unique experience and context for a particular topic, and that experience could help someone in a similar situation. There may be limited topics in the world, but limitless possibilities to express them.

Add Value

It is essential to focus on adding value to our posts. Posts should focus on solving an issue or breaking down a subject into consumable and actionable information. Some of my earlier mistakes included treating my blog like a public diary, and that served no value to anyone. We can ask ourselves the following questions:

  • What is the problem?
  • How did we solve it?
  • What are some lessons to take away?

Talking to ourselves can help shape our posts and make sure they respect the reader’s time.

Research

We may run out of topics from time to time. Doing research is necessary for maintaining a healthy blog. One of my favorite techniques is using the auto-suggest features of a search engine to come up with ideas.

search engine

  1. Pick a topic i.e. “ASP.NET Core”
  2. Look at the suggestions (what folks are searching for)
  3. Look at the results and see if you can write something better

This technique can help us fill gaps in the community where folks are struggling to find relevant solutions to their issues.

Be Engaged

While the blog could be our main outlet, we must venture out into other communities: Twitter, Reddit, LinkedIn, StackOverflow, and more. These communities will help drive folks to our posts, and ultimately make it feel like our work is worth the effort. Being engaged in the community we write for also allows us to get ideas for future topics.

Write On A Schedule

Creating a backlog of topics helps reduce the stress of needing to write. Creating a backlog of written content can also be motivating to keep moving. We can choose a publishing cadence, like 1 blog post a week, and stick to it. If we write more, that’s great, but setting a baseline will make us more consistent, and our readers will appreciate that. Additionally, with every new post, we get an opportunity to capture a new audience.

Don’t Quit

Easier said than done, and life can get in the way. It takes time to grow an archive, and it takes even more effort to find our voice. We need to realize from the outset that it will take a certain amount of energy and commitment. Understanding what we’re willing to put into blogging will help us recognize if we are getting what we want out of it.

Advice For Robots

Bots and crawlers will help drive most of our traffic. While blog promotion can help get us spikes in readership, organic search will comprise most of our traffic. This section helps us think about the mechanics of the modern web. Much of this advice can is from Google’s SEO Starter Guide.

Bots Love Semantics

Utilizing semantically correct HTML will vastly improve a bot’s ability to understand the content on our pages. Use of H1, H2, and H3 tags will signal important markers on our pages.

Page Titles Matter

Page titles that express the value proposition will get us more traffic. Long, vague, or cute page titles don’t usually get high click-through rates. A technique I use to create titles is starting with **How do I…” and then completing the sentence. For example, “How do I Use Recursion in C#” would become “Use Recursion in C#”.

Post Length

The more we write, the more likely a crawler will scan the page and rate the content as valuable. To our knowledge, crawlers cannot compile and see the value in our code blocks, so writing out explanations is critical. A good rule of thumb is having at least 300 words per post, with a target between 700-1000 words.

Optimize For Mobile / Performance

While our demographic of software developers mainly work on their laptops and desktops, Google has begun ranking sites that optimize for mobile higher. We can reduce image sizes, limit third-party JavaScript libraries, and remove blocking assets to improve mobile performance.

Analytics

We must measure the effort we are putting into our blogging. Understanding what folks are searching to find our posts, how long they are staying to read content, and the percentage of traffic each post derives of our total traffic helps us guide our future efforts. Google Analytics is an excellent place to start for many bloggers.

For those willing to spend a little money to avoid Google. I can recommend the following services:

Beginners

For those looking to start blogging with limited investment, blog-as-a-service platforms offer a quick option to jump right in. The top three recommended services are Wordpress.com, Dev.To, and Medium.

These services are free for the most part and managed for us. They provide a stable experience with limited bells and whistles, allowing us to focus on writing. They also offer a built-in audience and community cross-promotion. Ultimately, they do lock us into their platform and can make the task of migration and audience transfer very difficult. When we use these platforms, it can feel like investing in someone else’s worth and not our own.

Pros Cons
Free (ish) Upsells (all the time)
Managed For Us Bland
Community Cross Promotion Community Noise / Ads
Support Community 👩‍⚕️ At the mercy of the platform

Intermediate

We can upgrade from a managed solution to a self-hosted option: Wordpress and Ghost are my two most recommended choices. We can host these solutions on a cloud provider like Linode or Digital Ocean. Digital Ocean has prebuilt droplets for both blog engines, and we can get started in minutes.

digital ocean dashboard

Self-hosting is a good option for folks who like ownership, visual editors, robust plugin ecosystems, and supportive communities. The self-hosting opportunity also comes with some downsides that include being the target of hackers, limited performance constrained by our hosting choice, the cost of hosting, and the need for constant upgrades.

Pros Cons
🏠 You Own It 🦹‍ Hacker Target
WYSIWYG Editors ✍️ Slow 🐢
🔌 Plugins 🐶🐱 Pet
Support Community 👩‍⚕️ Cost 💰

Advanced

This blog uses a static site generator, Jekyll, to be precise. It is my preferred way of blogging because it provides many of the benefits of a hosted platform, with very few of the downsides.

Some of my favorite static site generators that I would recommend to folks:

Hosting of static site generators can be done on GitHub Pages for free, but there are other free hosting options like Netlify. The hosting of this blog is on Netlify, and they have done an excellent job.

Netlify offers easy integration with any GitHub repository, quick builds of any static site generator, and seamless domain management. They also provide page redirects and CDN hosting that makes any site that much more pleasant for our readers.

Markdown is one of the most transformative inventions of the modern web. A writing-focused syntax designed to strip away the distractions of UI design. I love it, and with a bit of practice, most folks will too. Static Site generators separate the UI concerns from the writing in a way that many out-of-the-box self-hosted solutions fail to do.

Static site generators are easy to maintain, build quickly, and allow us to make incremental changes as our blog adds and removes features. The idea of “Getting things done” is intoxicating and helps drive us to invest more in our blogs.

Some of the downsides of using a static site generator come from the technological stack itself. Some choices can be fiddly and cause us to lose focus on what we should be doing; writing content. The rabbit-hole factor is high with this kind of tech, so developers beware. Most folks won’t run into this issue, but as our backlog grows, build times might begin to creep up, making publishing new content a pain. We are talking about posts that number in the thousands.

Pros Cons
🕹 Full Control Fiddly 🪀
Pure Writing 🖍 ✨Lose Focus
🙆‍♀️ Flexible Build Time Costs ⌛️
Cache Hard 🤘 Learning Curve 👨‍🎓
🤑 Cheap / Free Hosting  
Markdown 🕺  

Conclusion

This post has provided some general information about starting a blog and where folks can jump right in. A custom domain name is the best place to start. Brainstorming about topics and the value they add comes second. Finally, promoting and being engaged with the community you write for is critical to our success. Blogging is as much a learning experience for the author as it is for the readers. We will have wins and failures along the way. Learn, adapt, and evolve.

I recommend that those who have a technical leaning start with static site generators. They may have learning curving but ultimately provide the best writing experience. There are many hosting options, from free to paid, and folks need to find the one that fits their budget. For those just wanting to write, the hosted services are a great place to start but realize that you may be building someone else’s brand rather than yours.

For those folks who want or need help, I also offer Office Hours and would gladly talk to anyone looking to start their blogging journey.