2014-07-06 18.57.03

Dissecting ARGFest’s FestQuest

This is one of many posts at Netninja dis­sect­ing puz­zle design. You may want to explore the “puz­zlegames” tag for more. Also note that major spoil­ers lie ahead.

As read­ers of this blog may know, I help run a monthly puzzle-solving event called Puzzled Pint. (And if you look at the web­site right now, you’ll see the loca­tion puz­zled posted for Tuesday’s events in Portland, Seattle, London, Chicago, Phoenix, and the Bay Area.) We dis­trib­ute every­thing that Puzzled Pint cre­ates under a Creative Commons license. You can find all those puz­zles in the archives, avail­able for non-commercial use. This year, ARGFest asked us to build FestQuest, a light­weight puz­zle hunt that dou­bles as a walk­ing tour of the city. Instead of just dump­ing all the puz­zles on a web­site, I thought it would be more fun to walk through some of the behind-the-scenes revi­sions and work.

Bag Handouts

Each con­ven­tion bag received a lit­tle Puzzled Pint sam­pler hand­out. The sim­plest one was new. We culled two of the puz­zles from the archives. We designed the fourth, a stan­dard no-frills cryp­togram, fresh. The front side has some fun bee-related puz­zles. The reverse alludes to time travel and, if you decode the cryp­togram beyond the quote, talks about being recruited to save human­ity.


Although a few peo­ple saw that the star-ratings weren’t stars for the four-star puz­zle, I’m not sure that folks noticed until after FestQuest began that there were four vari­ants of the same cryp­togram. The PDF linked from the above thumb­nails con­tains all four vari­ants.

The Puzzled Pint playtest group solved the cryp­togram by hand. This is a rea­son­able attack, given the coded text is so long and falls fairly well into stan­dard let­ter dis­tri­b­u­tions. I had expected ARGFest folks to just plug it directly into a cryp­togram solver (one of my favorites is quip qiup, which spits out the cor­rect answer in less than a sec­ond). I was a lit­tle sur­prised to see one team, hav­ing noted that the quote’s author is in plain­text, look up famous Jonathan Swift quotes to dis­cover which one fit. I love see­ing peo­ple attack puz­zles in unex­pected ways. That’s part of my hacker upbring­ing, I guess.


Kickoff Puzzle

The FestQuest kick­off puz­zle was an uncon­ven­tional cryp­togram — a polyal­pha­betic vari­ant that you can’t just plug in to a solver.


In addi­tion to recruit­ing the team on a mis­sion to save the world, its job was to be an ice-breaker, allow for dis­trib­uted solv­ing, and used one of my favorite puz­zle tropes: “you had the key to the answer with you the whole time!”

Once you hit the a-ha moment of notic­ing the four sym­bols in the cryp­togram match the four vari­ants of the hand­outs, it’s just a mat­ter of solv­ing the hand­out cryp­togram once and copy­ing the let­ters over to the kick­off puz­zle.



This puz­zle went through some minor revi­sion after playtest­ing. The coded alpha­bet is assigned through a vari­ant of key­word cipher. To gen­er­ate the code key, you pick a key­word, strip out the dupli­cate let­ters, then fill in the remain­der of the alpha­bet after. For exam­ple, with DIAMOND:


This is a hor­ri­bly unsat­is­fy­ing solve because the let­ters from P onward — includ­ing the pop­u­lar let­ters R, S, and T — match between the plain­text and cipher­text. Reversing the alpha­bet from Z to A fixed that. I over­heard one team notice that the key­word for cir­cles used some vari­ant of “disc” with extra let­ters. This is because both cir­cle and disc popped out match­ing let­ters in the mid­dle of the alpha­bet. Given more time, we may have used a totally dif­fer­ent shape (for instance, replac­ing cir­cle with hex or pen­ta­gon) for a more sat­is­fy­ing holis­tic solve. Due to hard dead­lines we went with “good enough.”


The first stop along the tour was Waterfront Park, specif­i­cally the Battleship Oregon Memorial. Teams picked up an unusual sudoku.


It is a stan­dard sudoku except crossword-style clues replace the hard-coded starter num­bers. Certain spaces have cir­cles, indi­cat­ing data to “pull out” from the grid. Indexing those into the alpha­bet (one of the sim­plest codes in the handy-dandy code sheet) spells out the answer.



The orig­i­nal proof-of-concept puz­zle had fewer clues and a rather unsat­is­fy­ing answer. (As I recall, it was some­thing like “bad ice dog.”) The next revi­sion fea­tured a bet­ter answer, but the live playtest the week­end before ARGFest revealed a flaw in the puz­zle. There were not enough clues given to arrive at a sin­gle unique answer. This dry run also had play­ers going out to Saturday Market, which is a won­der­ful touristy spot. Our playtesters quickly dis­cov­ered it was a lit­tle too busy to find a spot to sit down and fin­ish a puz­zle. It was also fur­ther out of the way than the other spots, adding to the length of the walk.

Defenders of the Park

The next step of the tour was Mill Ends Park, the small­est park in the world. This fea­tured topo maps and army men.

map1 map2 map3


Find the right place­ment of the troops, who hold a mes­sage for you.


The pro­to­type of this puz­zle used actual green plas­tic army men. Many boys know from their child­hood that a mag­ni­fy­ing glass, matches, or lighter will let you bend and warp the small plas­tic fig­ures. It turns out that bak­ing them in the oven also makes them mal­leable enough to bend their arms into sem­a­phore shapes. The under­side of the bases held the printed matching-pictures. This led to a pretty fun a-ha moment.

