Building a Website, Again
Previous Experience
It has been approximately 5 years since the last time I built a personal website. In fact it’s been approximately that long since I have done anything resembling web development. This was a shockingly fun experience, given this was work I had previously viewed as one of my least favorite aspects of my CS undergraduate experience. Not only did I have no true sense of UX design, but I also felt that much of the process of building a website in conjunction with HTML, CSS, Javascript, and various other tools such as Node.js and Django (from what I recall). In short, it was a miserable experience and I hoped to never replicate.
In fact, I had left my personal website completely unused and untouched as soon as the course was over. I was embarassed by the website; I hoped no one would ever look at it and find it. I ommitted that website from all job applications and resumes. I left it out whenever asked about it by peers or advisors.
Last Week
For the last 5 years, I had almost completely forgotten about the website. Life went on, and I barely gave it any thought. Until last week as I was walking around my neighborhood, it occurred to me that I would be looking for a job soon (2 years is soon to me). And having a website very well may be helpful in this pursuit.
However, I did not want a repeat of what happened 5 years ago. Therefore, I decided on a simple goal. I would steal the first person’s website template that I liked. And indeed I found one that seemed professional enough. vCard portfolio is the github project I had found. I immediately cloned the project and began working on it.
And the state that I had found the project in was, unfortunately, not to my personal preference. One of my biggest issues was that nearly everything in the code revolved around the root index.html file. This meant if I wanted to make changes to the about me, or the resume, and especially the blog, it meant I had to sift through one massive file, which was not something I was willing to do. I then spent the last couple of days in my free time attempting to relearn all of the things I had forgotten in undergrad to try and make the underlying code just a bit more modular, and just a little easier to write.
And to my absolute shock, it was actually quite fun. Of course, there were some annoying roadblocks, one of the biggest ones being trying to reuse the same html code across files. While I would still consider my knowledge of web-development to be novice at best, it seems there are two sides of a web development framework: the client and server side. The issue with what I wanted to reuse code using Javascript, which is mainly a client side language, and thus did not have permission to access the files on the server side. Again, a novice high level view of what I understand about web programming. Now I understood that there were alternative methods to achieve what I wanted to do, such as PHP, jQuery, Django, and EJS - just to name a few. However, all of these sounded like it would require looking through lots of documentation to get an understanding of how the system worked to get it to do what I wanted it to do. And childish though it may be, I simply did not want to take that effort.
This lead me to likely one of the strangest solutions anyone has come up with. I decided to write some Python code in order to essentially rewrite the HTML code for me in the manner that I wanted to. I believe this is in fact what tools such as EJS would in fact do. However, I would be going through the trouble of building this language and syntax myself.
And I found that challenge exciting. So I began writing the code and spent days trying to figure out how to make everything click and do what I wanted it to do, without breaking the underlying HTML, CSS, or Javascript that was already written that made the design look the way I liked.
Ultimately, I was left with this, somewhat half baked solution. There are many flaws that I can see with the code I have written, and I suspect I will need to modify it in the not so distant future. However as it stands, I am proud of my work. It is by no means the most complex, effecient, or visually appealing website. But a fair amount of the workflow optimization I craved was built by me.
What’s Different Now
Having written out much of this code, I feel the need to ask myself “What’s different now?” Why do I find this experience so much more fulfilling than previously.
While I cannot speak with any certainty, I suspect that it was the natural progression of time. As I became more experienced in the field of Computer Science as a whole, skills in areas I thought would be unrelated seemed to have migrated over.
And my underlying philosophy on my work had changed. Before, I believed that I had to make the best possible product, and if it was not the best, then it wasn’t worth trying to do at all. Yet I have learned through my own experience that in fact, nearly every action has positive value in it. There are of course potential negatives, and they should not be ignored. But I genuinely have come to believe that no action is truly worthless. Including writing this blog. I expect few, if anyone, to be reading these words other than myself. And yet I found joy in writing this. And perhaps I hope to continue finding joy in the process of building upon this website in the future. Both through functionality, workflow optimization, and through the simple act of writing.