Wednesday, August 27, 2014

My First Website

Today I took down my wedding website (code still available on GitHub) and wanted to reflect on the experience.

Now, creating a website for me was actually pretty difficult. Not only was this my first website I've created, but I also don't do user interface work/design. I am a back-end programmer that likes to work with databases, business logic, the occasional command line program, etc. - but never do I do any front-facing UI work. I just personally don't like working on them. However, my wife wanted me to make a website seeing that I'm a programmer and thought it would be a good challenge. So, I ended up making my own website completely from scratch: all of the coding, hosting the domain, running the server, everything.

Hosting

For hosting my website, I chose to go through Digital Ocean. I chose to host my site with them due to a few reasons:
  • It was cheap - I was only paying $10/month for 1GB ram, 30GB SSD, and 2TB network.
  • It was extremely easy to use - Their  console was super simple to understand and to manage my "droplet" with.
  • Their user guides are incredible - This is the main reason why I went with them. They have tons and tons of guides that are super easy to follow. Some of the better ones I used were:
    • Initial server setup - Which covered everything from the very first login to how to properly secure your system by removing the root login and changing the ssh port.
    • Setting up a LAMP server - Teaches you how to install Apache, MySQL, and PHP on a Linux box.
    • Fail2Ban - Shows how to properly configure fail2ban so your system is not continually tried to be compromised.

Coding

As I stated before, I wrote the entire website from scratch. To accomplish this, I used basic HTML5, CSS, and Javascript. Though, I did get help with some of the coding by using some popular libraries:
  • Twitter Bootstrap - Helped with overall design of the site. Also, does auto-adjusting of the page so viewing on different devices (laptop, phone, tablet) all look and feel the same.
  • Galleria - A simple to use picture gallery. This library was fantastic. The setup was super simple, the documentation great, and has a lot of specific configuration options to choose from. Also, it only took me about 2 hours total from initial download until I had working on my live site.
  • Google Forms - I used this for my RSVP. It's a form where I had all of the RSVP questions: are you coming, what do you want for dinner, etc. The awesome part of this tool is that it stores its answer directly to your Google Drive so you don't have to worry about losing any responses.

Final Thoughts

All in all this was a great project to work on because not only did I get the satisfaction of creating my first website, but all of my guests were able to see it as well. However, if I were to do this again, I would re-consider about where I host my site. Now I know that I said I loved Digital Ocean, and I did, however running an entire server for just a simple website seemed like overkill to me. I've heard about PAAS sites such as Heroku, Google App Engine, AWS Elastic Beanstalk, etc. but I didn't want to learn how all of that worked for such a simple goal - to launch a HTML site. Though, I feel if I did a more complex site with java, I would definitely look at one of these before running my own server again.