Archive | Projects RSS for this section

Uhh, something about me “Shipping Up to Boston.” I swear, I had something for this…

So, I recently gave my 2 weeks notice at Microsoft. Wanna hear the story and my thoughts on it? Yeah?

Groovy.

Two weeks ago, I was in Boston interviewing at two separate companies. My flight out of Seattle was Thursday at 3:45. Due to the presence of a short layover in Chicago and some delays leaving SeaTac, I ended up getting into Boston circa 1:40am. It’d be another 45 minutes until I got to my hotel due to some obnoxiously timed road work in Needham. I got to bed around 3AM. After 4 hours of sleep, I had my first interview in Cambridge at 8AM with Hubspot for an internal tools developer. Hubspot is a neat little marketing firm that specializes in what they call “inbound marketing” and target primarily medium-sized businesses.

My second interview was at 12:30PM at Tripadvisor. Tripadvisor is a travel website in Newton, MA. I cut my chops at Google with web-tech and while my academic background is predominantly in lower-level languages, many of the skills I’ve learned have been around scalability and robustness, which are generally applicable. More importantly, by virtue of being a web-tech company, they’re much more agile than Microsoft, which tends (at least in the Windows division,) to be fairly mired by the heavy infrastructure and engineering best practices required to make OS development feasible.

And I was on my way out of Boston within 16 hours of my arrival.

So that about covers the actions, but it omits the reasoning behind it and the decision to quit. Regular readers know how displeased I’ve been with my job. Prudence dictated that I kept it quiet, but I started conducting a job search a few months ago. After a few false starts I finally locked down and accepted a dev position at Tripadvisor. The goal, medium term, is to be my own boss, but some time ago I recognized that I lack the business savvy and small company experience to do so at this point. Hence, my search revolved around startups and small-medium sized companies. Tripadvisor is the largest of the companies I considered.

I remember a conversation that occurred between a member of Xplore who’d recently been laid off and the owner at one of our classes. Jordan, the owner, asked if he was gonna “follow the dream.” The other guy responded with something that boiled down to him having bills to pay. Jordan responded, with his trademark bravado/obnoxiousness, that his dream paid his bills.

For the past year, I’ve been paying my bills, both literally and metaphorically. My decision to take the high paying job at Microsoft was driven by a preconceived notion that my success is rooted in my material well-being rather than my happiness. Truthfully, it put me in a pretty good financial place. But no matter how much money I had, without time to enjoy it or friends and family to enjoy it with, it wasn’t making me happy. I felt as happy in April as I did in November, before I’d paid off my debts, and I felt way less happy with my life than I did when I was actively accruing debt in college.

It’s time for me to stop just paying the bills and start pursuing something that I find ultimately fulfilling. Living the dream, as it were. I haven’t figured out what that is just yet. But I want to. And I’m finally in a position to do it.

The Clock Runs Out

We’ve been doing a lot of AMRAPs and circuit training at Xplore lately. Metcons on metcons, yo. I like metcons. Really, I like anything where pacing is up to you. I usually get stomped, but I do work appropriate to my level or above it, and it doesn’t matter how inaccurate you are with the weight or difficulty. If you choose a weight too light for you, you just gotta do it faster and cleaner. Too heavy, and you just have to do your best.

The thing with that style of workout is that, while you go in feeling strong and leave feeling accomplished, there’s this moment a little ways in where you’re positive, and I mean POSITIVE, that you can’t handle any more physical abuse. Its that moment that one more kettlebell swing is beyond your abilities. When you’re staring down the barbell that’s sitting in front of you because lifting it seems like an impossible, Herculean task. When that wall-ball target seems like 15 m instead of 15 ft.

I’ve been there a lot. Hell, I’ve been there a lot this week alone. Its a bad place and you don’t want to be there. You’re sure that the pain is gonna last forever and the Sisyphean task you’ve been assigned will never end.

But it will. Time might seem like its stopped, but it hasn’t. Every single AMRAP I’ve done has ended. The clock runs out; all you gotta do is survive. You don’t need to beat anyone other than your own expectations, and as long as you try hard, you’ll do that.

