/tinyletter

The Programs of my Last Week at Rent the Runway

This Week’s Program: Apr 18 - Apr 22

After 2+ years as Engineering Director at Rent the Runway, it’s time for me to take my leave and start a new adventure. Today is my last day. I’ve got some feelings about it but I’ll not share them here. I’ll just say that I worked with some really great folks.

I’m taking some time off between now and my next gig (which I’ll announce later). I might take some time away from coding but we’ll see how I feel when Monday rolls around.

This week, I finished yak shaving and now have a working Vagrant environment for sonic-sketches.

7e8a50040e4835c166655104488d030381a1feb6

After last week’s agony, I finally manage to get sonic-sketches to run inside Vagrant’s virtualized Ubuntu environment. This commit represents a bunch of work to get the machine set up correctly. I pull in the openjdk-8-jdk package from a ppa. I also pull in the supercollider package. I use debconf-set-selections and set DEBIAN_FRONTEND=noninteractive so that I can download jackd2 without a tty. I use cat with a here document piping into tee to configure priviledges for dbus. Finally I make downloading lein and the project dependencies part of the provisioning process.

After some extra commands on the box I finally am able to run lein trampoline run and produce a song for Monday.

I give myself some additional TODOs to ensure that the system is totally provisioned and set up correctly.

3d4eb196fe1facc25dd5822a1107a8665df6cc69

Here I add a separate provisioning step, set to always run. This starts jackd. I use nohup so that the program continues to run even when I log out. I close stdin (that’s 0<&-) and redirect both stdout and stderr to a log file. Cheap daemons done quick.

d7062d8b116f18e3ccab252b8acea441fcbae92e

I use Bash’s here string operator to set debconf. This is a neat Unix gag.

942122298a90e139559460bb27be6418c043981d

I mark another TODO done when I set up a new provisioning step that copies the Forecast API Key from the Host environment to the Guest’s (those are virtualization terms) configuration.

e4474ce3a6f5e25a86e0e3203320c25fb97dfa71

My last TODO is completed when I use Vagrant’s file provisioner to copy the Host AWS credentials to the Guest.

I can now run vagrant up, vagrant reload, and run sonic-sketches entirely from within this box. Victory is mine!

I try to use Otto again but ran into this issue that doesn’t seem to be resolved yet: https://github.com/hashicorp/otto/issues/363

206976878ce766c511b3de2d758fff5a66d863bf

I bring in a professional logging library: com.taoensso/timbre to replace my println statements.

Now that I have a Linux environment that can reliably run my program, the next step is to get that environment into the cloud. I’ll likely be turning to another HashiCorp product: Packer. I expect to encounter the unexpected.

Until next time,
🐧 Mark