I was out of town and off-the-grid when the deci­sion came down to use printed tokens instead of army men. I can only assume it was some com­bi­na­tion of the sem­a­phore being a lit­tle ambigu­ous (we had prob­lems with elbows and arm-direction vs. forearm-direction in the pro­to­type playtest) and the pro­duc­tion work involved in cre­at­ing mul­ti­ple sets of army men.

Not in Portland / QRossword

This puz­zle is a cross­word, but with num­bers. You pull some of the num­bers from a sign­post sculp­ture at Pioneer Courthouse Square. Others are trivia. I’m just glad that, despite the Major League Soccer event held that week­end in The Square, the sign­post was still vis­i­ble.


I heard, after the fact, that one team devel­oped an amaz­ing sys­tem for solv­ing this one. The divided the tasks: pulling num­bers from the sign, look­ing up trivia on Google, per­form­ing the math, con­vert­ing to binary, and fill­ing in the puz­zle. They even took it a step fur­ther. After enter­ing each answer in the grid, they’d attempt to QR scan the puz­zle. Because there’s a cer­tain amount of redun­dancy in QR code data (to com­pen­sate for dam­aged codes, poor light­ing con­di­tions, and bad cam­eras), they fig­ured they didn’t nec­es­sar­ily need to have all the answers entered before the QR scanned. (They were right.)



First off, I have to say that this puz­zle is a jab at Steve Peters’ hate of QR codes. There were very changes to the puz­zle itself between pro­to­type and final. The main one was that one of the answers lit­er­ally solved to zero, with no shad­ing in the grid. The playtesters didn’t think that was very sat­is­fy­ing. We shifted the blank up by one; a zero is still a major part of the math lead­ing to the answer (lots of near-impossible trivia mul­ti­plied by zero), but you do end up shad­ing in a box for that ques­tion.

Cinnanom Cookies

The next stop was a quick jump over to Director Park for one of the tasti­est puz­zles I have ever expe­ri­enced.


Accompanied with this were a set of deli­cious cin­na­mon alpha­bet cook­ies:

  • A x 6
  • C x 3
  • E x 8
  • F x 1
  • G x 1
  • I x 5
  • L x 4
  • M x 1
  • N x 6
  • O x 1
  • P x 1
  • Q x 1
  • R x 3
  • T x 5
  • U x 2
  • V x 1



The pro­to­type of this puz­zle had a sin­gle list of words from which you had to deduce pairs. Half-way through a rough solve we all con­cluded that it would be eas­ier to split the words into two columns, pick­ing one from each. A few of the words changed after playtest­ing for clar­ity.

Book Hive

The Powell’s puz­zle fea­tures col­or­ful hexes with book depart­ments.


When you arrange the hexes so that the depart­ment labels are adja­cent to their room col­ors, you can spell out the two answer words around the cen­tral hex.



In test solv­ing the pro­to­type puz­zle, we made a few mis­takes. We were not actu­ally at Powell’s that evening. It was one of our Tuesday location-scouts for Puzzled Pint. It turns out that Powell’s has shuf­fled depart­ments between the col­ored rooms over the years. The cur­rent state of things doesn’t match the October 2003 PDF map that comes up first in a Google search. In fact, due to con­struc­tion, the cur­rent state is a lit­tle dif­fer­ent from the state seen ear­lier in 2014. We had to be cer­tain that: (1) the puz­zle matches the real world and (2) every­one had a copy of the “2014 Construction Map” in their hand­out so that every­one was work­ing from the same (cor­rect) set of data.

Honeycomb Drive

Each loca­tion gave the teams a piece of “the Honeycomb Drive.” Once a team col­lects all of the pieces, a quick puz­zle shows how to assem­ble it.


Information from the pre­vi­ous five puz­zles more-or-less feed into this one. This gives you the final answer word to dis­able the evil AI.



If any­one wants to have their very own Honeycomb Drive, I have the source files avail­able in a Ponoko-compatible for­mat.


Until pretty late in plan­ning, this was called sim­ply “The Device” or “The Communications Device.” Ana picked out Honeycomb Drive as a great “mar­ket­ing name” only a few weeks before ARGFest.

This puz­zle went through three phys­i­cal revi­sions and two revi­sions of the cor­re­spond­ing paper hand­out. I started the phys­i­cal design months pre­vi­ous to the event. Originally, each piece was giant. It took up a sat­is­fy­ing amount of space in a clasp enve­lope.

2014-07-06 18.57.03 2014-07-06 18.58.03

Using foam­core board as a pro­to­typ­ing mech­a­nism, I felt the assem­bled device was a lit­tle too big. Additionally, I wasn’t sure if I was going to make it through the local tech shop or Ponoko, so I shrunk it and opti­mized the design to fit on Ponoko’s “P1” acrylic sheet.

I even­tu­ally did go with Ponoko. The local tech shop is easy and great for wood­work­ing and met­al­work and have an ever-expanding elec­tron­ics work­bench. Their laser setup still requires a lot of babysit­ting. They don’t have a mate­ri­als library and don’t let you use the cut­ter directly. I end up hav­ing to go to Tap Plastics myself to grab the acrylic, then set­ting up an appoint­ment to meet some­one at the laser cut­ter. A 20-minute job takes sev­eral hours out of the day (and takes a few days lead time to set up). Since I was only going to be out of town for one day in the two weeks lead­ing up to ARGFest, I went with Ponoko. This also accounts for some of the color choices (and cor­re­spond­ing team names). Their translu­cent color selec­tion is a lit­tle odd.