My life seems like a metcon recently. Every morning is a challenge. There isn’t a day I don’t consider walking into my manager’s office and quitting and moving to a new city. Not. A. Day. But just like Crossfit, the clock is gonna run out. It isn’t today, and it probably won’t be tomorrow, or even next week, but soon I’ll finish and move on to something better. You just gotta keep strong, or as strong as you can manage, and do as much as you can. Unlike Crossfit, there isn’t a whiteboard for life; truly, the only person you compete with is yourself.

Just make sure you post a good score

Throwing my Hat into the Ring

For those of you who don’t obsessively check for Crossfit competitions in your area, registration for the Crossfit Open starts in just 15 days. Shawn and I are going to compete, but probably only with each other, since posting any REAL numbers is almost certainly out of the question considering how recently we started. Actually, I won’t impugn Shawn’s ability. He’s probably gonna start the competition by knocking down 900lbs on his CFT and go on to win North East Regionals or something equally awesome. I, on the other hand, will probably still post the worst numbers at my box, but it won’t stop my entrance!

The way the Open works is that each week CF HQ posts a new competition workout. Anyone can participate, either by filming their WOD and posting their numbers to the leaderboards or by going to a registered affiliate and doing the WOD under their trustworthy supervision. At the end of 5 weeks, the top 48 men and the top 48 women are invited to compete in Regionals. The open starts in early March and ends in early April. It’s an interesting system that ultimately culminates in getting the top performers from the Regional competitions into the Crossfit Games, which is sort of a big deal.

So, I’ve got two months to get to a place where I can not suck. Or at least, not suck as badly. Since I’m already going 5 times a week, I think I’m going to have to add skill work after CF. First on the slate is double unders, because if there’s a single movement that will put my performance in the grave, it’s the double under.

I’m also going to be working on my intake. Currently my diet is *exactly* this. Every weekday.

  • 1 Sandwich from the Microsoft Cafe and an apple. Whatever the leanest meat they have is. If it’s turkey and provolone, I eat that. In the absence of that, I rock a ham and cheese. If all they got is tuna or egg salad, I go and eat a bunch of powerbars for lunch.
  • 1 Large chicken breast.
  • 3 Slices whole grain bread (with light butter)
  • 1 Large bag of frozen veggies. Usually, it’s something like a California mix, but every now and again I like a sweet potato to balance things out.
  • 2 Servings whey protein.
  • 2.5 g Creatine supplement

Weekends, I don’t keep to anything.

The main change I gotta make is keeping to some sorta diet on the weekend. This is probably gonna mean cutting down on the drinking. I know any serious athlete would need to cut out drinking more or less entirely, but I won’t be able to compete in that sphere unless I can start getting a second daily workout to jive with my schedule anyway. Also, I’ll need to be more conscious of what I eat for at least two of my weekend meals. Also, MORE PROTEIN. BASICALLY ALL THE PROTEIN. It turns out that eating as much protein as I’m supposed to is expensive, and I’m still a little bit cash poor due to the rate at which I’m paying off my student loans. Finally, I’m swapping the Creatine supplement for N.O. Xplode 2.0. Changing one’s diet needs to be a gradual change. Trying to do too much all at once is how people fail; ain’t nobody bust out a 200lb overhead press their first time out, ya gotta work up to it!

I’m sorta hella excited for the last one, actually. That shit doesn’t fuck around! In any case, it’s going to be an exciting couple months! Wish me luck!

The Pumpkeg: Shamelessly cribbed and improved via power tools!

So, here is where I found the original instructions. If you watch it, it suggests doing the whole thing by hand. It’s a perfect bit of flair for any events in October or November!

What are we? Cavemen!? After writing off that ludicrous suggestion, I turned my attention to improving the process. Here’s their original list of necessary materials:

  • one large pumpkin
  • marker or pencil
  • carving kit
  • Plastic Spigot (aka tap)
  • lots of Sam Adams Octoberfest beer

Here’s my improved list.

  • one large pumpkin
  • marker
  • serrated knife (we used a cheap steak knife)
  • Plastic Spigot (aka tap)
  • whatever pumpkin flavored beer you’ve got for that double-pumpkin flavor (I’m partial to Elysian Night Owl’s Pumpkin Ale)
  • Power Drill
  • 1/2″ Drill Bit
  • The Pumpkin Gutter Drill Bit
  • Optionally, a rotary tool w/ various bits, depending on just how crafty you wanna get.

