<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6275903</id><updated>2012-02-16T00:27:32.342-08:00</updated><title type='text'>Nerdblog.com</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.nerdblog.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default?start-index=26&amp;max-results=25'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>272</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6275903.post-6477279317418448818</id><published>2011-11-13T14:25:00.001-08:00</published><updated>2011-11-13T15:27:11.695-08:00</updated><title type='text'>Sync is the new lock-in</title><content type='html'>I tried to run Firefox, instead of Chrome, yesterday.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But it felt so strange, because Firefox had none of my bookmarks, bookmarklets, passwords, and I just couldn't remember what I was going to do with it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;And in that moment I realized how much I depend on Chrome's sync feature.&amp;nbsp;Chrome owns my browsing because of its &lt;i&gt;fantastic ability to sync all this stuff&lt;/i&gt; between all my computers, PC, Mac, everywhere.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dropbox contains tons of my important files, because it does the same thing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And I've stopped buying music on Amazon because iCloud is so good at getting music to all my devices now.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Syncing is the bridge between the cloud and the PC and mobile devices. It saves dozens of steps, keeping everything merged intelligently, and even combining metadata automatically.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But of the three examples, &lt;b&gt;only Dropbox&lt;/b&gt; provides a way to get to my data from anywhere, through a regular web browser, and with a good API that works with other services.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Google's Data Liberation page (which has a fantastic mission), has &lt;a href="http://www.dataliberation.org/google/chrome-bookmarks"&gt;PC-era directions for moving your bookmarks to a new browser&lt;/a&gt;. You're supposed to sit at your computer and push an export button! And the &amp;nbsp;instructions provided about how you can view your bookmarks in Google Docs haven't worked for over a year. Google has moved Chrome bookmarks somewhere else now, and while &lt;a href="http://www.google.com/support/forum/p/Chrome/thread?tid=70ed309b9ff996eb&amp;amp;hl=en"&gt;users ask for a solution&lt;/a&gt;, none is forthcoming.&lt;br /&gt;&lt;br /&gt;This "online viewing" should be a much bigger priority for Google. What if I mostly want to use Chrome, but I want to own my data and &lt;b&gt;occasionally use it somewhere else?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Google has a separate delicious-like "&lt;a href="http://google.com/bookmarks"&gt;bookmarks&lt;/a&gt;" service that appears to be completely different than Chrome's bookmarks. And while I really like social bookmarking sites too, I use them for a different purpose. In the browser, I use lots of bookmarklets and folders, and I really care about what order my commonly-accessed sites appear.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The New Lock-In&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Of course, if you think about it, while you're sitting on the couch with your iPad, there is no way to get the &amp;nbsp;Chrome bookmarks exported from your Windows machine to show up in Mobile Safari. Part of this is Apple's fault, of course.&lt;br /&gt;&lt;br /&gt;On the iPad, I can get to my Dropbox, but I can't get to my bookmarks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And I think there's at least a partial solution in Dropbox: if you care about your users, every proprietary sync feature should have a &lt;b&gt;live&lt;/b&gt;&amp;nbsp;webpage, that you can access from anywhere. (And you should work hard at cross-platform support, too.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Otherwise, like Apple and Google do today, you have created a new form of lock-in. And it's almost worse than the old kind.&lt;br /&gt;&lt;br /&gt;In the old way, files were mostly idle on disk, and data was sort of stuck in a hard-to-parse format on a server.&lt;br /&gt;&lt;br /&gt;But it is worse with data that changes all the time, because "exporting" isn't good enough. &lt;b&gt;You can't export a moving target.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you want to access your recent Chrome Bookmarks, you really need to write your own sync utility, or at least periodically export from Chrome.&lt;br /&gt;&lt;br /&gt;I want &amp;nbsp;Google to do the right thing, and I want to use sync feature in Chrome, which is amazing. But maybe I will need to use &lt;a href="http://www.xmarks.com/"&gt;XMarks&lt;/a&gt;&amp;nbsp;instead. This feels complicated, hard to set up, and probably more prone to breaking than Google's solution, so I'm trying not to do it. But it may be the only solution available today.&lt;br /&gt;&lt;br /&gt;Data that changes frequently is the hardest to "liberate", but it is also data that is very important to users. It is critical to get this right. We should insist that these amazingly-convenient sync features don't become the next form of vendor lock-in.&lt;br /&gt;&lt;br /&gt;Google, at least give me a webpage with my Chrome bookmarks on it?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-6477279317418448818?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/6477279317418448818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2011/11/sync-is-new-lock-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/6477279317418448818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/6477279317418448818'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2011/11/sync-is-new-lock-in.html' title='Sync is the new lock-in'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-5599510304323649441</id><published>2011-09-14T08:51:00.000-07:00</published><updated>2011-09-14T08:51:01.749-07:00</updated><title type='text'>Always running, or at least running fast</title><content type='html'>There's something very compelling about writing a little script and putting it online. Because even if someone comes by once every three days and tries it out, there it is! Online always. Software like this is alive in a way that a binary on a PC is not.&lt;br /&gt;&lt;br /&gt;It's been fun shipping our &lt;a href="http://stereopsis.com/flux/"&gt;f.lux&lt;/a&gt; app to the desktop, because it's always on, and even though it does just a small thing, doing that thing without using a lot of resources, and running &lt;i&gt;all the time&lt;/i&gt; is sort of neat.&lt;br /&gt;&lt;br /&gt;Running &lt;i&gt;all the time &lt;/i&gt;hasn't been true of the "app" on the desktop or device. Since we've historically tried to save RAM, launch times have remained inconvenient and excessive. Excel now takes 30 seconds. Visual Studio can take a minute. Photoshop, forever. Sure, we have these annoying tray icon apps with their inconvenient UIs, but the PC is getting slower for doing real work.&lt;br /&gt;&lt;br /&gt;Dropbox is always on, and instantly useful.&amp;nbsp;Gmail and Facebook are very fast, because they're already "loaded" into a server somewhere.&lt;br /&gt;&lt;br /&gt;Excel XP from ten years ago launches in a half second. This year, Excel takes 30 seconds.&lt;br /&gt;&lt;br /&gt;I'm not sure if Apple's quest, with OSX Lion, to ignore whether or not apps have launched yet is the right approach. Apple now hides the little "light" under each icon that says if an app is running, and it tries to restore some application state on reboot. This is good, but it's still too slow.&lt;br /&gt;&lt;br /&gt;xCode now takes forever to launch, and so does iTunes. Launch times are getting worse, in a world where that really makes no sense. People's tolerance for 30 second launches is lower, since they're used to mobile OSes, which are fast because the apps are simpler. And people seem to be more distractible: when iTunes takes 30 seconds to launch, most people will have forgotten the song they wanted to hear and will have checked their Facebook messages instead.&lt;br /&gt;&lt;br /&gt;You can't ignore the engineering around making launch times small, and complexity makes for sloppiness.&amp;nbsp;A launch that takes a full second is noticeable, and probably most apps should strive for 500ms, at the most. 30 seconds is completely absurd and negligent.&lt;br /&gt;&lt;br /&gt;Superfetch, Readyboost, etc., all aren't good enough. Important stuff needs to be loaded into RAM. How do we launch in one seek, rather than 10,000?&amp;nbsp;SSD can't fix everything.&lt;br /&gt;&lt;br /&gt;This problem, making apps launch fast, is 100 times as important as making Windows boot fast, and it's 100 times as complex. Hope the next versions of the OSes get to fix this, or application writers start paying attention to it.&lt;br /&gt;&lt;br /&gt;Apps should launch instantly, and more real services (not launcher icons) should be loaded automatically, so the launch isn't there at all.&lt;br /&gt;&lt;br /&gt;The perception of productivity on the desktop will wane quickly if this particular bloaty trend isn't fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-5599510304323649441?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/5599510304323649441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2011/09/always-running-or-at-least-running-fast.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5599510304323649441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5599510304323649441'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2011/09/always-running-or-at-least-running-fast.html' title='Always running, or at least running fast'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-5576685052094286152</id><published>2011-07-04T08:21:00.000-07:00</published><updated>2011-07-04T09:04:16.708-07:00</updated><title type='text'>More thoughts on Google+ (after using it for a few days)</title><content type='html'>My Google+ experience is in that exciting time, with new people are coming in every day. And the extended Google network is also very compelling. Most of the people on Google+ today were invited by Googlers, so it's mostly smart people saying interesting things. I'm amazed in some ways all the people I don't know.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Reshare and Publicity&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Many of my earlier comments about discovery/serendipity have been dodged by one thing I didn't anticipate. A huge portion of the content in Google+ is&amp;nbsp;&lt;b&gt;public&lt;/b&gt;, like Twitter. This means that there is a public sphere and a very private one. Nice way for Google to be in the game. For me, it's becoming hard to find the private content now (and this is not necessarily good).&lt;br /&gt;&lt;br /&gt;Re-share also has some significant benefits. I'm not a fan of the re-share presentation (it should be more compact and integrated), but I get the value of it. To take a public conversation into a small group and talk about it makes a ton of sense. Already, some of the huge public threads have become incredibly unwieldy. I don't care about 500 public comments, but more about what my friends have to say.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The Plaxo Curve&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When Plaxo first crawled our Outlook address books back in 2002 and encouraged everyone to invite all their contacts in one go, it was novel, because nothing had &lt;b&gt;ever&lt;/b&gt; spread so fast. I recall it took Aol's Instant Messenger nearly 12 years to grow to 90 people per buddy list. But after Plaxo, it took this next generation of social networks not long at all. (My Google+ account has this many people, already.)&amp;nbsp;Since then, it's become necessary for each new service to plumb your email contacts and IM contacts and make friend of a friend suggestions, in order to grow quickly enough.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you think of it that way, the invite policy of social software results directly in a growth curve. Tagged.com took it too far, spamming friends without even asking your permission. Google's prior effort, Buzz, mostly confused users by not giving enough control.&amp;nbsp;Facebook takes it right up to the line and stays on the side of user-controlled politeness, with a great Friend Finder that can login to a bunch of services.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But especially given the limited number of people on the service, Google's "Plaxo number" is very high indeed. People I don't know are adding me, sort of like Twitter. And I already have &amp;gt;100 people in my circles, despite being on the service for only a few days.&amp;nbsp;Google isn't logging into as many services as Facebook, but they're making the contacts they have count for a lot. Never has adding people been quite so fun.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This bodes well for growth, and with Google's sorting tools, that growth is manageable too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Invites&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Based on promises that you would be able to share any entry by email, I uploaded a video and shared it to 20 people who haven't got Google+ accounts yet. They all got "permission denied" errors and emailed me about them. So it goes with a field test, I guess.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Integration and Speed&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The integration with google.com navigation is incredibly compelling. Every search result tells me when Google+ has new stuff for me. I look at that top bar on Google more times per day than my email. Seriously, this is almost as good for Google as building Google+ directly into the browser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A related bit: Google+ is incredibly fast to load, so I'm never afraid to popup the notification window or clickthrough. For me, Facebook's mobile app in particular has been taking &amp;gt;10 seconds per pageview, which gives me pause if I want to click through an email from my phone, or not.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Limited sharing a good match for photos&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;My usage of Picasaweb has been declining, but I expect Google+ to bring it back. Sharing by email was laborious, and the previous "groups" interface was daunting. It was becoming too easy to post a few photos on Facebook instead.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That said, I believe the Circles UI doesn't scale as well as it could.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have too many people in the "friends" bucket, just like Facebook. I started adding "Family" to "Friends" also, halfway through, so I could just share with one group most of the time. Understanding which users are in multiple groups is often confusing. Knowing who you're sharing could be better, but today is not so clear: you have to be really precise about managing people in order for the experience not to devolve into an experience exactly like Facebook.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;API&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;There's mention of an upcoming API. I can't wait.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-5576685052094286152?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/5576685052094286152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2011/07/more-thoughts-on-google-after-using-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5576685052094286152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5576685052094286152'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2011/07/more-thoughts-on-google-after-using-it.html' title='More thoughts on Google+ (after using it for a few days)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-1129427026076051633</id><published>2011-06-30T09:43:00.000-07:00</published><updated>2011-06-30T10:24:06.894-07:00</updated><title type='text'>Circles and Serendipity (Google+ thoughts)</title><content type='html'>After a few hours using it, I think Google has done a decent job with Google+. It's a gigantic improvement over Buzz.&lt;br /&gt;&lt;br /&gt;I also believe they have over-thought the edge case "I'm in charge of my privacy", and perhaps killed some of the serendipity that is the real magic behind social software.&lt;br /&gt;&lt;br /&gt;Let's start with some stories.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;I'm a new parent&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We recently had a baby, and we talk (a bit) about being new parents on Twitter and post pictures on Facebook. But what's amazing is the half-dozen people we both used to work with who've become "parent friends" due to this change in our lives,&lt;i&gt; because of social media,&lt;/i&gt; because of the messiness of it, and because of the serendipity of it.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-siJcjwZQCw4/Tgyc6bajsII/AAAAAAAHnRM/EUOj2WdNe1A/s1600/Twitter++%2540lorna+Moron+Award+goes+to...+me.+...+-+Google+Chrome+6302011+85628+AM.bmp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="137" src="http://3.bp.blogspot.com/-siJcjwZQCw4/Tgyc6bajsII/AAAAAAAHnRM/EUOj2WdNe1A/s320/Twitter++%2540lorna+Moron+Award+goes+to...+me.+...+-+Google+Chrome+6302011+85628+AM.bmp.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;I wonder if in the Google+ world, we would have ever discovered these connections. Using the "Circles" UI to its fullest, I'd have a "parent friends" circle, and I'd not show any evidence that I've become a parent to my nerd friends. Why would they necessarily care? I don't really know for sure that they care, so I probably wouldn't pester them.&amp;nbsp;And that's the fundamental problem with Google+.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;And, Once I Broke my Foot&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I broke my foot two years ago, and through a Twitter post that wound up in Friendfeed, learned that a former colleague had broken his arm at the same time. It became extra-interesting to post updates because I found out someone was going through a similar set of challenges at the same time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Is it &lt;i&gt;really&amp;nbsp;&lt;/i&gt;like the real world?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The idea that "circles" represent the world exactly like real life seems to be failing me. In real life, people &lt;b&gt;notice &lt;/b&gt;I have a baby carrier and had a foot brace, but online,&lt;i&gt; these things don't happen.&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Also, in the real world, I meet new people sort of by accident, and this doesn't happen as much online. The best approximation is a person who makes an interesting comment, and Google+ does this as well as anything else online.&lt;br /&gt;&lt;br /&gt;But in some ways, that's why the messy, serendipitous social media "oversharing" works at all. Because it &lt;i&gt;&lt;b&gt;approximates context&lt;/b&gt;&lt;/i&gt;, not because it excludes it.&lt;br /&gt;&lt;br /&gt;Much like eBay and Craigslist created markets that barely existed offline, I think the most magical experiences online are the unexpected and accidental. If you put a thing online that all your real-life friends think is weird, you'll find a million people online who actually agree with you. And if you had to name them all first, you couldn't do it.&lt;br /&gt;&lt;br /&gt;I can't remember ever experiencing this sort of serendipity over email. But most certainly it happens &lt;i&gt;every day on Twitter&lt;/i&gt;, and occasionally it happens on Facebook.&lt;br /&gt;&lt;br /&gt;In some ways, Google+ is trying to do a better, more social email, almost a half Facebook and half an awesome address book, and I grant there's a place for that. But some aspect of it &lt;b&gt;feels like work, not play.&lt;/b&gt;&amp;nbsp;Perfect for a company that's a bit secretive but has a rich internal culture, but not so applicable to real life.&lt;br /&gt;&lt;br /&gt;And so I worry that the lack of magic will hurt it in the end.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;UI thoughts&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;My overwhelming feeling is that the UI that you &lt;i&gt;use&amp;nbsp;everyday&lt;/i&gt;&amp;nbsp;in Google+&amp;nbsp;has tons of friction.&lt;br /&gt;&lt;br /&gt;For instance, maybe I'll spend 5 minutes ever in my life&amp;nbsp;adding friends to circles, and it's insanely cool and fun. Fantastic. Magic.&lt;br /&gt;&lt;br /&gt;But then, there's this UI you use every day, the one that creates a "To line" email-style interface to making a post. I don't like it at all. It's cumbersome and a lot of work.&lt;br /&gt;&lt;br /&gt;This part of the interface could be &lt;i&gt;amazing&lt;/i&gt;, and instead, it's more boring than email. It feels transient, and it's on the wrong part of the page. Yes, if I click the "Friends" container before making my post it sort of auto-fills for me (okay!) but it doesn't show who I've left out, who I'm including, or anything like that.&lt;br /&gt;&lt;br /&gt;But basically, it's too opaque. You get a little blue tile that says "Friends" on it, and that's all you know. Once you close the popup it doesn't say how many friends you have, or show their faces or who's online, who's been online in the last week, or anything. It's anti-social.&lt;br /&gt;&lt;br /&gt;And it makes me think a lot before posting, which means I'm going to post a lot less. "Is that person in Family AND Friends or just Family? Maybe I'll just email it."&lt;br /&gt;&lt;br /&gt;If they fix nothing else, let it be this interface:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wN9dLBCdUrY/TgyX7U-Jd5I/AAAAAAAHnRE/U4xv4w7pg0E/s1600/Fullscreen-6-30-2011-8-34-52-AM.jpg+%25281237%25C3%2597907%2529+-+Google+Chrome+6302011+83506+AM.bmp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://3.bp.blogspot.com/-wN9dLBCdUrY/TgyX7U-Jd5I/AAAAAAAHnRE/U4xv4w7pg0E/s320/Fullscreen-6-30-2011-8-34-52-AM.jpg+%25281237%25C3%2597907%2529+-+Google+Chrome+6302011+83506+AM.bmp.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;What's the filter?&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In some ways the brilliance of Facebook is that they've spent a great deal more effort on what the &lt;b&gt;receiver&lt;/b&gt;&amp;nbsp;wants to see, rather than what the &lt;b&gt;sender&lt;/b&gt;&amp;nbsp;wants to share.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;And in so many ways, this focus is a &lt;b&gt;much better&lt;/b&gt;&amp;nbsp;approximation to real life than the "need to know" classified access-control-list email addressbook complexity of making a person limit their sharing to a certain circle of friends.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;My Facebook friends are mostly the people I believe &lt;b&gt;aren't insane&lt;/b&gt;. They might not want to see baby pictures all the time, but I don't mind if they do.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;And I'd rather the software takes care of that....if I put "Baby Girl" in the title, some people won't want that stuff ranked very high, so it can be harder to find. If Facebook doesn't do this already, I imagine their approach leads naturally to classifying content (not just people) and showing information to the right people. (Bubble filter indeed, but why not.)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I know there's an important "user story" about a 19 year old who goes to a party and doesn't want her parents to see the pictures. The trend we've seen is that people facing the un-coolness of their social network ("Mom's on Facebook!") will gravitate to using a &lt;i&gt;different site&lt;/i&gt;&amp;nbsp;for this purpose. No single site has been able to "fix" this problem, no matter how good its groups UI. Facebook has a fantastic Groups system that nobody uses, but they don't make it so prominent.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In some ways it will be neat to see if Google+ manages to catch this endless churn and contain it. But I think to do it you have to make cool and identifiable "spaces"&amp;nbsp;for people/circles to&amp;nbsp;interact. (Even Facebook Groups have their own photo galleries.) If there's a circle for your friends, you should be able to brand it, like the new cool site you moved to because your mom joined Facebook. I think a subtle tab highlighted on the left isn't enough.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In trying to contain the "mom problem", again, the network loses. Google+ has a "Share" (reshare?) feature, but this again has a ton more friction, compared with Facebook's version: "Michael commented on Lorna's photo..." with friend-of-a-friend visibility.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In some ways, the seamless way that FriendFeed would remix streams of friends based on "Like" clicks, and Twitter with Retweet, simply had no historical precedent in online communication. Email forwarding is &lt;i&gt;hard work&lt;/i&gt;, and so is the Google+ Share button.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Serendipitous or intentional? Facebook's is magic. Google's is more like email forwarding.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Profiles fit great with Google search, but activity streams not so much&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;For years, Buzz and Picasaweb kept asking to make my profile public. And I kept deleting it. Here's why.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;When you search for a thing on Google.com, you expect relevance. And if you're the one being searched for, you want to look good, or not show up.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;If you search for my name, you want to find some relevant things about me. Putting "Mike once liked this dorky video on Youtube" (with a kind of authority) at the top of that is somehow out of context. And it's worse if I did that 4 months ago, and I just haven't done anything since.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In my Google Profile, social interactions I've had that happen to be public take up 80% of the screen (even if it's empty or out of date!), and links that I've made to important stuff in my life take up the small bit in the corner.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;That sort of "information" makes sense if you visit a twitter.com page, but at a google.com URL, it is &lt;i&gt;not&lt;/i&gt;&amp;nbsp;a good representation of a person. You kind of expect "best post of all time" and you get "Mike was in a bad mood when he made a public post 2 months ago."&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I'm sure Google has wrestled with this dozens of ways, but I think there's a conflict in there.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Social+&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Perhaps Facebook's most audacious and brilliant move is in trying to make the receiver the filter of content, while keeping loose track of potential friends. The&amp;nbsp;filter problem is very unsolved, but it's very exciting as well. If you can show me what I want to see in a single space (not in multiple tabs), and if you can make it relevant based on the content and the context, I think that's a brilliant user experience.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I think the Google+ emphasis on sender-driven sharing replicates email too closely, down to an awkward UI for sharing (which feels like email forwarding). It makes sense to a person who's in a certain habit of using email all day, but it also misses a huge number of interactions that magically, serendipitously happen online via Likes, Retweets, and simpler interactions online.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Google's first effort is impressive, and I think I will use it more than Buzz. It actually nearly solves the "huge niche" of private collaboration, and maybe people will use it for work more than play.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;But in the initial version, I think it fails in not being cooler or more magical in any notable way, when compared to the thought leaders in the space, Facebook and Twitter. Google has tons of magic, but it's just not coming through. Lessons learned from the Buzz launch, I'm sure, an abundance of caution. Don't use the technology to scare people!&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;But when you allow and encourage serendipity, you get magic. If you worry too much about privacy, you capture a ton of niches that care about these things, but you don't become the new way people communicate online.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;You just...become a better version of email.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-1129427026076051633?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/1129427026076051633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2011/06/circles-and-serendipity-google-thoughts.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1129427026076051633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1129427026076051633'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2011/06/circles-and-serendipity-google-thoughts.html' title='Circles and Serendipity (Google+ thoughts)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-siJcjwZQCw4/Tgyc6bajsII/AAAAAAAHnRM/EUOj2WdNe1A/s72-c/Twitter++%2540lorna+Moron+Award+goes+to...+me.+...+-+Google+Chrome+6302011+85628+AM.bmp.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-1985927460448283756</id><published>2011-05-17T02:26:00.000-07:00</published><updated>2011-05-17T10:34:10.093-07:00</updated><title type='text'>A smartphone in my laptop</title><content type='html'>We all know the things our smartphones do well: check for mail in the background, get messages, wake up fast. In contrast, our laptops act a lot like desktop computers that are turned off sometimes. They work like they did ten years ago, before WiFi and 3g networks, and they don't do low-power background tasks very well.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Laptops today have "standby" mode, which disables everything the machine does except for keeping RAM alive. But the machine isn't really useful while it's in this mode. If you've stored a file on it, you can't get to it. If the file you saved is very large, uploading it to the "cloud" might take hours, and your favorite network filesystem probably didn't sync before you closed the cover.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You might have trouble backing up your hard drive (or uploading large files) at a time you're not using your computer for something else. Uploading big files is sort of a "non-foreground" task...you want backups to run while you're not using the laptop at all, not while you're streaming from Netflix.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Maybe to accomplish these things today, you have to leave your laptop plugged in with the cover open, glowing all night.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I copied 10GB of photos to my Windows laptop tonight, and then waited 40 minutes for it to copy over the network, with the cover open, sitting on a chair in the corner. The PC was across the room from my Mac laptop, which was downloading an OS update, with the cover open, also for an hour.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You would never design a device to work like that...it's like some mythological creature that can't be disturbed for fear that it will forget what files it was copying and make you start over. It's ridiculous, difficult, and fragile, but it hasn't changed in years.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Laptops wake up slowly compared to newer devices, and they can't do simple network tasks like making something light up when you get new email. When you're downloading a big OS update, and you leave the computer on, sitting on a table in the corner, it's not really using its CPU at all.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A much smaller CPU with very little RAM could do all these jobs well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CPUs have gotten better at low power, even though they don't compete with the smartphone versions yet. So have hard drives, as they're being replaced by SSD. RAM still uses more than a watt per chip (smartphones have a lot less RAM than a laptop), and a WiFi radio uses &amp;lt;100mW.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One big culprit is the desktop-oriented chipsets, which use tons of wattage (like &amp;gt;10W) when you're not doing much with your PC. This is in contrast to the&lt;a href="http://blog.laptopmag.com/intels-new-atom-z6xx-series-cpus-aka-moorestown-targets-handset-market"&gt; low-power chipsets&lt;/a&gt; that are emerging for Atom-based computers, which can stay in a true "idle" state for ten days. Presumably these improvements might come back to the PC, someday.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Intel has introduced a number of &lt;a href="http://www.tomshardware.com/reviews/intel-atom-moorestown-smartphone,2624-7.html"&gt;new idle states for their mobile platform&lt;/a&gt; that dramatically cut power during idle activity. This aggressive management of power state is why smartphones have long life, in addition to optimization of each component. Smartphones are good at waking up quickly, in response to a network event or a user-driven event.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;But, I really just want a little smartphone in my laptop.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I want a computer that is a participant on my network, sharing files, backing up its filesystem, doing very slow uploads through my DSL, checking my email, all using a very tiny amount of power. Almost none of these operations is CPU-intensive, or even RAM-intensive. You could power down all but 64MB of RAM and I'd get by.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One complicated way is to make a hybrid version: a coprocessor that can access my disk and a portion of RAM when my "big" CPU is sleeping. Potentially a machine that runs most of its kernel on the low-power CPU, while apps run infrequently on the bigger one? For instance, an x86 CPU could wake up once a second to do a few cycles of work (a "sendfile" or an event-driven network stack?), handing off a buffer of data to a network controller and sleeping some more. If I'm doing a backup or uploading files, I could buffer a ton of data and go back to sleep.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In some ways, the PC model of "saving files" is very slowly being disrupted by the cloud. People are going to stop using Microsoft Office XP someday, in like 10 years.&amp;nbsp;But the PC model is being disrupted much more rapidly by mobile platforms. Part of this is the square peg of PC hardware model that seems to have frozen some day back in the year 2000. The PC hasn't evolved to be part of the network, and in fact with the laptop, it's gone backwards, because you have to turn it off so much.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From what I can tell, people are not using laptops every day, and yet they are storing valuable data on them, and their home network connections can't sync everything instantly. This is just a very confusing state.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Post-PC devices" have demonstrated some abilities to do background tasks all the time, not just when they're asked to. You could imagine tons of tasks that could run in the background.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The old platform might do well to try, just a bit, to keep up.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-1985927460448283756?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/1985927460448283756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2011/05/smartphone-in-my-laptop.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1985927460448283756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1985927460448283756'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2011/05/smartphone-in-my-laptop.html' title='A smartphone in my laptop'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-6770585191161177841</id><published>2011-04-29T17:08:00.000-07:00</published><updated>2011-04-29T17:08:23.499-07:00</updated><title type='text'>Is Microsoft's consumer failure actually developer failure?</title><content type='html'>Most people don't understand how far off-course Microsoft's developer tools have gone in the past five years. Today is just five years since&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=KMU0tzLwhbE"&gt;Ballmer's "Developers developers developers..."&lt;/a&gt;&amp;nbsp;keynote, and in retrospect, it likely was the unlucky omen, the "protest too much" that brought down the ship.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's talk about money first.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today, Microsoft's most expensive developer tools package is called "Microsoft Visual Studio Ultimate Edition" and it costs&lt;b&gt; $11,899. &lt;/b&gt;Regular developers who just want a compiler &lt;i&gt;with a profiler&lt;/i&gt; can buy a version for&lt;b&gt; $5,469.&lt;/b&gt;&amp;nbsp;If you don't pay that much, you can't profile your code to see what's fast and what's slow.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And of course, there are many alternatives with fewer features: there are &lt;a href="http://www.cdw.com/shop/search/results.aspx?ctlgfilter=&amp;amp;wclsscat=&amp;amp;key=visual+studio&amp;amp;searchscope=All&amp;amp;sr=1&amp;amp;Find+it.x=0&amp;amp;Find+it.y=0"&gt;1126 versions of Visual Studio to pick from.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apple's most expensive developer tool is called XCode, and it is &lt;b&gt;free&lt;/b&gt;. You can pay $99 for a subscription that allows you to publish stuff that people can download through the app store (and you also get early releases of Apple's OSes.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft says very clearly that you should develop for their platforms &lt;b&gt;if you have to&lt;/b&gt;, and not because you &lt;b&gt;want to&lt;/b&gt;. It seems that they intend to make a ton of profit on these tools, rather than making a ton of profit on their operating system, Windows. And amazingly,&amp;nbsp;&lt;a href="http://www.itworld.com/business/160887/despite-q3-earnings-growth-microsoft-shares-fall"&gt;revenues for Windows are down 4%&lt;/a&gt; this quarter.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To be fair, they have free "Express" versions of their software, which don't allow you to edit user interfaces, or use third-party plugins, like source control. I don't understand how these versions are supposed to encourage people to develop for Windows. For instance, many native apps written for Windows have some tie to MFC, but the Express versions don't support MFC.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft's developer tools come with all sorts of SQL databases and "team foundation servers" and enterprise-sounding integration, and there's a "servers" pane when you open their IDE that only connects to Microsoft servers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But: if you want to write a game or deal with video or read an image, you have to separately download a huge DirectX SDK, and then a lot of your old code won't compile. For instance, with some code I made to read images from a webcam for f.lux, upgrading to the new versions has &lt;a href="http://social.msdn.microsoft.com/Forums/en/windowsdirectshowdevelopment/thread/2ab5c212-5824-419d-b5d9-7f5db82f57cd"&gt;missing header files and no suggestion of what the replacement might be&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft has a very fragmented installed base (with XP at 40% of users), so certain features are only available on Windows Vista or Windows 7, and they do not make it easy to say, "I really want this app to run on Windows XP." Using Apple's tools, you say, "I want to support this level of OS" and the tools do the rest.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft's developer samples are mostly very old, and the basic story is that they spent all their effort on .NET/ASP/C#, to the exclusion of providing equal access to the OS from native code, or compatibility layers to make stuff run the same way on XP and later versions of Windows.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if you do care about the 40% of users who haven't upgraded away from XP, you are in this strange game of chicken with Microsoft. You want tools that build one thing that runs everywhere, and Microsoft are obstinately waiting 10 more years for everyone to be running some Windows-Vista-derived OS with only managed binaries on their PC. You'd love to compile on 64-bit Windows 7 and 32-bit Windows XP at the same time, but you really don't get to.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Chicken.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apple's XCode comes with subversion and git integration, and it builds "universal binaries" that package up multiple builds for multiple OSes. Apple's OS X has a nice shell with an SSH client, so you can manage your server that runs Linux. You can build binaries for multiple versions of OS X by pushing one button, and the code samples are up to date, and they all compile.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Windows 7 shipped "Powershell" which takes 15 seconds to launch and nobody understands.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft seems to say to developers: if you're not developing for Enterprise, we simply do not care. Our developer tools business unit can be &lt;i&gt;profitable &lt;/i&gt;if we sell licenses for $11,000, but not if we give them away for free. And presumably, in some weird twist of Microsoft politics, the snake eats its own tail: maximize developer profits and &lt;b&gt;your platform stops having any new apps in just five years&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's confusing, right?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In Microsoft's "ecosystem", seriously talented hobbyist developers are not welcome. Not doors-open welcome, maybe junior-high-school welcome. Seriously, they turned off the dialog editor in their free tools.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So this part is obvious: all the people who are using Apple's free tools or Google's free tools or Linux's free tools to make cool stuff can ship it to consumers, while Microsoft's developers are a different breed, the stuck, the legacy...working for big companies who &lt;b&gt;have to &lt;/b&gt;do it this way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The big story isn't even about the iPad. It's why nobody else can get good developers on their version of the iPad, or the phone. And it's because Apple &lt;i&gt;already had developers &lt;/i&gt;using their tools, years before they made an iPhone. And they made it easy for new ones to come on board. They made it free, they made it compatible, and they made their sample code compile.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today, companies are developing for so many platforms at a time. When you use a tool only 20% of the time, for one of your platforms, for some of your users, it doesn't make sense to pay a premium for it. That $11,000 tool you use 20% of the time is like a $55,000 tool you use 100% of the time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It seems that in the new world of free software, and Apple and Google, developers are sometimes kids from countries where people don't make much money. Certainly not enough to afford Microsoft's tools.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I don't think that the conclusion is hard: Microsoft needs to give up their little bit of revenue they make from exploiting IT budgets for the "developer tools" line item, and price, package, and explain their software so it makes sense to people who haven't already been doing it for ten years.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Consumers, consumers. consumers?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-6770585191161177841?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/6770585191161177841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2011/04/is-microsofts-consumer-failure-actually.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/6770585191161177841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/6770585191161177841'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2011/04/is-microsofts-consumer-failure-actually.html' title='Is Microsoft&apos;s consumer failure actually developer failure?'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-1945113069905890068</id><published>2011-01-06T01:09:00.000-08:00</published><updated>2011-01-06T01:12:47.368-08:00</updated><title type='text'>On writing things down</title><content type='html'>I found this wonderful little bit of advice-poetry from Manuel Blum a few weeks ago (probably via Hacker News.)&lt;br /&gt;&lt;br /&gt;It's called "Advice to a Beginning Graduate Student":&lt;br /&gt;&lt;a href="http://www.cs.cmu.edu/~mblum/research/pdf/grad.html"&gt;http://www.cs.cmu.edu/~mblum/research/pdf/grad.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While the whole thing is quite wonderful, the piece that has been wreaking all sorts of havoc in my head this week is the idea that &lt;i&gt;writing makes us smarter.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 12px;"&gt;You know what FINITE AUTOMATA can do.&lt;br /&gt;You know what TURING MACHINES can do.&lt;br /&gt;For example, Finite Automata can add but not multiply.&lt;br /&gt;Turing Machines can compute any computable function.&lt;br /&gt;Turing machines are incredibly more powerful than Finite Automata.&lt;br /&gt;Yet the only difference between a FA and a TM is that&lt;br /&gt;the TM, unlike the FA, has paper and pencil.&lt;br /&gt;Think about it.&lt;br /&gt;It tells you something about the power of writing.&lt;br /&gt;Without writing, you are reduced to a finite automaton.&lt;br /&gt;With writing you have the extraordinary power of a Turing machine.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;And you start thinking about that, maybe with your pop psychology hat on for a minute, and realize that being in a certain "state of mind" is just a badly-made FA, where you loop and loop through the same state, never really breaking out of it. And if maybe you're depressed, you do some cognitive-behavioral therapy and fix it by converting that state of mind to something explicit, almost a program that is external to that state entirely.&lt;br /&gt;&lt;br /&gt;Maybe back to getting things done in the real world, you think why there are limits to what you can talk about or how much you can get done in a verbal meeting, because your short-term memory is more equivalent to a FA than to a Turing Machine, with its rather large amount of tape. So to really make complicated things or organize complicated tasks, you again have to write them down.&lt;br /&gt;&lt;br /&gt;And then again, you think of the successful user experiences, and how amazingly the Facebook news feed is almost literally a tape that a Turing Machine would use, a sort of written record that can be read and written...all of life but in a very linear fashion.&lt;br /&gt;&lt;br /&gt;There are dozens more, but&amp;nbsp;it makes it very easy to say that our written language is the most important invention, ever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-1945113069905890068?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/1945113069905890068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2011/01/on-writing-things-down.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1945113069905890068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1945113069905890068'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2011/01/on-writing-things-down.html' title='On writing things down'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-904313446825664521</id><published>2010-12-18T16:30:00.000-08:00</published><updated>2010-12-18T16:30:53.959-08:00</updated><title type='text'>Intel AMT on new Thinkpads</title><content type='html'>I got the huge (but pretty) Thinkpad T510, with a big screen. It is good enough that I don't use my Macbook Pro all the time now. I've been doing some work on Windows 7 (mostly unrelated to Windows.) It has a gorgeous screen with high contrast, and great battery life. Quite a departure from the other PC laptops, even if it's moderately huge.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-QohdEBh-oI/TQ1RTp3cABI/AAAAAAAHjdw/bWce5zXsRS0/s1600/t510.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-QohdEBh-oI/TQ1RTp3cABI/AAAAAAAHjdw/bWce5zXsRS0/s1600/t510.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;However, I wanted to grump about one thing. There's a whole lot of "remote management" software installed by default on this machine.&lt;br /&gt;&lt;br /&gt;One technology is &lt;a href="http://en.wikipedia.org/wiki/Intel_Active_Management_Technology#Overview_of_Intel_AMT"&gt;Intel's AMT&lt;/a&gt;. It runs a webserver on port 16992 underneath your operating system. It's not entirely obvious how to login or change settings for it. I never figured out how to change the settings, but I was able to disable it through the BIOS.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AMT&lt;/b&gt; allows remote reboots, remote web access, and some access to the filesystem.&lt;br /&gt;Intel's &lt;b&gt;RPAT&lt;/b&gt; allows remote KVM, also below the OS layer.&lt;br /&gt;Intel's &lt;b&gt;AT&lt;/b&gt; is an anti-theft technology that &lt;a href="http://www.techzone360.com/topics/techzone/articles/127365-remote-kill-switch-added-new-intel-processor.htm"&gt;can keep the computer from booting&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All this stuff is shipping on new laptops, some of it vaguely "on". In theory your IT administrator is supposed to configure it and use it to do stuff to your computer, and it's all magically secure for the enterprise.&lt;br /&gt;&lt;br /&gt;But this sort of interface massively increases the attack surface to a regular machine. And any worms that manage to also infect this layer could have some serious impact.&lt;br /&gt;&lt;br /&gt;And just to be a little bit offensive: my computer shipped direct &lt;i&gt;from China&lt;/i&gt; with all this stuff turned on. Given Google's &lt;a href="http://googleblog.blogspot.com/2010/03/new-approach-to-china-update.html"&gt;experience&lt;/a&gt;&amp;nbsp;earlier this year, configuration like this should probably be turned off by default. Even if it's just to make me feel better.&lt;br /&gt;&lt;br /&gt;Consumers shouldn't feel paranoid when they inspect your default settings.&lt;br /&gt;&lt;br /&gt;But it is a fine machine otherwise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-904313446825664521?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/904313446825664521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/12/intel-amt-on-new-thinkpads.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/904313446825664521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/904313446825664521'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/12/intel-amt-on-new-thinkpads.html' title='Intel AMT on new Thinkpads'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-QohdEBh-oI/TQ1RTp3cABI/AAAAAAAHjdw/bWce5zXsRS0/s72-c/t510.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-8115658321823684881</id><published>2010-12-06T14:39:00.000-08:00</published><updated>2010-12-06T14:42:34.193-08:00</updated><title type='text'>eBook typography + User Experience</title><content type='html'>I've been a Kindle user for a little over a year, and I was looking at Google's books effort just now. I've not seen the mobile clients, just the web version.&lt;br /&gt;&lt;br /&gt;I have a half-dozen small complaints about Kindle, and mostly I'm a happy user. But Google does very little to improve on Kindle, which is disappointing.&lt;br /&gt;&lt;br /&gt;For instance, I haven't seen what Google does when you buy 100 books, which is overwhelming and hard to understand on a Kindle device.&lt;br /&gt;&lt;br /&gt;But I have two other complaints that don't seem to be addressed in what appears to be a Kindle clone:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Typography.&lt;/b&gt;&amp;nbsp;Books have a personality, and a lot is due to the uniqueness of their layout and typographic choices. Much is lost in the eBook of today.&lt;br /&gt;&lt;br /&gt;Real-life books use unique fonts, and they have a variety of typographic settings. Instead, by making every book conform to the same exact point size, to the same leading, to the same font (Georgia, but, look, I can switch to Times!), is boring and makes switching between books feel less engaging.&lt;br /&gt;&lt;br /&gt;The world would be better if eBooks used &lt;a href="http://typekit.com/"&gt;Typekit&lt;/a&gt;, or even if they had random defaults to adjust their typography, to give a little more personality. Within a certain kind of variation (small color, spacing changes, etc.), readability wouldn't be impacted, but switching between the 5 books you're currently reading would be very much improved. Recognition at a glance is important, whether that's a book cover or a page. Today's eBooks badly need a typographic personality.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Search. &lt;/b&gt;Another major limitation with a Kindle, especially the hardware version, is that "flipping through" is very slow. Google does a decent job "flipping" online with the arrow keys, but Google's &lt;i&gt;search &lt;/i&gt;solution on the Web is no better than Acrobat's...it's off to the side, and dissociated from the paging interface. It's a 1998 interface.&lt;br /&gt;&lt;br /&gt;Why not make accessing reference books &lt;i&gt;much &lt;/i&gt;better than Kindle? For instance, why isn't search somewhere near the paging interface, and why aren't the results shown in the same spot instead of in a sidebar? Similarly, moving the slider bar doesn't flip through pages (or better, zoom out!)...instead it just does &lt;i&gt;nothing at all &lt;/i&gt;until you mouse-up.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Openness is only a theoretical benefit. User experience is a real one.&amp;nbsp;I don't see a real competitor to Amazon (on any front) right now.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-8115658321823684881?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/8115658321823684881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/12/ebook-typography-user-experience.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8115658321823684881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8115658321823684881'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/12/ebook-typography-user-experience.html' title='eBook typography + User Experience'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-8828150390056651745</id><published>2010-11-03T13:55:00.000-07:00</published><updated>2010-11-03T13:55:36.187-07:00</updated><title type='text'>Those Tricky PC makers (a hunt for a laptop)</title><content type='html'>I'm in the market for a decent Windows 7 laptop. We're getting enough Win7-related f.lux bugs that I want a machine that &lt;i&gt;works &lt;/i&gt;to test and develop on. I'm mostly using XP now, and have a junky Win7 Best Buy Special laptop I got for $400. It wasn't worth it.&lt;br /&gt;&lt;br /&gt;After a ton of shopping, I realized what everyone else has realized: probably the best PC laptop on the market is called a "Macbook". I had to think for a minute about why I will spend $1700 on a Mac laptop, and I'll hesitate whenever a PC laptop costs over $1100.&lt;br /&gt;&lt;br /&gt;This $1100 effect...I wanted to put it into words, and I figured out what it was: "They're trying to trick me." If you pay the PC makers more money, they give you more junk. They have no taste and no guide for quality.&lt;br /&gt;&lt;br /&gt;Lenovo thinks they can put a screen in their expensive T410 business laptop that has a backlight so dim that you can barely use it in a bright room. Their users complain for years, but they don't make a better one (except on their enormous models).&amp;nbsp;The Macbook's is 2x brighter. The Macbook Air's is 2x brighter.&amp;nbsp;Lenovo's has a contrast ratio a ton worse than my 1998 Dell (that's 1/6 the contrast of a Macbook). The display on my thinkpad inverts intensities if you tilt it upwards by 40 degrees. And their mouse/trackpoint thing has worse drivers now, after 15 years of being great. It's worse than Windows 3.1 again.&lt;br /&gt;&lt;br /&gt;HP makes a super-high-end machine called the "envy", and then crams it with crapware, and makes trackpad drivers that are almost unusable. And then to make me extra-happy, kills their highest-end screen, to replace it with a lower-resolution one with worse specs. But the retail price is a bit lower.&lt;br /&gt;&lt;br /&gt;Dell still has some of the same designs from 1998 (including the keyboard and battery life). I'm scared of their awful keyboards, or I'd spend more time looking.&lt;br /&gt;&lt;br /&gt;Norton. McAfee. TRIAL. Slow.&lt;br /&gt;&lt;br /&gt;And so literally, 10 years of shaving $5 here and there, and there's no PC laptop that has a moderate weight, a great screen, a ton of battery life, and doesn't ship with software you don't want. I actually miss spending $2500 on a laptop that tried to get some of this right. Because there is just no way to do it.&lt;br /&gt;&lt;br /&gt;You can buy a 17" Desktop Replacement that has a pretty good screen and has 45 minutes of battery life. Or a Sony. Maybe a Sony.&lt;br /&gt;&lt;br /&gt;Better screens cost more. So, no PC maker is willing to ship them, even as an option. Unless you're talking about a really heavy big model where battery life doesn't matter.&lt;br /&gt;&lt;br /&gt;But the most interesting thing is that I can at least quantify my own Apple Effect.&lt;br /&gt;&lt;br /&gt;I will pay 50% more if you don't trick me: if you have a product line that consistently gets better as I pay more, not just heavier. Battery life should get longer, screens should get better, in resolution and quality, and you should have some sense about why a laptop shouldn't have a full-size keypad and weigh 14 pounds. I don't want 8 cores or a 60W video card. But I do want a decent display and a great keyboard.&lt;br /&gt;&lt;br /&gt;And you shouldn't ship anything, ever, with "trackpad gestures" that don't work.&lt;br /&gt;&lt;br /&gt;The road to a good product cannot be about squeezing costs without actual engineering. It doesn't mean making make-believe "Adamos" and "Envys" that still have the same problems as the lower-end models, but nicer cases. It means a core promise: we are not going to trick you. We care about making the best thing we know how to, and we'll give you some cheaper options if you want that.&lt;br /&gt;&lt;br /&gt;I would love to see a PC OEM say, "This model is $100 off because we filled your computer with craplets." Because that's why you're getting a deal. But on the high-end model, why?&lt;br /&gt;&lt;br /&gt;Or "$50 cheaper because this screen can't be viewed at all if you tilt your monitor 20 degrees too far."&lt;br /&gt;&lt;br /&gt;Or "Congratulations! You've saved $10 on a keyboard that sways around as you type!"&lt;br /&gt;&lt;br /&gt;Or, if there were a retail presence for PCs that cost more than $600...then I could just look for myself. But retail is something only Apple is doing well, too.&lt;br /&gt;&lt;br /&gt;I know everyone wants a useful computer for $400. But where is the one that lets you get actual work done?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-8828150390056651745?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/8828150390056651745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/11/those-tricky-pc-makers-hunt-for-laptop.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8828150390056651745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8828150390056651745'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/11/those-tricky-pc-makers-hunt-for-laptop.html' title='Those Tricky PC makers (a hunt for a laptop)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-5226874859667640835</id><published>2010-09-11T21:33:00.000-07:00</published><updated>2010-09-12T12:46:09.275-07:00</updated><title type='text'>Metabolic Path Finding (day of hacking with Jeremy)</title><content type='html'>My college roommate Jeremy Horwitz visited, and he mentioned that he was trying to figure out how to solve a scavenger hunt path problem in San Francisco. It sounds on the surface exactly like classical Traveling Salesman: 16 points, and what order should you visit them?&lt;br /&gt;&lt;br /&gt;But it turns out that walking in San Francisco isn't like LA. There are &lt;i&gt;hills&lt;/i&gt;, and you sort of want to optimize for them when you're planning to walk around. So we started wondering if we could model how hard a hill is to climb.&lt;br /&gt;&lt;br /&gt;Jeremy found the &lt;a href="http://amarpai.com/bikemap/help.html"&gt;SF bike route planner&lt;/a&gt;, which we used as a base. The author had a friend with GIS software, who associated height data with each street crossing in the city. This height data makes it easy to compute slope for each span (and dx/dy is the standard way, not degrees).&lt;br /&gt;&lt;br /&gt;However, the author just put a &lt;i&gt;threshold&lt;/i&gt;&amp;nbsp;to avoid ever taking paths that were too steep. There's no real sense in his code that going up or down is either worse or better than biking on a flat surface.&lt;br /&gt;&lt;br /&gt;By now we had started Googling for biometric data about how efficiently people walk at different slopes, and it turns out there are some really great studies about this.&lt;br /&gt;&lt;br /&gt;Back in 1938, a researcher named Margaria had found that walking at a -10% grade was the most efficient for humans. Fast-forward to 1993, and a &lt;a href="http://jp.physoc.org/content/472/1/725.full.pdf#page=1&amp;amp;view=FitH"&gt;paper by Minetti et al&lt;/a&gt;&amp;nbsp;measures oxygen intake at different grades, and even does a nice quadratic fit at different speeds!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-QohdEBh-oI/TIxTggTMO_I/AAAAAAAHhOo/vA8tra8VlMY/s1600/Screen+shot+2010-09-10+at+7.03.28+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="105" src="http://2.bp.blogspot.com/_-QohdEBh-oI/TIxTggTMO_I/AAAAAAAHhOo/vA8tra8VlMY/s400/Screen+shot+2010-09-10+at+7.03.28+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;On to the races.&lt;br /&gt;&lt;br /&gt;I was able to make the following two-liner change to the bike route planner to utilize this data. I just assumed the "most efficient" walking speed, but you can tune based on faster velocities or whatever you want.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;inclinepct = 100 * incline&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;inclinePenalty = 110.87 + 10.114 * inclinepct + 0.516 * inclinepct * inclinepct&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;So now, we have a way to compute all the pairs of asymmetric weights for a graph, and the path finder will use it to compute routes around San Francisco!&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;But as you recall, the original problem is to do a walking tour to a number of points in San Francisco in minimal time. This is a "traveling salesman problem" and it's very expensive in the brute force case (O(n!) even). Most approximate solutions assume points are either Euclidean (i.e. simple edges weighted only by distance), or they assume symmetric weights (i.e. going from A to B costs the same as going B to A).&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;We found that most of the good approximate solvers at least made the symmetric assumption.&amp;nbsp;&lt;/span&gt;However, we also learned about a technique to split the set of points into two digraphs (with twice the points total), such that each graph is only connected to the opposite side's nodes. This makes it possible to simulate an asymmetric graph using a symmetric solver.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;We were able to convince ourselves using Georgia Tech's &lt;a href="http://www.tsp.gatech.edu/concorde/index.html"&gt;Concorde&lt;/a&gt;&amp;nbsp;TSP solver that the whole thing could be solved for 16 points to visit using only seconds of CPU.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Time to prototype: ~12 hours to make scavenger hunts more efficient.&lt;br /&gt;&lt;br /&gt;Most awesome thing:&amp;nbsp;knowing how much oxygen you might use, walking between two places.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-5226874859667640835?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/5226874859667640835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/09/metabolic-path-finding-day-of-hacking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5226874859667640835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5226874859667640835'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/09/metabolic-path-finding-day-of-hacking.html' title='Metabolic Path Finding (day of hacking with Jeremy)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-QohdEBh-oI/TIxTggTMO_I/AAAAAAAHhOo/vA8tra8VlMY/s72-c/Screen+shot+2010-09-10+at+7.03.28+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-6024920797448336496</id><published>2010-09-10T02:16:00.000-07:00</published><updated>2010-09-10T02:16:50.648-07:00</updated><title type='text'>College Tuition Bubble (one more thing about that)</title><content type='html'>I ran across a bunch of articles this week wondering about the college tuition bubble.&lt;br /&gt;&lt;a href="http://blog.american.com/?p=19189#logo-n-tagline"&gt;Here's one in The American.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thinking about this last year, I reviewed some numbers for schools in California. While I don't have them handy, one set of numbers jumped off the page.&lt;br /&gt;&lt;br /&gt;I wanted to share that two factors are at play, not just one:&lt;br /&gt;&lt;br /&gt;Tuition has gone up....and....&lt;br /&gt;&lt;b&gt;Need-based aid has gone way up, too.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The system has grown tuition with the incomes of the very rich, and a much larger fraction of students are given aid to help pay for school.&lt;br /&gt;&lt;br /&gt;This scheme allows the schools to enact variable pricing, which allows them to charge extra money from the rich parents, while extracting a lesser amount from the usual student.&lt;br /&gt;&lt;br /&gt;But those curves are really scary, I agree.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-6024920797448336496?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/6024920797448336496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/09/college-tuition-bubble-one-more-thing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/6024920797448336496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/6024920797448336496'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/09/college-tuition-bubble-one-more-thing.html' title='College Tuition Bubble (one more thing about that)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-6267691066770502705</id><published>2010-09-01T11:42:00.000-07:00</published><updated>2010-09-01T11:42:47.953-07:00</updated><title type='text'>Apple: No downloads, just streaming?</title><content type='html'>I was interested to hear the appleTV announcement today. Apple has decided to remove "downloads" from their TV product, and instead only support "streaming".&lt;br /&gt;&lt;br /&gt;So I opened my "Mad Men" folder, which has TV shows from iTunes, and they're mostly 1.5GB files.&lt;br /&gt;&lt;br /&gt;1.5GB for a broadcast show is &amp;gt;5Mbps.&lt;br /&gt;&lt;br /&gt;So I went to look at U.S. residential broadband, and found this great article:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.boygeniusreport.com/2010/08/19/megabit-wars/"&gt;U.S. residential broadband speeds average 50% of advertised speeds&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Using this chart, and some more math, it appears that&amp;nbsp;&lt;b&gt;75% of U.S. broadband connections are not capable of streaming a 5Mbps HD stream&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www-bgr-com.vimg.net/wp-content/uploads/2010/08/Screen-shot-2010-08-18-at-5.01.21-PM-645x316.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="156" src="http://www-bgr-com.vimg.net/wp-content/uploads/2010/08/Screen-shot-2010-08-18-at-5.01.21-PM-645x316.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Without downloading first, of course.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-6267691066770502705?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/6267691066770502705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/09/apple-no-downloads-just-streaming.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/6267691066770502705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/6267691066770502705'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/09/apple-no-downloads-just-streaming.html' title='Apple: No downloads, just streaming?'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-5877694830681682701</id><published>2010-07-22T16:34:00.000-07:00</published><updated>2010-07-22T16:46:25.687-07:00</updated><title type='text'>Thoughts on Flipboard, why Quake is better than vi, mouse/keyboard vs. iPad...</title><content type='html'>I was just marveling at the UI in &lt;a href="http://flipboard.com/"&gt;flipboard's iPad app&lt;/a&gt;&amp;nbsp;and thinking a bit about why it is so relaxing, and so fast at the same time.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.flipboard.com/img/ipad-screen-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="308" src="http://www.flipboard.com/img/ipad-screen-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Flipboard has simply amazing visual design, but the navigation is equally compelling.&lt;br /&gt;&lt;br /&gt;One reason is that the "flipping" gesture and the "touch/click" gesture are both incredibly fast.&lt;br /&gt;&lt;br /&gt;Technically all the touch devices have had these gestures, but there's an important improvement in flipboard. &lt;b&gt;The links aren't tiny.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Flipboard made me realize how slow it is to click on a tiny link on a normal website on a touchscreen (it almost works, but it is 10 times harder than it should be). And actually, it is similarly slow&amp;nbsp;to click on a link using a mouse, even though I'm pretty experienced with a mouse. All those tiny "next" buttons on the web should just be made bigger.&lt;br /&gt;&lt;br /&gt;And flipping? Flipping isn't necessarily faster than hitting an arrow key on your keyboard, but it is fast, very fast.&lt;br /&gt;&lt;br /&gt;But all this made me stop and think a bit.&lt;br /&gt;&lt;br /&gt;On the old desktop PC, we still have keyboard interfaces that make you choose: &lt;b&gt;mouse or keyboard?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Mouse, or keyboard?&lt;br /&gt;&lt;br /&gt;I have two hands, but amazingly, the desktop got it really wrong.&lt;br /&gt;&lt;br /&gt;Using the &lt;i&gt;arrow keys&lt;/i&gt; makes you move away from the mouse and to the keyboard, and back again. The iPad makes you do no such thing. Click, scroll, flip, all without changing the device you're using.&lt;br /&gt;&lt;br /&gt;So I thought for a minute about who might have solved this in the old model, and I came up with two examples.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Photoshop and Quake&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Photoshop has shortcuts to its tools, all accessible with the LEFT hand, and the mouse can stay in the right hand, handling painting, selection, zooming, etc.&lt;br /&gt;&lt;br /&gt;Quake players use the "inverted triangle" W-S-A-D to drive motion in a game, and the mouse at the same time to shoot.&lt;br /&gt;&lt;br /&gt;Two hands, two devices. Right.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Kudos to sites like dpreview.com, who are in the rare set that provide a left-hand keyboard navigation for browsing articles in their Forums, while the right hand is free to scroll, click things or select text.&lt;/div&gt;&lt;br /&gt;But mostly on the desktop we have messed up. We've kept scrolling and navigation as the right hand's duty, page up, arrow down, mousewheel, click. The left hand gets to do nothing, and it could do a lot.&lt;br /&gt;&lt;br /&gt;Outlook fails: arrow keys, or mouse?&lt;br /&gt;&lt;br /&gt;Gmail (vi-style "j, k, u, y...", etc.) totally fails. These UIs are all keyboard-only, or mouse-only. Most novice Web users use the mouse and can't gradually learn the keyboard, because the jump is too big.&lt;br /&gt;&lt;br /&gt;Certainly the touchscreen interface makes a ton of impact, but if Flipboard says one thing on a UI level (and it says tons in other ways too), it's that the touchscreen UI's we're using today are &lt;i&gt;not baked yet&lt;/i&gt;. They are going to get even better.&lt;br /&gt;&lt;br /&gt;We shouldn't somehow stop at HTML5 with tiny links and scrollbars and incompatible gesture systems. The UI has to change as the input devices do.&lt;br /&gt;&lt;br /&gt;We should make new UIs that take advantage of the new medium. That might mean bigger buttons in some places, and it might mean more gestural input, but one thing I know is: it means not having to change input devices constantly, like the keyboard/mouse combination gives us today.&lt;br /&gt;&lt;br /&gt;A lot of websites and apps should focus more on how fast people can &lt;b&gt;actually navigate a UI in real-life&lt;/b&gt;. In most cases, this is more important than how fast a webpage loads from a server. Interaction speed is harder to measure, and so it gets mostly ignored.&lt;br /&gt;&lt;br /&gt;But of course, both kinds of speed matter, and thinking about interaction time makes for more enjoyable software. Every time you have to click on a tiny link, it eats a tiny bit of your patience, and makes your computer a less enjoyable place.&lt;br /&gt;&lt;br /&gt;Flipboard makes you relax, and it feels fluid. Listen to that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-5877694830681682701?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/5877694830681682701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/07/thoughts-on-flipboard-why-quake-is.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5877694830681682701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5877694830681682701'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/07/thoughts-on-flipboard-why-quake-is.html' title='Thoughts on Flipboard, why Quake is better than vi, mouse/keyboard vs. iPad...'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-8676167621949320833</id><published>2010-07-04T12:41:00.000-07:00</published><updated>2010-07-04T12:41:56.978-07:00</updated><title type='text'>Getting rid of ZFS dedupe (and a new drive enclosure)</title><content type='html'>I previously wrote about my &lt;a href="http://www.nerdblog.com/2009/04/good-enough-zfs-nas.html"&gt;ZFS NAS&lt;/a&gt;, and how I managed to get dedupe to write moderately fast with a cheap &lt;a href="http://www.nerdblog.com/2010/03/zfs-nas-followup-ssd-is-amazing.html"&gt;SSD drive&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've decided to go back on the decision to use dedupe at all, and I have some pretty great fast and noisy hardware to talk about instead.&lt;br /&gt;&lt;br /&gt;Today, the publically-available "build 134" of OpenSolaris has quite a few dedupe bugs that make simple operations like destroying a dataset or even rm'ing a bunch of files very slow, sometimes leaving a server unresponsive for a day at a time. These bugs are getting fixed (there's a lot of talk about "single threading" and things like that), but it has been 6 months with not a lot of forward progress. The Nexenta guys are patching their OS from the development versions, which apparently are buggy, but I didn't want to deal with any of that.&lt;br /&gt;&lt;br /&gt;At the same time, I had a security camera logging to my NAS, and almost filled it up. I tried to delete an old 500GB snapshot, and it locked the machine trying to remove all the deduped blocks. Basically there was no way to free up space. Also, my dedupratio at the time was about 1.8...when you're using 5TB on a 4 x 1.5TB RAIDZ there's no easy way to go back.&lt;br /&gt;&lt;br /&gt;So I decided to get more disks and not ever turn on dedupe again.&lt;br /&gt;&lt;br /&gt;I considered building a totally new server in a new enormous case, so I could put more disks in it. But this is tricky: you can get the cooling wrong, and a lot of the off-the-shelf bigger cases sound like wind tunnels. Instead, I decided to do it like datacenter guys do it: get a "direct attached" drive enclosure.&lt;br /&gt;&lt;br /&gt;I found this enclosure from Sans Digital: the &lt;a href="http://www.sansdigital.com/towerraid/tr8xb.html"&gt;TowerRAID TR8X&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The TR8X is not cheap in home NAS terms (it's $400, plus a $300 &lt;a href="http://www.sansdigital.com/adapters/ha-lsi-sas3801e.html"&gt;LSI SAS controller&lt;/a&gt;), but compared to a box from Dell (which costs thousands) it is very cheap. And&amp;nbsp;it has the advantages of a "real" external drive enclosure: it has good cooling, it has hot-pluggable drives, and it's actually SAS, so every OS on earth will recognize the drives instantly, and you can use enterprise SAS drives if you wanted to spend the money.&lt;br /&gt;&lt;br /&gt;It turns out the cheaper "port multiplier" SATA controllers have mostly buggy drivers, even on Linux sometimes. But this SAS one works everywhere.&lt;br /&gt;&lt;br /&gt;So I plugged it in.&lt;br /&gt;&lt;br /&gt;I don't usually believe theoretical performance numbers will ever really happen, but a ZFS stripe on 8 drives actually did give me 700MB/sec performance.&lt;br /&gt;&lt;br /&gt;With my old 4-disk setup, I was also nervous about running "single parity" RAIDZ. With this upgrade I was able to go to RAIDZ2 (so 3 disks have to fail before there's data loss), and the TR8X is still pulling &amp;gt;320MB/sec read and write with all that turned on. And a scrub of 5TB takes less than 4 hours. It's way too fast for anything I do.&lt;br /&gt;&lt;br /&gt;This enclosure isn't for everyone: it is quite a bit noisier than my old quiet NAS, a lot of that is due to the really noisy Hitachi A7k2000 disks I got.&lt;br /&gt;&lt;br /&gt;But it is a really solid piece of hardware, performance is amazing, and I didn't have to do a whole lot of reconfiguration to upgrade.&lt;br /&gt;&lt;br /&gt;I wish everyone luck with dedupe, but I'm going brute-force for now, instead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-8676167621949320833?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/8676167621949320833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/07/getting-rid-of-zfs-dedupe-and-new-drive.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8676167621949320833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8676167621949320833'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/07/getting-rid-of-zfs-dedupe-and-new-drive.html' title='Getting rid of ZFS dedupe (and a new drive enclosure)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-7753588670668478287</id><published>2010-06-23T21:20:00.000-07:00</published><updated>2010-06-23T21:24:03.681-07:00</updated><title type='text'>Native Code vs. Browser (a test)</title><content type='html'>I was really happy to see &lt;a href="http://themaninblue.com/writing/perspective/2010/03/22/"&gt;this test&lt;/a&gt;&amp;nbsp;(from &lt;a href="http://themaninblue.com/"&gt;themaninblue&lt;/a&gt;)&amp;nbsp;comparing Canvas, HTML, SVG, and Flash. It says that Flash is a little bit faster at drawing a particle system, not that much.&lt;br /&gt;&lt;br /&gt;I ran his tests for my desktop PC, using the "1000 particle" mode:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Chrome 5 runs &lt;a href="http://themaninblue.com/experiment/AnimationBenchmark/canvas/?particles=1000"&gt;this Canvas test&lt;/a&gt; at &lt;b&gt;about 30FPS&lt;/b&gt;. (Yes, it's faster than IE9.)&lt;/li&gt;&lt;li&gt;The &lt;a href="http://themaninblue.com/experiment/AnimationBenchmark/flash/?particles=1000"&gt;Flash version&lt;/a&gt;&amp;nbsp;runs &lt;b&gt;about 42FPS&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;And in the land of the blind, the one-eyed man is king...&lt;br /&gt;&lt;br /&gt;So just for kicks, I coded up a &lt;a href="http://stereopsis.com/particle.exe"&gt;native windows particle system&lt;/a&gt;&amp;nbsp;just to compare.&amp;nbsp;(It's quite safe to try, if you have Windows.)&lt;br /&gt;&lt;br /&gt;My code runs&lt;b&gt; about 350FPS &lt;/b&gt;on the same test&lt;b&gt;.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I know that's sort of silly, but it also looked bad if I used more than 1000 particles at a time. So my simple code is 12x faster than the fastest Canvas browser, and 8x faster than Flash. I suspect some of this is the Javascript time, and some is drawing.&lt;br /&gt;&lt;br /&gt;This is not a GPU-based app. It doesn't even use DirectDraw. It doesn't use SIMD.&amp;nbsp;It's just a 32-bit bitmap that I draw stuff to, in a loop.&lt;br /&gt;&lt;br /&gt;So it seems like there's a bit of room to make browsers faster without requiring a GPU. Or maybe there are better opportunities to do vector operations in browsers and make Javascript use less time.&lt;br /&gt;&lt;br /&gt;But overall, I don't know why we're not paying attention to pixel-bound inner loops in the browsers, like people have for years in native code. There's apparently a lot of room for improvement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-7753588670668478287?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/7753588670668478287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/06/native-code-vs-browser-test.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/7753588670668478287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/7753588670668478287'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/06/native-code-vs-browser-test.html' title='Native Code vs. Browser (a test)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-4171309745807420360</id><published>2010-06-22T11:28:00.000-07:00</published><updated>2010-06-22T11:42:03.117-07:00</updated><title type='text'>Client Fragmentation: Apps making software more expensive</title><content type='html'>I'm hearing stories of companies that want to ship on multiple platforms, where the only solution for a company is to hire 10 people to deal with it. And this seems like a lot, until you think about what's happened over the last few years.&lt;br /&gt;&lt;br /&gt;You want to ship a client for the &amp;nbsp;iPhone, Android, RIM, Mac, Windows (Linux?). Of course, to make it more fun, Microsoft has managed to fragment XP against Vista...certain features just aren't available in XP.&lt;br /&gt;&lt;br /&gt;Back in 2000, you might take VC funding to pay for expensive Sun servers and bandwidth. Now you need a pile of dollars to hire enough people to port your app to five platforms.&lt;br /&gt;&lt;br /&gt;For the most part, all of these client platforms use separate languages, skills, toolchains, and development environments. You have to physically shift from a Mac to a PC, or you have to launch Eclipse to write Java code, or other days xCode, or emacs, or Visual Studio. This is all relatively new, since in the past, most developers could work in one place, and they got good at it.&lt;br /&gt;&lt;br /&gt;Now you might be expecting history to repeat itself: one platform gets all the market share, and everyone writes software for it! That would be the 1990s outcome. (It was fun when the worst bugs we had to deal with were "A LaserJet shared from NT4 to Win98 prints upside down." Seriously. Recompile.)&lt;br /&gt;&lt;br /&gt;Of course, I left out the Web, which is the market share leader right now. And that's actually one of the reasons it's different this time.&lt;br /&gt;&lt;br /&gt;So to me, the absolutely brilliant thing Google has done with Android is to &lt;i&gt;fragment&lt;/i&gt; &lt;i&gt;client development&lt;/i&gt;. (They might not see it this way.)&lt;br /&gt;&lt;br /&gt;With Android, I have to write Java code. And honestly, it was hard enough to make my C++ stuff work in Objective C. If I really want to be portable from desktop to mobile, I need at least three code bases now, and that's ignoring RIM and separate resources for iPad, etc. When you cross language boundaries, there is no #ifdef shared code, there is no "fix this on platform X", there's just hard work.&lt;br /&gt;&lt;br /&gt;You end up moving a code process ("this doesn't compile anymore") to a manual one ("our project manager said I should implement this feature sometime"), and that is dangerous and error-prone territory.&lt;br /&gt;&lt;br /&gt;Google's approach looks smart for the Web, because it makes browser compatibility look like a cakewalk. In short, client fragmentation makes writing code that runs in the browser a lot more attractive than it was 5 years ago.&lt;br /&gt;&lt;br /&gt;Everyone knows that Apple has been even more insistent on the current fragmentation, and in the short term it has helped them: they have locked up the best developers right now. Developers hate switching environments, and so more people seem to be making apps for iPhone than any other platform, Windows included.&lt;br /&gt;&lt;br /&gt;But in the long-term, innovation will happen in the places where it's easy for a team of 2 people to get something done &lt;i&gt;that everyone can use&lt;/i&gt;, and I don't think successful businesses will be built around a single client platform. (Good demos absolutely will run on one platform. But after that, there's hard work.)&lt;br /&gt;&lt;br /&gt;I think fundamentally, every time you switch languages or IDEs or physical machines to do a task, you should probably have more people involved. And as we shift languages, we've moved processes that might have been "fix the code to make it compile on the Mac" to some meta-programming process, like "we have to reimplement this feature in Java for Android."&lt;br /&gt;&lt;br /&gt;When you have 5 developers trying to coordinate a feature set, you need people to manage it, and people to re-design it, and software gets rapidly more complicated and slower to make. Bugs are slower to fix, because your RIM guy moved over to do the iPad version, and he doesn't want to shift gears this week, maybe next? So there's another project manager to keep track of that task. Big company processes, for the smallest projects.&lt;br /&gt;&lt;br /&gt;My project &lt;a href="http://stereopsis.com/flux/"&gt;f.lux&lt;/a&gt; has given me some of these headaches. It's a C++ app on Windows, an Objective-C app on Mac, and a C thing on Linux. And as I'm looking through Android kernel source thinking about hooks to access Snapdragon hardware that are not currently exposed, or trying to figure out how to hack in .kext's on jailbroken iPads, I realize fundamentally this is a worse world than having one environment to deploy to.&amp;nbsp;It makes me want to write Windows apps ten years ago, or Web apps instead.&lt;br /&gt;&lt;br /&gt;One possible secondary effect of this fragmentation is that open source can help solve some of the details pretty well. But it is important to say that most of open source is corporate-funded today, and only a few very important projects get seriously committed hobbyist involvement, so I don't think this is a panacea in most ways.&lt;br /&gt;&lt;br /&gt;For apps and businesses that need to add features and fix bugs quickly, we've got an expensive mess right now.&lt;br /&gt;&lt;br /&gt;In the meantime, you can write for the browser, and do a client or two where it makes sense.&lt;br /&gt;&lt;br /&gt;The world has definitely changed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-4171309745807420360?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/4171309745807420360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/06/client-fragmentation-apps-making.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/4171309745807420360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/4171309745807420360'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/06/client-fragmentation-apps-making.html' title='Client Fragmentation: Apps making software more expensive'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-1585187508458628857</id><published>2010-06-08T19:12:00.000-07:00</published><updated>2010-06-08T19:12:05.514-07:00</updated><title type='text'>A Flawed Browser UI: the case of too many TABS</title><content type='html'>I have been watching myself avoid working in a variety of clever ways.&lt;br /&gt;&lt;br /&gt;Most of them center around the browser, and the "tabbed" browser UI is troubling me more and more. You could say most of them are flaws in my own use, but I think they are common enough that solutions should be found.&lt;br /&gt;&lt;br /&gt;The tabbed browser is broken. It's a bunch of tabs, often ordered badly, and the overhead of navigating it all is making computers gradually less useful for me.&lt;br /&gt;&lt;br /&gt;I use browsers for News, for Research, for Apps, and as part of a collaborative experience.&lt;br /&gt;&lt;br /&gt;People send links via IM, Email, or Facebook, and I click on them, which immediately&amp;nbsp;&lt;b&gt;disconnects the content&lt;/b&gt; from the original discussion. I don't know who to reply to about a certain article, because it's unclear exactly &lt;b&gt;why&lt;/b&gt; that tab is actually open. I don't know &lt;i&gt;when&lt;/i&gt;&amp;nbsp;the tab was created, and I don't know which task I was doing when I opened it.&lt;br /&gt;&lt;br /&gt;Often I will have 100 tabs open. I have seen Safari eat my wife's Mac with way way more than this. The "hunt" through the ten windows and 100 tabs is no fun and needs to get fixed.&lt;br /&gt;&lt;br /&gt;Some of my tabs will be half-read articles that were interrupted by another task. Some of them will be things I've mostly read but didn't close. They don't close themselves, they don't even try...&lt;br /&gt;&lt;br /&gt;Some of the tabs I've never looked at. Some of them are lazy bookmarks, things I'm keeping open so I can compare "A vs. B" later, except it's really hard to do that, because lining them up is quite hard.&lt;br /&gt;&lt;br /&gt;But I do notice that I have "sets" of things...stories opened from a discussion, references from a Google search on an obscure programming term. And rarely do I think in advance, "I'm going to create a new window and start a new task."&lt;br /&gt;&lt;br /&gt;We could have sets. We could have tasks. The computer could figure it out and make it make sense. I am really sure that a 3GHz quad core CPU could figure out "these things are all links from google results pages with setTimeout in the query string."&lt;br /&gt;&lt;br /&gt;(And yeah, IE does some color-coding by domain, but this is just visual noise, not organization.)&lt;br /&gt;&lt;br /&gt;I need some really amazing ways to group tabs by task, to save sets of them, and to have the UI connect back to the places I came from.&lt;br /&gt;&lt;br /&gt;If I do a Google search to figure out how to write some portable Javascript, I will open ten tabs along the way, and then I will eventually find the single page that shows me the answer, and the &lt;i&gt;whole task&lt;/i&gt;&amp;nbsp;should go away in one click.&amp;nbsp;Today, I have to close the 10 pages individually, and the Google search window that was around in case none of those pages contained an answer. &lt;b&gt;Wouldn't a great UI do this grouping for me?&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;If I click on a link from Facebook or Twitter, and then I want to leave a comment for the person who sent me that direction, why should I have to look through tabs to do this? &lt;b&gt;Wouldn't a great UI link these pages together?&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Or maybe I'm shopping online for the best energy-efficient lightbulb, and I've opened 50 pages talking about that, and Windows update comes along, and I say, man, I want to come back to this later. &lt;b&gt;Wouldn't a great UI let me save them as one 'library' of stuff and close 50 tabs at once?&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;And what about when I sit down at my computer to look something up, but instead there's some phenomenally juicy page on the top of my browser that makes me forget what I was going to accomplish and read it instead? &lt;b&gt;Wouldn't a great UI somehow ask me what I wanted to do when I woke up my laptop?&lt;/b&gt; Google could (and should) make this fantastic.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;I am seeing a ton of add-ons and random hacks that try to do things like this, but I think this set of problems is so core to the experience and so important to get right that we have to re-think the organization of the browser.&lt;br /&gt;&lt;br /&gt;Adding tabs to the browser was a huge step forward for so many reasons, but it is time to help people organize the work they are doing on their computers, not confuse them with distractions and 100 tabs at a time, which is mostly what my computer is, today.&lt;br /&gt;&lt;br /&gt;Today, I usually just quit the whole thing, lose all my state, just to avoid having to look through the entire mess. This can be so much better, and it doesn't even take a miracle, just some smart code and good UI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-1585187508458628857?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/1585187508458628857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/06/flawed-browser-ui-case-of-too-many-tabs.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1585187508458628857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1585187508458628857'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/06/flawed-browser-ui-case-of-too-many-tabs.html' title='A Flawed Browser UI: the case of too many TABS'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-8167045847924575571</id><published>2010-06-05T13:59:00.000-07:00</published><updated>2010-06-05T13:59:52.165-07:00</updated><title type='text'>Software Lens Fixes (barrel distortion, etc.)</title><content type='html'>I read with some interest this article on lens distortions from dpreview. I had no idea the Canon S90 was doing so much software lens correction!&lt;br /&gt;&lt;a href="http://www.dpreview.com/articles/distortion/"&gt;http://www.dpreview.com/articles/distortion/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.dpreview.com/articles/distortion/images/compare/Dist-S90_RT-001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://www.dpreview.com/articles/distortion/images/compare/Dist-S90_RT-001.jpg " width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;That's the image out of the Canon S90, natively.&lt;br /&gt;&lt;br /&gt;It back me back 15 years to my college dorm room, when I had the original black &amp;amp; white Quickcam. For this old camera (~1994) Connectix had chosen a lens which allowed more light and sharpness for less money, but at a cost of terrific barrel distortion.&lt;br /&gt;&lt;br /&gt;Back then, I posted some ancient code to do a bilinear warp of the form r = r + ar^3 + br^5, a polynomial approximation that seems to be able to fix most lens distortion. This code caches the warp map, and applies it to video in realtime. I'm sure it barely compiles anymore, because the hardware is really ancient:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="http://stereopsis.com/old/barrel.html"&gt;http://stereopsis.com/old/barrel.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Today you'd probably want to use a much better interpolation than bilinear, but this one was realtime for video back in 1996, which seemed pretty cool at the time.&lt;br /&gt;&lt;br /&gt;Really all lenses should have these kinds of computations done automatically in the processing pipeline. It would give a benefit to weight, sharpness, and cost. And the software isn't that hard to write, either.&lt;br /&gt;&lt;br /&gt;The dpreview article mentions that optical corrections for barreling tend to introduce a mustache distortion (which even the most expensive lenses aren't able to fix perfectly).&lt;br /&gt;&lt;br /&gt;It seems to me like lenses should have some of these distortion measurements built-in, and the data could come through the processing pipeline directly.&lt;br /&gt;&lt;br /&gt;My impression is that DxO and Photoshop CS5 are keeping external databases of this information, which is nice for the moment.&amp;nbsp;It doesn't necessarily make sense to talk to a network service just to process a RAW file. But I guess it makes it possible to do this sort of correction right away rather than waiting 10 years for metadata standards to adapt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-8167045847924575571?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/8167045847924575571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/06/software-lens-fixes-barrel-distortion.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8167045847924575571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8167045847924575571'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/06/software-lens-fixes-barrel-distortion.html' title='Software Lens Fixes (barrel distortion, etc.)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-5547247516577476808</id><published>2010-05-05T12:26:00.002-07:00</published><updated>2010-05-05T13:19:11.165-07:00</updated><title type='text'>The Mac "Fast Path": Safari 4 vs. Chrome 5</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-QohdEBh-oI/S-HG8JEhRBI/AAAAAAAHefE/5Wez60XMygU/s1600/Screen+shot+2010-05-05+at+12.25.11+PM.png"&gt;&lt;img src="http://1.bp.blogspot.com/_-QohdEBh-oI/S-HG8JEhRBI/AAAAAAAHefE/5Wez60XMygU/s288/Screen+shot+2010-05-05+at+12.25.11+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5467870159133819922" /&gt;&lt;/a&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-QohdEBh-oI/S-HG8JEhRBI/AAAAAAAHefE/5Wez60XMygU/s1600/Screen+shot+2010-05-05+at+12.25.11+PM.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-QohdEBh-oI/S-HGxRGDxVI/AAAAAAAHee0/4KNNjgNSBEg/s1600/Screen+shot+2010-05-05+at+12.24.57+PM.png"&gt;&lt;img src="http://4.bp.blogspot.com/_-QohdEBh-oI/S-HGxRGDxVI/AAAAAAAHee0/4KNNjgNSBEg/s288/Screen+shot+2010-05-05+at+12.24.57+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5467869972309198162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I did a quick benchmark of scroll speed in Safari 4 vs. the new Chrome 5.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My benchmark is, "Drag the scrollbar up and down furiously in Google News while running Shark."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And Chrome feels a lot faster than it did before. A lot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But, Chrome still pegs the CPU during my test. Amazingly, Safari doesn't use all of a core. Scrolling in Safari is a relaxed day for the CPU.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The shipping version of Firefox has a profile more like Safari's--apparently it's using the system functions to scroll bits. However, &lt;a href="http://weblogs.mozillazine.org/roc/archives/2010/05/cglayer_perform.html"&gt;a new experimental Firefox that uses layers&lt;/a&gt; (aka hardware textures) experiences a bottleneck quite like Chrome's. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Maybe in this case, people are slowly reading back from hardware textures instead of blending to surfaces in memory. I don't really know the details, but my experience as a coder is that there are a lot of slow ways to do things on a Mac.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It occurs to me that one of the things that Windows has done well is to expose layers of abstraction and optimize a ton of permutations, so when you want to go "one level deeper" you can, and you can make it as good as the function built into the OS. If you want to write your own DirectShow filter to be in the native pipeline to the hardware, you can. If you use a weird mode in Direct3D, it is often still fast. You can mostly understand the profile and what's holding you up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apple provides tons of options for drawing bitmaps: blend modes, color calibration, ways of drawing bits to the screen. But not many of them are fast. If you turn on the wrong color-management bits, your app can become 50x slower, and this is no good.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the early days of graphics workstations, vendors would optimize one or two "fast path" ways to draw to the screen,. But in the world of awesome NVIDIA drivers, now a lot more of those options are fast, because we've had the benefit of 15 years to work out all the details.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;MacOS X seems to have some "fast paths" and a lot of slow ones that developers are getting tripped up on. But it is one thing to make a few abstractions that do a few things well, and another thing to make a platform that does anything you want to do well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today, it is difficult for Flash to get the best video decoding (my 10.1 "Gala" build of Flash chews CPU like a pig while Quicktime is nearly idle), and it has taken a year for a team of really smart people at Google to get a browser to scroll almost as fast as the one Apple provides. Picasa draws its UI 10x faster on Windows. The trend is not so good, unless you use Apple's widgets all the way up and down.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Steve Jobs should very simply stop criticizing other companies' performance until he makes his platform fast by default. Whether it takes sample code or performance tuning help or improvements to the OS, Apple's own apps shouldn't be running 10x faster than other apps that do the same things. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If the other companies really were actually lazy or incompetent, you'd understand, but honestly, Netscape Navigator back in 1995 scrolled fast, on Windows 95, on XWindows, on System 7. It's not a new, hard problem for an OS to do something like this well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's probably time for some &lt;a href="http://stereopsis.com/blttest/"&gt;new benchmarks&lt;/a&gt;, because when some of the bottlenecks are below the level of the applications, it's hard for people to understand who's at fault.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-5547247516577476808?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/5547247516577476808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/05/mac-fast-path-safari-4-vs-chrome-5.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5547247516577476808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/5547247516577476808'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/05/mac-fast-path-safari-4-vs-chrome-5.html' title='The Mac &quot;Fast Path&quot;: Safari 4 vs. Chrome 5'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-QohdEBh-oI/S-HG8JEhRBI/AAAAAAAHefE/5Wez60XMygU/s72-c/Screen+shot+2010-05-05+at+12.25.11+PM.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-2107506689754917959</id><published>2010-04-19T14:38:00.001-07:00</published><updated>2010-04-20T15:05:22.030-07:00</updated><title type='text'>Fun vertical sync hack</title><content type='html'>I was just playing with some code to scroll an image horizontally (am running on Windows XP). This code keeps an offscreen and periodically calls bitblt() to copy changed regions to the display.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you probably know, most computer displays read from your video card's memory and "refresh" their display periodically. Of course, if you update the video memory while this scanning is happening, you get "tearing" (you see one part of one image and part of the next), and it looks ugly. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My app was looking ugly.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Good OSes prevent you from doing this, but GDI on Windows XP is not such a beast.  (Vista and Win7 might do this right). For 3-d, lots of video cards are disabling vertical refresh waiting by default (probably for the benchmarks).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It turns out to be sort of painful to get a regular GDI window to do this right, but I found a pretty interesting optimization.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DirectDraw provides a &lt;a href="http://msdn.microsoft.com/en-us/library/aa911301.aspx"&gt;GetScanLine&lt;/a&gt; method, so you can just call DirectDrawCreate, and then GetScanLine on the returned pointer. (It's a little more code for multiple monitors.) But simple vertical sync means you just busy-wait on this method to return a value less than the previous one. I've heard about people using multimedia timers to do this, without busy-waiting.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course, by waiting like this, you end up spinning a CPU for about 10ms everytime you want to redraw. It's not very fast and not very efficient.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But, it turns out that most applications don't redraw the whole screen on every draw. So because the GetScanLine API returns an actual value, you can wait for the scanline being drawn to be outside the region you want to draw. My application knows these numbers, and so it was easy to code up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since I'm redrawing only about 1/4 the screen every frame, this method requires ~1ms per frame, so it's almost not worth using multimedia timers at all.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Knowing how fast the monitor refreshes, you can  also predict how long it might take to get the monitor to a "safe" region and use timers when you have to wait more than a millisecond.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But hey, if you know interesting and more power-efficient busy-wait methods, leave a comment.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-2107506689754917959?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/2107506689754917959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/04/fun-vertical-sync-hack.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/2107506689754917959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/2107506689754917959'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/04/fun-vertical-sync-hack.html' title='Fun vertical sync hack'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-1004594459672301728</id><published>2010-04-08T17:00:00.000-07:00</published><updated>2010-04-08T17:49:52.222-07:00</updated><title type='text'>What Native Code Really Means</title><content type='html'>&lt;div&gt;I was working with &lt;a href="http://sree.kotay.com/"&gt;Sree&lt;/a&gt; on a project about 12 years ago, and he insisted on using Win98 for development. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All of us kept asking, "Why won't you use NT4.0? It doesn't crash or lock up. You're rebooting 3 times per day." It made no sense.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sree said, "80% of my customers have Win98. That's why."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Right now, people seem outraged that the new iPhone SDK bans use of the non-C-like languages or huge compatibility/portability frameworks: &lt;a href="http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler"&gt;http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And yes, it means more work for developers. But I'm cheering them on, and there are two reasons.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Reason #1: Speed&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, I tried some of the Maps apps on the iPad. You haven't used a computer until you've dragged a photo or a map around at full screen on this kind of device. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Maps draws at 60FPS all the time, no joke. It changes your life. It is immersive and responsive and real.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you launch Safari on iPad and drag a map around in Google Maps, it's 3FPS, all the time. Like 20x slower. I don't really care why, and they've worked pretty hard to make Safari fast, but it's not even close to the native code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Flash maps mostly run a bunch slower than Google Maps does. And across the board, interpreted stuff is slower than native. If you consider RAM and CPU together, it is hard to find an app with "portability" glue or an interpreted language that can run in &amp;lt;3x the speed of native code. And 3x really matters.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So Apple's got this amazing device, but mostly because they thought about all this and made the software sing. It is fast, it is a balanced machine with a GPU and CPU that work together to draw UIs really fast.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even Google's nexus one can't seem to scroll a list or redraw a map at more than 15fps. And they wrote all the code (yeah, lots of it in Java). It is jerky and awkward in comparison to an iPhone 3gs. And that's all one team, not some engineer at another company doing the third-tier port of a portability framework in a hurry.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But now, Apple will be supporting multi-tasking and supporting background apps.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And honestly, they deserve to set the rules. You very simply shouldn't be writing a background app in Python that is 20x slower than the native one. You shouldn't be draining the battery to make a UI that has 1/5 the framerate of the native code. If using the GPU is better, use the GPU.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I love it that they're saying, do it the right way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Reason #2: Get the UI right&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;So back to Sree using Win98 when everyone thought he was crazy.  In 1998, WinNT 4.0 looked pretty much exactly like Win98. You used the same screen, the same mouse, and even the visual styling was pixel-identical. But the internals weren't the same. You made threads and Win98 was more jerky than NT. Memory wasn't cleared for you. DirectX was totally different.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now people really believe they can make apps that port "effortlessly" from the desktop to a device with 10% the CPU power, 1/5 the screen resolution (multiple resolutions really), and they say with a straight face that this will be a good user experience?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That is simply not true. When you're designing for a mobile device, you should be thinking of every pixel, or how the slight differences in the screen size matter, of how the native controls work, of what the consistent way is to do animation (UI elements behave differently on different phones). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Buttons on Android are different sizes than iPhone. Tip of the iceberg. &lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;You should be using win98, because your users are.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And of course, Apple is in a great position. People will bend over backwards to port code to their platform. They have no reason to make it easier, &lt;i&gt;especially when that makes the user experience suck more.&lt;/i&gt; They can lop off the bottom 50 percentile of apps and it hurts them not one bit.&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;Really, forcing people who don't want to use their native, fast tools to use AJAX and HTML5 isn't such a bad punishment. It's a sure way to make portable apps, and it advances the idea of open and functional standards. It's a fine second tier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There has been a trend for many years: the guys who write "scalable" apps for servers are happy to say they can buy 10x the machines, and this is usually cheaper than taking more time to get to market or using more engineers to do a task. They are smug about this, and it always drives people who care about using resources efficiently just a little bit nuts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But most client developers have never been this way. Game engine guys don't think this way, and neither do native client app developers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is an incredibly exciting time, and this move will make some new possibilities based on people writing code that changes the world, that is massively better than what's been done before. It won't be the same old stuff, smaller.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Saving a few developer hours is not an excuse for making battery life awful and making apps that run at 5FPS, and forcing people to actually write an app &lt;i&gt;for the platform they're deploying to &lt;/i&gt;is totally what I'd want on my platform.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bravo Apple.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-1004594459672301728?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/1004594459672301728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/04/what-native-code-really-means.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1004594459672301728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/1004594459672301728'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/04/what-native-code-really-means.html' title='What Native Code Really Means'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-2470638507567561706</id><published>2010-04-06T12:57:00.000-07:00</published><updated>2010-04-06T14:08:04.348-07:00</updated><title type='text'>The Big Reveal</title><content type='html'>I think I'm seeing people who understand that computer UIs are part of a continuum, and the other people who still see stuff in a "big reveal" sort of way.&lt;br /&gt;&lt;br /&gt;The ones who understand motion and calm....and the ones who understand big damn guitar solos.&lt;br /&gt;&lt;br /&gt;Somehow the Microsoft and Adobe UIs have that big, guitars-screeching, moment where everything violently comes together, the moment you say, Ah, where you say, oh I'm glad I spent all this money. It's the TV channel ID animation 2% of the time, and the rest of the time it's kinda clunky.&lt;br /&gt;&lt;br /&gt;And Apple has that moment of calm in between all the other smooth responsive intuitive stuff, they believe the reveal has to be all the freaking time, that making something continuous and animated and smart is better than the big progress bar with a clunk at the end. Or the other thing, that when you want it to be still is showing you tickers and motion, and when you want it to be responsive is totally locked up.&lt;br /&gt;&lt;br /&gt;I think the truth is that it takes a lot more work to be calm. It takes a whole bunch of people saying, what if we sand this edge, and what if we make this a curve instead of a hard corner, and what if it felt like this? It's much easier to have a couple big important people say, we're going to spend our juice here...the rest can be old and boring, but we're going to make you really happy right now. It will look great on TV.&lt;br /&gt;&lt;br /&gt;The crescendo, end of the world moment, where something distinctly unnatural happens, isn't how I want to interact with my world. The place with all the motion curves thought out, that leaves me calm is much better.&lt;br /&gt;&lt;br /&gt;And I think people don't understand why this is better. But it is very easy to interrupt the human brain. You surprise me or make me feel grateful or create that emotional moment? You make me forget my goals, what I was doing, what the next step is....you interrupt flow.&lt;br /&gt;&lt;br /&gt;If you make a simple machine that works perfectly....a door that closes so it doesn't rattle, even a bit, just clicks, then I go on with my life and do the next thing with my own focus intact and a continuity that matters. If I close a Microsoft Door, it wiggles a little bit to get my attention, and then it kinda sticks at the end because nobody really figured that this part of the animation would matter. If I close an Adobe Photoshop Door, it is kind of like closing my garage...it takes a while, and you have to watch it before you go through it. The Javascript door could work fine, except it's jerky, like 5 frames per second. There are even worse doors than this, ones that get stuck and ones that squeak so you think, wow I have to fix that, so compared to these old doors Microsoft and Adobe have done something interesting.&lt;br /&gt;&lt;br /&gt;But yeah, Apple's doors are getting better every month. Sometimes you don't even have to say you want to close them, they just do. And other times they have the perfect motion curve so that if you're carrying something they close right behind you without touching. And that little click at the end is delightful.&lt;br /&gt;&lt;br /&gt;And amazingly, they keep working on their doors because it seems to matter to them. They don't use the same one as last time.&lt;br /&gt;&lt;br /&gt;But yeah, no more big reveals. Life isn't a slideshow, it's a continuous experience, and the little things matter, and it takes years and years to get this stuff right. Don't allow your user experience people to be disconnected from using and tweaking the software people actually use. If you don't work this way, you won't, um, know what door hit you in the butt on the way out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-2470638507567561706?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/2470638507567561706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/04/big-reveal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/2470638507567561706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/2470638507567561706'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/04/big-reveal.html' title='The Big Reveal'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-4960327892090397967</id><published>2010-03-23T01:42:00.000-07:00</published><updated>2010-03-23T03:01:49.392-07:00</updated><title type='text'>Williams Sonoma: Turn off the lights, save a job</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-QohdEBh-oI/S6h_oaQxbEI/AAAAAAAHchE/7hlRNjacatM/s1600-h/Williams+Sonoma.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 250px; height: 400px;" src="http://1.bp.blogspot.com/_-QohdEBh-oI/S6h_oaQxbEI/AAAAAAAHchE/7hlRNjacatM/s400/Williams+Sonoma.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5451747681153150018" /&gt;&lt;/a&gt;We walked by a Williams Sonoma store in Santa Monica last night after dinner. The lights were dazzling, almost as bright as day.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We stopped at first to read the sign posted that said this particular store had been caught overcharging a customer: $7.50 above the marked prices for one receipt. Apparently there are law-enforcement stings for this, and when a store gets caught, they have to post the report in the window. (Kind of how restaurants that leave raw eggs at room temperature have to put a "B" on their window.)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;But never mind that. The store was closed at 8PM when we walked by, and so all this light seemed to be a bit of a waste. Maybe they were using some sort of energy-efficient lights? Nope, seemed that all the spots were halogen (probably 40-60W apiece), so we stopped to take a few pictures of the spectacle. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And by now it seemed like really kind of embarrassing waste of energy.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Making a guess as to the number of fixtures, Lorna and I figured that this single store is using 10-20kW all the time, for an energy bill of maybe $1000-2000 per month. The average California resident averages &amp;lt;1kW.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;But the cost of this electricity is also a job! They are spending enough on electricity every night to pay a half-time employee, per store.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To make this even better, I opened up Calculated Risk tonight, and found a &lt;a href="http://www.calculatedriskblog.com/2010/03/pressure-on-malls-more-store-closings.html"&gt;"poor me" article about Pat Connolly, an executive vice president of Williams-Sonoma, wondering how in the world he will increase profitability&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apparently, Williams-Sonoma is closing stores and strong-arming building owners to give them cheaper rents in order to save a little money. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But it doesn't take a Kyoto Protocol-sized effort to see a way to save a little more!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;They could save quite a bit of money by turning off some lights. My hardware store even sells light switches for less than $7.50.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-4960327892090397967?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/4960327892090397967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/03/williams-sonoma-turn-off-lights-save.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/4960327892090397967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/4960327892090397967'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/03/williams-sonoma-turn-off-lights-save.html' title='Williams Sonoma: Turn off the lights, save a job'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-QohdEBh-oI/S6h_oaQxbEI/AAAAAAAHchE/7hlRNjacatM/s72-c/Williams+Sonoma.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6275903.post-8094596316212743339</id><published>2010-03-07T13:08:00.000-08:00</published><updated>2010-03-07T15:52:26.686-08:00</updated><title type='text'>ZFS NAS followup: SSD is amazing</title><content type='html'>I've been running my &lt;a href="http://www.nerdblog.com/2009/04/good-enough-zfs-nas.html"&gt;ZFS NAS&lt;/a&gt; for about a year. By now, I've upgraded many times, currently at snv132 from 101b, and I've enabled &lt;a href="http://blogs.sun.com/bonwick/entry/zfs_dedup"&gt;dedup&lt;/a&gt; for the storage pool.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are a few notes and updated recommendations:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Single-parity RAIDZ&lt;/b&gt; makes me nervous; dual-parity RAIDZ2 is better for integrity and a group of mirrors is better for speed. Of the 5x1.5GB Caviar Green drives I started with, I've replaced 2 due to small failures that ZFS detected. (I can't easily upgrade to RAIDZ2.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Weekly scrubs&lt;/b&gt; find errors, but you have to do a little work to optimize for scrub time. At one point, my scrubs took 80 hours, and now they take about 16 hours for a larger amount of data. What helped? A few things:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Disable access time (atime). Otherwise, snapshots with lots of files that you verify daily will each have their own metadata, and scrubs will take dramatically longer. Also, disabling atime gives you general performance boost.&lt;/li&gt;&lt;li&gt;Install a newer ZFS that has metadata prefetch during scrub (I think this was added in b129).&lt;/li&gt;&lt;li&gt;One of my datasets had 4 million files, 20 snapshots, and compression turned on, and destroying this dataset reduced my scrub time a lot. (It was a Mac rsync backup, which now uses Time Machine instead.) I think compression can slow down scrub, but it might be unrelated.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;div&gt;&lt;b&gt;Dedup eats write performance, and you must use SSD&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;When I first enabled dedup and replayed all my datasets (zfs send/recv), I was able to write to the dedup'd RAIDZ volume at only 3MB/sec! Previously I could write at 60MB/sec.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;The best theory I have is that the DDT ("dedupe table") was using more space than RAM, and so the number of reads from disk required to do a small write was very large. Not much would help this, until I put an SSD drive into the pool. DDT is now cached and I can write 25MB/sec usually.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Also, "upgrading" to dedup is somewhat difficult and time-consuming. There is no automatic way.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;However, my "dedupratio" is 1.7 for the volume now, so even though the write speed isn't as good as before, the results are amazing, and I can tolerate it for the storage efficiency. The speed when reading is as good as before, also.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;SSD+ZFS is magic.&lt;/b&gt; ZFS is the first system that makes a tiny $90 SSD drive super-useful. With normal filesystems, you have to manually move "hot" data (like your OS) to the drive, and then you run out of space or spend $1000 to get more. ZFS does this automatically, using the SSD as a cache. I got the &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16820227393"&gt;OCZ Vertex 30GB drive&lt;/a&gt;, and while I know there are faster Intel drives, this has made an enormous difference.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I said above, SSD has improved my dedupe write speed by 8x. And it also serves as a cache of hot data, so if you read a lot of filesystem metadata (like you would by compiling over NFS) it can perform 50x faster than leaving it out of the pool. (This 50x number is based on a benchmark of opening all the files in a folder, reading the first 30k, then closing.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, the SSD acts as a "log" device and can handle small writes much better than disks can. So when an NFS client wants to do a small write, the ZFS NAS can respond dramatically faster than a disk-based server can, but still can guarantee data integrity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is some debate about which devices are suitable for use as a ZFS log. Some devices may slow down a fast mirror, by writing slower than the disks would. Also, the device isn't allowed to do any RAM buffering to improve write speeds (and my OCZ Vertex might do this wrong). But in the meantime, NFS and CIFS are just quite a lot faster, so I will pretend that I'm not really in much danger of data loss. Currently, about 2GB of my SSD is devoted to log, and the rest to cache. &lt;a href="http://opensolaris.org/jive/thread.jspa?threadID=123177&amp;amp;tstart=0"&gt;Here's a solaris-discuss thread&lt;/a&gt; that says the OCZ is slower than it seems to me. My NFS compiles are incredibly fast right now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can spend more on an Intel SSD, and supposedly it's even faster.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dedupe is an amazing technology, but you have to give it the hardware it needs. If I could figure out how to make a quiet case that held 10 drives, I'd probably avoid it. But for a 4-disk RAIDZ, it is a good match for me.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My advice is to add an SSD to your ZFS box, no matter what. For certain, you can use a $90 SSD to be a nice fast cache. If you want to use the device as a ZIL (ZFS intent log) and you're paranoid about data integrity, read the thread above and spend $500 on an SSD. Otherwise, I think my $90 one does pretty well too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6275903-8094596316212743339?l=www.nerdblog.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nerdblog.com/feeds/8094596316212743339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.nerdblog.com/2010/03/zfs-nas-followup-ssd-is-amazing.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8094596316212743339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6275903/posts/default/8094596316212743339'/><link rel='alternate' type='text/html' href='http://www.nerdblog.com/2010/03/zfs-nas-followup-ssd-is-amazing.html' title='ZFS NAS followup: SSD is amazing'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00058296587455402398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry></feed>
