john spurlock 2007

Recently, folks have been trying to circumvent this simplicity by making browser-based applications more interactive using technologies such as Ajax. To my mind, this is just a stop-gap until we throw the browser away altogether—Ajax is just lipstick on a pig.

Behold, the web20 software jesus pontificates and a truly digg-esque thread breaks out! ++A WOULD READ AGAIN

Very entertaining.


It could be that Zell is brilliant, and is saying something that simplifies the truth to make a bigger point, and he doesn’t mind if you think he’s inept if some people get the bigger picture – which is he thinks of the Internet and Google as being the same thing, and you know what – I bet a lot of other people do too, and they have a point.

Expression Web and Expression Blend will now be available at no extra charge to all MSDN Premium Subscribers (this includes customers with the “VS Professional with MSDN Premium” subscription). 

All in all, MS has 750,000 partners world wide, at different levels of engagement. For every dollar that Microsoft gets from their partners, over ten dollars is created within the Microsoft Partner ecosystem. So off the top of my head, using MS gives the partners an ROI of over ten-to-one. I can think of worse business models. tumblr photo
  • Bootstrapped.
  • Profitable.
  • No debt.
  • 140M photos.
  • 192TB at S3.
  • Doubling yearly

Smugmug’s Don MacAskill has posted the slides from his recent ETech talk.


tumblr photo

Surprise! Click here to download the multitrack session for Survivalism in GarageBand format, no strings attached. Similar to what we did with The Hand That Feeds and Only, you now have the ability to completely reconstruct / deconstruct Survivalism any way you choose. We will soon present details on where you can upload your own mixes so get to work and have fun with this!

[We plan to release every track on the album this way over the next few months… Keep checking back]


tumblr photo

In short, the consumer (patient) is forced to become their own general physician or risk serious injury or death at the hands of the well-meaning, but incredibly-specialized physicians surrounding them.

And I think this is where our industry is headed.

“I have a list of Foo objects, each having a Description() method that returns a string. I need to concatenate all the non-empty descriptions, inserting newlines between them.”

In C# 3.0:

“\n”.Join(from x in mylist where x.Description != “” select x.Description)



So until the next version of this site is fully baked (2009?), I'll keep random findings here:

(or until they try to sneak in contextual *ds, whichever comes first)

I thought John Locke was a character on Lost.

I like to think of the blogosphere as a vast, earth-engirdling digestive track, breaking down the news of the day into ever finer particles of meaning (and ever more concentrated toxins). tumblr photo tumblr photo
team foundation server trial expired?

After your 180 day license expires, you are immediately locked out of all source control operations with an error like "The request failed with HTTP status 403: TF30072: The Team Foundation Server trial period has expired or its license is otherwise invalid. Install a licensed edition of Team Foundation Server to continue."

If you need to grab your source one last time (to export into another version control system, for example) - set the server clock back. It takes effect immediately.

shines when the sunshine shifts

TV On The Radio On TV (Letterman) about a month ago: Wow

more on c# 2.0 anonymous methods

How did they do that?

Reflector makes it pretty easy to figure out what the new C# compiler does behind the scenes to handle the new anonymous delegate syntax.

It's actually very similar to what Java does to support anonymous inner classes, but takes it a step further.

Java generates an inner nested class and copies any captured local variables or the parent class pointer into private instance variables (through a generated constructor). This allows them to stay alive after the original scope returns, but necessarily constrains what you can capture to immutable variables (ie marked as final). This only becomes a pain when you really want to reassign a local variable in the enclosing scope - like incrementing a captured integer counter. Of course there are ways around this limitation, usually involving wrapping the integer in a class wrapper or worse: final int[] holder = new int[]{value};

C# doesn't have the reassignment limitation, and has to be a bit more creative.

