Or, don’t page on CPU and memory pressure. Every so often, a change that burns CPU or memory gets rolled out and causes a user-facing issue. When the postmortem rolls around, a reasonable suggestion to prevent similar issues is “let’s page the on-call when CPU is high.” Note: when I say “page” here, I mean a stop-what-you’re-doing-get-out-of-bed-and-fix-it page. Resist that temptation. This is a…
These are the tools I use for my day to day work, it’s an accurate if incomplete list as of November 2024. Organization I use things 3 as a todo list. I really like that I can use quick entry to create a todo item without leaving whatever application I’m looking at. This makes jotting down a quick todo list item during a meeting, or while deep in some code easy to do without losing focus.…
Frequently, I find myself defining APIs over network boundaries. Either service-to-service RPCs or brower-to-service HTTP calls. A question that comes up often is whether or not to design “batch” calls. In this post I aim to outline some of the factors to consider. What does batching mean? Buf first, what do I mean by batching? Take an imaginary WidgetDabase service, which has a single operation…
Earlier this week I found myself writing a command line utility to hit a web service I use fairly frequently. I decided to write it in D because time wasn’t much an issue, I wanted a compiled executable, and D is awesome . As most webservices do, this one deals in JSON endpoints. D’s standard JSON library stops at a type called JSONValue . JSONValue can, at runtime, be converted into other JSON…
A few months ago I decided to finally start using a password manager. Partly out of wanting to make life more convenient and partly because of a particularly long chain of mass password leaks that had happened that month. So I set out to look for good password manager. I wasn’t thrilled with all of the options out there. The open-source options out there tend to have poor cross-platform support,…
I’ve recently decided that I’m going to write more. As school is becoming more and more of a distant memory, and my professional interactions become more contextual and face-to-face, I find that I need to express complete, complex ideas in writing less and less. The instantaneous nature of instant messengers and to a lesser extent email, leads to a style of discussion where ideas emerge out of…
ClouDE is a project I worked on for a seminar on software tools in the spring of 2014. It is a Java IDE written in Scala that runs in a web browser. I chose to write this project in Scala because I wanted to experiment with the language. I had done a few project Euler problems, but I wanted something I could really sink my teeth into. I decided to target the browser because writting GUIs in java…
LeadSheet is a project I’m working on that allows you to type in some chords and get a backing track to solo over. The backing has a simple drum beat. a walking bass line and piano. The portion that generates the music is written in pure python, and the front-end is written in python/flask . How does it work? Warning: I’m going to use a few music terms To go from a list of chords to a sound file,…
SNAP stands for s hared n amespace a pplication p rogramming. It’s a small PHP utility I wrote that allows you to write functions in PHP and wrap them up into javascript modules. This allows you to essentially call server side code from the browser without fussing with AJAX. There’s still plently of work for this project. PHP runtime errors transition somewhat gracefully to javascript, but parse…
Recently I’ve been very interested in Erlang , a concurrency oriented functional programming language. Erlang’s best strengths are its powerful tools for writing mulit-process programs. After familiarizing my self with the language, I dove into writing a small multi-client, threaded chat server. Nothing too crazy — several clients would be able to connect and send/receive messages asynchronously.…