- Noah Jacobs Blog
- Posts
- On Personal Websites
On Personal Websites
The home page for you on the internet, and a great learning experience
On Personal Websites
L
2024.06.09
This weekend, I threw together a personal website from scratch. In some ways, it was more difficult than I thought it would be, and in other ways, it was more straightforward.
This post is a bit more brief, because I’d like you to check out the site (http://www.noahjacobs.ai/) as well, preferably on desktop.
Impetus
I made a personal site for three reasons:
I wanted a personal site
I wanted to make something useful in a Lisp dialect
I was looking for a coding project to work through on Friday/Saturday
There’s really not much more to it than that; each of the three headers below goes into each point a little bit more.
Control the Narrative
A personal site gives me a central node for myself on the internet in which I can communicate intention via design and control the information I am displaying.
A lot of people I admire have personal sites: Tim Ferriss, Paul Graham, and Nassim Taleb, to name a few. These three examples are on a spectrum, with Ferriss’s site looking the most “normal” and Taleb’s looking the most barebones. The design of Paul Graham’s site is minimal and emphasizes the information, while Taleb’s… well, I don’t think Taleb thinks design is very important.
As of now, I think my design falls somewhere between Graham’s and Taleb’s. The point of these comparisons, though, is the same as always; the design tells you quite a bit about the creator. Designing your own site gives you a chance to communicate in between the lines. Part of what I am trying to communicate is that the content is the focal point.
Outside of the design, I can control the actual content displayed on my site. This gives me a chance to centralize information I think is important and just generally communicate about myself in a way I deem appropriate.
Lisp!
Ah yes, our second point: I coded the site in a dialect of Lisp, the esoteric language I keep talking about. While I’ve toyed around with a few very simple lines of Lisp out of curiosity, I hadn’t yet actually coded a usable project in the language or one of it’s derivatives yet.
So, for this project, I actually started experimenting with languages on Wednesday or Thursday to select a dialect of lisp to write the site in. I played with Hy, the Anarki fork of Arc, Racket, and yes, I considered Common Lisp, too.
I ultimately settled on Clojure. There are a few frameworks for it out on the internet, and, I would later find, it even has direct deployment support on Heroku. In general, it seems like it is one of the most well supported Lisp dialects in the context of web projects. And trust me, I need support.
Now, based on my site as is, I haven’t yet done anything that is made significantly easier by virtue of the program being in Lisp, but I have made myself comfortable looking at and writing code in the language. For me, that’s typically a pre requisite before I can start getting fancy with it.
Speed Run
“Hacking” the project over the course of a day or two was probably the best part about it; when you commit to have something like this with a very objective output complete, and that’s your focus, what you’re really doing is committing yourself to promptly resolving any issue that gets between you and the goal. I can’t think of a faster way to learn.
There were quite a few unanticipated things I very much learned about on the fly. I’m sure an experienced full stack developer is intimately familiar with all of the below, but, as a novice trying to learn as fast as possible, the below were all new to me:
How to design an HTML template with CSS elements
How to appropriately organize the directory of a project for element access (I didn’t know having a “public” folder was a thing)
How to deploy a site to an app with a managed service like Heroku
How to redesign elements on mobile
And re the latter, I still don’t completely understand it. I fixed some sizing issues, but not all of my problems. Here’s a screenshot of the site on desktop:
After you click on one of the header options, if there is more content for that topic, the table of contents on the left populates. If you click on an option there, then the new content populates below the first block of text.
The intended behavior and design works and looks fine on a screen of sufficient size: clicking on an item in the table of contents drops that content below the first block of text. However, on mobile, when it does that too, it’s not at all obvious that the new content has been added below the first block. So, it can very much feel like it’s not working.
So, I still have a lot to learn. That being said, I love that it’s possible to learn so much in so little time by committing yourself to an intended outcome.
My Website in 2030
My website probably won’t be much different aesthetically in 2030, but perhaps a bit more refined.
Higher on the todo is adding in my articles from Beehiiv, for two reasons:
Enabling a visual representation of the connection of the information, as you see on the bottom of Taleb’s site.
Enabling more efficient navigation of the posts based on topics and interconnectedness.
The two points really are one in the same; I think the content I’ve produced over the last 50 weeks is more valuable if it is organized non chronologically, and perhaps with a visual aid or interface.
Again, check out my site and share any feedback you might have!
As always, thank you for reading, and enjoy your Sunday.
Live Deeply,