2014-07-18 10.44.42

The first man­u­fac­tured revi­sion of this puz­zle had etched words that, in my opin­ion, were a lit­tle too small. The playtesters had no prob­lem read­ing them, but I wasn’t happy with the clar­ity. This was on red acrylic and was a backup “Red Team” in case we had enough peo­ple play­ing to war­rant five teams. It also had pieces that fit a lit­tle loosely. I designed the pieces for 3mm acrylic. I think the slots ended up at 3.1mm to accom­mo­date a lit­tle bit of tol­er­ance dif­fer­ence. Unfortunately, this batch of “3mm” acrylic from Ponoko actu­ally mea­sured out at 2.7mm, giv­ing a whole lot of slop space. Most of the laser cut projects I work on are enclo­sures; I err on the side of extra slop because the pan­els are held in place with ten­sion bolts. (See The Chubby Tricorder Project for an exam­ple.) Given more time, or were I to do this again, I would have put lit­tle tension/friction bumps in the slots to bet­ter hold things in place (and pos­si­bly cor­re­spond­ing etch-points to bet­ter cap­ture them in place).

2014-08-10 11.48.47

The sec­ond, and final, man­u­fac­tured ver­sion was the one every­one played with on game day. I didn’t feel I had enough time, given my lim­ited avail­abil­ity, to tweak much more than font size.

As far as paper-handout revi­sions go, the first one was more activ­ity than puz­zle. In fact, a few of the answers weren’t pulled directly from the puz­zle answers (“green” for the army men, “cin­na­mon” for the cook­ies) because, by the time I needed final-ish designs of the rotors, those puz­zles were still in a pro­to­type form. DeeAnn did a great job at rewrit­ing them into a more puzzle-y form.


ckWe used ClueKeeper to han­dle all of the back-end logis­tics: val­i­dat­ing answers, dis­trib­ut­ing hints, and lead­ing teams to their next loca­tion. Although I didn’t do any work design­ing the ClueKeeper end of the puz­zle hunt, I did learn how amaz­ingly flex­i­ble it can be. We’re start­ing to work on the design of a replayable Portland hunt, reusing a cou­ple of the FestQuest loca­tions. If you’re in Portland, stay tuned.


I hope this gives a lit­tle more of a behind-the-scenes view of how Puzzled Pint han­dles puz­zle design. At a min­i­mum, puz­zles go through a pro­to­type, at least one playtest, and final QC before the pub­lic sees them. With events in live spaces, there’s a playtest or dry run. This tests not only the puz­zles, but the envi­ron­ment. This is also why we scout bars on Tuesday nights — to bet­ter see what the crowd might look like, to see if we run into event clashes like music or trivia nights, and so on. In fact, this iden­ti­fied the crowd­ing prob­lem with using Saturday Market as a loca­tion.

If this hasn’t scared you away from writ­ing puz­zles or run­ning hunts, Puzzled Pint is always look­ing for guest authors and ClueKeeper is happy to talk to you about their author­ing tools and infra­struc­ture. And if you think you want a longer puz­zle hunt, I encour­age you to get involved with DASH as a player, a playtester, or vol­un­teer.

Posted in: Portland Puzzle Games


Storytelling through aspect ratios

I work in the tech­ni­cal video field, so when watch­ing dig­i­tal video, I often notice things. Macroblocking, smear­ing, edge ring­ing, blurred edges. They’re the type of things that most “video mug­gles” don’t notice, so I tend to let them slide. This week­end I watched Grand Budapest Hotel and chuck­led a lit­tle at the open­ing slate:


As if. I thought it was a lit­tle joke. Pretty much every­thing capa­ble of dis­play­ing video these days does 16x9. I thought it to be some­thing like “in stereo, where avail­able.” I watched the whole thing, front to back, in one sit­ting, get­ting totally sucked in to the story. I don’t think it was Wes Anderson’s best, but it was still a great movie.

It wasn’t until later, when I went back to review a scene that I noticed. The aspect ratio was... odd... And that I didn’t notice the first time through just shows how strongly the story pulled me in.

It took a bit of fast-forwarding and rewind­ing, but I even­tu­ally con­cluded that the film uses FOUR dif­fer­ent aspect ratios — one for each time period depicted. Okay, tech­ni­cally, three (but two dif­fer­ent sizes of one ratio), and then the open­ing slate itself is a fourth or a fifth, depend­ing on what you’re count­ing.

Widescreen tele­vi­sions these days are 16:9. For every 16 pix­els across, you get 9 pix­els down. That’s a ratio of 16:19, or 16 ÷ 9 which is 1.78:1. (Laptops are a funny thing and have all sorts of dis­play ratios. Mine hap­pens to be 16:10 or 1.6:1.)

The open­ing slate itself is a lit­tle weird in that it’s 16:8, or 1.871:1.

The movie is book­ended by pre­sum­ably modern-day shots of a girl vis­it­ing a memo­r­ial to “The Author.” These shots are the same 16:8, but they’re let­ter­boxed down to a smaller size. They’re 1.85:1, or Academy widescreen. This is one of a cou­ple of dif­fer­ent non-proprietary widescreen for­mats that cam­era mak­ers, stu­dios, and the­aters agreed upon in the 50s. The image size is the same as the “please set your mon­i­tor...” slate above, but I’ve high­lighted the let­ter­box­ing in green.


