Monday, October 22, 2012

A Tour of Gerrymanderland

Welcome to the Baltimore Beltway Bus Bonanza!

For the next hour, traffic permitting, we're going to take you on a 49 mile loop loop around Baltimore, and across 4 of our 8 great Maryland Congressional Districts. Here's a map, with the points of interest along the way. This bus is equipped with seatbelts, so fasten them up, and pull out your map and the congressional bingo sheets and keep score as we drive.

View Larger Map

Right now, to get us started, we're at A, the exit ramp on I-695 for I-95 south, north west of Baltimore. We're gonna drive clockwise around town, and since 695 doesn't actually make a loop, we'll do as best we can and start by going south on I-95. You with me?  Please sit back and enjoy the view.

Alright. We're starting in MD District 2, represented in the US Congress by Rep. Dutch Ruppersberger [D]

... 5 minutes later

Ok folks, the split for 895 is coming up here at B, we're gonna stick with 95.

... 1 minute later

Hey - there's C, Rt 40, and - MD District 3. District 3, whose congressman is Rep. John Sarbanes [D] borders district 2, that makes sense of course.

... 1 minute later

Just crossing Rolling Mill Rd now at D, back in District 2...

... 3 minutes later

Hey look below, 895 joining us again and Poncast St coming up at E - back in District 3 everyone.

... 5 minutes later

Now, under the tunnel we go, and look, there's F, the 395 interchange heading into the city - and - hey, we're in District 2 again... Ain't it fun?

Wait no, we're already at G and now we're in District 3 again. Hm. They must have drawn districts 2 and 3 so that 95 wove them together or something.

... 3 minutes later

Alright, H: I-695 is coming up, we're heading north.

... 1 minute later

We're now at I, passing Rt 1 and leaving MD District 3, entering District 7, home to Rep. Elijah Cummings [D]. If you need to use the facilities in the back of the bus, this is the time to do so, this is the longest break we'll have on this trip and you don't want to miss anything, now do ya! You know, I've always thought District 7's shape kinda looks like a small dog with a large head yipping at the mailman. You see it?

... 10 minutes later

Alright, wake up folks. Millford Mill Rd comin' up here at J, - you know it's funny - we're still in District 7 - but folks - those living both east and west of us are both in our old friend District 2. But don't worry, we'll get you out of District 7 soon.

... 50 seconds later

Here we go - K, passing by the I-795 exit ramp, we're gonna stick with 695 for the rest of our trip, but hey, at least we're back in our home district, District 2.

... 1 minute later

Wait - sorry, (L) the I-795 entrance ramp is joining us on the right, and we're now in District 3 again.

... 6 minutes later

We're now at M on your map, folks. The people joining us on the right here, they are coming out of Baltimore on I-83. If you look to the left you'll see District 2, but on this side of the freeway we're still in District 3. But have patience, we'll join them soon.

... 2 minutes later

Sure enough, we're at N, and here on the right are the folks joining us from I-83 southbound, leaving District 1, 2, or 7 - who knows which district they came from up there - wave hello, and hello to District 2.

... 2 minutes later

We're now passing Rt 146, Dulaney Valley Rd, O on our map. The area immediately to the left (or North) of the road is Hampton - those folks are in District 1, represented by Rep. Andy Harris [R]. District 1, by the way, is MD's largest district, area wise, and stretches all the way south and across the Potomac down to Ocean City and beyond.

... 4 minutes later

P for Perring Parkway, Rt 41, coming up, We're now in District 3 again.

... 4 minutes later

And here we are at Q. We're all the way home again, passing Lillian Holt Drive, we reenter District 2.

Thanks for joining us, it's been a blast - in and out of 4 congressional districts 12 times in only 50 minutes - that's gotta be some kind of record, huh folks?

Don't tell poor Rep. Andy Harris [R] of District 1, though - it takes him 5 hours and 20 minutes to just to drive from one end of his district to the other, staying within his district:

View Larger Map

And don't even get Rep. John Sarbanes [D] of District 3 started on the cost of gas, he has to spend an entire work day crisscrossing central Maryland to get to his constituents:

View Larger Map

Thanks again, folks - Don't forget to leave a tip for your poor congressman and state delegate, if you can figure out who they are, and be sure to thank them for creating such an interesting form of democracy in our fair state - your souvenir map is available at

Oh, and before I forget:

Vote No on Question 5 on election day


Baltimore Sun Editorial, October 21, 2012: Against Question 5 


Question 5 - Congressional Districting Plan

Labels: , , ,

Wednesday, April 04, 2012

I <3 IE8

No, not really. 

On our recently completed Vogue Archive project, IE8 support was a requirement, due to a large number of potential users being stuck at the office on Windows XP with no freedom to install a better browser.  (We had a similar requirement for Firefox 3.6 support, but nowhere near the same kind of trouble with that browser though it was definitely the second worst browser in our field).


The Vogue archive is an HTML5* + Silverlight application: we have two viewers, one built in HTML5 (for tablets and desktop browsers that support it), one built in Silverlight (for all desktop browsers). Both viewers are housed within the same HTML5 "chrome" - see yellow sections in the image below:


IE8, of course, was released years before HTML5 started its meandering way through the standardization process, so it should hardly be expected that IE8 should support HTML5.

Mmm, Cookies!

It should be expected, however, that IE8 could support HTTP cookies properly.

Not so much.

We got an error report from the field that when IE8 users logged out from the archive, and then logged back again, the logon process went through, and then promptly redirected them back to the unsecured welcome page at the start of the logon process. Hm.  Sure enough it did.  The excellent error report also stated that for some reason they were seeing two authentication cookies, one of which was empty.  Could that have something to do with it?  Huh? 

[Quite some time later]

The problem was indeed related to the double-cookies, but it appears it was actually caused by how IE8 interprets cookie expiration dates:

The standard way to delete a cookie is to create a new cookie with the same name, in the same domain (and path), with an expiration date set to a date in the past.  A pretty standard date to use is the 'epoch' start date (JavaScript's beginning of time) - midnight of 1/1/1970, GMT, represented as "Thu, 01-Jan-70 00:00:01 GMT;"

For whatever reason, IE8 sees this date, and attempts to convert it to local time - in our case (EDT) 4hrs earlier: 12-31-69 08:00:01 PM.  Slight problem - since '69 was before the start of the epoch, this is then further interpreted as meaning 2069 (never mind the second bug that a winter time should be converted using EST - aka GMT-5hrs).  So rather than creating a new cookie that immediately expired and thus was deleted, we ended up with a new very long-lived cookie.

To complicate things further, as a brute force way for us to make sure we delete both local and domain cookies (we don't know the preference of the client), in our delete-cookie script we actually create two expired cookies, one for each domain (i.e. and  It appears the login/logout process got confused and sometimes read one cookie (empty, expiring in 2069) and sometimes the other (valid session cookie).


While the analysis was complex, the solution was simple - we now use an expiration date of 1/1/2000 rather than 1/1/1970 - now IE can convert times all it wants, and it still stays a date in the past, and the cookie is expired.

Tell Them Again

I <3 IE8.

Labels: , , , ,

Monday, August 29, 2011

Recipe for annoyance


For whatever reason, this was the power setting on my new laptop.

This is NOT a recommended setting – unless you don’t ever want to use your laptop when running on batteries…

Labels: , , , ,

Saturday, August 13, 2011

Password insanity

Tonight I had to fill out some official paperwork and went online to get it done.  (Before I start griping – the online form was fine, I could fill it out with minimal problems and got a nice PDF with all the entered info at the end.) 

But to get to the form – oh boy.

I’d been to this site before, so I knew I had an account – I guessed my password – err.  Ok, time to hit the forgot password link.

Oh – ok, “the password expires every 60 days”, so that’s why.  I enter the answer to my “secret” question (the answer to which is a matter of public record, and would probably take a hacker 5 minutes to figure out) and am allowed to attempt to enter my new password.  Err.  “Your password can not contain more than three consecutive letters from your old password”. 

Alright odd, but, attempt 2.  Err.  “Your password must be at least 8 characters”.

Ok, fine – should have guessed that.  Attempt 3.  Err. “Your password must contain a special character AND two entries from the three groups: number, upper case and lowercase.” 

Uhm – ok?.  Attempt 4.  Err.  “Your password must begin and end with a letter.”

WTF?  Attempt 5: I enter an upper case letter, a set of adjacent keyboard symbols, and a lower case letter and lo and behold the password is accepted

Don’t ask me what the password was – even if I WOULD tell you, I couldn’t – I have already forgotten.  But that’s fine, next time I’ll just repeat the same exercise and get in by answering my “secret” question.

XKCD says it oh so well:

Labels: , , , , , ,

Saturday, April 09, 2011

Someone's hacking my Blogger account

To my annoyance, someone has successfully posted two porn-spam links as posts (not comments!) to my blog. I already changed my Google password, to no avail, so I am guessing they came in through the mobile/email interface, which I have now disabled. To all my 5 loyal readers, my apologies for the posts.

Labels: , ,

Wednesday, March 23, 2011

Welcome to TicketMaster. How may we fleece you today?

  • Two mid-priced tickets to the Circus: $52.
  • Facility charge: $4.00
  • “Convenience” Charge to use our lousy website: $11.90
  • Order Processing Fee: $4.95
  • TicketFast® delivery – cause it takes us TWO WEEKS to print and mail two tickets, so you may not get them in time: $4.95
  • Total: $77.40
  • Are you sure you don’t want to add another $7 per ticket to insure against not being able to make the event due to illness, airline delay or traffic accidents?  (Cause 50% isn’t enough of a markup; we’d love to make it 75%.)

How, in an economy as market driven and litigious as the US has TicketMaster managed to become such an effective monopoly and not be priced – or sued – out of existence?

Labels: , ,

Tuesday, January 11, 2011

"Microsoft has completely lost the web development community."

Last year Mark Pilgrim released a free e-book/site called “Dive Into Html5” (  The site/book has served as a valuable resource on a recent Html5 project we’re working on here at AIS, and I have frequently gone back for details on topics such as local storage and canvas.  It is an excellent book for any bleeding edge web developer.  It is so choice. If you have the means, I highly recommend picking one up.

This week, Mark posted his observations on how publishing a free e-book (which is also purchasable in print format) works well for him, and that it gives great insight into what parts of the book are being read, and by whom. He then makes the following observation:

6% of visitors used some version of Internet Explorer. That is not a typo. The site works fine in Internet Explorer — the site practices what it preaches, and the live examples use a variety of fallbacks for legacy browsers — so this is entirely due to the subject matter. Microsoft has completely lost the web development community. (emphasis mine)

I forwarded this internally within AIS, and a nice debate ensued.  One common complaint was the hyperbole of the statement, and I agree; a more accurate line would likely be "Microsoft as a browser vendor has lost significant mindshare in the bleeding edge web development community."

Personally one of the things I love about Html5 (using the term the way the hypers would – to mean modern web development with client-driven UI interactions using JavaScript, CSS(3) and some HTML5 semantics) is that it has in some ways unified the web development community:  The debate a few years ago was about JSP vs .NET vs PHP vs Python vs Rails vs someotherservertechnology.  Folks from different camps seldom interacted and learned from each other.  With Html5, the backend processes are completely irrelevant, as long as they don’t muck with the Html (ASP.NET webforms is still a major sinner here, unfortunately) and developers using all sorts of backend software and operating systems are now adding to the collective knowledge, mostly working towards the common goal of getting as much functionality as possible, pushed to end users through mostly standards compliant browsers. 

For instance, our Html5 app is backed by ASP.NET MVC 2 and SQL server.  We do all our development on Windows, in Visual Studio – we’re looking to deploy to Azure.  Clearly we’re MS developers.  But we could just as well have done the app in Php against MySql running on linux and apache, and we’re taking cues from folks using python, java, Rails, Node.js, php and God knows what on the backend.

At the same time I haven’t used IE by choice for about 5 years, maybe more…

I was asked what I thought MS could do to gain back some developer mindshare – so here goes:

  • My thoughts are that if Html5 and the set of bleeding edge technologists that go with it are any kind of priority for MS,  they need to do some or all of the following:
  • Find a way to upgrade the legions of IE 6, 7  and 8 users to IE9.  This will obviously not be easy,  but they could do something similar to what Google did with Chrome frame (i.e. make IE9 a plugin for the older browsers),  or they could do something like the makers of the “IE Tab” Chrome and Firefox extensions do,  allow IE to be hosted inside Chrome,  and only activate it for certain sites.  Or let users install IE9 side by side with the older versions.   All of these would have as goal to encourage end users to use the latest possible browser for the task they need it for,  and to make them install IE9 instead of Chrome or Firefox.
  • Make IE9 the paragon of standards compliance.   (They are actually getting close to this...)
  • Bring IE9 to WP7 and whatever tablet software they're coming out with.
  • Reduce the focus of Silverlight as a browser plugin,  and make it more about web-deployed desktop apps.
  • Drastically improve the support for css and javascript in Visual Studio, including debugging and unit testing.   And give this toolset away in the form of VS Express.
  • Evolve the Dev tools in IE9 to become better than Chrome's inspector and the Firebug plugin.
  • Separate the IE development from Windows to allow quicker iterations
  • Do more things like the jQuery deal. The world of CSS is a mess (we desperately need mixins and code forks like those provided by media queries), MS could take the lead here…

The point is, whether Mark’s browser percentages are statistically valid as an indication of web developer’s preferences, or to what degree Microsoft is lagging/losing developer mindshare; these are not the pertinent questions.  The fact is that Microsoft is now not a leader in emerging web development areas – maybe they never were – but should they want to be, they need to take action. IE9 is shaping up to be a great browser, and they need to push it aggressively.

Labels: , , , , , , , , , , , , , , , , , , ,

Tuesday, October 19, 2010

On Coffee

Is it a coincidence that the Starbucks logo depicts a siren?


Labels: , , ,

Monday, August 09, 2010

Dear Microsoft: Embrace JavaScript Already

It’s 2010:JavaScript is 14 years old, and you’ve officially supported “JScript” for the past 13 years.  Yet today, I have to open my JavaScript file in the FREE, OPENSOURCE, NotePad++ to find a missing closing } deep in my JavaScript file, because your latest premium Visual Studio IDE still can’t properly parse the language.

I appreciate the efforts you’ve gone to with improved intellisense in VS2010, but that is far from enough.  Why do we still need macros or plugins for elementary functionality such as function outlining, a document hierarchy tree, bracket matching and other validation?

As long as there is an internet driven by HTML, there will be JavaScript right beside it.  Embrace it already.

Labels: , , , ,

Friday, July 02, 2010

Bing Bar Begone

I rarely use Firefox anymore, because it takes forever and a half to launch (I should figure out why that is…).  Anyhow, I started it today, just to find the frickin’ Bing bar taking up new real estate.  Where did that come from?


Mozilla support has the answer:

This is the kind of crap that Old Microsoft would do.  With all the recent goodness coming out of Redmond, I really didn’t expect this.  Bad Microsoft, bad.


Labels: , , , ,

Sunday, June 13, 2010

IE 9 HTML5 Testing: “Works on My Machine”

One of my esteemed colleagues on an internal forum posted about how great IE 9’s HTML5 support was, based on the result of Microsoft’s test pages.  MS’s tests are sadly self-selective however: meaning they only seem to test for elements that IE9 supports:

“Cross-browser Test Results Summary:
W3C Web Standards Number of Submitted Tests Internet Explorer 9
Platform Preview
Mozilla Firefox 3.6.3 Opera 10.52 Apple Safari 4.05 Google Chrome 4.1
HTML5 40 78% 63% 48% 43% 43%

Compare that to my own results running on the 6(!) browsers I have installed:


Html5 is the first time in a decade that the browser vendors have had a new major standard to fight over; I’m just grateful that this time around we’ll have an army of frameworks such as jQuery that can level the development playing field for us.

Labels: , , , , , , , , ,

Tuesday, January 19, 2010

Today’s Prediction: Republicans beat Democrats 41-59

“See, it’s not that the democrats are playing checkers and the republicans are playing chess.  It’s that the republicans are playing chess, and the democrats are in the nurse’s office because once again they’ve glued their balls to their thighs.”
- Jon Stewart @09:10/10:05

Labels: , ,

Tuesday, January 12, 2010

Mission Failure

Just read a notice from BlackBerry that there is a software update for my phone.  Not only did they completely gfail to sell me on the upgrade (what’s new?), they inject such a barrage of technical-ese that anyone’s eyes would glaze over.

Something tells me Apple would not have sent the same kind of email – see highlighted section below…

BlackBerry Software Update Notification
Update Today!
What else can your BlackBerry® smartphone do for you?

Find out when you update to the latest smartphone software! This free update is ready and waiting to help you do more with your BlackBerry smartphone. To update today visit

New ways to work and play!

   * As an aid to comprehension, this section provides a brief overview of the life-cycle of a device upgrade.  * Each OTASL capable device will contain one or more OTASL Service Records(SR) each identifying a Device Manager (DM). The DM may be located at RIM, may be part of a BES or, in future, could be associated with a 3rd party application provider. Each SR will identify the applications which are of interest to the corresponding DM. SRs may be delivered by PRV, BES or in an upgrade application loaded OTA. … (it goes on, but there’s no point).

Labels: , , , ,

Wednesday, November 04, 2009

This is Business Productivity?


Really, Microsoft?  This is the appropriate stock-photo for business productivity?

Are they productive because they are wearing suits?

Are they watching other people work productively?

Is the business being productive without them?

Did they just finish being productive and are now basking in the glow of their success?


Labels: , , , , , ,

Monday, August 24, 2009

Web Setup MSI woes on IIS7 + solution

Just a note to my future self and to anyone else who might stumble on this:

We created an MSI to install our MVC app, but the new test server refused to install it:

The Installer simply stopped, with an Installation interrupted message, and the application event log listed the following:

Windows Installer installed the product. Product Name: XXXXX. Product Version: x.y.z. Product Language: 1033. Installation success or error status: 1603.

The correct google search term here is: Installation success or error status: 1603.

It will lead you to the solution by Ben Noyce at NInitiative:

Long nights and story short, in order to install a web setup project on Windows Server 2008 and IIS 7, you need to install the IIS 6 Metabase Compatibility role service.

Thanks, Ben!

Labels: , , , , , , ,

Monday, July 06, 2009

Testing as a blog code pastebin

I’m new to github, so therefore I’m also new to gist.  At first I couldn’t figure out what they were, but then I watched this great intro video by ByanL which explains it all quite well.

Github seems a bit too command line focused for my taste, but Gist looks useful by itself.

Below I’m going to embed the source for my Twitter Conversations test page, which I copied into my very first Gist – whoa! it loads immediately in the edit panel in Live Writer, nicely color-coded and everything.  Nice!

Thanks to Rob Conery for moving Subsonic 3 to github, which made me look in the first place.  I’ll be using this.

Labels: , , , ,

Tuesday, June 09, 2009

Outlook's dumbest feature?

and the corresponding

Why? Why? Why?

It seems 9 out of 10 times the line breaks are significant and SHOULDN’T be removed.

The feature has persisted for about a decade (if not longer – I don’t recall if it was part of 97 and 98); if you don’t know by now, this is how you remove it:

Tools – Options – Preferences – Email Options, Uncheck the Remove… checkbox.


Labels: , , , ,

Tuesday, June 02, 2009

Amazon Payment Woes Not Quite Over

Uhm, this ain’t right (clik to see full-size pic):


Basically, AmazonPayments/JungleDisk decided to charge me 8 (EIGHT!) times for the same service.

Labels: , , , ,

Friday, May 22, 2009

Gmail’s number one missing feature

IMAP Client Mode.

I can access Gmail through IMAP, using Gmail as an IMAP server.  But I can’t access, say, my work email (which is an IMAP server) through IMAP, using Gmail as the client.  I can through POP, but that is sub-optimal at best.

Come on Google, I know you can do it.

Labels: , , ,

Thursday, May 14, 2009

Help the internets are down?!

Seriously, how can someone as big and distributed as Google have network issues?  (And when my blog is on Google, how can I gripe about it?)

This morning’s tracert (and confirmed via a quick twitter search):


Tracing route to []
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  Wireless_Broadband_Router.home []
  2     6 ms     4 ms     4 ms
  3     6 ms     5 ms     8 ms []
  4     6 ms     8 ms     5 ms []
  5     8 ms     5 ms     6 ms []
  6    12 ms    14 ms     7 ms []
  7     9 ms     8 ms     9 ms []
  8    10 ms    16 ms    17 ms []
  9    11 ms     9 ms    10 ms []
 10    28 ms    35 ms    28 ms []
 11    27 ms    27 ms    29 ms []
 12    54 ms    55 ms    54 ms []
 13   103 ms    92 ms   104 ms []
 14    92 ms    92 ms    92 ms []
 15     *        *        *     Request timed out.
 16     *        *        *     Request timed out.
 17     *        *        *     Request timed out.
 18   369 ms     *        *
 19     *        *      285 ms
 20     *        *        *     Request timed out.
 21   375 ms   347 ms     *
 22     *        *        *     Request timed out.
 23     *        *      350 ms []

Trace complete.

Labels: , ,