In the simplest case, it actually doesn't generate a nested class at all - if the anonymous method doesn't use any captured variables or outer class references. Instead it generates a static method to serve as the delegate target (and even caches the delegate reference after it's first use, super-optimized! Makes you wonder how expensive the delegate-object overhead actually is...)

When the anonymous method makes use of variables in the enclosing scope, it doesn't simply copy the variables to the nested class, it shares them as public fields on the generated class. What makes this interesting is that it will rewrite any references to the captured variable in the enclosing scope as well. So your unassuming method-local int i = 123; is actually setting a public field on a class instance the compiler just made for you.

This is actually kind of strange - now there is a conceptual break between the code you write and the IL that is generated. Up until now, your method-local variables became local variables in IL, and field accessors were IL field instructions, etc. No longer the case.

I'll take the tradeoff though, it's certainly much nicer to have direct access to captured variables. Still waiting on full-fledged anonymous classes though, which is quite frustrating.

(btw the C# generated classes are named like <>c__DisplayClass1, they are private, sealed, and have a CompilerGenerated attribute. Note that they are not marked with Serializable, so make sure any "container" in your object graph - like an event sink - that holds these kind of generated classes does not participate, or it will break your serialization.)

vs 2005 beta 2 - first impressions

Finally got around to installing my beta2 copy of VS 2005. Didn't do anything serious with it yet, but here are my very first impressions after an hour or so of tinkering.

The Good:

1. Generics! Big mistake not to include these in version 1 - half of the framework (and most v1 user-code out there) is instantly rendered obsolete or unnecessary. System.Collections.Generic houses the new improved collections - no more ArrayList!

1a. Generics-inspired delegates! These took me completely by surprise, found Action, Predicate, and Converter front and center in the System namespace. Not only useful as common design primitives, but they are also utilized in most of the new collection classes exactly where you would want them. (e.g. List includes .ForEach and .FindAll). Hard to imagine design like this coming from Redmond. (Personally, I would have expected a simple T Transform(T) somewhere but such is life).

1b. Nullable types! (INullableValue) Will definately be useful for dealing with the impendance mismatch of database types and value types. Also, any custom value type can make use of the same notation ( MyStruct? someValue = null; ) Death to int.Minvalue and the like...

2. Anonymous Methods! Awkward delegate syntax, but still my favorite new feature by far. True lexical closures with full access to the local method context (including local variable assignment!) Have to say I'm a bit disappointed that they didn't use a similar compiler trick to implement full-fledged anonymous classes (I mean Java's had them since 1.1 - like 1995)

3. Refactoring! Basic IDE support for common operations, and subtle things like renaming a form-containing source file now actually renames the contained form/resource files.

4. MSBuild! Each project build file is xml-ified by default. (although the solution files still use the old style?)

5. Class diagramming! Keeps relatively in sync with the source code, makes it easy to switch back and forth.

The Bad:

1. STILL no parameterized properties in C# (other than the default indexers).

2. No Eclipse/IDEA-like "quick fixes" for common compile errors (when not implementing an interface etc). How hard could this have been?

3. Clumsy but integrated unit test generation/management. Although if this is included in all flavors of the IDE (might have heard that it was only in the "team-suite"?) it will eat signifantly into NUnit's userbase.

4. No background compilation - C# development is still stuck in the write/compile/fix cycle. Ctrl-Shift-B is far too necessary to prod the IDE in the right direction.

Oh and Mono eats this stuff up too (output from the 2.0 compiler), which is kind of nice...

snow emergency

Quite a bit of snow over the last day or two - took some pictures ...

compromised ballistic glass

So Rumsfeld got some direct questions at his Q and A session with the troops yesterday. Specialist Thomas Wilson's in particular (the one about up-amouring vehicles with scrap metal and glass from the local landfills) was the question of record.

And Rumsfeld took the heat for his technical answer - he mentioned physics, production capability, and of course "going to war with the Army you have, not the Army you want". He answered the direct question with a similarly direct answer, but managed to register somewhere in the neighborhood of a zero point zero on the empathy scale.

Mr. Rumsfeld lost the perception battle yesterday, the press pretty much characterized it as a grill session (cnn, nyt, globe). Courageous soldier 1, Civilian Defense Dept Head 0 (although reading the transcript or first-hand accounts might tell a different story).

This morning Drudge splashed a memo from an embedded reporter, bragging about how he helped engineer some of the soldier's questions prior to the news conference. And since any memo like this that Drudge gets (I'd really like to know how he gets them by the way) sets the news cycle spinning, I imagine the story today will be that the "planted" questions are now suspect - Rumsfeld was "set up". Courageous soldier 0.

So what's the net impact of both of these stories as far as perception goes?

  • Rumsfeld is honest, but blunt: nothing new
  • Reporters are not always passive objective bystanders to a story (particularly one pitting the little guy against the big guy): again nothing new
  • Our soldiers are cruising around in Iraq with scrap metal strapped to their H2s: this perception is probably new to most people and will probably stick
explaining coltrane visually

What goes on in your head when you are improvising or creating new music? It looks something remarkably like this.

Coltrane's amazing not only for building and rebuilding these complex cerebral musical structures, but for navigating within them at an inhuman pace.

Even his simplest themes go through ten or twenty progressions in the span of seconds, and continue to deconstruct themselves as they go along.

Forty years later, and he's still ten steps ahead.

management of meaning systems

Persuaders is a fascinating look at modern marketing (by the same reporter that did Merchants of Cool).

Thankfully, it's not nearly as shrill as some other reactions to today's super-branding (although Naomi Klein is interviewed, she doesn't derail it into an off-the-deep-end nologo-style rant).

Draw your own conclusions, I'm off to get some DunkinDonuts(tm) coffee...

on the electoral college

Better to discuss the electoral college system while the polls are still open and the outcome very much in doubt, than tonight when it's likely (as in 2000) that the winning party will pragmatically jump to its defense as a wise old tradition, and the losing party to its abolishment as an injustice to popular democracy.

We seem to have this discussion every four years, and each time I can help but think that this intentionally complex alteration of the direct popular vote is not only a good thing, but prevents exactly the sort of electorate polarization that coloring states red and blue is meant to imply.

The EC acknowledges that your physical location in this country is one of the best predictors of how you will vote. That is, you're far more likely to vote the same way as the people that you actually live near or run into over the course of the day. This isn't just regional peer pressure, though - most people naturally organize themselves by common interests and values.

Both Republicans and Democrats have picked up on the fact that they can capture political territory more economically by dividing up these interests and values into a sort of landscape of language instead of competing for physical geographic space. But the EC keeps the parties from cheating - since it only allows direct votes for president by well-defined geographic regions (states) usually as a whole (in the winner-take-all elector system that most states use).

If a candidate can win over most of the people in a particular region, the EC cedes that region (as a whole) to the candidate. So in effect, the region (the state) in which an individual resides is considered far more important to the decision-making process than the abstract concept of "US citizen" detached from any regional affliation (like a national mercenary). That is, the fact that the city of Cambridge or the state of Massachusetts prefers John Kerry is more important than how many people actually live in Cambridge or Massachusetts and how lopsided the victory margin is.

You can almost look at the EC as a sort of affirmative action system for voters in regions that otherwise would be considered in the political minority. It explicitly gives more weight to voters in regions outside highly-concentrated population centers.

Without it, presidential candidates would almost certainly write off voters in states like New Hampshire, Iowa, or Wisconsin and instead divide up the popular vote according to a new political districting - focusing exclusively on how to cater to New York, LA, and Chicago, or else how to cater to everyone else. I can't help but think that this would polarize the country much more effectively than any regional difference does currently.

Come on, isn't it at least entertaining that John Kerry has to pretend to know Springsteen lyrics or photographed tossing footballs in "Lambert" field and Bush has to come up with a halfway-decent knowledge of foreign affairs, at least once every four years?

what do you call 25 guys sitting around watching the world series this saturday?

The New York Yankees

easy, uncomplicated, cool

Do yourself a favor and check out Has Been by William Shatner and Ben Folds.

The musical styling is all over the board thanks to the army of talented guest artists, but Shatner's distinctive spoken-word contribution manages to keep it cohesive. It's truly a breath of fresh air and proof that inventive doesn't have to necessarily imply annoying.

The great ones make it sound so easy.

"canonicalization" for 1000, alex

The recent authentication exploit is generating some bad press for that software company in redmond.

Now I'm not going to say that handling "canonicalization issues" is easy, mapping urls to local system paths is a tricky problem, there are plenty of similar problems with other web apps and frameworks. And I also can't believe that this wasn't anticipated by someone in that vaunted microsoft QA army.

In the long run, though, I think that this might actually serve to highlight the flexibility and resiliency of as an agile (buzzword alert) system. The exploit doesn't have to be a show-stopper because the framework is extremely extensible - the recommended fix is literally one line of code in one file. How much cleaner can you get?

This surgical fix is possible because opens itself up for extension and modification at practically every conceivable point in the whole request-response process - not an original idea necessarily, but one that is proving to be extremely helpful in "future-proofing" modern applications (see the hyper-pluggable eclipse architecture in java-land for a non-web example).

So I'm giving MS credit where it's due on this one, is not going away anytime soon.

the charisma gap

Would you like soup or soup with that?

Why do the two major american political parties consistently nominate charismatic duds for president?

I watched the entire debate last week - with my eyes pried open clockwork-orange-style for the last 45 minutes or so. And it wasn't because of the draconian debate restrictions (cspan at least had the split-screen for the whole thing) or the content (lehrer's questions actually distilled the current debate fairly well).

Both of these guys seem to be missing something basic and fundamental. I can't put my finger on it - maybe energy, personality, maybe charisma.

When they open their mouths, I have this uncontrollable urge to grab the remote, but different reasons for each candidate: for the vietnam vet it's the condescending tone and the uncanny ability to somehow say nothing in any given length of time ("" - with the thumbs-up fist-thing) and for our fearless leader it's watching that familiar train wreck in slow motion, with a nagging fear that he'll say something weird or uncomfortable ("I know bin laden attacked us, I know that").

These two are the best of the best? Doesn't one of them become the leader of the free world in a month or so?

At this point, I don't think Bush nor Kerry pass a basic charisma threshold. Just look at the headliners they had to trot out at the conventions - Kindergarten Cop got ten times the crowd reaction of the wartime commander-in-chief.

On the substance, I thought GWB actually won the first thirty minutes or so, defending the Iraq situation with his best cards. Then, of course, he went to his broken-record-using-soundbytes-that-aren't-even-very-good-soundbytes strategy.

Also, the discussion that JK started about nuclear proliferation near the end seemed refreshingly genuine, and it's pretty clear that Mr. Kim Jong Il will be in the hot seat no matter who wins in November.

All in all, I want my ninety minutes back - how about Powell-Holbrooke for the next debate? Or why not just cut to the chase and have Karl Rove and Joe Lockhart square off?