We get a few quick scenes of The Author speak­ing about his past, address­ing the audi­ence, nar­rat­ing the story. These scenes end up being the same ratio, but on a smaller area of the print.


He talks of vis­it­ing the hotel in the 60s. The hotel has seen bet­ter days, but the reluc­tant owner has a few sto­ries to tell.


This is a full edge-to-edge aspect ratio, 2.31:1. It’s a dif­fer­ent acad­emy widescreen stan­dard that’s a bit more wide than the other.

When we delve into the hotel owner con­vey­ing sto­ries of his days as a Lobby Boy in the grand hey­day of the hotel, we switch to a very odd 4:3 aspect ratio. You’d rec­og­nize it from older standard-definition TV. You might even rec­og­nize it from the orig­i­nal Edison movie equip­ment.


Each era, each with a dif­fer­ent res­o­lu­tion or aspect ratio, all a sub­tle part of sto­ry­telling. And yet, oddly, the sto­ry­telling was strong enough that I missed it the first time through.


Posted in: Movies


17 years of Netninja

Today Netninja.com turns 17. It’s been a long jour­ney through sev­eral dis­tinct phases. The early his­tory is a lit­tle fuzzy in my mind. This lit­tle nar­ra­tive is my best-effort attempt at recall­ing the details, to bet­ter doc­u­ment them for the future.

defcon-2-logo-8My first glimpse into web­pages was at DefCon 2, the hacker con­ven­tion in Las Vegas in 1994. That was after com­mu­nity col­lege, just as I was get­ting set­tled in to a four-year uni­ver­sity. I’d been using the inter­net (through school) for some time. It was all mail­ing lists, usenet groups, FTP, and gopher sites. I’d either not heard of web pages, or I had but they hadn’t reg­is­tered solidly on my radar. At DefCon, there was some talk about using the inter­net to order pizza. The archi­tec­ture was some­thing dumb and hacked together, like a web­page hooked to a fax­mo­dem. But I didn’t quite get it. The colon-slash-slash and all that. I hadn’t seen URIs before. They were a com­bi­na­tion of for­eign and famil­iar. I could see how they might be use­ful short­hand for ftp://example.com@username:password/folder/file.txt, but this “http” thing was new. I learned quickly. It wasn’t too log after that that I ran my own lit­tle web page from the tilde-home direc­tory of the school’s com­puter. It was about as cheesy and bad as you’d expect.

netNinjaFast-forward three years. Between hacker talk and lit­tle plas­tic ninja toys dis­pensed from vend­ing machines, “net ninja” had become a reg­u­lar part of my vocab­u­lary. In the inter­ven­ing time, I had also learned a lot about writ­ing and host­ing web pages, includ­ing the fact that a nor­mal Joe — not directly asso­ci­ated with an edu­ca­tional facil­ity or cor­po­ra­tion — could pur­chase and use a domain name. This would have been the sum­mer lead­ing up to DefCon 4. June 1997, specif­i­cally. I grabbed the domain name and put up a web­site. I don’t have any imme­di­ately avail­able archives of that site. You can rest assured that it had a black back­ground and hor­i­zon­tal rules ani­mated with drip­ping blood and torches.

Since the begin­ning, I had a robots.txt file block­ing it from being indexed by search engines (and archive.org’s way­back machine, for that mat­ter). My line of think­ing was that you had to know about the site through some­one or some other site. You couldn’t just dis­cover it on Yahoo or AltaVista. Unfortunately, that also blocked it out from being archived. I think I may still have a cvs repos­i­tory some­where around here with the early his­tory, but it’s likely on a CD that is slowly dete­ri­o­rat­ing. Although I care enough about Netninja’s anniver­sary to write this post, I don’t care enough to find and dig through an old source con­trol sys­tem. The ear­li­est cap­ture on archive.org was from 1998, a year and a half after start. This was the sec­ond or third major revi­sion of the site.


spin_ninja21998: black was the new black and webrings ruled the inter­net. The site was basi­cally a col­lec­tion of sta­tic pages. I think there might have been a lit­tle bit of PHP glue to main­tain a nav­i­ga­tion, but it was mostly hard-coded web con­tent. The major­ity (or pos­si­bly entirety?) of the site was devoted to hack­ing and friends. You’ll note that “Brian Enigma” and “The Ninja” are two sep­a­rate entries. It’s been clear in my mind from the start that they are two sep­a­rate enti­ties.  I am not “a” or “the” Netninja. Netninja is either a gum­ball machine toy or a mys­te­ri­ous entity, depend­ing on con­text. And yet, the major­ity of email I received usu­ally equated the two.


smallbutton2_blinkBy 2000, I’d upgraded from Notepad.exe to vi. And hand-tested every­thing in Netscape and Lynx. Screw Internet Explorer. <hipster>You’ll note that I was steam­punk before steam­punk was cool.</hipster> I even 3D mod­eled and ani­mated the glow­ing but­tons myself. And yet, I hadn’t yet learned that webrings were lame.


By 2002, I’d writ­ten an honest-to-goodness blog­ging engine. We have the same bad steam­punk stylings, but all the pages switched from html to php, with a com­mon nav­i­ga­tion.

netninja-20040402 netninja-20050403

