Will >> Will's blog

purpose: Will Kahn-Greene's blog of Miro, PyBlosxom, Python, GNU/Linux, random content, PyBlosxom, Miro, and other projects mixed in there ad hoc, half-baked, and with a twist of lemon
Page 1 of 8  >> (less recent)

Mon, 16 Apr 2012

Support The Tube Open Movie

I'm very excited about this. It's an open movie being built by friends of mine. The trailer is gorgeous. It's worth watching just to see what's possible with Free Software today.

Wed, 02 Dec 2009

Team Dragon: The Book

Between the end of 2003 and mid-2007, I played in a D&D campaign that was really fantastic. The campaign ran its course and our stalwart crew of awesomeness saved the world and then we went our separate ways.

During that period of time, I kept copious notes in a MoinMoin wiki of our adventures. It was always a hope that I'd take these notes and do something with them.

I played in another campaign in 2007 and used InkScape to do a comic of the first session or two of that campaign in the style of Order of the Stick. It was a lot of fun, but took forever to do each panel. I decided it'd take me a long time to do 4 years worth of sessions in comic form.

So I started a book version. I wrote a Python script (which I've since lost) that converted MoinMoin format into restructured text. Then I threw the whole thing together with Sphinx. This allowed me to edit in restructured text, compile a LaTeX document, and then generate a PDF from that. Plus I got to spend some quality time with Sphinx to see how well it generates manuals.

That worked really well except for some minor issues.

First, I needed to set the paper size in the resulting PDF. To do that, I set the latex_preamble in the conf.py file to:

latex_preamble = '\\usepackage[papersize={6in,9in}]{geometry}\n' \
                 '\\setcounter{tocdepth}{1}'

That creates the PDF in the size I needed: 6in x 9in.

Second, I needed to fix some images so they were in a table with text. I ended up writing the LaTeX for that by hand.

Third, I didn't think the chapter headings really fit with what I wanted to build, so I changed the fncychap style to Lenny.

While I was editing the LaTeX directly, I ended up changing some of the front matter and removed the index (didn't need an index to a novel).

It took me a year to put the book together. It's around 240 pages or so. Today I finished it up, created a Lulu project for the book and had a bunch of copies printed for the others in the group. Feels good to have that done. I'm looking forward to getting a copy in the mail.

Thu, 17 Jul 2008

Me at OSCON 2008

I'm heading to Portland, OR for OSCON 2008 to help man the Mozilla booth at the Expo. I registered as an Expo attendee, but I'll be there (or near there) from the 19th through the 26th.

My primary purpose there is as a representative for Miro and talking to people about it. However, I'm also interested in meeting up with people working on:

If you're interested, too, ping me. I'm hanging out on the #oscon channel on irc.freenode.net and you can always get me by email or comments below.

Sat, 26 Apr 2008

Just got back from ROFLCon....

I volunteered at ROFLCon yesterday and today. The whole experience was really surreal but fantastic! I thoroughly enjoyed the sessions I attended while "on duty" and the new friends I made. I also came home with a sticker that says "Bacon is a vegetable". That sums that up.

Thu, 25 Oct 2007

Status 10/25/2007

Work has been pretty busy. I've been doing release manager stuff, working on Gutsy packaging issues, puzzling over an intermittent problem between the sun-java6-plugin and Miro, working on a Firefox extension, and working on a patch for Firefox 3.0.

I went to some of the after-hours activities for the GNOME Summit Boston. I'm going to PodCamp Boston this weekend.

I was writing my todo list management application in Django, but then decided to switch it to Pylons. Now I'm thinking I may just go a much easier route and implement it in web.py. A year ago, I wrote a wiki system that was code-friendly using web.py in three hours which included the amount of time it took to learn how web.py worked.

PyBlosxom work for version 2.0 has slowed considerably. I just haven't had much time to spend on it. A bunch of us are hanging out in #pyblosxom on irc.freenode.net and we're talking about things more often. I met paulproteus in real life during the GNOME Summit Boston. I'm trying to figure out how to create multi-page output using docutils. There was some development in that arena over the summer, some of it due to a GSoC project. I need to spend some more time to figure out what's available now in SVN, how to use it, and whether it'll fix my problem.

I've upgraded all my machines to Gutsy. It's nice--the fonts seem to be much easier to read on both my laptop and my desktop with an LCD.

That about covers it. It's been a low-Python high-JavaScript month.

Tue, 12 Jun 2007

Using register allocation algorithms for determining table layout

S and I decided to assign tables for our guests during the wedding reception. There were a bunch of good reasons for doing this which I'm not going to go into here. However, assigning 100 or so guests to 10 or so tables while maximizing "goodness" and minimizing "badness" isn't trivial to do on paper by hand. At some point during wedding planning, I decided we could do table layout with a modified register allocation algorithm. This is a quick summary of translating register allocation into table layout along with some commentary on how this works nicely and also where it doesn't quite work.

More after the jump....

BREAK

Register allocation is typically done using graph-coloring with some additional bits that turn the NP-complete graph-coloring algorithm into a linear-time one that results in a good approximation. Andrew Appel talks about register allocation in his book on compilers entitled Modern Compiler Implementation in ML in chapter 11. It involves a graph of nodes representing temps connected by edges that represent interference between the temps. There's also a list of move-related nodes and nodes related by move-edges are coalesced if possible leading the connected temps to be colored with the same register.

In table layout, there are groups of people who can't sit at the same table with other groups of people. This could be due to family issues, differences in politics, past history, ... Additionally, there are groups of people you want to sit at the same table with other groups if possible.

Let's do some substitution. We'll substitute registers for tables, edges representing people who can't sit at the same table as interference, edges representing people who would be good sitting together as move-related, and temps as people and we have mapped the register allocation problem into a table layout problem.

I'm not going to go into the details of register allocation--Appel talks about the George and Appel algorithm from "Iterated register coalescing" (1996) for 25 pages and it'd be hard to summarize that into a blog entry.

There are a few things that don't translate well from register allocation to table layout like spilling. In register allocation if you can't get it to work you spill a temp into memory and then start over. I suppose you could uninvite particularly ornery people, that's one possible mapping for spilled temps. Another possibility is that you look for the least-worst pairing and remove that edge from the graph. A third possibility is to break up a larger table into two smaller tables giving you an extra color to work with.

Speaking of tables, there's one big difference between tables and registers: a register can be assigned to an unlimited number of temps so long as they don't interfere with one another. A table has a limited number of seats. So if you were to use a register allocation algorithm, you have the additional constraint that a limited number of people can be assigned to each table. If the register allocation implementation that you use is deterministic, this constraint could cause your situation to be unsolvable without backtracking. It would be a good idea to introduce a random element that causes assignments to occur in different orders between iterations.

The move-related edges (which represent people who should be sitting together) could be prioritized and that priority could be used for selecting moves to coalesce. For example, you might want to keep couples together and perhaps families, too. Perhaps you want to put all the children at a single table that you can put close to the bathroom.

Theoretically, this sounds like it would work pretty well for many cases, at a minimum returning a layout that can be tinkered with. We never used this method--by the time I had finished grad school, S was already past most of the table layout issues.

It's possible the constraint on people per table handicaps the register allocation algorithm to such a degree that it would be better to use a more general purpose constraint satisfaction problem solver instead. This requires further study.

Thu, 17 May 2007

48 Hour Film Project - 2007

The 48 Hour Film Project for Boston 2007 has come to an end and it was pretty awesome. There were 100 teams this year of which 92 finished films and handed them in. I helped usher again and saw some 83 movies over the course of the last two weeks. A bunch of them were filmed within a half mile of my apartment just outside of Davis Square.

This is my fourth year ushering. Over the four years the movies have gotten better. A large portion of the teams have done it for several years and you can definitely tell they've gotten most of the kinks out of their filming and post-production. I think the availability of better filming and production equipment and software helps as well. Some of the teams were mentioning how they used cameras that stored data on hard drives directly and this saved them gobs of time that they would have spent transferring the data from tape to hard drive.

The 48hfp folks have created a new site for hosting movies at http://www.48.tv, though they don't have the Boston 2007 movies up yet (obviously). Some teams are uploading their movies onto YouTube and other video sites. If you search for "48hfp" or "48 hour film Boston 2007" you can see them.

It was a really great year for movies. There's a Best Of showing at the Cooliedge Corner Theatre on June 7th. It's definitely worth going to if you've got the time. There are more details here under "Best Of".

Tue, 20 Mar 2007

Window Snyder

I think most people have stories about their undergrad days in Computer Science where they were hooked up to an intervenous drip of caffeine and staying up all hours of the night wrangling with assembler on a robot that had lasers for eyes and could do backflips down the hall and land on both feet while juggling C pointers and doing remote garbage collection ... And most of the stories from these days are eseentially myths and the characters of those stories are the CS equivalent of Greek gods.

One of those people from my undergrad days was Window Snyder. She was just the awesome of the awesome. She had a VAX machine for a coffee table. As I recall, she dropped out because she was involved in some clandestine project somewhere that involved all kinds of stuff that so boggled my mind at the time that I don't even remember a hint of it.

Gary (another Greek god from my undergrad days) told me that she's now the head of security strategy at Mozilla. Sure enough, she even has her own wiki page. Craziness!

Thu, 10 Aug 2006

In the future, there are no clothes allowed on airplanes

If this "ban things that could potentially be something nasty on board an airplane" thing goes on long enough, Playboy is going to have to buy all the airlines because we're all going to have to fly nude. I'm seriously looking forward to that day. When it happens, I'm going to fly around the world. I don't much like flying and I don't much like travelling, but nude--hell yeah! w00t!

Thu, 20 Jul 2006

XKCD

I saw on boingboing a link to XKCD and I started skimming it at work (naughty naughty Will!) mostly because I'm feeling uninspired to go through the specification one more time and make sure I dotted all the is and crossed all the ts that are vaguely hinted at and would be obvious to someone who had looked at this code before but I'm not in that situation so I'm doing a lot of double and triple-checking.

Long story short: XKCD: Valentine - Karnaugh is very very funny. The subject matter isn't funny; the words aren't funny; the use of a Karnaugh map is fantastically funny.