Man, oh man!
I can't believe this little bugger is now "live" on the interwebz! Well, I guess all I could say it hello and welcome to my personal website!
The Motivation
For some time now, a big part of my work has been focused on automation - stuff like little scripts that get common (or large) tasks out of the way, wrappers that are addressing entire processes (in other words, not so little scripts) and a bunch of bigger automation frameworks!
Now, all that is good fun, it feels extremely rewarding once you actually understand what's going on and have spent some time developing your stuff, but one of the big challenges is that when the tools you build are cross-organization, they need to be as user friendly as possible.
A big part of my work bandwidth in the past year has been one such tool - a Python-based automation tool that proceeses some of the tickets submitted to my team. Over the past year, I had to rework/rewrite a big portion of it while also including some goodies that I really like, such as Slack-based commands, provided by the end users for various stuff, and while I feel like that was a massive step in terms of user experience, it definitely isn't enough. And then it hit me! Just add UI! How hard could it possibly be, right?
Very fucking hard, was the answer. The idea made me realize that the entirety of my experience in developing stuff has never included fancy stuff like UX and UI which felt pretty demotivational, to be quite honest, but on the upside, it gave me an idea of where to start!
The Process
Nowadays, at least in my industry, web-based tools are the standard so looking into a web framework for Python was my first go-to. After a little bit of a research, and considering the fact that we already have a tool utilizing it,
Flask emerged as my weapon of choice. I have to give massive kudos to
Corey Schafer on YouTube who has an awesome tutorial on Flask (incidentally the tutorial is focused on building a blog site, cough cough).
Problem with web development is that the backend alone is not sufficient, sadface. While there are plenty of amazing options out there for a quick and easy frontend setup, such as Bootstrap, I decided I want to pick a proper learning course first that'd explain all the magical and wooshy ways in which frameworks like Bootstrap work, so my first go-to after wrapping up Corey's course was picking up the
HTML Essential Training by Jen Simmons, as well as the
CSS Essential Training by Christina Truong. Thanks to the great content of both these courses, I now have a little bit of a better idea of how sites work.
I didn't wait until I was finished with those courses to start developing this site. In fact, a big part of the UI was created at the same time the CSS course was going so it was very easy to reference it for help when elements were misbehaving and refusing to align where I wanted them to.
As site work progressed, I was starting to feel much better and better about how I'm doing and I could easily theorize about how existing and future tools I create could be developed for better user experience. Unfortunately, life has a funny way of reminding you just how much you suck so once I found a host and had to deploy my site, it all turned to a nightmare.
In all honesty, my networking and system administrator skills are pretty lackluster and having to battle with Nginx and SELinux for a few hours proved that beyond any doubt. While I won't go into details of the entire process, I'll just let you know that just when I thought everything is sorted, I had to restart the server, which in turn removed a SELinux policy I had added earlier... that resulted in Nginx not being able to access the socket where my app was serving content; I struggled with that for a few hours before checking the SELinux log and seeing it mercilessly slaughtering all attempts of Nginx to connect.
The Future
I believe that while it is pretty painful to realize how bad you are at things, it's also a great wake up call - thankfully all those misfortunes have shown me how much there is still to learn and do! Some of the main things which would be my focus in the near future are:
- Fixing the dozen little bugs here - launching this might have been a bit rushed, styling is still pretty far from finished and I've left half of the stuff I was supposed to update unfinished, yikes;
- CI/CD for this little site - let's be honest, I definitely will be too lazy to constantly pull and re-run the code when I make a change;
- Unit tests - one thing I'm very guilty of is that I've never actually looked into how to properly create and run tests for any of the code I've written and I've fallen victim to stupid typos and logic mistakes more often than I'm willing to admit;
- Looking into JavaScript - unfortunately, the site doesn't have anything resembling TinyMCE in its current state, which means that yes, all the HTML formatting you see in this post is manually written out. It'd be lovely to create a custom Rich Text Editor to do that for me instead;
- Improving and expanding my knowledge of the world wide web and its ecosystem - web servers, hosting, proxies, CDNs, networking, there's an entire sea of knowledge waiting to be discovered;