We go through a cou­ple iter­a­tions of the same, 2004 and 2005, improv­ing nav­i­ga­tion and adding a side­bar.


The biggest change (in infra­struc­ture and con­tent) was about 2007. I moved from my cus­tom site code to run­ning an instance of WordPress. This meant I could import a bunch of LiveJournal con­tent (of ques­tion­able qual­ity) going back to 2001. Typical LJ con­tent was what I did that day, navel-gazing intro­spec­tion, and angsty posts about music, movies, and tele­vi­sion. Existing hacker-related con­tent from the “old” site had to be man­u­ally migrated. The impor­tant stuff did, but I left a lot out. The new site for­mat also meant it was much eas­ier to post new con­tent. Adding a page to my cus­tom site frame­work usu­ally involved writ­ing HTML files that the tem­plate would pick up, pos­si­bly mak­ing changes to the tem­plate itself, and sync­ing the whole thing from my desk­top to the web­site. With WordPress, of course, you just open the edi­tor page and start typ­ing. Easy.


corporate_americaBy 2009, my pri­mary blog­ging engine was WordPress run­ning on Netninja. Everything got auto­mat­i­cally cross-posted to LiveJournal and a lot of the com­ment dis­cus­sion lived there, but the con­tent was mine. It lived here. I also did some tem­plate cus­tomiza­tion (though the css is a bit glitchy in the archive.org cap­ture) to make my site feel a bit more like LiveJournal, with cus­tom per-post user icons (such as the bar­code flag here).


We next go through a few more wood-grain iter­a­tions while the con­tent sub­tly shifts from per­sonal diary to things other peo­ple might actu­ally care about. That lat­ter ver­sions add a bit of parch­ment paper.


By 2011, Netninja.com is much more focused on tech and Portland and less about my daily life. We’re also in the graphic design phase I lov­ingly call “I can’t read this thin serif text on that Apple-inspired linen back­ground.”


We then, of course, have today’s Netninja. And that ret­ro­spec­tive con­cludes our digres­sion back to navel-gazing.

Posted in: Dear Diary

2014-05-26 16.48.57-2

On accurately measuring 2oz

I picked up some lab­o­ra­tory glass­ware, specif­i­cally for kitchen use, the other week. It’s all borosil­i­cate, so it’s effec­tively the same as Pyrex. Some of it will get used for drink­ing glasses but one item I picked up was a grad­u­ated cylin­der. My plan is to use it for mixed drinks. With a cock­tail jig­ger, it is easy to mea­sure out 1 or 2 ounces. But with a strong ingre­di­ent like cel­ery juice, 1oz may already be too much. Accurately exper­i­ment­ing with small vari­ances in vol­ume felt like the right way to go.

I did some math and found that 2oz ≈ 59mL. A 100mL cylin­der should work well. I ordered, it showed up, and I started to doubt my math. Or my abil­ity to order the cor­rect cylin­der. That doesn’t look quite right. I double-checked the mark­ings. Yep, it’s the right size cylin­der.

2014-05-26 16.48.57-2

In this pic­ture, the cylin­der is filled with col­ored liq­uid for bet­ter con­trast and there is a rub­ber band at the 59mL mark. Next to the cylin­der is my mea­sur­ing jig­ger: 2oz up top, 1oz down below. Even tak­ing into account that the jig­ger is a misleading-to-estimate cone whose open end is a lit­tle wider than the cylin­der, it feels like 59mL is way too much. Like maybe 30 would be more accu­rate.

I double-checked my math, asked Google and Wolfram Alpha, and it all worked out. 2oz = 59.15mL.

Of course, I then went the other direc­tion: I filled the jig­ger and dumped it into the cylin­der. That’s when things became a bit more clear.

2014-05-26 16.37.19-2

2oz as 60 mil­li­liters feels more accu­rate, but now I’m left to dis­cover that the unmarked jig­ger that I pre­vi­ously assumed was 2oz was really 50mL or 1.7oz.

I’ve been mak­ing weak drinks this whole time! (Well, admit­tedly, I often pur­posely make weaker-than-bar drinks because I often find myself look­ing for liq­uid refresh­ment more than I’m look­ing to get toasted.)

And, oddly enough, the 1oz jig­ger clocks in at roughly 31.5mL, or 1.1oz.

2014-05-26 17.13.42-2

Posted in: Dear Diary Food Projects

2014-05-26 16.03.11-2

Designing a fair 3-sided coin

A cou­ple of week­ends ago I played Betrayal at House on the Hill with a few friends. One of the stranger fea­tures of the game are the dice. They’re 6-sided die that act as 3-sided. They have pips for 0, 1, and 2 — two faces with each value.

2014-05-26 16.03.11-2

During the game, Jonathan brought up the fact that Von Neumann worked out a fair 3-sided “coin” of a dif­fer­ent geom­e­try that could work the same for this game. Instead of the coin being a cylin­der so short you don’t think of it as a cylin­der any­more, it’s extruded to have a sig­nif­i­cant height. There’s a num­ber on each end (the heads and tails of a tra­di­tional coin) plus a third option on the now-not-insignificant edge.


In my research, I have also run across a design that looks a lit­tle more like a Toblerone: a tri­an­gu­lar prism that’s either so long you couldn’t land it on either end (which seems too long for a sat­is­fy­ing roll) or one that is a lot shorter, but whose ends taper to a point. I am going to skip this vari­ant dur­ing this dis­cus­sion. It’s triv­ial to see how to make this one fair: start with an equi­lat­eral tri­an­gle and extrude it to a prism.


