Matt Whipple, Software Engineer

Writing in a Vacuum

Sproogle EOL and Thoughts on Google Closure Templates

29 Nov 2016

Several years ago I threw together Sproogle which is a project to integrate Google Closure Templates as a View technology for Spring MVC. As part of tidying up some of my GirHub presence I’m now officially end-of-life’ing the the long neglected code base.

Here’s a little more info and some thoughts on Google Closure Templates resulting from working on the associated project.

Full Post >

Why I Prefer My Macros to Be Hygienic

22 Nov 2016

We’ve all been there…at some fancy dinner party with delightful small talk and inevitably the conversation shifts to a discussion of Lisp macros and the heated discussion begins around the more common defmacro style macros used in Common Lisp and Clojure versus the hygienic alternative such as offered by Scheme. As the debate rages you slouch down in your seat and hope everyone is too caught up in their own passion to ask for your input and expose your ignorance on the matter.

I’m obviously kidding….there’s nothing delightful about small talk.

Full Post >

Structural Jekyll Elements

16 Nov 2016

Jekyll is a great, simple solution for publishing basic Web sites. It’s one of the more popular static site generators and has the potentially enormous advantage of being able to be published to GitHub without requiring a pre-push build.

Although Jekyll and Markdown don’t get in the way of writing HTML directly, extending the combination of YAML and Liquid templates can be more fruitful…but extension options are somewhat limited when using GitHub pages.

Full Post >

Timezone Troubles

13 Nov 2016

Date and time values are ubiquitious in programming (as in the modern world). Unfortunately the domain of time is full of quirks which are not particularly interesting but can get in the way of implementing what would otherwise be trivial code. This often leads to brittle implementations which sometimes lead to data mangling.

Java in particular has historically provided classes for working with date and time values which offer abstractions to lean upon but which do not protect users from some of the associated dangers. One particularly subtle issue arises when trying to render/parse values in ISO 8601 format which does not have reliable support until Java 7.

Full Post >


05 Nov 2016

Maybe as an artifact of my age I’ve always considered a printer to be part of a complete computing environment, but much like cereal being part of a complete breakfast I’ve come to question that. Gone is the delight of watching an unbroken stream of tractor feed paper slowly buzzing and eagerly awaiting the tactile delight of attempting to remove the edges off of the stack before separating the individual pages. All that’s left is a hangover of overpriced supplies and devices that seem oddly reluctant to apply pigment to paper.

Full Post >

Programming Interviews-Work Down

03 Nov 2016

It can be hard enough to program with a co-worker looking over your shoulder, but replace that co-worker with an interviewer and swap out that computer for a dry-erase marker and whiteboard and it may feel like the kind of nightmare where you suuddenly realize you’re in your underwear…and time’s running out!

Regardless of possible criticisms, participating in that type of coding interview is somewhat a rite of passage for programmers and is standard practice for a lot of companies. The topic came up briefly in conversation last week while I was at the (very nice) Datadog Summit where another engineer was lamenting that he felt disadvantaged during coding interviews because he was most comfortable in C and ~40 minutes goes by pretty quickly when you have to worry about low level details like memory management. Though I can’t disagree with possible C pains, it left me thinking about associated advice I’ve had bouncing around my head (and a tweet I just saw about supposedly horrible Google interviews gave me the extra nudge).

Full Post >

My Emacs Config

22 Oct 2016

Emacs has a rich set of built-in functionality but it also has a vast ecosystem of easily installed packages of varying quality. I found myself seduced into quickly installing packages that introduced significant complexity without commensurate benefits over built-in or simpler solutions (and introducing notable performance issues). In reaction to this I’ve scrapped my previous emacs config and started a new one from scratch which will be based on more careful and conservative tweaks.

The new config will serve to customize my emacs install and also document provided behavior (such as standard key bindings) with incremental commits (ideally more than once a day). Packages will be included as they are assessed, but built-in functionality will be explored first (working with emacs snapshots as the base). :chicken:

Full Post >

Mutable Accumulators in Scheme

18 Oct 2016

Scheme is agnostic about immutability….I prefer it in Lisps since it seems to fit the structure of the language well while code that mutates state can seem clunky, but I may have just drank too much immutability Kool-Aid.

Sometimes, regardless of ideals, mutability makes sense and in those cases the mutable values should still be handled in an organized way rather than defaulting to global variables or the sprawling binding environments that using set! by itself may invite. Here’s an approach I adopted to put a tighter rein on some of that potential chaos.

Full Post >