flooey.org

Jan 1, 2014

My Year In Cities, 2013

Like last year, here is the list of cities I visited during 2013, in chronological order.

One or more nights were spent at each. Cities marked with an * were visited multiple times on non-consecutive days.

Jan 4, 2013

My Year In Cities, 2012

Like last year, here is the list of cities I visited during 2012, in chronological order.

One or more nights were spent at each. Cities marked with an * were visited multiple times on non-consecutive days.

Oct 9, 2012

Google Maps and Apple Maps comparison

When Apple Maps came out, there were a lot of anecdotes about its problems, but not a lot of systematic comparisons with Google Maps. The only one I know of is of town names in Ontario, Canada (Apple Maps, Google Maps), and that wasn't particularly relevant to me. First, I live in the United States, and there's a good possibility that Apple's data is better here because they're a US company (sorry, Canada). Second, and more importantly, I hardly ever search for town names, I almost always search for addresses or business names. The quality of Apple's address data is much more important to me than whether I can find Beeton, Ontario.

So, here's a comparison of both place names in New York State and addresses in New York City.

Disclosure: I'm a Google employee, but I don't work on Maps or anything related to it, and no Google resources or people were used for (or informed of) this project, aside from public APIs. This post does not represent the views of my employer, etc.

TL;DR

There's a big difference between what the Google Maps web API provides and what CLGeocoder under either iOS 5 or iOS 6 provides, and the Google Maps app on iOS 5 appears to match the web API.

The Google Maps web API is consistently great.

CLGeocoder under iOS 5 and iOS 6 differ significantly, with iOS 5 mostly being better, except in Queens.

There's more going on here than we think.

Methodology

(Or just skip to the results.)

Originally, I ran all the tests using the iOS simulator and the CLGeocoder class, as the other comparisons have done. I also ran one of the tests on an iOS 5.1 device to ensure the simulator gave the same results as the device (and it did), so if you want to replicate these tests you don't need to pay the $100 to get an App Store developer account.

I then spot-checked some of the results on actual iOS 5 and iOS 6 devices using the Maps app. The iOS 6 results matched up with the Maps app (except that the Maps app gives you a "Did you mean?" in a lot of cases), but the iOS 5 CLGeocoder results didn't match up with the Maps app on iOS 5.

Suspecting that iOS 5's CLGeocoder implementation wasn't actually being used by the Maps app on iOS 5, I then ran one of the tests using the Google Maps web API. Indeed, the web API gave an entirely different set of results, one that matched closely with the Maps app on iOS 5, so I reran all the address tests with that as a third set of results (though I only got through about 90% of the New York State place names in the web API before I hit the 15,000 requests per day limit).

New York State places

I used this data set from the USGS that shows all the populated places in the United States along with their coordinates. I eliminated all the ones that didn't have a state code of NY, didn't have coordinate information, or whose name ended with "(historical)". I then geocoded strings of the form "$TOWNNAME, NY" and compared them to the expected coordinates. You could do this for any state, of course, but even after eliminating historical locations there were more than 180,000 populated places in the whole US, so I cut it down to just New York.

I chose 1km as the boundary for a correct location because most towns aren't much bigger than 2km across and the coordinates for a town are generally close to the center. To give an idea of how much margin that is, the correct location to geocode New York City to is City Hall, and 1km reaches down below Wall Street and up to SoHo, so most anywhere in financial district would count, but Battery Park would not. I picked the quite generous 100km for the "close" metric because that would at least mean you're in the right part of the state. For reference here, New York City to Buffalo is about 470km, and New York City to Albany is about 210km.

New York City addresses