I have inten­tion­ally only skimmed the papers that talk in detail about the design of this 3-sided coin and how to arrive at the cor­rect ratio of diam­e­ter to height. I thought I might work it out for myself before run­ning off to view the spoil­ers.

The tall extreme (height)

If feels like the tallest you could pos­si­bly go would be to match the diam­e­ter of the cir­cle to its height. You effec­tively take a 6-sided die and lathe it down to a cylin­der.

h = 2r

But this intu­itively feels wrong. On the uni­form cube of a 6-sided die, you have one face at each end, but around the out­side (the edge of the cylin­der in this case) are four faces. It feels like you’d have a much higher prob­a­bil­ity of hit­ting the edge. Looking at a 3D model, it even looks dif­fi­cult  to hit either end:


The short extreme (sur­face area)

On a stan­dard 6-sided die each face has the same sur­face area, so maybe that’s the best way to go? If we try to match the sur­face area of one end to the sur­face area of the edge, we get to use a bit more math:

\text{end surface area} = \text{edge surface area} \\ \pi r^2 = 2\pi r h \\ \frac{\pi r^2}{r} = \frac{2 \pi r h}{r} \\ \pi r = 2 \pi h \\ \frac{\pi r}{\pi} = \frac{2 \pi h}{\pi} \\ r = 2 h \\ h = \frac{r}{2}

That makes the height half the radius. That’s a quar­ter of the diam­e­ter. Intuitively, that feels pretty darn short. In fact, it feels like the short­est pos­si­ble extreme. In a 3D ren­der, the edges look impos­si­ble to hit, like more of a 2-sided coin than a 3-sided one:


Conclusion (so far)

There is some middle-ground between the two extremes that I’m miss­ing. So far, I have been unable to come up with a good hypoth­e­sis that fits between the extremes. If I don’t come up with a good hypoth­e­sis in a week or so, I’ll “cheat” and dig into the papers for the cor­rect solu­tion (and hope it doesn’t involve any of the cal­cu­lus I’ve for­got­ten since col­lege).

Posted in: Games Projects

2014-05-11 11.42.03

And introducing: Cornelius

I real­ized that I’ve men­tioned this on Instagram and to a few friends, but have not yet made any ref­er­ence on this blog: I have a new kit­ten! His name is Cornelis!

He was born on February 21st at Enchanted Sphynx. I vis­ited him and his brother about a month ago.


And he came home two week­ends ago. It was an inter­est­ing road trip:

2014-05-03 14.29.28-1

We’re still get­ting fully set­tled in. He absolutely adores Norman, the indoor/outdoor tuxedo that showed up semi-feral on our doorstep. He shad­ows Norman around and tries to play with his tail. For the most part, Norman is indif­fer­ent (except for the tail-playing, which he dis­likes). The Precious is a dif­fer­ent story. She hates change and doesn’t like him. She’s warmed up to him slightly over the past cou­ple of weeks, but is still pretty frigid. It took her a few months to get used to Ebenezer, but they even­tu­ally became best bud­dies.


Posted in: Dear Diary


Building light-up R2D2 mouse ears (May the Fourth)

I basi­cally grew up at Disneyland. As a kid, my fam­ily lived about 20 min­utes away and we’d get to go twice a year: once on my birth­day and once on my sister’s.  In my 20s, I had an annual pass and would go on the week­ends, or just pop by for an hour after work to have din­ner, peo­ple­watch, and maybe catch a ride or two. My last 10 years have been in the pacific north­west, with only two or three Disneyland trips.

But I had a ran­dom thought last year. After play­ing with the Adafruit Neopixel strips on other projects, I thought I might attach them to some Disneyland mouse ears. I might even have the guts to wear those ears to the park next time I vis­ited.


I started with some mouse ears. I wasn’t totally cer­tain that offi­cial Disneyland mouse ears would be avail­able out­side of the park, but Google brought me to The Mouse Shoppe. Furthermore, I had no idea that there was such ear-hat vari­ety. Given that I was going to drop some elec­tron­ics into and onto the hat, I opted for R2D2.


The elec­tron­ics pack­age I came up with is nearly iden­ti­cal to Adafruit’s “Cyberpunk Spikes,” only wrapped around the ears rather than under some sil­i­cone spikes. My bill of mate­ri­als looks a bit like this:

The elec­tron­ics part of the build was fairly easy — the same as the Cuberpunk Spikes project, except with a gap between two LED strips. Getting every­thing attached to the hat in a way that looks decent was, for me, the chal­lenge.

My plan was this:

  • Wire the LEDs through the hat with enough slack wire to make them work­able.
  • Using tem­po­rary sol­der joints, ver­ify the LED’s wiring against the (unmounted) micro­con­troller and bat­tery. Unsolder the tem­po­rary joints.
  • Use small zip­ties to take in the slack between the LED strips.
  • Create a slip-out bat­tery har­ness using elas­tic.
  • Trim and sol­der the LED wires to the micro­con­troller.
  • Sew in the micro­con­troller.
  • Glue down the LEDs.
  • Sew down any other assorted loose wires.

The ear hat is made of a strange sort of rub­ber­ized fab­ric. Using a hobby knife, I made inci­sions, enough for three wires (power, ground, data) to fit through. A strip of 16 LEDs fit per­fectly around the cir­cum­fer­ence of an ear so I sol­dered leads to either end. I didn’t want them too short, as that would mean a lot of rework, and fig­ured I could eas­ily trim them later, so they were longer than nec­es­sary.

