Julien Blanchard


All things data | Programming


 GitHub

 Linkedin

How To Create Your Own Website

2025-06-08
web development, personal development
13 minutes

An example of what we’ll be discussing in this article

alt text

As much as I would want people to reach out to me and discuss some of the articles that I've been sharing here over the past few years, most of the feedback that I occasionally receive tends to be related directly to my website.

These discussions are usually centered around what framework I am using, how complicated it is to set up a website from scratch, etc..

Allow me to make an assumption and say that this curiosity may come from the fact that my peers, like me, mainly work in the field of data. To be honest it wouldn't actually be that uncommon for a data scientist to have their own personal page on a blogging platform such as Medium or to have a Kaggle profile. But I know very few people with a job similar to mine who have actually purchased a domain and started their own website.

What's even more interesting is that when it comes to people working in any IT-related field other than data, things seem to be a bit different. I've seen quite a few software or web developers have their own domain and regularly publish various articles related to their field of expertise. Speaking of which, here are a few that I highly recommend taking a look at:

  • Simon Willison's "weblog" has been around since 2002 and I must say that it has been a fantastic source of inspiration for me across a wide range of topics. I've learnt a ton of stuff there over the years, and though I unfortunately have never had the chance to interact with Simon personally I do owe him and his articles a lot.
  • Start Data Engineering is as its title suggests more backend and database-focused. I especially recommend the Airflow and Dbt tutorials.

alt text

Yes I have a website. No I'm not looking for a job

I've heard a few people mention that they expect personal website to work as a secondary resume. Some sort of portfolio whose sole purpose is to impress potential recruiters in the hope of landing a better job.

Well guess what, that's actually not why I decided to start my own.

Back in 2020 when the COVID-19 pandemic hit Ireland, I started getting a bit bored and found myself pretty stressed out by the whole situation. Besides that, I realised that I had been struggling with written communication in English for too long. One of my main goals back when it all started was to try and get better at expressing myself in a language that wasn't my native one. If you're a regular reader of this website, you've probably noticed that even though my articles have gotten slightly better over time, they are still full of typos and random French-inspired constructs.

What's been fairly easy so far is finding content for these articles. For the most part, I write about problems that I encounter at work. This not only helps me formulate my thoughts in a clearer manner, but each article also serves as a project repository in case I ever come across a similar issue in the future. All I'll have to do is read through the relevant section(s) and slightly amend the code I find there.

On a more personal note, I used to run a French-speaking punk-rock website named {Dyslexic} in the early 2000s. I'd be lying if I said that it ever became as popular as I wish it had. But it got me to meet some great people, as well as land me some free albums and concert tickets. What remains today is a passion for all types of web-based technologies. Most importantly it led me to build some foundational tech skills and got me familiar with both html and css. I wish I could go back in time and start having fun again with PhpBB and Php in general.

alt text

Buy your own domain and don't use WordPress

Sure there's nothing wrong with using Medium or any similar third-party-hosted blogging platform. Nor is there in relying on a CMS like WordPress.

(Or is there?)

After all what really matters is what you share.

I just think that when going for either of those two routes you're going to miss a fantastic opportunity to get out of your comfort zone and learn skills that you might not necessarily had previously been exposed to. But we'll come back to that in a minute.

Purchasing a domain can be very expensive especially if you're looking for an exact match or for a .com extension. What you can do instead is simply look for different word combinations or for lesser-known extensions such as .dev or .io.

For instance, I opened up the number one news site here in Ireland and looked for the first name I would find there: "Conor Fitzpatrick", there you go. Well let's go find Conor an appropriate domain name on GoDaddy.com.

alt text

As you can see, good old Conor could purchase conorfitzpatrick.dev for as little as €10.96 for the first year.

You don't need to be a web developer

Are you familiar with the markdown templating language? If yes, then congratulations: creating your first personal website should be pretty straightforward.

The reason why it's going to be that easy is because you should follow my advice and use a static site generator. What we're talking about here is a simple framework that will fetch your markdown files and automatically generate all the content of your website. Simply put, all you'll have to focus on is writing some good quality content.

One neat thing with static site generators is that you don't really need to know the language that they are written in. Now I wasn't aware of that when I first looked for an easy-to-use framework, and logically went for a JavaScript or a Python-based solution. After playing around with Pelican for a couple of weeks I realised that it didn't suit my needs. Neither the official themes nor any of the community-based ones really appealed to me and I was getting a lot of build errors. I eventually decided to look for better solutions.

To save you some time here are the main options that I think you should consider:

As a matter of fact this website was built with Hugo, and I've been using the Anatole theme since day 1. You'll find plenty of other fancy-looking themes on the official repo.

alt text

Once you've installed Hugo (and Git) you should see a folder structure that looks like this one:

alt text

As discussed earlier, you can of course choose to solely focus on writing content in which case you'll only be interacting with the content folder.

Once you're ready to go, spin up a terminal, head over to your Hugo folder and simply type in hugo -D. It really is as easy as this!

Now though I quite like Hugo I think that if I had to start afresh and pick a static site generator framework again, I'd probably go with HydePHP this time. Modern PHP no longer is the PHP that some people used to make fun of. The language has come a long way, and from what I've gathered Laravel is an amazing web development framework.

alt text

Some extra tools

Alright so you have purchased a domain name and chosen a static page generator framework. Congratulations! Now that your first articles are online, you're looking for a way to check whether what you just published is starting to get some traction or not.

There are several options you could choose from, but most of them might be a tiny bit too invasive for your followers (hum hum I'm looking at you Google Analytics). I have personally opted for Counter.dev, a great open-source project that doesn't track cookies or IP addresses. You can read more about the technology behind Counter.dev directly on their GitHub page.

Simply create an account on Counter.dev and copy the tracking code that you'll find in the Settings page.

To start tracking the number of visits on your website, paste that tag into all your html pages. You will of course have to repeat the same operation each time you build your website, so I suggest using a simple Python script instead. Here's the one that sits in my public folder. Please note that you're not using Hugo you'll need to modify both page_content[:7] and page_content[7:]:

import os
import shutil 
from typing import List

# constants
TARGET_FOLDER: str = r"your Hugo folder goes here"
ANALYTICS_TAG: str = '\n <script src="https://cdn.counter.dev/script.js" data-id="your Counter.dev id goes here" data-utcoffset="0"></script> \n'

# analytics tag
def getHTMLPages() -> List[str]:
    index_pages = []
    for r,p,files in os.walk(TARGET_FOLDER):
        for f in files:
            if f.endswith(".html"):
                full_path: str = os.path.join(r,f)
                index_pages.append(full_path)
    return index_pages

def addHTMLTag():
    index_pages: List[str] = getHTMLPages()
    for page in index_pages:
        result = ""
        with open(page,"r",encoding="utf8") as index_page:
            page_content: List[str] = index_page.readlines()
            first_part: List[str] = page_content[:7]
            second_part: List[str] = page_content[7:]
            result: str = (
                "\n".join(first_part)
                + ANALYTICS_TAG
                + "\n".join(second_part)
            )
        with open(page,"w",encoding="utf8") as index_page:
            index_page.write(result)

if __name__ == "__main__":
    addHTMLTag()

Now log back onto your Counter.dev account and open up your dashboard. All good in the hood!

Conclusion

As you will surely have guessed, starting this website was one of the best decisions I've made over the past few years.

Good luck and feel free to reach out to me if you need any help!


© Julien Blanchard 2025