Summer Projects

By Kevin, July 6th, 2020

It's a long hot summer.

Given the current state of affairs, since the start of the year I have taken a lot of advantage of the free time and have been working on many different things. Learning more about Docker, testing, personal growth, cooking, anything that interests me. This has been one of the better periods in my lifetime to do so, even under the grim circumstances as why we have this amount of time on our hands. 

For my personal projects, I have an itch to convert from a vanilla EC2 instance to running my site in Docker or Kubernetes just as a practice. That would make running other versions of PHP, Apache, Memcache or other services easier in the future as opposed to dealing with the raw operating system in EC2. Issues? Just revert the image tag and restart the service. I had to update the version of PHP to upgrade to Drupal 9 and the process was not as easy as I would have preferred over a prebuilt Docker image.

I also have a headless Raspberry Pi on the home network running GOGS and Drone (both in Docker services) - a private Git and continuous integration setup for my own experimentation. It is a Pi 3, and performs decently enough except when I need to build a project up that utilizes node. NPM dependency fetching or compilation (node-sass / libsass is just awful) took upward of 25 minutes to do. This is probably better under Pi 4 with additional RAM and CPU. The better option is to probably have all of that ready to go in a Docker image and use that in the build stage, as opposed to doing it when the stage starts. I am not quite there yet.

By comparison, TravisCI can build the client project I demoed with in about 5 minutes. Half of that time is spent with Node. My personal site does not need it though, so it would be cool to see if I could swap my GitLab git remote for the GOGS repository on the Pi, then have Drone build my site and deploy it to AWS. This would just be for a proof of concept - I am quite pleased with GitLab and I prefer it over GitHub. 

These are some small practical projects that satiate my own need to learn, but not pressing at the moment. Many other things to do.

In the interim I am heavily invested in learning Rust alongside continuing Drupal 9 development for various prestigious clients. I am about a quarter of the way through "The Book" of Rust, understand it better than I ever did C++ and totally committed to seeing it through. Why? Why not. The use-cases, type/memory safety, and speed of development make it an appealing choice. It has a growing ecosystem and becoming more favored as the years go by. Will it supplant C++? If so, not any time soon. Is it worth learning and supporting? Yes.

So far I have only completed simple apps, like a number guessing game, and a simple command line app that regex searches for a given input of text against a given file. The latter one I iterate on as I learn more Rust. At some point I hope to build something with Diesel and Rocket, maybe a simple app that I can log runs in, list them out, calculate average pace per run, aggregate by week and stuff like that just to learn with. From there, maybe find some way to incorporate web assembly into our projects if the need arises.

But for now, its time to squeeze in another 3-4 mile run before work to get the day started.