To begin, cut a hole in the top, ensuring that it’s large enough that you can easily fit and maneuver the Pumpkin Gutter (PG) through it.

Next, grab your drill and put in the PG bit in your drill and crank that baby up to high speed. Get someone to hold the pumpkin steady and run the gutter along the edges of the inside of the pumpkin for a little, and empty the resultant pulp into a garbage can. You’ll probably need to repeat this process a few times to get most of it. It should only take a couple minutes. Feel free to apply pressure against the sides of the pumpkin, especially near the bottom. The gutter will thin out the sides of the pumpkin with sufficient force, which you’ll need to do anyway to mount the tap.

Once you’ve removed most of the pumpkin guts, you’ll need to ensure that you’ve removed all of the seeds, since they’ll clog the tap.

Next, put the spigot near the bottom of the pumpkin and draw a circle around it.

Keep in mind that since its gravity based, the closer to the bottom you put it, the better it’ll perform near the empty mark. Pop in the 1/2″ bit and punch a hole where you just marked.

Can you imagine that Celebrations.com wanted me to do this with a knife? Pssh

The resultant hole diameter will be a tad smaller than the diameter of the spigot. That’s desirable, since it’ll help form a tight seal. Next, you’ll probably want to carve a little of the inside wall around the hole to accommodate the inner seal and nut. Finally, once you’ve thinned the surrounding area, you’re ready to install the tap. Place the white plastic seal with the flat side facing away from the outer pumpkin wall on the tap. Next, put the tap through the hole. Then, place the other white plastic seal with the angled side towards the front of the spout and place the nut over that. Tighten the nut. Below is a picture of the tap assembly (sans pumpkin wall, which goes between the two white seals. 

Finally, fill it with beer and enjoy!

The whole process took about a half hour for me, but if you want to get really fancy, a rotary tool can be used for carving purposes. I didn’t have cutter bits at the time, but I suspect a few cutter bits, a grinding bit and perhaps a cut wheel would be sufficient to cut some badass designs. It should go without saying, but you are limited to designs which don’t actually puncture the pumpkin…

A few things to note regarding the beer. We used a dark winter seasonal, which worked pretty well with the flavors imparted by the pumpkin. I can’t imagine that light beer would be particularly good, but I’d consider it a pleasant surprise if someone tried it with positive results. One thing I wish I’d done better was chilling the beer. We did chill the beer, but it turns out pumpkins aren’t thermodynamically optimal for this application, and the last couple beers get pretty warm pretty quickly. Finally, we had a medium-large pumpkin, which held 6 beers very easily. I suspect that it would’ve cleared 12 gracefully. Use your best judgement, but a medium large pumpkin should do just fine for small gatherings (10-20 people) as long as you’re prepared to do a refill or two.

Special thanks to Matt for the assistance in constructing and documenting this Fall treat! If any of you lovely readers give it a shot, I’d love to hear about your exploits! Happy fall, yo!

liquorCabinet.py

Matt and I threw a party last week. Or, based on our guest attendance, Matt threw a party and one of my friends happened to be there. In any case, it was a good time. We had a competently stocked little bar, including all the basic liquors, triple sec, dry and sweet vermouth, fresh fruit for garnishes, etc. The problem became that I didn’t have a good way to come up with the complete menu of drinks we could make. Sure, there are apps where you can put in the ingredients you have on hand and it tells you what drinks you can make. The problem is that those usually (always, in my experience) come prepopulated with their own database of drinks, which inevitably includes random stuff you’ve never heard of or never make. They always include a ton of gimmicky drinks that exist in all of two bars. That was NOT for me. I wanted a way to figure out what drinks I could make out of a self-defined database, so I could weed out stupid drinks with extreme prejudice. Being “savvy,” I came up with a Python 2.7 command line script that allows you to do just that. The basic flow is as follows:

1) Put in all your drink ingredients. Each ingredient gets added via a command of the form “python liquorCabinet.py add <Ingredient>”

