This Website

The most personal of websites

I had previously been making changes to this website to make it as lightweight as possible. To accomplish this I was using Tumblr as a storage solution and their APIs to get the content that I needed. While this provided a sense of simplicity overall, I still wasn't a fan of the solution. Because I didn't want to run a sophisticated backend for the website, this meant that the API keys had to be embedded into the JavaScript sent to each and every user. While this isn't a security issue, it could lead to others abusing my API keys and getting them disabled. This would not be very helpful since my site would then no longer work. I searched for an even simpler solution.

Lots of solutions like Wordpress and many other fine blogging platforms greatly simplify the entire process. You can often build an entire site without writing a single line of code. Personally, I don't get much enjoyment from this type of a setup. I like to tinker and fiddle around with things. I like knowing as much as possible about what's generating the pages I'm presenting. Additionally, things like WordPress and many other popular website packages are riddled with security issues that I don't want to be concerned with. I don't want a weekend activity to be updating packages to ensure everything is constantly secure.

Another consideration is the technology that's serving the website. I presently have one of those generic domain registration/hosting platforms (e.g. Bluehost) that manages my website because I'm not particularly inclined to have flex expenses like you'd get with something like AppEngine, or the effort of managing an EC2 or Compute Engine instance. The EC2 free tier is enticing, but after a year I'm back looking for something consistent or making another account to get the free tier again. In the end, storage is cheap. When looking at these different solutions CPU time is always more costly than simply serving a static page from disk. Considering the effort of querying a database and rendering a page, the latency of pulling straight from disk is going to be smaller as well

All of these things motivated my decision to custom build what is essentially an HTML rendering Python script. The script simply takes all the pieces of information I've put into the system (e.g. Blog posts, project pages) and renders them into static .html files that will be served. I didn't do this all from scratch, that would be a bit much. Jinja2 is a fine HTML templating library that simplifies this greatly. Additionally, to make the layout flexible for things like mobile devices I went ahead and used Bootstrap. It was suprisingly easy to get working and the flexible layouts are essentially automatic, which is awesome. The side navigation is generated at each render to add new content to each page. In the end, the site boils down to a minimal set of static resources that can be easily served from the most simplistic of webservers. My dev instance is simply:

python -m SimpleHTTPServer
That's it. No dev DBs or any other malarkey. Additionally, in dev, inotifywait can be employed, if desired, to automatically run the build script and tests any time the project files update. This makes the feedback loop essentially instantaneous so you know when something goes wrong and you can immediately see when it goes right.

The main purpose of this site is to provide me with a means of expressing some thoughts. Hopefully others may stumble upong them and find them interesting or entertaining. Additionally, for me, it's a means of learning and expanding my knowledge of developing software for the web. I really haven't done much with the web, but it's obviously quite important so I plan to see where I can take things.