GitHub Pages >> Wix
If you’re an engineering or CS student and you don’t have a personal website yet, you need one. Especially if you’re one of my classmates in Professional Development who has to make one for next week’s homework. A Wix site with a drag-and-drop template doesn’t count. Here’s why, and how to build something better for free.
Why not Wix (or Squarespace, or WordPress.com)?
These platforms are fine for a bakery or a photography portfolio. They are not great for us. Here’s why:
- They cost money. Wix’s free tier plasters ads on your site and gives you a URL like
username.wixsite.com/mysite. If you want a custom domain and no ads, you’re paying $17+/month. For a static page that mostly shows your name and a PDF. - They’re slow and bloated. Wix pages ship megabytes of JavaScript for what is fundamentally a text document.
- You don’t own your content. Your site lives on their platform. If they change pricing, shut down, or break something, you’re stuck. One caveat is that if you want a custom domain name (url), you will always have to lease it from a registrar like [GoDaddy][https://www.godaddy.com/] or Cloudflare.
- It doesn’t signal anything about your skills. In my opinion, people with technical ability in the modern world should be able to actually build and deploy a static website. This kind of thing is not limited to CS majors. Tech savvy middle schoolers can do this, so you definitely can.
GitHub Pages + Jekyll
Here’s what I use, and what I’d recommend for anyone in a technical field. The entire stack is free (minus the optional domain name), and hopefully you might learn something setting it up.
What you need
- A GitHub account (free)
- Git installed on your machine
- 1-2 hours for the initial setup
- (Optional) A custom domain (~$10–15/year)
To get started with github pages, I recommend you check out this guide.
Step 1: Pick a template
Jekyll is a static site generator. You write content in Markdown, and it builds HTML pages for you. GitHub Pages has native Jekyll support, so you just push your files and GitHub builds and hosts your site automatically.
There are plenty of jekyll templates out there. A few good ones for academic/professional use:
- al-folio — popular in ML/AI circles. Supports BibTeX-driven publication pages. This is what I’m using right now.
- academicpages — a classic for grad students. Sections for publications, talks, teaching, and a blog out of the box. I used to use this one.
- minimal-mistakes — clean, flexible, well-documented. Good if you want more control.
You don’t even have to use a template. If you want, you can just use the classic singular index.html file for your entire website, like this, which is popular for those who don’t want to seem like they’re “trying too hard”.
If you want to use a template, go to the template’s GitHub repo, click Fork, and rename the fork to yourusername.github.io. That naming convention is what tells GitHub to serve it as a Pages site.
Step 2: Clone it and fill out the config
git clone https://github.com/yourusername/yourusername.github.io.git
cd yourusername.github.io
Open _config.yml in your editor. This is where the top-level site configuration lives. Update it with your name, bio, links, etc. Every template structures this a bit differently, so read the README for your chosen template.
If you want to preview the site locally before pushing:
# Install Ruby and Bundler if you haven't
sudo apt install ruby-full build-essential # Ubuntu/WSL
# or: brew install ruby # macOS
gem install bundler
bundle install
bundle exec jekyll serve
Then open http://localhost:4000 in your browser. Every time you save a file, Jekyll rebuilds and you can refresh to see changes.
Step 3: Add your content
Most templates organize content into folders:
-
_pages/— static pages like About, CV, Projects -
_posts/— blog posts (like this one), namedYYYY-MM-DD-title.md -
_publications/— if your template supports it -
files/— PDFs, images, etc.
Everything is Markdown. If you don’t know Markdown, you can learn the basics in about ten minutes. It’s just text with some lightweight formatting:
## This is a heading
Here's a paragraph with **bold** and *italic* text.
- bullet point
- another one
[This is a link](https://example.com)
Drop your CV as a PDF in the files/ folder and link to it from your about page. Add your headshot. Write a short bio. Add any publications, projects, or whatever else you want.
Step 4: Push it live
git add .
git commit -m "Initial site setup"
git push origin main
Give it a minute or two. Your site is now live at https://yourusername.github.io. That’s it. And it’s free!
Step 5 (Optional): Get a custom domain
This is the one part that costs money, it’s up to you to decide whether this is worth it. A .com, .io, .tech, or any other type of domain generally runs about $10–15/year.
Once you have registered a domain:
- In your repo, create a file called
CNAMEin the root directory. Put your domain in it:yourname.com - At your registrar, set up DNS records. You need either:
- An A record pointing to GitHub’s IP addresses:
185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 - Or a CNAME record pointing
wwwtoyourusername.github.io
- An A record pointing to GitHub’s IP addresses:
- In your repo’s GitHub settings (Settings -> Pages), enter your custom domain and check “Enforce HTTPS.”
DNS propagation can take anywhere from a few minutes to 48 hours, but it’s usually fast. Once it resolves, people can reach your site at https://yourname.com and GitHub handles the redirect from the .github.io URL automatically.
Maintaining it
The beauty of this setup is that updating your site is just editing text files and pushing to GitHub. Create a new .md file in _posts/ and you have a blog post. Updated your CV? Swap the PDF. Changed jobs? Edit _config.yml. Simple stuff.
You can even edit files directly on GitHub’s web interface if you don’t want to open a terminal or proper text editor.
Final thoughts
You’re in engineering. Your website should reflect that. A static site built with Jekyll and hosted on GitHub Pages is fast, free, version-controlled, and shows that you know how to use the tools of the trade. It takes a couple hours to set up and minutes to maintain. There’s no reason not to have one.
If you get stuck, shoot me a message. Happy to help.
Enjoy Reading This Article?
Here are some more articles you might like to read next: