Make Your Own Website

2020-04-12

I would like to invite you to put up your own Website. This can be a great educational experience if you are just getting started with computers, especially because you can choose how much complexity you want to deal with and learn specific areas only when you are ready. A personal site can also do more for you than any profile on any social network. It is a free form of expression, and you can shape and stretch it however you want.

Since this is a creative endeavour, you will bounce between the different steps of the process. Perhaps you will decide to start with a blog, put it online, then decide to change it into something else. That is fine. I would not try to plan too much ahead, or at least not so much that you are stuck in inaction.

At the most basic level, you should probably think about what the site is for and who is its intended audience. Perhaps different sections of the site are for different topics or different audiences. Or maybe you have come across a few sites that you like, and you would like to create your own version but with a different spin. Whatever the case, you should have a vague idea of what it is that you want to start with. And whatever it is, make sure you enjoy creating it.

When you have a vague idea of what to create, you will want to get the tools to create it. Perhaps the easiest and a very fun way to get started is to create your site on NeoCities. This is a social network of Websites that provides free hosting and tools to create your own site. You can also browse what others have created to draw ideas from.

Another way to get started is to use a static site generator like Hakyll or Jekyll. These are great tools that allow you to focus on the content of your site and not have to really deal with the inner workings of HTML/CSS and Javascript.

The above list of tools is not exhaustive, so you should do your own research and decide what is best for you. Please note that different tools might be better suited for different kinds of Websites, which is why I mentioned earlier to decide if you are writing a blog or something else.

Perhaps you are not comfortable using tools you do not really understand, and you want to learn how to write a Website from scratch. In that case, you might be interested in learning HTML/CSS and some Javascript. This is what I mentioned earlier about choosing the desired level of complexity. You choose what it is that you want to learn based on your interests, and how much of it to learn. Perhaps you start with a site generator, but then end up writing one yourself. You could do so in languages like Perl or Python, and that would teach you a whole new array of programming skills.

Regardless of what path you move forward with, one general piece of advice that I think is useful is to keep your content decoupled from your specific tooling. For instance, this blog post you are reading and all of my other posts are written in Markdown. The tool I use to generate the site then translates the markdown to HTML. This tool-agnostic language keeps the content separate from the site's final form. This gives me the flexibility to swap tools and to change how the final site looks by changing the generator, as opposed to also having to change the content. This decoupling might not be practical if you are actually writing your Website from scratch directly in HTML, and that is fine, but perhaps it is something to keep in mind should you eventually adopt a generator.

A personal preference of mine for a personal Website is to write a site that can be browsed offline without a Web server. Basically, a set of HTML files that I can load from disk directly into my Web browser. This keeps the site simple, portable, and durable. The site will likely stand the test of time better this way than if it were coupled with the specific tooling of the moment, and you will be able to host it on any Web host available. It should also allow you to iterate faster in your development process, and also allow you to not have to worry about Web servers. Once again, you choose how much you want to learn.

Once you have a site going on, you will want to put it online for others to access. One way to do this is to use GitHub Pages. GitHub Pages allow you to host static Websites on a GitHub repository. This will also teach you version control and git, which are also useful things to know should you later decide to work on a project online with others. There are many more Web hosts available, so you will want to do your own research.

Eventually, you might decide to run your own Web server. This gives you a whole lot more power, customization and control than a third-party Web host, but it is also more complex. Running your own server will teach you another set of skills, like server administration and security. The rabbit hole goes down very deep, so there will be plenty for you to learn.

Regardless of what site you end up creating and how, remember to make this educational experience enjoyable for you. Explore different areas, see what piques your interest, and have fun learning and creating your own personal Website.