Learned web development fundamentals (HTML, CSS, JS) while creating and hosting my first website to serve as an electronic portfolio and project log. Hosting the site involved installing, configuring, and hardening Alpine Linux and @Uangn's webserver on a Raspberry Pi, learning to configure and deploy with Docker, and modifying the aforementioned webserver to support HTTPS connections via OpenSSL's API.
Can be accessed here.
My first co-op job search has been exceedingly difficult, and so far, unsuccessful. In order to better demonstrate my ability in upcoming searches, I resolved to create an electronic portfolio to log all of my technical and non-technical projects; that way my potential isn't lost on future recruiters and hiring managers.
Much of my previous programming experience has carried over into web-development, meaning picking up the ropes of HTML, CSS, and Javascript was easy enough. After experimenting with some test sites, I began work on the site you see before you! I knew I wanted the site to stand out, and to challenge the client's conception of what a website can be--without scaring them off hopefully. After substantial brainstorming, I landed on the idea: make a faux-shell in the browser.
I wanted very fine control over the user experience, and to make it as authentic as possible in both interaction and design. To accomplish this, I wrote a bunch of Javascript. The whole HTM-Shell is powered by Javascript, right down to the text input. I used HTML and CSS features where applicable to lighten the load on the JS, but much of it had to be done custom in order to achieve my vision.
Of course, with accessibility in mind, I had to create a flat version of the website that runs exclusively on HTML and CSS. That way mobile users, the visually impaired, and hiring managers running short on time don't have to fiddle with my lovely HTM-Shell ;)
Persuing this project also meant learning some backend development, and how to host a webserver; so I dusted off my old Raspberry Pi and got it running with Alpine Linux and my buddy @Uangn's custom webserver. After acquiring the domain name nickcoffell.dev, we realized that the server would need to support SSL to ensure we're operating in accordance with the domain's terms of service--so, with a bunch of manual reading, I set out to upgrade the webserver to support SSL encryption. What followed was an incredible sidequest learning all about networking at the OS level, which doubled as an excellent introduction to C programming. After modifying the server, all that remained was to assign a static IP and port-forward 443 to become a proud member of the World Wide Web! --after sorting out some storage space troubles on the Pi of course :)
I am really happy with how this project turned out! It's been a great change of pace to have personal projects again after completing my second year of Aero Eng. at Carleton, and I'm excited to share all my future projects here on this site!