About
I’m, according to my job history, a software developer or a system administrator. Sometimes, I look at metrics and try to make them go down or up, depending on the context. Other times, I investigate and fix critical issues at the poorly documented edges of production systems. Occasionally, I reflect on what metrics we should try to make go up and down.
Interests
I have a variety of interests and, personally, am frequently surprised when I develop an interest in something (I could dig up some messages in the past where I told someone “I could never be interested in X”, only to become interested in X several months and/or years later). Given this, the list below might expand with time.
As of this time, topics I might discuss on this website include (but are not limited to):
- Computer programming
- Data visualization
- Software engineering
- Production system evolution
- System reliability
- Legacy system deprecation
- Statistics
- Machine Learning
At a high level, the intersection of all these topics is something like “simple ideas with generality of application”. Sometimes, however, the universe demands specificity, so the specific will also be featured.
Content Philosophy
Many websites can be read as something like “a sequence of posts about various topics”. Although this blog may be something like that at times, I have seen the value in updating and/or maintaining posts across time 1. With that in mind, I aspire to update content on this website as my thinking evolves. At the very least, I will strive to remove errors, if they are discovered.
Tools
This is a (mostly up to date and partially curated) list of tools I use daily, partially categorized. Notably, I prefer to use as few tools as possible from day to day.
Programming Languages
JavaScript
I’ve spent a lot of time writing JavaScript code and, by number of lines written, is the programming language I am most familiar with. I generally use JavaScript for certain types of one-off scripts (particularly, those which significantly benefit from asynchronous work), certain types of relative simple back-end services, and, when needed, to work on the front-end.
Front-end libraries I am fairly familiar with include React and Vue. Other libraries I have found useful include Node-config, node-fetch, express, dayjs, and bottleneck.
Python
I generally use python for writing one-off scripts, back-end services, and any sort of “numerics” work.
Libraries I have found useful include flask, numpy, scipy, pandas, xarray, and matplotlib.
SQL
I have fairly extensive SQL experience (at some point, I thought relational databases were very cool). I’ve written SQL for production systems, to troubleshoot issues, and to analyze data.
With respect to SQL databases, I have direct experience with both MSSQL, and PostgreSQL. MSSQL licenses are exorbitantly expensive for production systems, and I have not been convinced of the merits of MSSQL over PostgreSQL. I also have some experience with Amazon Aurora.
Others
I have experience with quite a few other programming languages (C, C++, C#, Rust, and Java as some examples) but do not use them in my “day to day”. I, generally, don’t have strong language preferences, and will pick up a language if it is needed to solve a problem.
Software Development Tools and Frameworks
Quarto
I use Quarto for hosting this website, which allows me to embed interactive visualizations alongside static content.
Visual Studio Code
For an IDE, I use Visual Studio Code.
Vim
When connected to a remote machine, I generally use Vim.
I am not a particularly proficient vim user, but it’s widely available so I don’t need to install an editor before trying to make any changes to files.
Excalidraw
Excalidraw is my (currently) preferred tools for making diagrams 2. I didn’t initially like the aesthetic, but it quickly grew on me. When working in excalidraw, I try to limit myself to a single field of view, reducing working memory demands.
WSL
When working on a windows machine, I prefer to use WSL over using a VM. I generally use Ubuntu as the operating system, but this is a relatively weak preference.
Web Applications
Windy.com
I, for better or for worse, live in a place where the weather isn’t always friendly to pedestrians. Windy is my preferred weather application, primarily due to the relative ease of access for both radar and model data. If the weather is good, I only use the application to check the weather of a single model. If the forecast looks poor, I will check multiple models across time. You can also get a sense of the stability of weather systems by tracking the evolution of forecasts across multiple days.
On the day of a precipitation event, I use the radar to time when I will go for a walk, taking advantage of lulls in the precipitation. When doing this, it’s useful to be aware of the biases associated with radar estimates of precipitation. Certain precipitation systems evade radar detection and it’s possible that you will be occasionally surprised by drizzle or mist 3. An important bias to note is that weather models have a much coarser resolution than radar, meaning that forecasts can fail to take into account spatial variation in precipitation. During certain times of year (especially the summer), you can use radar to adjust the forecasted precip, allowing you to make better decisions.
Of note, I do not pay for Windy (perhaps I should). The quality of the free offering has been going down over time as more and more features are moved to the paid version. If the radar data was not available on the free version, I would look for other applications (or start paying). If the model data offerings continue to degrade, I might also look for other applications.
Why don’t I install the windy mobile application? Good question, I effectively haven’t been convinced that having the windy application is significantly better than just accessing it on mobile.
Mobile and Desktop Applications
Notepad
If on a windows machine (primarily at work), I will use notepad to take notes 4. I will also sometimes share my screen and use notepad as a place to take shared meeting notes. When I do this, I try to keep shared meeting notes to at most a full “notepad” screen. This keeps all the relevant information easily accessible, reducing meeting working memory demands.
Notes
I use apple’s built-in notes application to takes notes (about various things) and organize information (such as errands and to-do lists) in my personal life. There are likely better applications for this, but the impedance mismatch between my needs and what notes offers is relatively low, so I haven’t bothered to look around. Similar to notepad, I find it useful to try and keep the length of certain notes such that they fall within a “single mobile phone screen”. This reduces working memory demands and, in certain cases, removes extraneous information.
Corrections and Feedback
If you discover a mistake on my blog, please let me know, and I will do my best to correct it.
Footnotes
The likelihood of a post changing will, in general, decay fairly quickly as a function of age. This will not hold generally, but is a reasonable expectation. Seeing something “posted” for the first time, however, tends to somehow make one change one’s mind more than when it is served from localhost.↩︎
I used to use draw.io, but the cases where I prefer it have become sufficiently marginal that I no longer use it.↩︎
You can do better by being aware of the types of systems that produce drizzle. If the wind is coming off the water, it increases the likelihood of drizzle and mist.↩︎
As of December 2024, notepad has been effectively supplanted by excalidraw.↩︎