Colin Wu's Homepage
CS Major at Cornell University

Colinweb

Over winter break, I decided to create my own personal website using a few technologies I had learned. I already had some experience with creating front-end html/css/Javascript web templates, and I have a friend that created his own site using the Django framework, so I decided to use base html/css/Javascript as the front-end and have Django handle the backend. The site was then deployed using a DigitalOcean droplet using nginx and gunicorn. Simple enough right?

Unfortunately, developing the site turned out to be much much harder than expected. Because I decided to use base html/css in lieu of a framework such as Bootstrap (partly because I built this site from a previous template I had made without a front-end framework, partly because I wanted to get a better understanding of responsive design), I had to do the responsive design myself. This meant spending hours tweaking and testing @media tags for different sized screens, which became very frustrating. Making the responsive, sticky, navigation bar was especially difficult, because it transforms into a hamburger menu when the screen gets small, requiring a lot of custom CSS/Javascript work.

Django also proved surprisingly hard to learn. Although tutorials on how to make basic models/views/forms is well documented, resources on more custom behavior are scarce. Even something as simple as checking the extension on an uploaded file had me scouring multiple stack overflow pages trying to find an answer. The base admin panel also didn't offer as many features as I needed and I had to rely on plugins to implement them. For example, I implemented drag and drop functionality for models using django-admin-sortable-2 and markdown text editor fields using mdeditor.


Future Improvements