One important caveat is that when entering ingredients in this version, I assume that space is a delimiter. What does that mean for those readers who aren’t used to command lines? Basically, no spaces in your drink names. I fix this later when it outputs the drinks you can make, but for the purposes of adding ingredients and later drinks, you’ll need to put in an underscore character whenever you want to put a space. So, to add Sweet Vermouth, we’d type “python liquorCabinet.py add Sweet_Vermouth”
Simple, yet surprisingly time consuming!

2) Put in the drinks you want to add to your database. Each drink is added via a command of the form “python liquorCabinet.py drink <Drink_Name> <Ingredient_One>… <Ingredient_N>”

So, to put in a Cuba Libre, you’d type “python liquorCabinet.py drink Cuba_Libre Rum Coke Lime”

Notice that the same convention of using underscores instead of spaces holds! Additionally, ensure that your capitalization is the same. Light_Rum is not the same (from the script’s standpoint) as light_rum. Nor is it the same as Light Rum, Rum, Light_rum, etc. Basically, type shit the same way and everything will be gravy.

After you’ve done this step for both drinks and ingredients, the script will generate two files in the directory that you’re running the script from. Don’t delete these! They’re the databases of your drinks and ingredients. If you delete them, you’ll have to reenter everything. Wamp wamp.
Finally, type “python liquorCabinet.py out” to get an HTML page spit out into the same directory. This page contains all the drinks from your database that you have ingredients for! As an example, say I’ve only got three drinks in the database, and my liquor cabinet contains gin, tonic, vodka and lime. My drinks are Gin and Tonic, Vodka Tonic and Long Island Iced Tea. If I type the command, the page will reflect that I can make the Gin and Tonic and the Vodka Tonic, but not the Long Island. If I were to add the rest of ingredients in a Long Island, it would show all three drinks. Lastly, if I removed Tonic from the ingredients, Vodka Tonic and Gin and Tonic would not longer be on the page. Cool, right?!?

“But Dan, what if I run out of an ingredient or make a mistake in entering something and want to remove an ingredient or drink?” Got ya covered, hypothetical reader.

To remove a drink, the syntax is “python liquorCabinet.py removeDrink <Drink_Name>” To remove an ingredient, it’s “python liquorCabinet.py remove <ingredient>”

There are also two diagnostic functions. The cabinet argument prints out all the ingredients you’ve entered. The drinks argument prints out all the drinks.

Lastly, there’s a batchAdd command, which takes a filename as an argument. The file itself is a text file containing one drink per line. I’ve included my drink list as a base. It adds many of the drinks I learned in bartending school.

You’ll notice that the output list DOESN’T look like crap, which might/should come as a surprise to those of you who have heard me bitch about CSS and webtech in general. Sorry to not disappoint, but Matt did the final polish on the script, enabling it to look all fancy. Kudos to him! We set this up by putting my computer back in the bar and running the script in a network accessible folder. That way, I could remotely eighty-six ingredients, which would update the HTML file on the network. We then had a touchscreen set up for our guests to scroll through the menu with. Whenever I killed an ingredient, I’d update it on my computer and hit refresh on the menu computer. The whole thing is a tad crude, but I’ll probably continue working on it (I’ve got a few ideas in mind.) In the mean time, throw some tech at your next party and you’ll bring a bit of novelty to the proceedings. You can find a zip file with the script here.

Update 2: Update Harder

Well, it’s certainly been long enough, yeah? That one’s just on me. Busy and whatnot. Anyway, on to the interesting stuff!

First the blog level update! I’ve decided to add some features which have less of an upfront time debt associated with them. So, rather than just covering my major projects (such as the Barduino,) I’ll be throwing some other stuff up as well. For now, I’m gonna go ahead and add three sections. The first is drinks. I’ve recently gone and taken a bartending class. It’s really difficult and I haven’t gotten certified as of just yet, but I’m on my way. I should be good to go in two short weeks. In that vein, each week I’ll be purchasing one new liquor or liqueur and making a cocktail with it. Sometimes it’ll be a pretty mundane one. Other times, it’s gonna be something slightly off the beaten trail. You’ll just have to stay tuned to see! This week is gonna be the Old Fashioned with homemade simple syrup.

