About Me
I'm just this guy, you know?
Why I Code
I got started coding, almost simultaneously, in two different contexts.
While working in a program administration office, I realized the inefficiencies of managing a large and complex program using spreadsheets on shared network storage and I resolved to find a better way. This lead me into the world of databases and data modeling.
Pursuing my M.Sc. in marine science, I took a course on mathematical modeling methods commonly used in oceanography. Here I got into data retrieval and computational analyses.
Both approaches lead to very different types of projects. One thing has been common throughout. Building things with code feels as fun as using Legos when I was a kid. Except I never stepped on a stray Docker images on the way to the bathroom so I think coding wins. 😁
Academic Coding
My academic coding started with building mathematical models of oceanographic processes, using the MATLAB programming language and IDE. From mutli-box models to define the flow of nutrients throughout the world oceans to 2D advection-diffusion models of the dispersal of pollutants into the surface water, I got to dig into some fun and nerdy topics.
For my M.Sc. thesis, I focused on physical mechanisms' influence on coastal phytoplankton by analyses of public data sources. After building out more and more complex one-off scripts and having to tweak and re-run them, I wound up coding my own MATLAB ETL package for retrieving and processing NDBC buoy data.
In addition to this I wrote many scripts for performing analyses and visualizing results. This is where I got my start in another passion of mine, data visualization. As my Physical Oceanography professor was fond of saying, if you don't visualize your data you don't understand it. While most of my academic coding was in MATLAB, all it takes is one licensing scare that threatens to derail years of work to make one realize that perhaps an open source alternative would be a better approach. Python was a a natural fit as I had already realized just how much scientific coding and data visualization packages exist for that language.
I have since found myself working on projects not related to my previous research. I still want to write more code for scientific analysis and data modeling but the more I learn, the more project ideas I have and want to work on. I have a loose idea for building an application that would automate checking different data sources for conditions of interest in NDBC buoy data and trigger larger data collection and analysis if those conditions are met. I'd love to get to that but it's currently below the cut line for my project priorities 🤓
Business Coding
Since I got my start coding in the workplace in order to replace tracking data through spreadsheets, it should be no surprise I found myself creating databases and database applications.
I started in MS Access because
- All our office computers already had it installed.
- It played nice with Excel and Outlook.
- My employer had a subscription to an education platform that included a series on building applications in MS Access.
Now I primarily use open source web tech like Django, PostgreSQL, Docker, etc. I find that using web frameworks simplifies the process of getting a user interface in front of my users and it provides a great deal of flexibility in how that UI looks/feels. From the start, I've enjoyed building the logic of the business into the business logic of my applications. In the program administration I built automated views of the records that needed the most immediate action.
In a recent large-scale project, I was automating manufacturing schedules based on placed orders. It allowed users to customize the rules that govern how orders get translated into manufacturing batches. Every time I take on a business project I find myself learning how to abstract more, hard-code less, and provide more intuitive interfaces. I'm surprised how much I like doing this stuff!
I got started building websites to connect to data applications because it provided the most flexible and capable UI to present all the information I was working with. However, now I am taking what I have learned a building a site simply to share what's on my mind and things I am doing.
Interests
I am interested in constructing software and solutions for a variety of problem domains. I don't have direct experience in all the tech or business topics I pursue but I'm curious and would like to learn more. Much of the software I have worked on both professionally and academically have focused on automating tedious and repetitive tasks. I have found that this type of automation can generally make people happier and more productive by removing or simplifying the least pleasant parts of their work. Many of my interests in further skill development are either focused on autommating boring stuff or building things I think are fun.
Data Visualization
The importance of properly visualizing data in order to understand it was brought home to me while studying physical oceanography. Trying to stare at columns of numbers representing ocean temperature, salinity, and chlorophyll and get some insight into what is happening is near impossible. Once you turn it into a scatter plot of salinity by temperature and color the marks by chlorophyll concentration then the pattern of cold salty water being associated with high chlorophyll concentrations just jumps out at you!
That being said, it's a pet peeve of mine when I see things like linear regressions applied where the underlying data clearly violates the mathematical assumptions implicit in linear regressions. So I take a great deal of care to understand both the basic data I'm working with as well as what visualization techniques allow me to demonstrate the relationships I wish to investigate without introducing unnecessary bias. I'm really excited about how much attention this topic is receiving in terms of technology development.
In a previous job I made use of Tableau (for work) and Tableau Public (for fun) as a means of testing out different visualization techniques. However, my no-license, DIY, open-source mindset has caused me to dabble in D3 as well. Both approaches offer a wealth of options, each with their own strengths and weaknesses. As a fan of Python, I would like to find some reasons to integrate Python data visualization tools like Plotly, Seaborn, and Altair into a project but I haven't run into that situation yet.
Machine Learning
The topic of machine learning is so broad and can encompass anything from a hobbyist configuring a few hyper-parameters and providing a basic labeled data set to highly involved mathematical study of the most efficient methods for performing various calculations and transformations. I am definitely more in the hobbyist camp in terms of experience but I do find the mathematical underpinnings of ML quite interesting as well.
I completed Andrew Ng's Intro to Machine Learning course via Coursera and, while I have completed other ML tutorials including on Coursera, I found Dr Ng's course to provide a greater fundamental understanding of how the components of machine learning algorithms actually work. ML is often described as a black box so it felt like getting to peak behind the curtain when I coded my own cost functions and gradient descent algorithms. I suspect there are many more applications to which ML and it's companion technology of neural networks can be put than are currently being practiced.
For instance, I think it could be interesting to build labeled data sources and ML algorithms for nearshore coastal ecosystem events (like fish population levels, phytoplankton blooms, etc.). Natural scientists tend to prefer understanding the rules and mathematical relationships in their systems and then use this understanding to build predictive models. I think it might be useful, or at least point towards some topics that deserve more study.
Another pet project of mine (long on the back burner) involves multiple ML areas of concern. You can read more about it in the description of my Local Recipe Server project.
Web Design
I have almost no commercial or production experience in web design but, as I build out a site I want to be both attractive and functional, I find myself drawn into this topic. I want to better understand how to develop a design palate, style my site so that it is relatively easy to make design changes that propagate through the site without a massive find/replace class string effort, and generally build a cohesive design pattern throughout the whole site while using styling to subtly indicate the type of content being viewed in different locations. I will have to find some good resources and do some learning.