I used this data set of all the "public facilities" in New York City. I figured this would give a good sample of the various address forms used in NYC, as well as a selection of data from all five boroughs. Since it includes a lot of government buildings, it probably oversamples the downtowns of each borough and undersamples the residential neighborhoods, but it does include schools, nursing facilities, soup kitchens, and other such things that are spread relatively evenly through the city. The only items I excluded from the list were facility types 1511-1541, which are all the different kinds of parks, because they include such addresses as "East River and Harlem River" (for Randall's Island Park) and "Greenwich Ave @ 7 Ave, NW side of intersection" (for one of the Greenstreets locations). I then geocoded strings of the form "$ADDRESS, $TOWNNAME, NY", where for $TOWNNAME I used "New York" for Manhattan and the borough name for the other boroughs. This is technically incorrect for Queens, because addresses in Queens use the city name they had before Queens became a part of New York City (e.g., "Flushing, NY" or "Astoria, NY"), but I assumed that "Queens, NY" would still work okay.

The biggest wrinkle with dealing with this data set was that the location coordinates were expressed in the New York-Long Island State Plane coordinate system, which is a coordinate system used by surveyors which treats a region as being flat (i.e., without the Earth's curvature). You can find additional information about the State Plane coordinate system on Wikipedia, and instructions on how to convert between it and latitude and longitude in this document from NOAA. Finding the instructions for how to do the conversion and then implementing it properly took a surprisingly long time.

I chose 200m as the boundary for a correct location because a central Manhattan avenue block is approximately 400m long, so that meant that if you gave up and placed a location in the middle of its block, it would count as correct. I chose 2km as the boundary for the "close" metric because that meant that it ended up approximately in the right neighborhood.

Results

New York State places

Similar to the Ontario case, both iOS versions are pretty terrible at New York State places. They were within 1km of the correct location about as often as each other, and iOS 5 was slightly more frequently within 100km. As Marco Tabini observed, iOS 5 seems to prefer giving any result, even one that's horribly off, to giving no result, and that may have accounted for the additional "close" results (some of those random results just happened to be within 100km). The Google Maps web API didn't ever give a "no result" answer (in any test case).

The bad results may have more to do with the fact that place names in New York State are messy than with their mapping abilities, though. For instance, there's a village in New York near Lake Ontario named Hilton situated within the larger town of Parma. Searching for "Hilton, NY" in iOS 5 gives you the Hilton hotel in Midtown Manhattan, which is almost certainly more likely to be helpful. iOS 6 produces a pointer to the Hilton neighborhood of Maplewood, New Jersey, which isn't very good, but is still probably more likely than that you're actually looking for the village of Hilton.

Even more, the data set includes lots of items that are extremely difficult, if not downright impossible. For instance, there are entries for Adams (in Jefferson County), Adams Basin (Monroe County), Adams Corners (Putnam County), and Adams Cove (Jefferson again). There are two places named Ashland (one in Greene County, one in Cayuga), two named Bellevue, two named Bethel, etc. There are two Brooklyns in the data set, neither of which is the borough of New York City. This puts a pretty low ceiling on just how good any geocoder could be at answering this kind of query (and is yet another reason why I think this isn't a good basis for comparison).

The web API, though, does a reasonable job. As mentioned above, it only included about 90% of the place names, but even if you assume all 10% remaining were bad it would have gotten 68% right, much better than either iOS option.

New York City addresses

Addresses should be much easier to get right, and the consequences for getting them wrong are usually much higher. I divided the addresses by borough and ran them separately.

iOS 6 is really terrible in Manhattan, with more than 60% of addresses being either completely wrong or having no results at all. iOS 5 is much better, but a third of addresses still aren't quite right. Looking at a sample of what iOS 5 missed, mostly it sent the address to an equivalent address in another borough, which may be a result of it not fully trusting the "New York, NY" designation. The Google Maps web API does great.

iOS 6 does much better in the Bronx than it did in Manhattan, but still not as well as iOS 5. The web API is again the clear winner.

Here again, iOS 5 is a bit better than iOS 6, but not leaps and bounds better. The Google Maps API again does excellent.

Queens is where mapping apps go to die. If you've ever been to Queens, you know that the street system is crazy. This map of Maspeth can give you an idea of what mapping apps are up against. Compounding the ridiculous street scheme is the addressing, which uses hyphenated numbers (e.g. "104-35 44 Ave") that can be hard for software to handle.

iOS 6 does way better than iOS 5 here, with more than 50% of addresses correctly mapped to only 15% by iOS 5. They have similar numbers of totally incorrect addresses, though. This is also the first borough where iOS 6 has a negligible number of "no result" responses.

The web API is worse here than it is in the other boroughs, but it still puts out an impressive showing.

All three do really well in Staten Island, with iOS 6 coming out on top.

Known Issues

None of the requests were made with any context information. In practice, when using a mapping app, it knows where the viewport is currently located and often knows where the person is located, and that information is used to improve results. All of the geocoders would probably improve with that information.

The use of "Queens, NY" might have caused trouble for the iOS geocoders. Then again, it might just be because they can't handle Queens.

Conclusions

I feel safe in making the following conclusions:

Please contact me if you have questions or think I've made a mistake somewhere, either by e-mail or @flooey.

Jul 8, 2012

Two Weeks In Germany

Pat and I just got back from two weeks in Germany, and we had a fantastic time. We visited Heidelberg, Munich, Hamburg, and Berlin.

Heidelberg Altstadt from the Philosopher's Walk
We began in Heidelberg, a relatively small city with outsized stature due to the presence of the University of Heidelberg. Pat had been here for a few days at a conference when I arrived. We only had one real day here, which we spent at a festival along the river, then wandered down to the Altstadt to see the church and get dinner. Ordering dinner was our first real foray in trying to communicate in German, and it went pretty poorly, but we did eat dinner, so in that way it was a success.

The following morning, we took the train to Munich. Trains in Germany are a real pleasure to ride; they're clean, they're prompt, and they have a lot of details that make them easier to work with. For instance, when on the platform waiting for the train, there are diagrams of each train that arrive at that platform showing the type of each car (cafe, first class, second class) and its alignment on the platform. They also have platform assignments as part of the schedules, so you always know where your train is going to show up.

Munich, and Bavaria in general, is often what people think of when they think of stereotypical Germany. The city is filled with Biergartens, old buildings, and even the occasional man wearing lederhosen. (I tried to get Pat to consider a dirndl, but she refused.) We spent most of our time there just wandering around the city absorbing the atmosphere, stopping occasionally for food, beer, or a museum.

Speaking of beer, it's definitely the beverage of choice in Germany, and doubly so in Bavaria; as a result, it's cheap and universally available. Even Italian or Vietnamese restaurants had a lengthy list of high quality German beers to choose from. Happily, the beer is also excellent. The beer at Andechs, about an hour outside of the city, particularly stood out. The monks have been brewing beer for hundreds of years, and when we went the tables were filled with large groups of older Germans who were there for lunch on a weekday.

Pat and Adam at Neuschwanstein Castle
One of our favorite day trips from Munich was to Neuschwanstein Castle and its neighbor Hohenschwangau Castle. Neuschwanstein was built by Ludwig II, and is the perfect fairytale castle (among other things, it was the inspiration for the Disneyland castle). The entire area is incredibly picturesque, with the castle set against the wooded mountains above and the pastoral countryside below.

Leaving Munich, we got to take a sleeper train to Hamburg, which was a lot of fun, and when we arrived we met our host there, Sunny. Sunny was a wonderful lady who made us breakfast every day, including traditional local foods like sausage and tiny shrimp, and gave us plenty of suggestions about what to see. Unfortunately, I think we may have disappointed her, as she was very excited about the idea of us going out and partying, whereas we generally spent the evenings at home playing cards and reviewing the day's adventures.

Miniatur Wunderland in Hamburg
The best thing we saw in Hamburg was the world's largest model railway, Miniatur Wunderland. We spent an entire afternoon there, visiting miniature versions of the United States, Hamburg, Scandinavia, Switzerland, and more. They have a water feature with 33,000 liters of water, including tides, an outdoor concert with tens of thousands of individually-placed fans, and an airport with dozens of aircraft taking off, landing, and taxiing to and from gates. From fire departments that respond to car accidents on the street to a drive-in movie theater playing For The Birds, everything is modeled in astounding detail.

After only a couple days in Hamburg, we took an ICE train to Berlin. Arriving in Berlin, we immediately could tell that we were going to love it. The city has an energy that's similar to New York's, but with more dramatic 20th century history. The first day, we went to the Brandenburg Gate and toured the surrounding area, including the Holocaust Memorial. I was pleased to see that the US Embassy is right next to the Gate (in former East Germany).

Former site of the Berlin Wall
Berlin had way too much to do in the time we had, so we had to pick and choose. We spent much of a day at Checkpoint Charlie and the adjacent museum, Haus am Checkpoint Charlie, seeing the former separation from the German point of view. The museum is rather chaotic, but gives a great overview of the entire history of West Berlin and the wall, including escape attempts, uprisings, political posturing, and eventually reunification.

We also took day trips to Potsdam and, at the suggestion of Sunny from Hamburg, the town of Lübben in Spreewald. Both of these were fun ways to get out of the city. The former had more palaces than we could count, including the grand Schloss Sanssouci, and a really nice botanical garden, while the latter was a cozy little town on the river Spree, with woods that form part of an UNESCO Biosphere Reserve. Lübben also has a great city museum, which goes from archaeological artifacts from thousands of years ago up to the destruction from World War II and the later rebuilding.

We really enjoyed ourselves, but at the end we were glad to return home. The German culture is marvelous, though it has some room for improvement (for instance, there are basically no water fountains), and by the end of the trip my German had progressed to the point that I could easily manage in a restaurant or shop, though I certainly couldn't handle a conversation. The cats, though, missed us tremendously and were very happy for us to be back.

Feb 24, 2012

Getting Older

I finished My Life In France, which was truly delightful through to the end. My strong recommendation remains, and I continue to reflect on it. Among other things, I'm curious why it's had such an effect on me.

I think a large part of it is that I'm getting old enough that I can feel my options slipping away. There's an amusing David Mitchell's Soapbox episode that addresses this effect (a great show, you should watch it). I'm still young enough that very little is actually foreclosed at this point, but I'm getting old enough that I can see the forks in the road approaching.

On the other hand, I've been feeling like a true adult recently. I'm handling my increasing responsibilities at work reasonably well, then leaving them at work and spending my free time productively, whether that be relearning German, discussing politics or philosophy with Pat, or reading. I'm eliminating wasteful tasks and replacing them with things I simultaneously enjoy more and feel better about doing. And, in general, I feel good about who I am. (Apropos)

Feb 14, 2012

My Life In France

I've been reading My Life In France recently, and it's made me very reflective about the state of my own life.

Life for Julia and Paul is much the same as life for me, in many ways. They go to work during the day, they eat dinner at home or go out to restaurants, on the weekends they take advantage of the wonderful city they live in. They're a young couple in a major metropolis.

The details of how they spend their time are so very different, though, in ways that I envy. As a major example, they make time every week to write letters to Paul's brother. This was, of course, a necessity in the early '50s when even a telephone call would have been inappropriately expensive, but the idea of periodically reflecting on and sharing one's life experiences is quite a pleasant one. In theory, that's what blogs are for, so perhaps I'll start using mine again.

In thinking about how I could find time to do such a thing, my mind also rests on how I use my time as it is. Some of it is productive, but I spend a lot of time wasting time reading forgettable articles on the Internet or playing in virtual Skinner boxes. I know a lot of my peers have expressed similar concerns, and I expect it's a theme I'll return to in the future, but the book is making me resolve to be more mindful in how I spend my time.

In addition, the book is wonderful. Julia's descriptions of her adventures are so filled with excitement and wonder that it's a joy to read. I highly recommend it.

Jan 4, 2012

My Year In Cities, 2011

Like last year, here is the list of cities I visited during 2011, in chronological order.

One or more nights were spent at each. Cities marked with an * were visited multiple times on non-consecutive days.

Nov 8, 2011

Is A Humanities Degree Worth It?

Yesterday I encountered a couple articles that questioned the value of going to college for a non-STEM (science, technology, engineering or mathematics) degree, both on a personal and societal level. Ignorning the societal questions, my girlfriend and I were curious about whether the claim that humanities or social science degrees aren't valuable from a personal perspective was borne out in the data.

The one article that provided actual jobs data did so for 25-year-olds, which we felt was a particularly poor choice. If you graduate with a theatre or dance degree, for instance, at 25 there's a very real chance you're working a retail or food service job trying to make it in your chosen field, and that's precisely what you want to be doing. Wage data from that time in a person's life doesn't accurately reflect the value of their education, because they're likely actively ignoring higher-paying jobs because they lack the flexibility necessary to go to auditions and such. Similarly, those who chose to go to graduate school will skew the statistics by not really being in the workforce.

So, we decided to investigate the effect of educational field on income for people in their 40s, because we thought that would be a lot more representative of the long-term value of a college education. All the data comes from the American Community Survey, the Census' annual survey of data about Americans. A lot of people don't realize the actual original data points are available (under the name Public Use Microdata Sample), so you don't have to use the Census' pre-designed tables, you can develop whatever you want. A little Python scripting later and we had our data.

Discipline Level of education Population Average income
NoneBelow high school5434718$18090
High school diploma25516044$33617
Art and Music Education Bachelor's27864$37539
Master's23202$58367
Professional or Doctorate3711$70742
Visual and Performing Arts Bachelor's8635$38013
Master's3032$45554
Professional or Doctorate1033$74062
Humanities Bachelor's8780$43333
Master's4591$58218
Professional or Doctorate2280$99010
Psychology Bachelor's257599$46728
Master's164189$59540
Professional or Doctorate73793$102719
French, German, Latin, and Other Common Foreign Language Studies Bachelor's37437$47966
Master's28739$61957
Professional or Doctorate11750$99453
Social Science or History Teacher Education Bachelor's13468$50386
Master's10542$55242
Professional or Doctorate2006$102029
English Language and Literature Bachelor's200549$52416
Master's109660$60264
Professional or Doctorate58149$111871
Drama and Theater Arts Bachelor's28539$56420
Master's11629$51166
Professional or Doctorate3996$83334
Journalism Bachelor's91561$60368
Master's22853$76829
Professional or Doctorate9400$86307
Communications Bachelor's247397$62189
Master's53687$64217
Professional or Doctorate14476$111432
History Bachelor's115891$62315
Master's64445$85218
Professional or Doctorate54204$137564
Forestry Bachelor's10254$62604
Master's3436$71926
Professional or Doctorate1046$133358
Physics Bachelor's21442$72082
Master's27825$102690
Professional or Doctorate28437$122621
Accounting Bachelor's466360$74335
Master's106538$103953
Professional or Doctorate32492$125672
Mathematics Bachelor's77258$75037
Master's57207$95204
Professional or Doctorate19521$121534
Molecular Biology Bachelor's2497$79029
Master's1482$52335
Professional or Doctorate4384$175559
Computer Science Bachelor's235530$84217
Master's76834$105486
Professional or Doctorate11220$120176
Chemical Engineering Bachelor's38051$89511
Master's24422$116812
Professional or Doctorate12439$145061

The first rows show the data for people without at least a bachelor's degree, broken out into those that have a high school diploma (or equivalent) and those that don't. After that are rows by discipline of bachelor's degree, sorted in ascending order of income for people who didn't go on to an advanced degree. We picked a sampling of fields we thought would be representative, but there are more than 150 fields in the data set (see field FOD1P), so let me know if you're interested in something in particular.

We were surprised to find that, in a few cases, there is only a small benefit to getting a bachelor's. On average, the holder of a 4-year degree in Art and Music Education only earns $3900 more than someone without a 4-year degree, which is something, but not a lot compared to the many tens of thousands of dollars that the degree cost to obtain.

However, there are relatively few fields that are like that. Even stereotypically underutilized degrees like History, English, or Communications increase earnings by more than 50% by the time you're in your 40s, though as expected, a STEM degree tends to be more valuable than a non-STEM degree.

Jan 1, 2011

My Year In Cities, 2010

Like last year, here is the list of cities I visited during 2010, in chronological order.

One or more nights were spent at each. Cities marked with an * were visited multiple times on non-consecutive days.

Dec 31, 2009

My Year In Cities, 2009

Like last year, here is the list of cities I visited during 2009, in chronological order.

One or more nights were spent at each. Cities marked with an * were visited multiple times on non-consecutive days.

Nov 21, 2009

Yahoo Pipes

Yahoo Pipes is a really awesome product that a lot of people don't know about, and I feel like Yahoo hasn't really done a lot with. It's basically a node-based data editor, but it can fetch source data from places on the Internet, which means you can have pipes with dynamic output. And then, you can subscribe to the results of those pipes or request them via JSON, which gives you a huge amount of flexibility.

I was spurred to write this because Jason Kottke was recently upset that the New York Times had put Errol Morris' blog items, which used to be on their own, into a new thing called Opinionator. This is a great simple use-case for Pipes, since you can fetch data from an RSS feed. Here's the final result:

Pipes looks at the RSS feed and sees that there's a dc:creator tag in it, so we can use that to filter with. It knows the input is RSS items, so you can filter those on an item-by-item basis and it will retain just the items that match. It's really easy to understand exactly what it's doing and build your own pipes. The only problem is sometimes finding the operations you're looking for, since there are a lot of them.

Go ahead and check it out in action. The New York Times Opinionator feed only has 10 items in it, and there are several authors, so this might not have any results at any given time if you go to look at it, but you can clone it and play with the source yourself. I've also noticed that Pipes has been a little flaky when playing with it this morning, so apologies if it doesn't work.

Sep 5, 2009

Discovery in Florida

Last week Monday, in the earliest hours of the morning, my girlfriend and I touched down in Orlando, Florida. We immediately picked up the rental car and drove out to Cocoa Beach, situated along the Atlantic coast, where we were planning on staying for the week. Then we slept. We were in Florida to see the launch of Space Shuttle Discovery on STS-128, which we expected would be pretty cool.

Discovery was supposed to launch at 1:36 AM Tuesday morning. We spent most of Tuesday gathering supplies, looking at exhibits at Kennedy Space Center, and waiting around in lines to get on buses. Despite an 80% favorable outlook, though, bad weather scrubbed the launch about 10 minutes before liftoff. Apparently the Shuttle doesn't respond well to lightning. As an aside, though, we learned that Apollo 12 was struck by lightning twice shortly after liftoff, but the systems in those days were sufficiently simple that it didn't cause major problems.

The next night, we made the same preparations and set out. When we arrived at Kennedy, we learned that the launch had been scrubbed due to a valve problem. The 8-inch liquid hydrogen fill and drain valve hadn't registered as closed when they tried to close it, which obviously was a huge problem. The absolute earliest they could attempt to launch again was 48 hours from then, but they weren't even making any suggestions about scheduling another attempt until they got a chance to look closely at the valve and its associated sensor (which they suspected of being the real source of the problem). They wanted to get it resolved quickly, though: their last chance to launch was Sunday night. If they were still on the ground at that point, the launch window closed and the next opportunity was more than a month later in October.

Disappointed, we headed back to the hotel. Our flight home was Thursday morning, and the next possible launch attempt was just after midnight on Friday morning. What were we going to do, we asked ourselves. Do we eat the cost of the flight and stick around until who knows when? Or head home and risk missing the single event we came to see? We decided to wait and see what they said on Wednesday about the valve. After all, the airline said we could cancel our flight up until an hour before it left, and the valve problem might have been bad enough that they had to delay until October, when we could return.

We went back to Kennedy on Wednesday and took the bus out to the Apollo/Saturn V Center and International Space Station Center, all the while keeping an eye on the Kennedy Space Center Twitter feed. In the early afternoon, they announced that they would indeed make another attempt early Friday morning, so we decided to cancel our tickets and stay. After all, there were four launch opportunities that weekend, so the odds seemed pretty good.

Thursday we spent doing very little, but it didn't pass entirely uneventfully. The mission managers decided they wanted more time to come up with contingency plans in case the valve acted up again, so they pushed the next attempt back another 24 hours to just before midnight on Friday. Just three launch attempts left before the August opportunity was gone.

Friday we decided to do something fun, so we rode out to Orlando to see Epcot at Walt Disney World. We had a great time, and my girlfriend was quite surprised as how much entertainment there is for adults as well as kids. We got a late start leaving Cocoa Beach, though, so all too soon it was time to get back in the car and make yet another trip to Kennedy.

Getting out of the park, back to the car, and out of the parking lot took longer than we anticipated, though. We were a little worried about getting to Kennedy on time, as they block off the roadways several hours before launch attempts to keep people from driving in to see the launch and putting themselves in harm's way. We had a vehicle placard that was supposed to get us past the roadblocks, but we hadn't ever tested it, and it was up to the security guys whether they wanted to honor it anyway. If we were sufficiently late, we'd be out of luck.

Of course, as we got on the freeway, we noticed that we were down to about a quarter of a tank of gas. My memory was that we were at a little under half a tank when we left Cocoa Beach, though, so it didn't seem like it would be a problem. We'd have to get gas shortly before or after the launch, but no big deal. About halfway between Orlando and Kennedy, though, the gas light goes on. In most of the US, that wouldn't be that big a deal, but the stretch of road between Orlando and the coast is basically all fields and wilderness. My girlfriend got rather worried. I told her it'd be fine, and hoped it would be. It wasn't like we could do anything about it, so we had to just keep on driving.

It was at this point that my iPhone saved the day. By finding a gas station? Not really. We did use it to find one, but the closest gas station turned out to be along the road we had to take anyway, so we would have stopped there regardless. No, what it did was give us peace of mind that we weren't going to run out of gas and miss the launch. And boy was that nice at that particular time. Late to where you're going and low on gas, just the knowledge that it's only 3 miles until one of your problems is solved is quite relaxing.

Flush with gas, we breeze onto Kennedy without a barricade in sight and find ourselves at the Visitor Center for the fourth time in five days. As before, we wait around in lines for a while and then board the buses. The crowd had really thinned out from Monday night's attempt, we presumed because they couldn't cancel flights and add vacation days quite as freely as we fortunately could. The weather forecast was only 60% favorable, but the attempt would go forward.

The buses for a launch take you out to the viewing area several hours early. On both the previous attempt and this one, we had gotten on the second or third bus to leave, so we got a prime spot right on the front edge of the seating area. Once you're there, though, there's basically nothing to do. There's a PA system that broadcasts NASA's coverage of the launch attempt, including some snippets from the radio traffic, but the launch timeline has large portions of built-in buffer space in case anything goes wrong, so when nothing has gone wrong there's a lot of just sitting. We got periodic updates on the weather, which were promising, but otherwise you're left to whatever distraction you brought with you. (Professor Layton, in my case.)

The final major decision point in a launch seems to be at about eleven minutes before liftoff, when they decide whether or not to restart the countdown, which has been holding at T-9:00 for about an hour. All the major groups on the launch team have to give a go/no-go signal when polled. When this time came around, a hush came over the crowd as everyone listened for the signals, especially trying to catch when weather went by. All "go". When they finished the poll, all the spectators started cheering.

The final minutes of the countdown flew by, with the NASA commentators describing all the steps the launch controllers and computers were taking as they happened. Final checks of computers and flight control systems, pressurization of suits. And at 11:59:37 PM, the countdown reached zero.

I was born after the advent of the Shuttle program, almost a decade after the last moon landing. I was three years old at the time of the Challenger disaster. Human spaceflight has just been a fact of life for me, along with air travel, radio, television, electricity, and all manner of other technological achievements.

Spending a week immersed in the process of spaceflight, culminating in the launch of one of the most powerful rockets ever built, gives you a new perspective on matters. Spaceflight is neither easy nor routine; it's actually incredibly complicated. Human beings strap themselves onto a rocket that releases more power than a nuclear weapon and then spend days, weeks, or even months at a time in an environment that is completely unlivable for all life as we know it.

Watching the incredible blast from the rocket engines light up the launch area like daylight, with a plume that was painful to look at, I couldn't help but think to myself how amazing it was that I was watching a man-made vehicle rocketing seven people into space. Literally into outer space, hundreds of miles above the surface of the Earth, where there's no water and basically no air and alternately intense solar radiation and freezing night. A place where you see fifteen sunrises a day. Where you can look down and see entire continents laid out before you, not on a map, but really there, with your naked eye.

It's amazing the kinds of things that the human race has managed to achieve, and maybe even more amazing to think that we do it often enough that it doesn't even make the news most of the time. Ho hum. Another group of people just went to space.

Aug 18, 2009

Building Fences and Doing Things

A week ago last Saturday, I helped my family build a fence.

Picture of a fence

The design is a fairly straightforward one, with the nice feature of giving each property an equal share of the nice side of the fence. I think it turned out pretty well, due in no small part to my dad's do-it-yourself skill. I didn't come here to write about the fence, though.

What I really noticed while helping out with the fence was that I was seriously enjoying myself. The simple act of measuring, cutting, and assembling a bunch of wood was easily one of the best parts of my trip. And I think that that's all due to the pleasure that comes from achieving something meaningful.

One of the facts about my life, and the lives of many people in the industrialized world, is that I probably won't ever go hungry or homeless. In my current job, I'm sufficiently well-situated that I probably wouldn't get fired even if I put in half the effort that I currently do — I wouldn't get promoted, but I wouldn't be out of a job, and I could easily survive for the rest of my life on my current pay. In basically all ways, I could achieve very little of importance and still manage to live a long and healthy life. What this all amounts to is that there aren't any external pressures on me to go out and do anything.

When I'm at home, I usually spend most of my time either chatting with my roommates, playing videogames, or reading things on the Internet. All of these things are enjoyable in the short term, but none of them are really doing something. At the end of the day, I've got just as much under my belt as I did when I woke up in the morning.

So, I plan to start really doing things in my free time, though I haven't decided just what yet. I'm considering learning the drums. I could brush up on my German or Japanese. But whatever I end up doing, I want to be able to look back at my day, my week, or my year, and be proud of what I've achieved.

Aug 3, 2009

Constrictor By E-mail

Prompted by Andy Ihnatko's glowing review of Posterous, particularly where he mentioned that being able to post by e-mail made him far more likely to actually make posts, I figured I'd give that a shot. After all, my blog is just a collection of text files, so it's trivial to turn e-mails into blog posts. We'll see if it actually encourages me to write more, hopefully it will.

Feb 17, 2009

Second-largest Cities

Mark Dominus posted an article today about states' second-largest cities and their relationship to the largest city. For cities he used Metropolitan Statistical Areas, though, which I felt made the results a little weird. In particular, many MSAs, especially those for large cities in the small eastern states, cross state lines, and it seemed weird to me to count those as belonging to a single state.

Because of that, I re-ran the analysis using the Census Bureau data for incorporated places instead. The table of results is below; I've left in the Census markers for what kind of entity is being considered. In particular, "balance" means that the named entity includes some smaller incorporated places inside it and those are being excluded from the population (ie, the population listed is the larger entity minus the smaller entities).

Under this definition, New York does in fact have the largest ratio between the largest and second-largest cities. Illinois, which previously occupied that spot, has dropped to second place; its previously-second-largest city of Peoria has been replaced with Aurora, which is near Chicago and thus was counted as part of it in the original analysis. Rhode Island, rather than having one city and thus no quotient, now has multiple cities and gets to have a quotient fairly close to the middle of 2.03. Hawaii, however, does not have any incorporated cities, and the only place included in the list is the City and County of Honolulu (as a Census-designated Place), so there is still an item with no quotient. As Mark did, I've placed it at the top and bottom of the list.

I haven't really looked at much of the rest of the list, but it shuffled quite a bit. Pennsylvania, for instance, is now close to the top instead of being buried in the middle; it appears that about a quarter of Philidelphia's MSA population is within Philly, whereas only 13% of Pittsburgh's is in the city proper.

Here's the full set of data:

State Largest city and
its Population
Second-largest city
and its population
Quotient
Hawaii Honolulu (CDP) 375,571
New York New York (city) 8,274,527 Buffalo (city) 272,632 30.35
Illinois Chicago (city) 2,836,658 Aurora (city) 170,855 16.60
Maryland Baltimore (city) 637,455 Frederick (city) 59,220 10.76
Alaska Anchorage (municipality) 279,671 Fairbanks (city) 34,540 8.10
New Mexico Albuquerque (city) 518,271 Las Cruces (city) 89,722 5.78
Michigan Detroit (city) 916,952 Grand Rapids (city) 193,627 4.74
Pennsylvania Philadelphia (city) 1,449,634 Pittsburgh (city) 311,218 4.66
Oregon Portland (city) 550,396 Salem (city) 151,913 3.62
Massachusetts Boston (city) 599,351 Worcester (city) 173,966 3.45
Indiana Indianapolis (city, balance) 795,458 Fort Wayne (city) 251,247 3.17
California Los Angeles (city) 3,834,340 San Diego (city) 1,266,731 3.03
Washington Seattle (city) 594,210 Spokane (city) 200,975 2.96
Arizona Phoenix (city) 1,552,259 Tucson (city) 525,529 2.95
Georgia Atlanta (city) 519,145 Augusta-Richmond County (consolidated government, balance) 192,142 2.70
Mississippi Jackson (city) 175,710 Gulfport (city) 66,271 2.65
Wisconsin Milwaukee (city) 602,191 Madison (city) 228,775 2.63
Idaho Boise City (city) 202,832 Nampa (city) 79,249 2.56
South Dakota Sioux Falls (city) 151,505 Rapid City (city) 63,997 2.37
Nevada Las Vegas (city) 558,880 Henderson (city) 249,386 2.24
Arkansas Little Rock (city) 187,452 Fort Smith (city) 84,375 2.22
Vermont Burlington (city) 38,531 South Burlington (city) 17,445 2.21
Kansas Wichita (city) 361,420 Overland Park (city) 169,403 2.13
Delaware Wilmington (city) 72,868 Dover (city) 35,811 2.03
Rhode Island Providence (city) 172,459 Warwick (city) 85,097 2.03
Kentucky Louisville/Jefferson County (metro government, balance) 557,789 Lexington-Fayette (urban county) 279,044 1.00
Florida Jacksonville (city) 805,605 Miami (city) 409,719 1.97
Virginia Virginia Beach (city) 434,743 Norfolk (city) 235,747 1.84
North Carolina Charlotte (city) 671,588 Raleigh (city) 375,806 1.79
Maine Portland (city) 62,825 Lewiston (city) 35,234 1.78
Ohio Columbus (city) 747,755 Cleveland (city) 438,042 1.71
Nebraska Omaha (city) 424,482 Lincoln (city) 248,744 1.71
Texas Houston (city) 2,208,180 San Antonio (city) 1,328,984 1.66
Colorado Denver (city) 588,349 Colorado Springs (city) 376,427 1.56
Iowa Des Moines (city) 196,998 Cedar Rapids (city) 126,396 1.56
North Dakota Fargo (city) 92,660 Bismarck (city) 59,503 1.56
Montana Billings (city) 101,876 Missoula (city) 67,165 1.52
Utah Salt Lake City (city) 180,651 West Valley City (city) 122,374 1.48
Oklahoma Oklahoma City (city) 547,274 Tulsa (city) 384,037 1.43
Minnesota Minneapolis (city) 377,392 St. Paul (city) 277,251 1.36
Missouri Kansas City (city) 450,375 St. Louis (city) 350,759 1.28
New Hampshire Manchester (city) 108,874 Nashua (city) 86,837 1.25
New Jersey Newark (city) 280,135 Jersey City (city) 242,389 1.16
Tennessee Memphis (city) 674,028 Nashville-Davidson (metropolitan government, balance) 590,807 1.14
South Carolina Columbia (city) 124,818 Charleston (city) 110,015 1.13
Alabama Birmingham (city) 229,800 Montgomery (city) 204,086 1.13
Connecticut Bridgeport (city) 136,695 Hartford (city) 124,563 1.10
Louisiana New Orleans (city) 239,124 Baton Rouge (city) 227,071 1.05
Wyoming Cheyenne (city) 55,641 Casper (city) 53,003 1.05
West Virginia Charleston (city) 50,478 Huntington (city) 48,982 1.03
Hawaii Honolulu (CDP) 375,571

Jan 20, 2009

Obama's Inauguration Speech

I thought the inauguration was pretty interesting. I don't think that it'll go down as one of the great speeches of history, but it was good. It started off pretty slow, with a fair amount of rhetoric that didn't seem to tie together very much, but it picked up toward the middle. I was also struck by a few specific moments.

When listing religious affiliations, Obama listed Christians, Muslims, Jews, and Hindus, paused for a moment as if he were done, and then said, "and non-believers". This surprised quite a few people it seemed (and was the only line that triggered a sizeable cheer in my office). Having the President recognize the existence of atheists is almost unheard of, and really gives me confidence that he actually does believe in supporting everyone, despite the fact that inequality towards atheists still seems to be politically acceptable.

Obama also invoked science explicitly, saying that the administration will "restore science to its rightful place", and later counted "curiosity" among the values our nation's success depends on. I can't agree more that the eminence of the United States is due far more to its significant advancements in science and technology than on its particular accidents of religious history (as other administrations have seemed to feel), and that scientific capability is one of the finest products of a free society and one of the first to be diminished when our freedom is curtailed. Restoring the nation's freedom to pursue truth is an investment in our prosperity that will pay off for decades.

And while the speech is unlikely to be invoked during future inaugurations, I think there were two lines that had potency that will last beyond today, both having to do with foreign policy: his admonition to nations that blame their ills on the West that they should "know that your people will judge you on what you can build, not what you destroy" and his mention to oppressive regimes that "we will extend a hand if you are willing to unclench your fist". These are the kinds of lines that I love, and can have a lasting effect on the world.

The ending, I thought, was lackluster. Most of Obama's speeches have a strong arc with a flourish at the end, bringing everything together, but this one stayed steady throughout, covering one topic after another. That makes sense, given its purpose, but it made it less of an experience.

Altogether, though, a solid start to what will hopefully be an inspiring administration.

Dec 29, 2008

My Year In Cities, 2008

Following Jason Kottke's example, here is the list of cities I visited during 2008, in chronological order.

One or more nights were spent at each. Cities marked with an * were visited multiple times on non-consecutive days.

The vast majority of my traveling was done early in the year and in spurts; the trips to Chicago, London, and Rhode Island had no weekend at home in between, as did the trips to Acapulco and Oakland.

Dec 11, 2008

New Cars on the C line

The introduction of the R160s is finally making its presence felt in my commute. While none of the lines I regularly ride are getting any of the new cars, the C used to run entirely R38s, which are being retired. So, starting this week, I've been riding entirely on R40Ms and R42s (I can't tell them apart), presumably relocated from the N, Q, W, and other lines that are getting the new 160s.

Interestingly, it seems like they haven't quite gotten all their ducks in a row yet. The C has historically always run 8-car trains, but this week I've definitely run on at least one 10-car train and one 6-car train. I expect it will return to 8-car trains eventually, though (the C is a bit crowded at rush hour, but not painfully so).

Dec 7, 2008

Constrictor Available

I've worked on Constrictor enough that I feel confident in allowing other people to be exposed to it. Some of the details might not yet be in their final form, but I think it's in pretty good shape right now. You can check out the Constrictor area of my site to get documentation, which still a bit sparse, or a pointer to the code.

If anyone starts using Constrictor, I'd be interested in hearing about your experiences or any suggestions you have.

Oct 28, 2008

Constrictor

This site used to be hosted with Drupal, which is a very capable and high-powered content management system. However, I had always felt that it was a bit more complicated than I needed; I didn't actually know how large portions of it worked, and it had lots of features I had no interest in using but added to the complexity even if turned off.

So, after hearing about it from Mark Dominus' blog, I decided to look at blosxom. It turns out that it's pretty much exactly what I want: a blogging tool that's dead simple but very capable and extensible by plugins (I love plugins). However, it's written in Perl, which I didn't want to have to deal with. There was a port of it to Python, which would be my language of choice, but looking at the documentation, it's a lot more complicated than the original (the distribution has 72 files!).

So, long story short, I wrote my own direct port of blosxom to Python. I'm calling it constrictor, since the whole purpose is to constrict the feature set. I've always been a fan of simple, sharp tools, and having worked with this intimately for a couple weeks this fits the bill pretty well. The plugin architecture is largely the same as blosxom's as well, and as a result I've already got three constrictor plugins going: one for allowing raw python in the interpolation, one to disable posts in a particular directory from being displayed in the date-based listings, and one to massage my posts to add paragraph tags and such. Porting blosxom plugins is pretty direct as well, so I expect to have more shortly.

I'll be futzing with the layout and things for a while, but overall I think things are good to go.

Feb 5, 2008

London, Day 1, Addendum

I forgot to mention that on Sunday afternoon I also headed over to Buckingham Palace while I was waiting for a room to be made available at my hotel. Perhaps 100 yards away from the palace is the Canadian War Memorial.

In my view, the Canadian War Memorial is right beside the Vietnam Veterans Memorial as the most potent war memorial I've ever seen. But where the Vietnam Memorial provides an overall impression of solemness, and possibly sadness or regret, the Canadian War Memorial evokes a profound sense of gratitude. It's a water cascade over a granite diamond that has images of maple leaves embedded into it, and the memorial is surrounded by maple trees. In autumn, the leaves from the trees fall onto the memorial and mix with the carvings. It's just stunning.

Image courtesy flickr user OwenBlacker
Picture of Canadian War Memorial, London

If you're ever in London, do yourself a favor and pop over to Green Park, right by Buckingham Palace. The palace is rather nice to look at as well.

Feb 4, 2008

London, Day 1

I have arrived in London, where I'll be working for two weeks. So far, everything is going well.

Immigration was ridiculously fast. I mean, literally, I walked into the room and up to an available desk. The immigration officer did the usual routine of complete non-interest except when I mentioned I worked for Google, to which I got a "Oh, mhmm."

The hotel I'm staying in is really nice. Probably nicer than I deserve. The mirror in the bathroom has a section of fogproof glass. I can see the top of Big Ben's tower and the parliament building from the window.

It's also creepy. The minibar is computer controlled. If you remove anything from its spot, it bills your room. When I arrived, I opened up the minibar hoping that it had space to be used as a fridge (it doesn't). About 15 minutes later, a room service guy arrived with a can of Red Bull and put it in the minibar, and he implied that they had noticed that I had opened the minibar but hadn't taken anything out, so they wanted to restock the can in case I wanted it.

I spent last night wandering about the Square Mile, which is also creepy after dark (5:30) on a weekend. Nothing is open, including museums and things, and you can walk for blocks without seeing anyone. I originally went out to go see The Monument, but it's closed for renovations for 18 months, so I decided to just wander about. Guildhall is really impressive, though, even at night when you can't go inside. In fact, the whole city has this really cool feel from being a mixture of old medieval architecture and beautiful modern stuff. Walking along a long slim overstreet walkway and looking over to see a ruined section of the London Wall is awesome. I unfortunately don't have any pictures, as it was dark and my only photographic device is my phone, but trust me, it's great.

Also, 140 London Wall is perhaps the greatest address ever.

Cars driving on the opposite side of the road are kind of unsettling, too. I didn't realize to what extent I have subconscious feelings about what direction I have to watch out for cars, but when you're walking along the left side of the road and a car whips by from behind you, it's quite surprising.

The London office is quite a lot like New York. My major impression is that it's smaller and has better junk food.

So, it appears that my impression of London so far this time is impressive, yet creepy. More tales as the trip progresses.

Dec 30, 2007

Vacation musings

As I sit here in my parents' house on the last night before I fly back to New York, gazing into the thick fog that's settled over the neighborhood, I feel compelled to take stock of my life. The last week has been a really great time, and it's going to be tough to leave, though I know I have to. Knowing how hard it is on my mom doesn't help either.

Overall, I feel like my life in New York is pretty good. Looking at it from the outside, it certainly looks awesome: I live in a great place, I work at one of the most desired places to work, and so forth. But for the most part, I feel unfulfilled, and I can't quantify exactly why. Part of it is that work isn't that interesting to me; I work on interesting projects, but the complete disconnect from the customer dampens my enthusiasm dramatically. I don't feel like that's it, though. Hopefully I can find what I need to change to feel better.

In other news, there are some exciting developments on this side of the country.

My parents have a new cat, and she's absolutely adorable. Her name is Gina, and she's quite small, roughly 2/3 the size of what I think of as a normal cat. She's got plenty of spunk, though, as she'll happily climb up onto my (six foot high) bed or chase a wine bottle cork around the house.

There's a new Catholic cathedral going up in Oakland right on Lake Merritt, and it's pretty impressive. It looks to be about eight stories tall, judging by the neighboring buildings, and is faced with glass panels in a elegant curve shape with a angled indent. Andrew Sherman has been keeping a log of its construction with a large helping of pictures.

Speaking of Lake Merritt, they're finally doing planning and construction for the southern end improvements, most notably: redesigning 12th Street and Lakeshore, adding more park space, and removing the horrible tunnels that go under the expressway. The design looks really good, though there are concerns about the number of trees being removed (both there and elsewhere), and I'm not convinced that the new restaurant that's being put where the boathouse used to be will be worth anything. There've previously been restaurants on the Lake and all of them have gone out of business. I wouldn't mind living in a high-rise apartment overlooking the lake someday, though.

Also, SCO was delisted in the last couple days, though not as a result of low share price (which it was already under advisement from NASDAQ about), but due to filing for bankruptcy.

Nov 14, 2007

No More DC Power in NYC

New York City has had direct current electrical service since 1882, but that ended today with the disconnecting of 10 E. 40th Street, the last DC customer in the city. Plenty of systems still use DC, most notably the subway, but ConEd has gradually moved the responsibility for AC/DC conversion to the customers, allowing ConEd to stop delivering DC power off the grid.

Aug 29, 2007

What does this mean to you?

Picture of sattelite and truck

Aug 13, 2007

Impression From A Weekend

New Haven consists largely of parking lots and medical emergencies.

Aug 5, 2007

Deriving Importance From Maps

The God Plays Dice blog that I've been reading recently had an interesting entry on trying to derive the importance of intersections from a map of a city. The core observation is that a good first approximation of importance of an intersection is the number of roads leading into and out of it.

Manhattan has some qualities that make this interesting to ponder. Primarily, the city was allowed to evolve naturally until 1811, when the Commissioner's Plan set forth the layout from 14th Street to the north side of Harlem, and the most important locations in Manhattan (depending on your point of view) are split between the Financial District, which is unplanned, and Midtown, which is planned.

In the planned section, the given approximation works out well. The plan included one major irregularity: Broadway, which cuts across diagonally from about 77th Street to 10th Street. As a result, the grid section includes 6 intersections that have 6 roads leading into and out of them instead of four:

All of these are major intersections, and certainly rank highly among the most important intersections in the City.

Below 14th Street, though, the theory breaks down heavily. The West Village in particular has streets going all different directions and includes many intersections of 6 roads, some of as many as 8. However, none of those intersections are particularly important to the city as a whole (though some have local importance). Partly this is because Greenwich Village is built on land that is unsuitable for large buildings and partly it is because of the history of the area (which was once a literal village for people who didn't want to live in the bustling metropolis that was lower Manhattan).

Perhaps the core of the matter, though, is that the importance of an intersection is proportionate to the importance of the streets that intersect there. Intersections with more streets thus stand a better chance of being important simply because there are more streets that might contribute some importance. In that manner, we could find important intersections by trying to find the important streets. Ideas for what features one might look for to determine that could include unusual streets (such as Broadway), streets which are further apart from similar streets (such as the Avenues), streets that carry two-way traffic (as these tend to be larger than one-way streets), and streets on the edges of major parks.

Isabel also includes a side note about subways and why she feels that Boston has a thorough subway system while Philadelphia doesn't. She compares Manhattan to Philadelphia in that the system is a grid, so there aren't "obvious" places to put subway stops, but that isn't actually true for Manhattan. The Commissioner's Plan designated fifteen Streets (14th, 23rd, 34th, 42nd, etc) to be wider than normal, and many carry two-way traffic nowadays (which is very unusual in Manhattan, even the Avenues are largely one-way). Because they're regularly placed and main thoroughfares, these became the obvious places for subway stops when the system came along. That's why there are 4 separate stops on 125th Street, but no stops on any of 117th-124th or 126th-134th.

Jul 18, 2007

We Made The New York Times

The New York Times posted an article about the recent release of our product to hundreds of thousands of additional advertisers. Pretty exciting stuff.

Jul 15, 2007

Poor Greenland

Despite football (soccer) being the national sport of Greenland, they are not a member of FIFA. Why, you ask? Because it's impossible to grow grass in Greenland that meets FIFA's standards.

Mar 19, 2007

I Didn't Really Want It Anyway

I've never been so pleased to be denied a service in my life.

Thank you for your interest in Chase Identity Protection

What Happened:

We are sorry to inform you that we are unable to fulfill your request to participate in this program. The benefits of our product are based on the information and activity that takes place in your credit file. At this time, there is not enough information in your credit file so we cannot provide you with this service and you will not be charged.

So, basically, the bank says that they don't know enough about me to have any idea what would be normal or abnormal financial activity. That sounds like good news to me!

Mar 10, 2007

British Launch Skynet

Oh noes, the end is nigh!

Yes, the British launched the first of the Skynet 5 family of satellites. It's rather amusing that a modern high technology product shares its name with the computer from the Terminator movies.

It's less amusing that people persist in accusing the UK of being arrogant or dumb, considering the first Skynet satellite was launched in 1969. Come on, there're plenty of things to make fun of the UK for, pick one that's actually true :)

Mar 5, 2007

A Source of Difficulty

"He's trying to phonetically spell words he can't pronounce."

- Me

Feb 7, 2007

Goodbye Evil Dead: The Musical

Unfortunately, Evil Dead: The Musical is closing. I will be sad to see it go, but hopefully it will find a home elsewhere.

Jan 8, 2007

The Secret Project

My secret project is finally ready to be revealed! Behold, this xkcd comic translated into a Google Maps map! When I first read that comic and the the associated blag post, I knew the idea had a lot of potential for additional geekiness. Oliver had been messing with the Google Maps API the previous few days for an unrelated project, so this immediately sprung to mind.

The details of exactly what the map is representing are explained in the blag post, but the short version is that this is a map of the IPv4 address space. Each IP address is treated as an integer from 0 to 4,294,967,295 mapped into a 16th order Hilbert curve. The advantage of using Hilbert curves is that any aligned block of 4^n addresses maps to a square and any aligned block of 2^n addresses maps to a rectangle.

To build the maps, I wrote a Python program that reads an input file that represents everything that should show up on the map and then builds the images. Each record in the file contains a name, importance, a range of zoom levels to appear at, a background color, and one or more address blocks in CIDR notation. So, for instance, a record might look like "HP,2,2,,company,,15.0.0.0/8,16.0.0.0/8" or "Multicast,-1,-1,,metaspace,,224.0.0.0/4". The file can also include color aliases, so that I can write "registrar" instead of "#f5eecc".

The program uses the Python Imaging Library to do the drawing. For each zoom level, it begins with a 16k x 16k image and draws all the blocks on that, then resizes it to the proper resolution and tiles it into 256 x 256 images for use by Google Maps. I originally wanted to use a 65k x 65k original image, because then each address maps to a unique pixel, but in 24-bit color that comes out to 12 GB of raw image data. Not entirely surprisingly, trying to allocate that much memory on a 32-bit system causes Python to crash. On the machine I run it on, it takes about half an hour to render all five zoom levels, with about 90% of that time spent downsizing the most zoomed-in level.

The data is obtained through a combination of DNS and the various whois databases, the same as the original. In looking up the address information for the organizations I put on the map, I discovered a lot of interesting bits of trivia. For instance, neither Google nor Yahoo! is assigned a block that's /16 or larger. On the other hand, despite being assigned a /8 block, IBM has many other sizable address blocks scattered all over the IPv4 address space.

Suggestions for other landmarks to include or other improvements are welcome.

Dec 20, 2006

JaredCode

Oliver (12:39:43 PM): I love jared code. Oliver (12:40:03 PM): if (someterriblyobscurecondition) then   do some retarded shit else   do something bewildering . Oliver (12:40:09 PM): (that's pseudo-code)

Dec 19, 2006

Evil Dead: The Musical

Last night I saw Evil Dead: The Musical at the New World Stages. In short, it was amazingly ridiculous. The entire show takes "not taking itself too seriously" to a new level. The story follows the plot of Evil Dead and Evil Dead 2, with some of the most popular lines from Army of Darkness thrown in to please the crowd. Though the fourth wall isn't ever directly broken, the musical is filled to the brim with references to the essence of the whole thing (such as characters acting confused about the choreography they're performing). And everything is simply done completely over the top, from the incredibly campy lines to the coreography to the immense amount of fake blood and gore.

The writing in particular is just ludicrous. For instance, one of the songs starts with "God damn you bitch / You fucking stabbed me!", sung in full-on musical style. Everything is like that, taking every cheap laugh and stupid idea to its most extreme extent, which turns out absolutely hilarious if you're into that kind of thing.

In particular, the guy doing Ash is the spitting image of Bruce Campbell in almost every way. The only qualm I had was that he really can't deliver Campbell's lines the way Campbell does, but he tries to do so, which leads to a few lines (such as "Lady, I'm going to have to ask you to leave the store") that sort of fall flat. But otherwise, he's just awesome.

Overall, it's highly recommended.

Dec 18, 2006

Catching Up

Wow, it has been a long while since I posted. Here's a quick recap of what's been going on in my busy busy life. I officially received an offer from Google and accepted it, and will be beginning work on March 26th. That should be awesome. To answer the question I receive most: I don't know what project I'll be working on; after I go through training and orientation and such things, I'll be assigned to a project that they and I think I'm suited for.

On Wednesday the 6th and Friday the 8th I went to see New Model Army in Brooklyn and Hoboken, respectively, which was absolutely fantastic. I hadn't heard of them until Kat asked if I wanted to go, but I'm a big fan now. Their studio versions of songs have a different feel than the live ones, which I also enjoy but in a different way.

I'm basically done with school now, only one assignment to go and that's due tomorrow. Assuming I pass all my classes (which I can't imagine I won't), that'll be the end of schooling for me for the next while. I'm very much looking forward to it, homework is just incredibly annoying at this point.

I've been working on a super secret coding project that will be unveiled in the coming days or weeks, depending on how much time I get to work on it. It is far more geeky than probably most people will be interested in.

And tonight, I saw Evil Dead: The Musical. More on that in a follow-up post.

Flooey's First Rule Of Fun

People + Stuff = Fun

Dec 12, 2006

It was funny, too

"That joke had perfect forward comedy."

- Justin

Nov 26, 2006

Fun For The Whole Family

I have the best family sometimes.

On Thursday, my sister needed some rum for her apple pie, and mentioned that she'd never tried straight rum before, so we gave her a little bit of rum to try, which was very entertaining to watch.

Last night, I'm not entirely sure how it started since I wasn't in the room, but for some reason my dad brought out a green drink that's basically Armenian moonshine and had us try it. That started a whole sequence where we poked through the liquor cabinet and pulled out everything we wanted to try and sampled it.

We ended up pouring samples of fifteen different liquors.

After that, we finished off with tumbleweeds, which are ice cream, Kahlua, and white creme de cacao. Very tasty. Overall, my favorites were the Maker's Mark, Hennessey, McCormick, and Seagram's Canadian whiskey, plus of course Baileys. The Pisco and Armenian moonshine were easily the worst; those were incredibly harsh.

All in all, it was probably the most drinking I've ever done in one sitting. Once we were done, I had a good time annoying Coley and Melissa with my drunken ramblings in instant messages, which they seemed entertained by. I mentioned it to Kat and she thinks there should be a term akin to "drunken dialing" but for IMs, which seems reasonable.

I definitely should drink more often. For most folks the exact opposite is probably true, but I found that I don't really mind myself when drunk. I've always had this fear that if I got really drunk I'd become someone that I don't like, since I'm a very controlled person with lots of stuff I don't like that I've decided against being over the years. It turns out, though, I just do the same things I do when I'm tired (which generally means acting silly and childlike), with the added bonus of a slightly fuzzy feeling and a loss of motor control. It's actually pretty nice to know that I'm not some kind of angry or mean drunk.