The second is that I’ve recently moved clear across the country from Washington (D.C.) to Washington (State.) I’ve got some musings on the city, but this is a blog about practical problems (like CS and sobriety) and not those which would fall under the purview of your conundrums of philosophy. In any case, the relevant detail  about it is that I’m now living in downtown Seattle a block away from Pike Place Market with my friend Matt and that you can’t walk 50 feet without tripping on a speakeasy-style bar. Which is just dandy! Matt and I will be frequenting some of these establishments and laying some cold, hard truths about them on you, gentle reader. In short, bar reviews! Just what you wanted, right? More of my unjustified opinions on stuff! Whoo!

Third: Cooking. Imma start doing some of that. This is the one section which I’m not sure about. Cooking is a pretty daunting prospect, but I’ll give it the old college try and see if anything bloggable comes out of it.

Finally, we’ve got a few project updates! The first is that Matt has agreed to help with the Barduino. He’s currently in charge of the valve interface, and I’ll be chronicling his progress in addition to my own. Additionally, he’ll be the secondary judge for the cocktail of the week, just to give a secondary opinion. The Barduino itself has a slight modification in design, which is that I’m going to use bar style bottle pourers (which guarantee a constant rate of flow) to, well, guarantee a constant rate of flow….

Finally, I have a minor project that will be finished within the week. It’s nothing that hasn’t been done before, but you may well get some use out of it. We’re having a small get together next weekend (everyone who reads this blog is . To that effect, we’ve purchased a core group of libations for then. I’ll be building a Python web tool which will take the contents of my liquor cabinet and populate a web page with drinks I can make. Fixed menu parties do have a certain appeal to them, but I wanted to offer something a little more flexible to our guests, and I think this is gonna fit the bill pretty nicely. Also, since it’s in python, it’s gonna take me very little development time. I’ll make this code available once it’s done, too.

The Barduino: Pt 1

Hey guys!

Those of you who know me know about my projects. Usually, I try to spend my spring breaks building something. My last project was The Device, which was a proof-of-concept camera-based touch screen coffee table. Now that was a design provided by the excellent publication Maximum PC and while not nearly as nuanced as their version, it was cheap and effective, all things considered. This project will be the first of my own design. Armed with trivial knowledge of circuitry, substantial programming abilities, a CAD program and a name shamelessly cribbed from the Matt William’s much more nuanced Barduino, I’ve decided to construct a device so that I can invite people over to have a drink served by my robot.

After doing a little bit of background research, my design will have several differences from Mr. William’s device.

1) While he used windshield wiper pumps to guarantee a constant rate of flow, I’ve decided to use a Mariotte Siphon in order to provide a constant pressure.  It will save me a little effort in circuitry, since that’s by far my weakest skillset. A simple Mariotte Siphon can be made from tubing and a two-liter bottle.

2) I’ll also be omitting the photosensor that he uses to check to see if a glass is present. All this means is that if you tell it to dispense a drink, it’ll do it regardless of whether a glass is there or not. Additionally, since I’ve envisioned this being mounted to a wall, there really isn’t a place for it. If it ends up being an issue where my guests are incredibly discourteous and pour drinks on my floor with any sort of frequency, well, I suppose I’ll need to reconsider.

3) Since the device will be mounted on a wall, it will need valve control logic to prevent unintentional flow. This blog suggests using a solenoid valve. His valve setup is being used for low-latency applications, so it’s likely overkill for my device, and at ~30 dollars per valve (sans tubing), I’m definitely on the prowl for low cost alternatives.

4) I’m planning on using a hardware control mechanism to allow for programmable drink menus. While I’ll initially use a dip switch setup in order to select options, the public debut may need a more user friendly solution, such as a key pad. I’m not sure I expect people (myself included) to be particularly accurate in performing binary conversions after a couple drinks, after all…

5) Probably won’t use Ruby.

I’ll keep the blog updated as I design, acquire parts and construct the device. Stay tuned! Also, suggest alternative names, since I really don’t want to totally hijack Mr. William’s brilliant wordplay!