I just got back from a short vacation, see my photos for some Tuscan eye candy.
In unrelated news, I no longer live in Seattle. I moved to New York City several weeks back.
Skip past navigation, straight to the content
I just got back from a short vacation, see my photos for some Tuscan eye candy.
In unrelated news, I no longer live in Seattle. I moved to New York City several weeks back.
I’m a bit late with this year’s list, but here goes:
Honorable mentions:
Overall, this was a 2007 wasn’t as good for music as 2006. Lots of artists I like released mediocre albums (Kanye West, Clap Your Hands Say Yeah, Beastie Boys, LCD SoundSystem, etc).
Previous years: 2006, 2005, and 2004.
Addendum 1/25: Some more notable albums that I only got to listen to after I posted this:

Last year, I spent a lot of time traveling, primarily while living abroad. Although I was mostly in Seattle this year, I still did a respectable amount of traveling. This year, I visited five countries, and slept in 30 different cities:
This year was an interesting one for me, and 2008 shall also be a year of transitions and experiments. I’m looking forward to it.
I’m currently in India for a few weeks, and I am going to stop by Dubai and Qatar on my way back before returning to Seattle in mid-January.
I keep on forgetting to post here, but for now you can find pictures on my Flickr page. Photos from November’s trip to Peru & Bolivia are available, and I’ll be posting photos from India whenever I get a good Internet connection.
Over the weekend I spent some time seeing if I could replicate the functionality found in the excellent sIFR, using Silverlight instead of Flash. The result is Sistr. For the impatient — here’s a demo test page.
Note: This definitely isn’t ready for a production site, this is an early version for feedback purposes only. There are still plenty of bugs, trust me.
<script type="text/javascript" src="sistr.js"></script>
sistr-replace (anything that starts with “sistr-” works). Here’s an example:
.sistr-replace { }
font-family property to set the font name and URL to the font files, enclose them in quotes and separate with the “|” character (e.g. font-family: "Fil's Font|filfont.zip"). Make sure you also specify backup fonts for users who don’t have Silverlight installed, like so:
.sistr-replace { font-family: "FontName|fonts.zip", Verdana, Arial, Sans-Serif; }
class property on some of your HTML elements to sistr-replace (or whatever else you used) and re-load. For example:
<h3 class="entry-title sistr-replace">Hello World!</h3>
Take a look at the demo test page as well.
Pro:
Con:
font-size in IE: Due to IE’s lack of a getComputedStyle equivalent.:hover stateLet me know if you find others — or want to help fix bugs!
I know I’ve gotten pretty lazy about writing, but I thought I’d give a quick update.
I’m currently in Portugal, I’m spending the month of August here visiting family, eating well, and working on my tan (I’m very easy to spot on the beach, hopefully I’ll start to blend in soon).
I’ll be back in Seattle in early September.
I went to Adobe’s OnAir Seattle yesterday, which was a really interesting event that I’d recommend attending if you have the time. Unfortunately, I had to leave before the end of the day, but here’s a summary of the notes I took while I was there.
Adobe’s goal is to let web developers can use their existing skills (HTML, CSS, JavaScript, Flash, and Flex) to create desktop applications. AIR (formerly Apollo) provides cross-platform installation and application updates, a local database, and a variety of new APIs for managing local resources (local file access, controlling window chrome, drag and drop, etc). The Adobe guys were clear that this isn’t about porting existing web sites onto the desktop — assets and web services will obviously be re-used, but the emphasis was on not needing to learn new technologies (just a few new APIs).
This is the right strategic move for Adobe. They’ve managed to attack the biggest weaknesses of their chief competition, Microsoft’s WPF, by being cross-platform and leveraging existing technologies already used by web developers. Using existing technologies also means there are many mature tools for both designers and developers coding in HTML/Flash, which is not the case with WPF. Adobe made a good choice not trying to boil the ocean with a lot of new technology.
Granted, WPF’s target market is a bit different than AIR’s (there are a large number of WinForms developers already using .NET technologies), but for web developers the learning curve and lack of cross-platform support made WPF a non-starter (notice how much more interest Silverlight has recieved in the community). Obviously, there are still many areas where WPF is superior (3D and document layout, to name two), but I think AIR’s advantages more than make up for these drawbacks (from a web developer’s point of view).
Although still in it’s infancy, Silverlight will likely become the real competitor to AIR. Although it’s feature-poor in comparison to Flash, Microsoft’s clearly devoting a lot of resources to catching up quickly (notice the simultaneous release of 1.0 beta and 1.1 alpha — which surely required a lot of testing resources). Silverlight plays nicely with HTML and JavaScript, provides good language support (including trendy languages like Ruby and Python), and has a very fast script runtime as well. It already lets you go into full-screen, I don’t think adding more windowing APIs wouldn’t be a stretch. I fully expect Microsoft to move in this direction.
Obvious Disclaimer: I do not work for Microsoft (although I used to). I don’t have any inside information. Don’t take blog posts too seriously, especially ones typed hurriedly on a hot day.
There’s a new version of the Top Level Categories plugin. The changes aren’t huge, but they do fix all known issues, including:
/%category%/%postname% and %postname% permalink structures (this was the top request).If the previous version works well for you, then there is no need to upgrade.
Top Level Categories v1.0 (ZIP file).
Let me know if you encounter any new bugs or issues.
Last week was the one year anniversary of my departure from Microsoft.
Although it seems so simple looking back, the decision was tough for me at the time. I thought about it for months, and asked people for a lot of advice.
I quickly noticed a pattern in the advice I received: the vast majority (90%) of people told me to do what they did. If they quit, then they recommended that I quit. If they stayed and the company and climbed the corporate ladder, then that was the path for me as well.
(Aside: The other 10% of advice I received was from people who gave me “anti-advice” — i.e. advising against doing what they had done. This is often the most useful type of guidance.)
I had three theories why this happened:
One year later, I find myself giving the same type of advice — but what other choice do I have? I chose my path and have no idea how the others would have turned out. I don’t believe in my first theory — but the latter two seem completely reasonable to me.
Although I used to work for Microsoft on the WPF team, I’m not tied to the platform. WPF and its alternatives (Flash, HTML, Apollo, Silverlight) each have advantages and disadvantages and choosing between them depends on your requirements. Since I’m doing a lot of work around reading experiences, I thought it was a good time to go back and re-evaluate the existing choices.
In this post, we’ll look at how each platform renders fonts at 9, 10, 12, and 14 points — sizes commonly used for reading. I’ve used three fonts:
For no good reason, I’ve placed the results in alphabetical order. First up is Flash.
Up until a few years ago, Flash used to render fonts poorly at small sizes. Most authors worked around this limitation by changing the type of anti-aliasing used when displaying fonts. Flash provides two anti-aliasing options, one for readability and the other for animation. Additionally, Flash also allows the author to disable anti-aliasing altogether, and use aliased bitmap fonts. Flash 8 introduced a new rendering engine that vastly improved the quality of small-type text.
At small sizes, the readability setting is (unsurprisingly) far superior to the animation setting. Here’s a sample of the readability anti-aliasing for Verdana at 10 point:

For the same font and size, the animation setting is quite ugly:

Although it creates clearly more readable results, the readability smoothing creates a strange coloring affect that can be pretty noticeable at small sizes. Here’s Gotham Rounded at 9pt:

On my monitor, the effect is subtle, but noticeable — I see a bit of color around the edges of the letters.
Apollo (through Flex) has two different font rendering engines — one of which seems to be shared with Flash (the documentation is a little vague here, so feel free to correct me if I’m wrong). The other rendering engine has access to installed fonts, and is recommended for small type sizes — however the quality is quite bad. From my simple tests, it seems that the fonts are always aliased, producing the jaggy look seen below:

This aliased look is acceptable for some fonts, such as Verdana, that have reasonable bitmap representations at small sizes. However, for many fonts the result is unacceptable, such as this sample of Cheltenham at 10 point (from Flash set to bitmap, not Flex):

Except for extreme cases, it looks like it’s best to use the Flash font rendering system when writing an Apollo (or Flex) application. (Once again, I’m under-educated in the Apollo and Flex realms, feel free to drop some knowledge in the comments)
On my machine, the Firefox and Internet Explorer 6 both rendered extremely similar results. The Firefox rendering is shown below:

The lack of subpixel positioning destroys the serif font at small sizes. You can see the effect at larger sizes as well — here is Cheltenham at 14 point:

You can see the strange letter spacing in the first line — compare “Marketing” and “cross” to see the difference.
The sans-serif fonts fared better in the browser, with Verdana doing particularly well as it was specifically tuned for on-screen use.
Internet Explorer 7 uses ClearType for its font rendering, and should therefore produce results that are nearly identical to WPF.
Silverlight is the least mature of the platforms (since Apollo leverages both Flex and Flash). The 1.1 Alpha version that I tested unfortunately does not support for the Adobe CFF font format — meaning I was unable to test Cheltenham or Gotham Rounded. Silverlight doesn’t use the ClearType algorithm used by WPF, instead it uses gray scale anti-aliasing with gamma correction. The results are generally good, with the clear weakness being at small sizes. Here is Verdana at 9pt in Silverlight:

At this small size, Verdana looks a bit fuzzy. The effect is less noticeable at 10 point, but still there.
All text in WPF is rendered with ClearType — developers have no way of opting out of this (actually, there is a way, but it’s pretty awkward and not really well known). The quality of text at small sizes is impressive, here’s Gotham Rounded at 9pt in WPF:

It’s slightly fuzzy and a bit gray, but overall a bit better than the flash version.
Overall, the results are pretty good. The only engine with poor results is the native Flex engine, but with support for Flash, there’s a clear, easy to use alternative at your disposal.
Although the browsers work quite well with standard web fonts (and any other specifically tuned for small sizes), they are not an acceptable choice for traditional print fonts — especially Serif faces (Internet Explorer 7 being the exception). Considering the lack of cross-browser font-embedding, this probably isn’t a problem for most.
Silverlight is still a baby in this space, and it shows (there’s currently no way to set line height, for example). The anti-aliasing looks pretty good at larger sizes, but is noticeably fuzzy at smaller sizes. Although it’s better than what most browsers provide, it still has a way to go before catching up to Flash and WPF.
The final two contenders are Flash and WPF — and it’s a close call when it comes to rendering. Here are three side-by-side samples for WPF and Flash. The first is Verdana at 9 point (all samples show Flash with readability anti-aliasing):

Although the Flash version has a nicer color, the WPF wins by a hair here, for being a bit smoother and less blurry (look at the “B” in “Branding” in the Flash version, third line from the bottom). Let’s move on to Gotham Rounded at 9pt:

Once again, Flash has stronger lines that WPF, but it’s uneven and has a bit of color fringing. Finally, let’s look at Cheltenham at 12 point:

This time, WPF is a bit darker than Flash. This one is really a toss-up and depends on personal preference. Flash is a bit sharper, but the WPF version is smoother and more consistent.
Overall, I think WPF has the edge when it comes to font rendering, although it’s quite close and could easily come down to user preference.
This analysis is a bit rough, there’s a bunch on my to-do list here, including:
Also, the font rendering is just one aspect of a user’s reading experience. Obviously layout, performance, installation, and many other factors come in to play here. Subscribe to feed to make sure you don’t miss the next installments.
If you’re interested, here are the screenshots from each test application, in PNG format: fontrendering.zip (Zip, 500K)
While reading an article in today’s New York Times, I saw the following sleazy ad:

How tall is Paris?
Answer correctly to receive your Pink Laptop
You’ve probably seen this genre of ad before, which offers free merchandise for a trivial task — of course, the ads always state that “Details Apply” in tiny text (I wonder how the FTC feels about these “details”).
As stupid as these ads are, they’re not much worse than the advertisements for escort services that you see in back pages of a free weeky — but you’d never see one of those next to a top story in the print edition of the New York Times!
Why not? Money, of course. A prominent ad in the print edition of the NYT is far too expensive to be purchased by the low-class advertisers — and even if it were cheap enough, the NYT’s higher-end advertisers (luxury companies such as Tiffany’s, who spend a lot of money to consistently advertise in the paper) would never allow their brand to be anywhere near an ad like that.
But it turns out that Tiffany’s and other high-end advertisers don’t advertise on the web — because there’s no appropriate online advertising surface out there for them. This missing business causes two side-effects:
One could mis-interpret my previous statements and say that I’m an advertiser snob, looking to price out the little guy. This, of course, is false. Even with way less than ten percent of the advertising market, the Internet has brought more advertisers into the market — this is undoubtedly a good thing.
Large publishers, like the Times, can (and should) still cater to the little guy. Unlike the print version, an online edition need not display the same advertisement for all readers in perpetuity. A digital publication can sell limited run, or niche-targeted advertisements at a lower total cost and higher visibility than they could in the one-size-fits-all print edition. In fact, I’m certain they already do so.
Publishers like the Times have to start being picky and demanding a certain level of quality from their advertisers. In the print world, it’s clear that advertisements are part of the content (look at any fashion magazine if you’re in doubt) — this attitude needs to extend to the digital realm.
At Mix, I showed some sketches of what online Magazines can become. Roger Black and I are working to create higher-end content experiences that won’t dilute the brand of luxury advertisers. Rest assured, you won’t be asked to punch a monkey.
It’s still early, so all I have to show are sketches — but there’s a lot of room for improvement in this space! I’m a bit surprised by the state we’re in today, because so many of today’s mistakes come from ignoring the lessons learned during decades of print publishing. Of course, digital is a different medium than print, which means that we need new plenty of new paradigms in order to succeed — but that just makes it all the more exciting!
After writing this post, I found P.J. Onori’s excellent (and similarly-titled) article The Sorry State of Online Advertising — which I recommend. He makes similar points (and posted them first, so he wins):
I would argue that the sheer number of advertisements some of these sites have on their site is evidence that the current ad model is not working. Instead of thinking of more original, symbiotic and user-friendly forms of advertising, most site creators have subscribed to the “more ads means more revenue” philosophy. This current relationship between the site creator and advertisers is much like a building landlord and a renter. Space is offered to the advertiser and other than the exchange of money, there is little to no relationship between the two. Under this model, the landlord attempts to rent out all the space to whoever offers money. The problem with this model is that if the landlord just rents out rooms to anyone without any discernment, the landlord’s property could be quickly destroyed by the renters. Meanwhile, the apartment building is in shambles and no one is interested to look at the space, much less rent it. Similarly, if a website does not carefully choose its advertisers, the web site could shortly be a ghost town. An interest in short-term gains can ultimately disenfranchise a site’s users to the point that they do not come back. Guess what, advertisers are going to drop you like a bad habit once you are not giving them what they want – click-throughs and revenue.
Another article worth reading is The Devil & Online Advertising by Darius A Monsef IV. Here’s an excerpt:
Do you know why you only see those terrible, low-budget ads on your local television stations? Because it costs too much for those guys to hock their “Super-Mega-One-Day-Only-Sales-Extravaganza!” on national television. When the price point to advertise online is in the pennies per CPM, then you’re going to end up with low-quality advertisers.
A few months ago, Nick Thuesen posted his SpanningStackPanel class, which is basically a cross beween UniformGrid and StackPanel. Around that time, I was working on a project that called for exactly that layout.
Unfortunately, Nick’s panel didn’t work in my application because he was modifying the Children collection in his code, which is a big no-no if you want to support databinding (e.g. in order to use it as the ItemsPanel within a ListBox). I ended up writing my own version, adding a few features that were required for the project.
At Mix, I promised Nick I’d post and get him the fixed source code. You can download the source (plus some basic tests) in the first version of the Fortes Panel Pack (currently “Pack” is a misnomer, since there’s only one — but I have a few more waiting to be packaged for external consumption).
Features / Release Notes:
Expander children: Detects collapsed Expander elements and treats them as fixed-size elementsExpander within a Template does not lay out correctly on the first pass — see the DataBoundPanels.xaml file in the sample project. Resizing the window, or any other action that causes a relayout, fixes the issue. (I’ll fix it in the next release)