Using a hobby knife, I made an incision
Using a hobby knife, I made an inci­sion
The wires passing inside the hat. The big plastic thing is the backside of the ear mounts.
The wires pass­ing inside the hat. The big plas­tic thing is the back­side of the ear mounts.

Label the wires! This is impor­tant. I used black wire and wrapped the ends of the LED strips in elec­tri­cal tape to bet­ter con­ceal and pro­tect the sol­der joints. Without labels, it is easy to mix up your lines.

Label your wires. Relabel them if the labels don't fit through the incisions — and only pass one through at a time so you don't mix them up.
Label your wires. Relabel them if the labels don’t fit through the inci­sions — and only pass one through at a time so you don’t mix them up.

Pass the nice long wires through an inci­sion up near the next ear and care­fully wire them to the next strip of 16 LEDs. Once the two sets of LEDs were wired through the inci­sions, sol­dered in series, passed my ini­tial test­ing (but weren’t yet glued down), I pulled in some of the slack between the two strips and bun­dled it with a zip­tie.

Take in the excess wire
Take in the excess wire

I then held the bat­tery where the elas­tic har­ness would go: at the inside top cen­ter of the hat. The bat­tery is the heav­i­est piece, so I didn’t want it throw­ing off the hat’s cen­ter of grav­ity. I used per­ma­nent marker to mark its spot, then sewed in elas­tic strips.

Mark the battery's location.
Mark the battery’s loca­tion.

Mark the battery's position.
Mark the battery’s loca­tion.

Elastic sewn in.
Elastic sewn in.

Blue thread and strategic positioning helps the sewing blend in.
Blue thread and strate­gic posi­tion­ing helps the sewing blend in.

I then sewed down (gray thread this time) the leads between the first LED strip and the micro­con­troller, as well as the micro­con­troller itself. There was a spot on the out­side graph­ics that looked per­fect for the board.

The microcontroller sewn down. I went through the unused holes as well as around the wires.
The micro­con­troller sewn down. I went through the unused holes as well as around the wires.

The next step was to glue down the LED strips. I used clear sil­i­cone sealant then tem­porar­ily held every­thing in place with binder clips.


Finally, I sewed down the excess slack wire

Take in the slack.
Take in the slack.

This design has no power switch. You just snake the power exten­sion wire from the bat­tery to the micro­con­troller and connect/disconnect as needed.

Programming is easy. The USB port is exposed. Plug in and upload. I started with the sam­ple code for the Cyberpunk Spikes project, but tweaked it sig­nif­i­cantly to get those inward-spinning rain­bow wheels.

Br5s 2014.05.04_5

Posted in: Code Projects

shaving cylinders

A close shave

I started shav­ing, way back in the day, with an elec­tric razor, then switched to dis­pos­ables in my mid twen­ties. Four years ago, I switched to a safety razor. (See: My per­sonal devo­lu­tion in shav­ing) It was the pop­u­lar hip­ster thing to do at the time. The razor was, maybe $40, but the blades were pen­nies.

shaving cylinders

Using shav­ing soap with a brush is far supe­rior to foam from a can. The razor itself? The shave wasn’t as good at first, but I thought I would get more skilled at it over time. I did get bet­ter, but not really enough to match the multi-blade dis­pos­able. Cheeks and neck, no prob­lem. Chin and under the nose, it either didn’t get close enough or would get too close (blood!).

A few weeks ago, I picked up a Quattro razor as an exper­i­ment — my razor of choice back when I used dis­pos­ables. I find that the mul­ti­ple flex­i­ble blades give a remark­ably close shave, even in the prob­lem areas. But because I shave only a cou­ple of times a week and because my scruff doesn’t grow long, but thick, it clogs like crazy.


Based on this exper­i­ment, I think I have a new rou­tine: a first rough pass with the Merkur safety razor to get the major­ity of the scruff fol­lowed by a sec­ond detail pass with the Quattro. I like the old-timey and money-saving aspect of the safety razor, but I think I’ve finally learned that it just doesn’t *ahem* cut it for me as my one-and-only razor.


Posted in: Dear Diary


3D Printed Medieval Barbie Armor

I don’t have kids, don’t want kids, but I do have a cer­tain fas­ci­na­tion with toys. It prob­a­bly stems back to the ’80s when the toy sup­ple­ment to the Sears cat­a­log arrived each year, con­ve­niently timed to show up a few months before Christmas. I would comb through every page of that thing — well, every page that was not for girls or babies — think­ing and dream­ing and mem­o­riz­ing all the specs. All the kids looked so happy play­ing with their new Transformers and the Star Wars fig­ures and vehi­cles. I wanted all of them. I ear­marked the pages con­tain­ing the taller-than-a-kid Space Warp mar­ble track, and espe­cially the Omnibot 2000. (Neither of which I ever received.) But my favorite toys were always related to build­ing and learn­ing.

As an adult I do not buy very many toys (and by exten­sion, gad­gets), but I always have to stop at the sci­ence museum gift shop. I keep up to date on the lat­est giz­mos. It is no coin­ci­dence that most stuff com­ing out of my 3D printer tends to be toys, trin­kets, puz­zles, and geo­met­ric odd­i­ties.

