My Year in Review - 2022
I made a decision last January to step outside my comfort zone of proprietary low-code tools and start exploring open source projects and tools.
I wanted to challenge myself to learn the skills I would need to be self-sufficient owning, using, and deploying analytic tools that fit the projects I wanted to complete. This meant using inexpensive or free frameworks. In order to build the skills I would need, and I planned out experiences that would allow me to learn through hands-on and realistic projects.
Here are the most impactful and fun steps I took to get into the world of using, deploying, and administering open source tools!
Linux
A good friend of mine is a big fan of Linux and would often tell me the benefits of using it. I found it interesting, and loved the concept of trying out a bunch of distros and configuring the environment to be exactly what I need, but not enough to ditch my Windows comfort zone. In late 2021, I continued learning Python and took an intro course to Docker. Setups in Windows were confusing and many of the tutorials I watched were being done in either MacOS or Linux. While commands were similar it wasn’t exactly what I was seeing on my local machine. I stopped the tutorials often to Google “how to configure” something in Windows and this frustration was the final push I needed to try Linux.
Starting my search for the “perfect” distro, I decided I wanted something that was simple, replicated my Windows experience, and was stable. After looking at a number of options including PopOS and Manjaro, I settled on Linux Mint. I installed Mint alongside Windows on my desktop PC since some of the games I play with friends were still not Linux compatible and I had client work coming in that required Microsoft Office 1.
Setup and installation had a few bumps along the way. I had issues with my video drivers that required changing configurations in the BIOS. At times, I was frustrated and almost gave up and retreated back to Windows. Thankfully, there is a great wealth of blogs, articles, and videos available to help me. I greatly appreciate the helpful content that comes from a committed and strong community. A few other small issues came up mounting an external hard drive and connecting my beloved AirPods, but overall I’ve had a wonderful experience using Linux Mint.
Metabase
I started my search for a great open-source data visualization and dashboarding tool in late 2021. I was tired of paying monthly or annual subscription fees to vendors and hoped there was an open-source option I could use. I wanted to find something that was intuitive, didn’t require a ton of coding or SQL, and could support sharing publicly and privately with others.
I tried several options including D3.js 2, Apache Superset, Metabase, Plotly, and others. My general perception of the market was that most of these tools required advanced knowledge of SQL, data modeling, or another programming language. Most were targeted at data engineers and had an “open-source” feel to them.
My two favorites were Superset and Metabase, so I decided to give them a longer test drive. In the end, the user experience of Metabase won the day. Building is easy and the UI is intuitive and fun with a consistent style across visualizations that made the final product feel polished. I felt I could share a dashboard with a client and they would love viewing it as much as I loved building it.
While Metabase fulfilled most of what I was looking for, it’s still most effective when paired with good or great SQL skills. I’m making a concerted effort to learn more SQL so it fit with my development plan, but the SQL requirement might make widespread adoption and competition with tools like Tableau or Power BI difficult. For me, it’s a great tool and will be my first stop when building dashboards for clients.
Deploying Apps, Services, and Servers
To get a taste for what goes into deploying and maintaining a platform, I decided to take Metabase and deploy it to a cloud provider. I liked using it on my local machine, but wanted to share what I built with others and login from other devices. After evaluating some of the options for deploying small apps and services, I settled on Digital Ocean as my provider. They had an “easy deploy” option for Metabase that would help me get started until I got more experience. Their pricing was simple to understand, and allowed me to make dashboards and visuals that were accessible from the internet with an unlimited number of users. Compared to what I was used to from other proprietary vendors, this was incredible!
I kept learning and customized the deployment to include a custom domain, I performed updates and maintenance myself, and tweaked the services to enable a more robust restart for the Metabase service which was often crashing and not restarting.
I also deployed MySQL 3 to store some data that Metabase could connect to. Another great learning experience getting the database server online and learning how to make it secure and accessible by other tools.
Honorable Mentions
Here’s a few other things I learned and enjoyed!
Markdown
Markdown is the new skill I use most frequently. I’ve transitioned almost 100% of my note taking to Markdown and commit my notes to a private repository in GitHub. I love the simplicity of Markdown while also giving me some guardrails around formatting and style.
Git
Git was mystifying to me for a long time. I still have lots to learn to be a Git expert, but being able to access my work regardless of where I am or what machine I’m using has been a revelation for me. If I could have one wish for future BI tools, get some git integration going so we can better do version control!
Hugo
This website you’re on now is a static site created with Hugo. I’ve learned it in about a month and I love the customization. Using Markdown to create these posts is a dream come true for me.
-
I have yet to find an open-source analog for MS Office that 100% replicates the formatting and feel of Office. Open to any suggestions! ↩︎
-
D3.js was difficult for me. I didn’t have the necessary JavaScript background to hit the ground running and the prospect of spending a year learning JS just so I could use D3 was daunting to me. ↩︎
-
I know… I know… I’ll try Postgres next year. Or maybe DuckDB. ↩︎