It's too dangerous to go alone. Take this.

Archive for the "Projects" Category


Download it

PyMacDialog is a small python script that reads a list of options from stdin, gives you a gui picker, and writes your selection to stdout. It serves a similar purpose to applications like dialog or CocoaDialog. The latter almost did exactly what I wanted except it only allows dropdown menus, not full lists (Using the NSTableView class).

After discovering PyObjC and seeing how easy it could be to write code that was both command-line friendly and Cocoa friendly, I decided to write PyMacDialog. The trickiest part was rooting through message boards and other open-sourced code to find out how to construct the UI purely within python without making use of any NIB files. I hope to put together some tutorials to illustrate the different parts.

If I have some command that generates some kind of list:

[eliman@dian-nao]-[scratch] $ ps auxww | grep -v grep |  grep Applications |\
awk '{print $11}' | awk -F'/' '{print $NF}'

I can pipe this command through PyMacDialog.py and get this:


And then I can pick one, hit enter, and get this:

[eliman@dian-nao]-[scratch] $ ps auxww | grep -v grep |  grep Applications | \
awk '{print $11}' | awk -F'/' '{print $NF}' | ./PyMacDialog.py 
[eliman@dian-nao]-[scratch] $ 

Tactlessly Loud


I have a really big voice. It’s been that way since high school. While most wouldn’t say it’s harsh or abrasive, I never have any trouble being heard. In a crowd, on a busy street, or from the back of the lecture hall, I stand out. Clearly this has its advantages. My thoughts and opinions generally will be heard and acknowledged. I’m hard to ignore if I’m set on expressing myself. And like most things, there’s disadvantages. Since I’m never not heard, there’s no room for me to hold a “private” conversation with anyone in a public place unless I’m whispering conspicuously. I think that a consequence of growing up like this is that I tend to assume that everyone can always hear everything I say and so I should only say things that are okay to say around everybody. Sometimes I slip up and then everyone hears something awkward or inappropriate.


I’m working on the new-school testing engine for OkCupid. We’re seeing lots of traffic lately and an overhaul of our test system is overdue. I can’t give too much away, but the thing that we have in the works is very slick. Much respect to Chris Coyne’s work in laying the groundwork for it.


I think the solution to my storage/media problem is easier than I thought. It turns out that a software hack exists for the Apple TV “Take 2″ which involves making a bootable Patch Stick. The instructions look scary, but lots of people seem to be having luck with it, so I think it’s worth the risk. I’ve already bought a 1 Terabyte MyBook World drive with Ethernet and USB connectivity. It should arrive on Monday. Once I get the drive working like I want it, I’ll add an Apple TV to the mix and try to bring it all together. Updates to come.


  • I just bought CoverSutra and it rocks. I was baited by the free sample I got via MacHeist and the search menu was enough to sell me on the upgrade.
  • I’m working on an OS X Chinese – English dictionary called Cidian. It’s based on CEDICT, the same source used by MandarinTools.com. MarndarinTools.com is great, but its UI is pretty tiresome.
  • Much respect to my old co-worker Aston Motes and his friends at GetDropBox.com. They’re making headlines in some pretty visible places these days. I’ve seen them on the Digg homepage, TechCrunch, and even the venerable DaringFireball.net. Good to see startups with talented people get the attention they deserve.

takenote 0.1

Alright everyone, here’s the first “real” release of takenote. It’s nice and packaged up so you can install it on any GNU system. Enjoy!

Download takenote-0.1.tar.bz2


  • Added notification of what topic you’re about to use.
  • Fixed a few bugs in the layout.
  • Fixed autotool configuration. Should build on any *nix, but now depends on wc
  • Added -l option to list currently used topics.

Take a note

While I’m doing work, I sometimes like to jot down notes about what I’m doing to help me remember later. If it’s figuring out how something complicated works, I can keep track of what I’m doing, what works, and what doesn’t. For this purpose, I wrote takenote. I invoke it from the command line and tell it what the subject of the note is. Then it waits and reads in a line of text and writes that line (with a timestamp) to a file in the ~/.notes directory. Allow me to demonstrate:

[eliman@dian-nao]-[eliman] $ takenote -t MissedCalls
Julianne called from work. She said to call her back at (410) 555-9252
[eliman@dian-nao]-[eliman] $ tail ~/.notes/MissedCalls
[MissedCalls] [Thu May 24 11:33:44 EDT 2007] Julianne called from work. She said to call her back at (410) 555-9252
[eliman@dian-nao]-[eliman] $

Download takenote here!