Certain toys jump out at me more than oth­ers. Since becom­ing aware of STE[A]M (Science, Technology, Engineering, [Art,] and Math), I now pay spe­cial atten­tion to toys that try to break girls out of the pink aisle at Toys-Я-Us. Last year that was Goldie Blox, which com­bines sto­ry­telling with engi­neer­ing. Just this week it is Faire Play: Barbie-Compatible 3D Printed Medieval Armor from an inter­net friend, Zheng3, on Kickstarter. I have men­tioned him a few other times on this blog. Notably, he devel­oped Seej, the 3D print­able table­top bat­tle game that reminds me of another favorite 80s game, Crossbows and Catapults. My own small con­tri­bu­tion to the game was a mod­u­lar penny cat­a­pult I designed two years ago.

Zheng3’s Kickstarter project is to design 3D print­able medieval armor for Barbie dolls. I see this as being a great tran­si­tion to help girls ease their doll play from “let’s go shop­ping,” “let’s cook din­ner,” or even “some day Prince Charming will come” to a much more active and kick-ass “let’s fight that nasty dragon and save the vil­lage.” In addi­tion to the straight-up cos­tume play, I would hope the 3D-printed aspect might be an extra inspi­ra­tion. Maybe the kids have direct access to a 3D printer — be it a parent’s, at a friend’s house, or the Cube printer at the local Office Depot — and see the armor being printed, hope­fully lead­ing to curios­ity into how the 3D printer works. Or maybe they’re inspired to see they can mod­ify toys in their own cus­tom ways, whether it is by invent­ing their own 3D mod­els or more low-tech, like mold­ing in Fimo clay.

barbie_armor barbie_athena


He’s already devel­oped and released The Athena Makeover Kit (pic­tured on the right), which includes spear, shield, and winged boots. The thing I find kind of inter­est­ing is how strangely mis­shapen and bloated the boots look. Go ahead — click through to the Thingiverse page and select the boot model thumb­nail image. Careful eyes will see that Barbie’s feet are pre-molded for high-heel shoes. The out­stretched foot is not very com­pat­i­ble with boots, so the boots had to adapt, had to become more bulky at the ankle.

So whether you have kids who play with Barbies or whether you just like the spirit of the project, I’d encour­age you to con­tribute a few dol­lars to his kick­starter: http://kck.st/Ol1Bid

Posted in: MakerBot


Calca: the notepad calculator

For years, I’ve been search­ing for a good free-form sym­bolic cal­cu­la­tor pro­gram that works across mul­ti­ple desk­top oper­at­ing sys­tems. I think I’ve finally found one worth men­tion­ing. My goals:

  • Be able to enter expres­sions sim­i­lar to what I could do on a TI-85, back in the day, for exam­ple: 2^2+(2*10)
  • Be able to eas­ily edit and copy previously-entered expres­sions.
  • Input/output hex. I work in hex a lot. This includes expres­sions (0x48+0x16) as well as base con­ver­sion (0xC3 as decimal or 0b110101 as decimal) and bit­wise math (0xFC AND 0x7F).
  • Lightweight. Quick to load, quick to cal­cu­late. Get in, get out. Or leave it run­ning in the back­ground with­out eat­ing a ton of resources. I don’t need or want Mathematica or Maxima.
  • It needs to min­i­mally run on Windows and Mac. Ideally a Linux ver­sion would be avail­able, too. I write code on Linux (work) and Mac (home), but my office Windows box ends up being my doc­u­men­ta­tion ref­er­ence, scratch­pad, cal­cu­la­tor, and every­thing else non-coding because I typ­i­cally run my Linux IDE full-screen (bridged with Synergy, nat­u­rally).

I’d pre­vi­ously got­ten hooked on Soulver. It’s great on the Mac, but there are not Windows or Linux ports. There is an iOS port, but I can’t stand the data entry. SpeedCrunch is avail­able for all plat­forms, but like many Open Source pro­grams, the oper­a­tion and user inter­face is clunky.

A few months back, I found Calca, “the text edi­tor that loves math,” for Windows and Mac. It lit­er­ally is a text edi­tor. The trick is that it looks for “=” and inter­prets these as def­i­n­i­tion state­ments and it looks for “=>”, and treats these lines as prob­lems to solve. Everything from “=>” to the end of the line is rewrit­ten to become a read-only answer. For exam­ple:


I don’t come close to using all the fea­tures in Calca: func­tions, unit/currency con­ver­sion, matrix math, deriv­a­tives, and so on. My needs are small, but with the pieces I do use, it per­forms extremely well.

A few things I don’t like about Calca:

  • There are no bit­wise shifts or inver­sions. I some­times run into cases where a 32-bit inte­ger is com­posed of sev­eral unaligned bit fields. For instance, bits 5..7 might be one field. It would be great to say: 0x1234 >> 5 & 0b111
  • I fre­quently get con­fused with base con­ver­sion syn­tax. Is it “as dec” or “in dec”? I fre­quently pick the wrong one.
  • Having to type “=>” at the end of each line is typo­graph­i­cally awk­ward. I appre­ci­ate Soulver hav­ing a sec­ond col­umn that auto-updates as you type.
  • It would be nice to have a “pre­vi­ous answer” sym­bol. The TI cal­cu­la­tors auto­mat­i­cally insert an “Ans” vari­able (a place­holder for the pre­vi­ous line’s answer) if you start a new line with an oper­a­tor instead of an operand.

For me, it was worth buy­ing both a Windows and Mac license. I use it all the time.

Posted in: Software Work