This is a short post describing how I built and designed this website. It should be helpful for anyone thinking about starting a new personal website or updating one they already have.

Jekyll

I first built this site back in 2015 and decided to use Jekyll which is a static site generator meaning I can develop locally using a server but only deploy static files like HTML, CSS, JS, and images. This approach works well for me and I think most personal sites.

If I was starting from scratch today I might consider something React-based like GatsbyJS but I would definitely still use a static site generator for my needs.

Design

Over the years I’ve twiddled with the design on this site a lot. Probably too much but I view it as a lab for learning and playing around with layouts. These days I keep things very, very simple. Custom CSS and not much more. Lots of white space. I do use custom fonts which make a big difference in the look and feel, notably Concourse for the text, Equity for the headlines, and Triplicate for the code samples.

Probably the single best piece of advice I can give on design is to use a custom font. They’re worth the money. Matthew Butterick, who designed all three of my fonts, has a fantastic free online book, Practical Typography, that I strongly recommend.

In the past I’ve used Bootstrap and really fancy JavaScript but not anymore. Although I enviously look at well-designed websites by others, I think if you’re cutting edge with design you also become dated quickly. That slick animation is killer now but in two years will be old news. Since people come to my site for the content mainly, I largely resist the impulse to spend much time adding cool new features or redesigning the site very few months.

RSS

Having an RSS feed is a good idea because a large number of people still use it, especially developers. Jekyll automatically generates a basic feed for me which is a very nice feature. I also have a django-specific feed since I’m part of the Django community blog posts feed.

Comments

Currently I use Disqus for comments on my site. It’s not perfect–there are ads and additional tracking involved–however I’ve found readers are far more likely to leave a comment than email me with feedback. And I really enjoy the feedback on everything from small typos to larger debates about content I’ve written.

If I did have my own commenting system I’d need to move off a static site architecture, which I don’t want to do. Also doing auto-detection of profanities and other things is non-trivial and Disqus handles it.

That said, I can definitely see a future where I don’t have any comments at all. It would mean a simpler site design. Faster loading times. And save me some time but I still value the interaction and don’t have that much spam so…worth it for now.

Hosting

A big plus of having a static site is that deployment is cheap. Without a server running it typically costs pennies a month if you use something like Amazon S3. I used them in the past but these days I rely on Netlify which is really fantastic. It is also free until you reach a large audience size or add custom features.

Netlify handles so many things that I had to juggle in the past manually including HTTPS via Let’s Encrypt, CDN, minimizing assets, DNS, and more. It’s great.

Additional Features

In the future I think adding search as well as specific category pages–Django, React, Python, JavaScript, etc–would be a good idea. But time is limited so that probably won’t happen for a while.

Big picture it is highly worth the effort to setup and automate a personal website for yourself. There is zero friction in my current setup and I enjoy the chance to fiddle with things when I need a break from formal projects.