The Indie Web movement has a list of principles that describes the web they want to see in the world. At the top is "own your data." I can't repeat this principle enough. If you create data, it should be yours to share. Further down the list is another one that appeals to me: make what you need.
In my last blog post, I talked about how building personal websites is fun and described a few of my experiences building features for this site. If you were paying attention -- assuming you have read the post -- then you may have noticed that I talked about a few custom features I have on this site. For example, if you go to my homepage, you'll see a counter which keeps track of how many cups of tea I have.
Do you want to know how I built that counter? I have a "flic" button sitting on my desk which is hooked up to my iPhone. When I press the button, the Flic app sends a signal to IFTTT which then creates a record in an Airtable database. My personal website retrieves the list of items in that database when it is loaded, and then counts how many records exist in it. Cool, right? Maybe I should write a tutorial on how I built this feature to illustrate how it works.
It's not the most interesting feature in the world, but I wanted to build it. It wasn't necessarily an exercise in building my skills, for I was basically recycling old code to build it. That doesn't mean I got nothing out of it. I was able to build a feature that I really wanted to have on my site.
I could probably have built this feature on a WordPress-hosted site, or maybe even Squarespace. But that would have involved a lot of work. I may have had to build an extension. In fact, if I think about it, I'm not sure if I could do it even on Squarespace. The closest I could get would be to embed my Airtable document that tracks all the cups of tea I have consumed.
When you have your own personal website, you have a lot of freedom to build what you want. If you want to build a feature that livestreams the feed from a Raspberry Pi in your house, you can do that. If you want to create your own chatroom on your site, you can also do that. It's up to you. This is one advantage of having a personal website that I've only recently started to acknowledge.
Platforms like Twitter were not built for me. They have a lot of cool features don't get me wrong, but those platforms are still lacking. That's because Twitter didn't call me up one day and say "James, how can we create the best user experience for you?" Twitter was built to please its entire user base, of which I am only a very small part. When I look at Twitter -- which I don't do often, because I have lost my taste for the platform -- I see a few useful features, but at the same time I see limitations. My experience on Twitter is almost entirely dictated by the developers at Twitter.
On this site, I can make what I need. If I want a feature that tracks how many cups of tea I drink, I can build it. Similarly, when I wanted to update my professional bio, I wrote a new one using my own format. I didn't rely on a "bio" field with character restrictions. I created a new page on this site and hard-coded my bio. Now, if you go to my about page, you'll be able to find out more about me and my tech stack.
If you're looking for another reason to build your own personal website, this is it. Having your own personal website gives you the freedom to make what you need. What you'll find is that many personal websites built by someone using code have a number of custom features. That's because the developers of that site have been able to go down into the nitty-gritty and build exactly what they wanted to see. I don't have to wait for some developer to implement a feature on this site that I want to see. I can just go out and build it, and I have a lot of fun doing so.
As I build this site, I like to think about what new features I can add, and what features I can remove. At first it was difficult because I was so used to my experience being in the hands of another platform. Now I think I'm getting the hang of it. It turns out that many of the things I have built I don't really need, but that's okay. They were fun little experiments, and at the very least they told me what I don't need on this site.
I am proud to say that I've built many of the features I need on this site. The very act of creating a new website feature gives me a sense of accomplishment I can only assume woodworkers get when they build something by hand (although I can't be entirely sure of this, because I didn't do that well in my high school woodworking class). I love that the Indie Web encourages you to build what you need. If you didn't already know that you could build something -- like I have felt at some points -- then know this: if you build your own website, you're completely in control. You can make what you want/need.