Lessons learned from a year in web development

After a year of being an amateur web developer, I can say that I’ve learned one thing: flexibility comes at a price. Also, so does being cheap and not wanting to pay for anything…

I first took the dive into the hack-it-till-I-make-it web developing about a year ago when I wanted to make a website to share my academic work and to build a what management consultants like to call a “web presence.” I knew I wanted something shiny and sleek like Squarespace, but I wanted to have the flexibility tweak my site to give it its own personal flavor. Also, I’m cheap so I didn’t want to really fork out money for a website service when I really only needed basic functionality (landing page and blog).

As one does in my profession (or at least that’s what they tell me), I did a bit of research. Perhaps the most commonly used website building platform that people use is Wordpress. These things look alright, but you have to download stuff onto your computer and there are plenty of security vulnerabilities. No thanks. Option number 2: OpenScholar. These things are the modus operandi for most academics at Harvard, but wow the vast majority of them look like they came straight out of the 90s. Bob Bates, however, is probably the only person to have actually made theirs look good. Finally, I found Jekyll–a ruby gem with a huge open-source community built around it, support for free website hosting on github pages, lots of really clean themes, tons of flexibility, and it was free!

So I brushed up a bit on my html knowledge,

<p>wow! what a cool website!</p>>
<p>jk, this is basic-AF</p>

rolled my sleeves up, drank a lot coffee, and went to work.

While I’ve been proud of what I’ve been able to put together, I’ve also had a ton of hiccups along the way. In what was probably a bit too ambitious for me, I started off using the template created by mademistakes, which looks awesome but is jedi-level for someone who hasn’t even become a padawan. Since I found myself spending far too much time hacking that template to make it play nicely with github pages, I eventually transitioned to something much simpler (arkadianriver) to allow me to focus on communicating my research and spending less time hacking my way into oblivion.

Lessons

Less is More

I can’t tell you how many hours I’ve spent trying to debug my code because of gnarly dependency and file structure issues. Though the nice shiny buttons look cool (sometimes…), they end up causing more problems than they end up solving. To spend more time actually getting work done and less time smashing your face against your keyboard, simpler is better.

Commit Early and Often

I got into a bad habit of going weeks without even looking at the code repository for my site, try to make changes, and then realize I forgot how to do everything/where everything was. Part of that was the whole really complicated back-end, but a lot of that also had to with being a really lazy coder. Since I wasn’t commiting changes often, the tweaks that I did make ended up getting bundled together into one large, scary monster so it was impossible to actually debug anything. Now that I’ve been getting better at coding and have become quite obsessive about style and commiting, I imagine things will get smoother from here. Moral of the story: develop good coding habits.

Maximize Writing Time and Minimize Hard Coding Time

One of the really awesome parts about Jekyll is that it’s basically all markdown-based. That means I can fire up blog posts in seconds and have them come out looking quite good after applying a bit of SASS/CSS. Instead, I spent a fair bit of time hard-coding updates to my site through really ugly html instead of letting the YAML or markdown files take care of a lot of annoying formatting. With this new iteration of the website, I’m going to try to focus on generalizing all the formatting enough so that the day-to-day workflow just consists of touch newpost.md.

Learn Javascript

As I mentioned before, one of the main draws to using Jekyll was its seemingly infinite flexibility. Given that there are tons of amazing javascript libraries out there to make your website pop, knowing javascript is basically essential to being able to customize your website in Jekyll. As I keep hacking away and iterating on this project, I’m definitely going to beef up those skills.