Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
#(Document:0x3fc9e955ba34 {
name = "document",
children = [
#(Element:0x3fc9e955b214 {
name = "feed",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e955ff6c {
name = "title",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "Hypercritical")]
}),
#(Text "\n "),
#(Element:0x3fc9e955e9a0 {
name = "subtitle",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "Nothing is so perfect…")]
}),
#(Text "\n "),
#(Element:0x3fc9e95634c8 {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e956320c { name = "rel", value = "alternate" }),
#(Attr:0x3fc9e95631f8 { name = "type", value = "text/html" }),
#(Attr:0x3fc9e95631e4 {
name = "href",
value = "http://hypercritical.co/"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e9566aec {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e9566830 { name = "rel", value = "self" }),
#(Attr:0x3fc9e956681c {
name = "type",
value = "application/atom+xml"
}),
#(Attr:0x3fc9e9566808 {
name = "href",
value = "http://hypercritical.co/feeds/main"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e956a070 {
name = "updated",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-05-03T21:59:48-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e956eb98 {
name = "id",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "http://hypercritical.co/feeds/main")]
}),
#(Text "\n "),
#(Element:0x3fc9e95736c0 {
name = "rights",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "Copyright © 2013 John Siracusa")]
}),
#(Text "\n "),
#(Element:0x3fc9e9572220 {
name = "entry",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e9577130 {
name = "title",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "Beauty, Truth, and Jony Ive")]
}),
#(Text "\n "),
#(Element:0x3fc9e957bb2c {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e957b870 { name = "rel", value = "alternate" }),
#(Attr:0x3fc9e957b85c { name = "type", value = "text/html" }),
#(Attr:0x3fc9e957b848 {
name = "href",
value = "http://hypercritical.co/2013/05/03/beauty-truth-and-jony-ive"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e957f150 {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e957ee94 { name = "rel", value = "self" }),
#(Attr:0x3fc9e957ee80 {
name = "title",
value = "Beauty, Truth, and Jony Ive"
}),
#(Attr:0x3fc9e957ee6c {
name = "href",
value = "http://hypercritical.co/2013/05/03/beauty-truth-and-jony-ive"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e95826d4 {
name = "id",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "tag:hypercritical.co,2013-05-03:/2013/05/03/beauty-truth-and-jony-ive")]
}),
#(Text "\n "),
#(Element:0x3fc9e9587198 {
name = "published",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-05-03T21:59:48-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e958bcc0 {
name = "updated",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-05-03T21:59:48-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e958a820 {
name = "author",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e958f730 {
name = "name",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "John Siracusa")]
}),
#(Text "\n "),
#(Element:0x3fc9e958e164 {
name = "uri",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "http://hypercritical.co")]
}),
#(Text "\n "),
#(Element:0x3fc9e9592c8c {
name = "email",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "siracusa@hypercritical.co")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e959741c {
name = "content",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e9597160 { name = "type", value = "xhtml" })],
children = [
#(Text "\n "),
#(Element:0x3fc9e959b954 {
name = "div",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Element:0x3fc9e959aa04 {
name = "div",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e959a7c0 {
name = "class",
value = "image header"
})],
children = [
#(Element:0x3fc9e959f0b8 {
name = "img",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e959ee74 {
name = "src",
value = "/2013/05/03/images/macbook-air.jpg"
}),
#(Attr:0x3fc9e959ee60 {
name = "width",
value = "640"
}),
#(Attr:0x3fc9e959ee4c {
name = "height",
value = "125"
}),
#(Attr:0x3fc9e959ee38 {
name = "alt",
value = "MacBook Air"
})]
})]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95a7c40 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "The prevailing wisdom about software design at Apple is that the pendulum has swung too far in the direction of simulated real-world materials, slavish imitation of physical devices, and other "),
#(Element:0x3fc9e95a6ad4 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95a6818 {
name = "href",
value = "http://arstechnica.com/apple/2011/07/mac-os-x-10-7/5/#crazy-ones"
})],
children = [ #(Text "skeuomorphic")]
}),
#(Text " design elements, producing a recent crop of applications that suffer from an "),
#(Element:0x3fc9e95aab84 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95aa8c8 {
name = "href",
value = "http://arstechnica.com/apple/2011/07/mac-os-x-10-7/5/#address-book"
})],
children = [ #(Text "uncomfortable tension")]
}),
#(Text " between the visual design of the software and its usability and features. After the "),
#(Element:0x3fc9e95aec34 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95ae978 {
name = "href",
value = "http://www.apple.com/pr/library/2012/10/29Apple-Announces-Changes-to-Increase-Collaboration-Across-Hardware-Software-Services.html"
})],
children = [ #(Text "executive reshuffle")]
}),
#(Text " six months ago, we Apple fans have been hoping that "),
#(Element:0x3fc9e95b2ce4 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95b2a28 {
name = "href",
value = "http://www.apple.com/pr/bios/jonathan-ive.html"
})],
children = [ #(Text "Jony Ive")]
}),
#(Text ", now in charge of Human Interface for both hardware and software, will end this destructive conflict and bring order to the galaxy.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95b69fc {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "With iOS 7 and OS X 10.9 "),
#(Element:0x3fc9e95bb90c {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95bb560 {
name = "href",
value = "https://developer.apple.com/wwdc/"
})],
children = [ #(Text "looming")]
}),
#(Text ", we’re left to wonder exactly what kind of software designer Ive will turn out to be. Certainly, Apple’s software has been influenced by Ive’s hardware designs in the past—and perhaps vice versa—but this will be the first time Ive is officially in charge of the virtual bits as well as the physical ones.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95bf534 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "We may not have much to go on when predicting Ive’s software tastes, but we do know a heck of a lot about his opinions on hardware design. Though Ive has historically spent his time at Apple keynotes in the audience rather than on the stage, he’s starred in many, many videos wherein he explains why Apple’s great new hardware product looks and works the way it does. In these videos, his message has been remarkably consistent.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95be030 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Ive demands that the hardware be true to itself—its purpose, its materials, the way it looks, and the way it feels. Here’s a quote from one of Ive’s rare "),
#(Element:0x3fc9e95c2e8c {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95c2bd0 {
name = "href",
value = "http://www.youtube.com/watch?v=YdVG4LcoY4Y&t=81"
})],
children = [ #(Text "appearances")]
}),
#(Text " outside an Apple press event, talking about hardware design at Apple.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95c6ba4 {
name = "blockquote",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "\n"),
#(Element:0x3fc9e95cbab4 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "When we’re designing a product, we have to look to different attributes of the product. Some of those attributes will be the materials that it’s made from and the form that’s connected to those materials. So for example, with the first iMac that we made, the primary component of that was the cathode ray tube, which was spherical. We would have an entirely different approach to designing something like that than the current iMac, which is a very thin, flat-panel display. […]")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95ca4c0 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "A lot of what we seem to be doing in a product like [the iPhone] is actually getting design out of the way. And I think when forms develop with that sort of reason, and they’re not just arbitrary shapes, it feels almost inevitable. It feels almost undesigned. It feels almost like, well, of course it’s that way. You know, why wouldn’t it be any other way?")]
}),
#(Text "\n")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95cebec {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Steve Jobs also subscribed to this philosophy. Witness "),
#(Element:0x3fc9e95cfcb8 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95cf95c {
name = "href",
value = "http://www.youtube.com/watch?v=qt2VsaEJ9so&t=5433"
})],
children = [ #(Text "his explanation")]
}),
#(Text " of the design of "),
#(Element:0x3fc9e95cb960 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95cb62c {
name = "href",
value = "http://en.wikipedia.org/wiki/IMac_G4"
})],
children = [
#(Text "the first iMac with an LCD display")]
}),
#(Text " at Macworld New York in 2002. Here’s how Jobs described Apple’s solution to the inherent compromises (in 2002 technology) of putting an optical drive in a vertical orientation and trying to pack an entire computer behind an LCD display.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95c7504 {
name = "blockquote",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Element:0x3fc9e95c6514 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "The big ideas was, that rather than glom these things all together and ruin them all—a lower-performance computer and a flat screen that isn’t flat anymore—why don’t we let each element be true to itself? If the screen is flat, let it be flat. If the computer wants to be horizontal, let it be horizontal.")]
})]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95c3080 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "It’s interesting that Jobs and Ive saw eye to eye on hardware design and yet seemed far apart, at least in Jobs’s final years, when it comes to software design. While Jobs was "),
#(Element:0x3fc9e95bff34 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95bfcb4 {
name = "href",
value = "http://www.fastcodesign.com/1670760/will-apples-tacky-software-design-philosophy-cause-a-revolt"
})],
children = [ #(Text "reportedly")]
}),
#(Text " a champion of "),
#(Element:0x3fc9e95bb9ac {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95bbd80 {
name = "href",
value = "http://arstechnica.com/apple/2011/07/mac-os-x-10-7/5/#ical"
})],
children = [ #(Text "rich Corinthian leather")]
}),
#(Text ", Ive could only wince when "),
#(Element:0x3fc9e95b7820 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95b7dc0 {
name = "href",
value = "http://www.telegraph.co.uk/technology/apple/9283706/Jonathan-Ive-interview-simplicity-isnt-simple.html"
})],
children = [
#(Text "asked about it in an interview")]
}),
#(Text ".")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95b3cd4 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "I’m confident that we’ll see less leather, wood, felt, and "),
#(Element:0x3fc9e95b28d4 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95b25dc {
name = "href",
value = "http://thenextweb.com/apple/2013/03/21/apple-updates-podcasts-app-with-custom-stations-on-the-go-playlists-and-less-skeuomorphic-design/"
})],
children = [ #(Text "animated reel-to-reel tapes")]
}),
#(Text " in Apple’s future software products, but the question remains: what does it mean for an application or an OS to be true to itself?")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95ae568 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "I’m not sure how Ive will express that concept, but "),
#(Element:0x3fc9e95ab570 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95ab2b4 {
name = "href",
value = "https://twitter.com/lorenb"
})],
children = [ #(Text "Loren Brichter")]
}),
#(Text ", creator of "),
#(Element:0x3fc9e95a7600 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95a7344 {
name = "href",
value = "http://en.wikipedia.org/wiki/Tweetie"
})],
children = [ #(Text "Tweetie")]
}),
#(Text " and "),
#(Element:0x3fc9e95a3654 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95a32bc {
name = "href",
value = "http://www.atebits.com/letterpress/"
})],
children = [ #(Text "Letterpress")]
}),
#(Text ", offers one possible interpretation on "),
#(Element:0x3fc9e959f6a8 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e959f3b0 {
name = "href",
value = "http://www.imore.com/debug-1-loren-brichter-letterpress"
})],
children = [
#(Text "an episode of the Debug podcast")]
}),
#(Text " (starting at 6:10, and again at 1:02:26, specifically mentioning Ive). Letterpress is an exemplar of the so-called “"),
#(Element:0x3fc9e959b288 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e959afb8 {
name = "href",
value = "http://pinterest.com/warmarc/flat-ui-design/"
})],
children = [ #(Text "flat design")]
}),
#(Text "” aesthetic (and it’s also currently featured on "),
#(Element:0x3fc9e9596fd0 {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9596cd8 {
name = "href",
value = "http://www.apple.com"
})],
children = [ #(Text "the front page of Apple.com")]
}),
#(Text "). Brichter designed the look and feel of Letterpress based on the things that modern graphics hardware is naturally good at doing: drawing and manipulating flat planes of mostly solid colors.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9592bd8 {
name = "p",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "A design philosophy so tightly linked to nitty-gritty details of silicon chips and OpenGL APIs is unlikely to resonate with Ive as much as it does with a programmer like Brichter, but the end results may be similar. I expect Ive to focus on harmony between the look and feel of the software, the materials and finish of the hardware, and most importantly, the intended purpose of each specific application. (It’s kind of a shame that Apple’s "),
#(Element:0x3fc9e958fbcc {
name = "a",
namespace = #(Namespace:0x3fc9e959b6fc {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e958f884 {
name = "href",
value = "http://en.wikipedia.org/wiki/Mac_OS_7.6#Mac_OS_7.6"
})],
children = [ #(Text "already used")]
}),
#(Text " the “Harmony” code name.) This is my message to Jony Ive and and my hope for iOS 7, OS X 10.9, and each bundled application: to thine own self be true.")]
})]
}),
#(Text "\n ")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e958af00 {
name = "entry",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e9587cec {
name = "title",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "The Lottery")]
}),
#(Text "\n "),
#(Element:0x3fc9e958675c {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e9586464 { name = "rel", value = "alternate" }),
#(Attr:0x3fc9e9586450 { name = "type", value = "text/html" }),
#(Attr:0x3fc9e958643c {
name = "href",
value = "http://hypercritical.co/2013/04/26/the-lottery"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e957ff38 {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e957fc40 { name = "rel", value = "self" }),
#(Attr:0x3fc9e957fc2c {
name = "title",
value = "The Lottery"
}),
#(Attr:0x3fc9e957fc18 {
name = "href",
value = "http://hypercritical.co/2013/04/26/the-lottery"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e957b30c {
name = "id",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "tag:hypercritical.co,2013-04-26:/2013/04/26/the-lottery")]
}),
#(Text "\n "),
#(Element:0x3fc9e9577cc0 {
name = "published",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-04-26T09:22:17-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e9576488 {
name = "updated",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-04-26T10:15:36-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e9573080 {
name = "author",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e956f598 {
name = "name",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "John Siracusa")]
}),
#(Text "\n "),
#(Element:0x3fc9e956e864 {
name = "uri",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "http://hypercritical.co")]
}),
#(Text "\n "),
#(Element:0x3fc9e956b448 {
name = "email",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "siracusa@hypercritical.co")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e9567cd0 {
name = "content",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e9567974 { name = "type", value = "xhtml" })],
children = [
#(Text "\n "),
#(Element:0x3fc9e9562690 {
name = "div",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Element:0x3fc9e9563130 {
name = "p",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "In a "),
#(Element:0x3fc9e955f3b4 {
name = "a",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e955fe54 {
name = "href",
value = "http://atp.fm/episodes/10-gradual-ramp-up-to-nothing"
})],
children = [ #(Text "recent podcast")]
}),
#(Text ", I rejected the idea of a lottery system for selling "),
#(Element:0x3fc9e955bc28 {
name = "a",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e955b480 {
name = "href",
value = "http://developer.apple.com/wwdc/"
})],
children = [ #(Text "WWDC")]
}),
#(Text " tickets as too random. I wanted to preserve at least some aspect of the process that rewarded the most enthusiastic Apple fans: the people who are willing to be roused from bed at 2 a.m. and rush to their computers to buy tickets; "),
#(Element:0x3fc9e9556264 {
name = "a",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9553ec4 {
name = "href",
value = "http://www.youtube.com/watch?v=dX9GTUMh490"
})],
children = [ #(Text "the crazy ones")]
}),
#(Text "; the people who just want it more.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e954f9a0 {
name = "p",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "After yesterday’s experience of watching WWDC tickets sell out in what I measured to be less than 2 minutes, I’ve changed my mind. If the tickets had sold out in, say, 10 minutes (and assuming no server errors—more on that in a moment), then dedicated buyers would have been rewarded. If you couldn’t be bothered to be online until more than 10 minutes after the tickets went on sale, well, tough luck. Someone else wanted it more.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e954e3c0 {
name = "p",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "But tickets selling out in less than 2 minutes does not reward anyone’s dedication. We were all online at 10 a.m. PDT sharp, all ready to purchase, all equally dedicated. It was a de facto lottery, with an extra layer of pointless stress added on top.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e954ae00 {
name = "p",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Apple’s servers performed admirably…for about the first 5 seconds after tickets went on sale. After that, it was a crapshoot. Even if the tickets had sold out in an hour, it’d still effectively be a lottery if that hour was filled with server errors. You’d “win” if you happened to get through the purchase process with no errors.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95476d8 {
name = "p",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "An actual lottery, pre-announced, with no time pressure for entry, would be more equitable than what happened yesterday. That’s what I recommend for next year.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9542b4c {
name = "h2",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "The Heart of the Matter")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e953fe74 {
name = "p",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Many more people want to attend WWDC than the conference can accommodate. There has been no shortage of "),
#(Element:0x3fc9e953ebf0 {
name = "a",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e953e740 {
name = "href",
value = "http://bitsplitting.org/2013/04/25/end-wwdc/"
})],
children = [ #(Text "interesting suggestions")]
}),
#(Text " for how to fix this. Broadly speaking, WWDC has not changed in decades. Apple and its developer ecosystem, on the other hand, are radically different than they were just five years ago. Something has to give.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e953a0dc {
name = "p",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "I’ve heard many non-developers discuss the rush to get WWDC tickets as if the big draw is the keynote presentation, where Apple typically reveals new products. That is the most interesting part of the conference for the public, but it’s not why WWDC sells out so fast.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9536a40 {
name = "p",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Developers flock to WWDC because it’s a rare opportunity to communicate with Apple directly, human to human. The best way to decrease the demand for WWDC tickets is for Apple to increase its communication with developers throughout the year. And by communication I don’t mean throwing documentation or even video presentations over the wall to developers; I mean staffing up for more real, personal, timely, "),
#(Element:0x3fc9e9533700 {
name = "i",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "informal")]
}),
#(Text " contact with developers outside the court-like atmosphere of the App Store review process or the artificial scarcity of "),
#(Element:0x3fc9e9532148 {
name = "a",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e952fe48 {
name = "href",
value = "https://developer.apple.com/support/technical/submit/"
})],
children = [ #(Text "Technical Support Incidents")]
}),
#(Text ".")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e952bc30 {
name = "p",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Apple’s decision to release WWDC session videos to all registered developers during the conference was long overdue, but it clearly didn’t decrease demand for WWDC tickets enough to make a difference. Maybe next year, after developers have experienced their first "),
#(Element:0x3fc9e952a9c0 {
name = "a",
namespace = #(Namespace:0x3fc9e9563eb4 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e952a6f0 {
name = "href",
value = "http://en.wikipedia.org/wiki/Broadcast_delay"
})],
children = [ #(Text "tape-delayed")]
}),
#(Text " WWDC, it will make a dent. But I really believe that increased, improved communication between Apple and developers on all fronts is the best long-term solution.")]
})]
}),
#(Text "\n ")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e9523030 {
name = "entry",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e951ee7c {
name = "title",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "Code Hard or Go Home")]
}),
#(Text "\n "),
#(Element:0x3fc9e951aebc {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e951abd8 { name = "rel", value = "alternate" }),
#(Attr:0x3fc9e951abc4 { name = "type", value = "text/html" }),
#(Attr:0x3fc9e951abb0 {
name = "href",
value = "http://hypercritical.co/2013/04/12/code-hard-or-go-home"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e95160d8 {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e9513a18 { name = "rel", value = "self" }),
#(Attr:0x3fc9e95139dc {
name = "title",
value = "Code Hard or Go Home"
}),
#(Attr:0x3fc9e95139a0 {
name = "href",
value = "http://hypercritical.co/2013/04/12/code-hard-or-go-home"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e950b6b0 {
name = "id",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "tag:hypercritical.co,2013-04-12:/2013/04/12/code-hard-or-go-home")]
}),
#(Text "\n "),
#(Element:0x3fc9e950a0f8 {
name = "published",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-04-12T19:53:27-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e9506b9c {
name = "updated",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-04-15T15:13:41-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e950367c {
name = "author",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e950204c {
name = "name",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "John Siracusa")]
}),
#(Text "\n "),
#(Element:0x3fc9e94fe1e0 {
name = "uri",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "http://hypercritical.co")]
}),
#(Text "\n "),
#(Element:0x3fc9e94fa414 {
name = "email",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "siracusa@hypercritical.co")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e94ee7f4 {
name = "content",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e94ee510 { name = "type", value = "xhtml" })],
children = [
#(Text "\n "),
#(Element:0x3fc9e94f6b5c {
name = "div",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Element:0x3fc9e94edb9c {
name = "div",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94ed958 {
name = "class",
value = "image header"
})],
children = [
#(Element:0x3fc9e94ec210 {
name = "img",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94e9f88 {
name = "src",
value = "/2013/04/12/images/come-at-me-bro.jpg"
}),
#(Attr:0x3fc9e94e9f74 {
name = "width",
value = "640"
}),
#(Attr:0x3fc9e94e9f60 {
name = "height",
value = "266"
}),
#(Attr:0x3fc9e94e9f4c {
name = "alt",
value = "Come at me, Bro"
})]
})]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94e4b00 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "When Apple decided to make its own web browser back in 2001, it chose "),
#(Element:0x3fc9e94f2aac {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94f27a0 {
name = "href",
value = "http://en.wikipedia.org/wiki/KHTML"
})],
children = [ #(Text "KHTML")]
}),
#(Text "/"),
#(Element:0x3fc9e94ceb48 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94ce88c {
name = "href",
value = "http://en.wikipedia.org/wiki/KJS_(KDE)"
})],
children = [ #(Text "KJS")]
}),
#(Text " from the "),
#(Element:0x3fc9e94e2530 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94e2274 {
name = "href",
value = "http://en.wikipedia.org/wiki/KDE"
})],
children = [ #(Text "KDE")]
}),
#(Text " project as the basis of its rendering engine. Apple didn’t merely “adopt” this technology; it took the source code and ran with it, hiring a bunch of smart, experienced developers and giving them the time and resources they needed to massively improve KHTML/KJS over the course of several years. Thus, "),
#(Element:0x3fc9e94cc5a0 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94cc2e4 {
name = "href",
value = "http://en.wikipedia.org/wiki/Webkit#Origins"
})],
children = [ #(Text "WebKit was born")]
}),
#(Text ".")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e946f030 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "In the world of open source software, this is the only legitimate way to assert “ownership” of a project: become the driving force behind the development process by contributing the most—and the best—changes. As WebKit raced ahead, Apple had little motivation to "),
#(Element:0x3fc9e9c29ba4 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9c293c0 {
name = "href",
value = "http://en.wikipedia.org/wiki/Webkit#Split_development"
})],
children = [ #(Text "help keep KHTML in sync")]
}),
#(Text ". The two projects had different goals and very different constraints. KDE eventually "),
#(Element:0x3fc9e9c21e7c {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9c21a30 {
name = "href",
value = "http://kde.org/announcements/4.5/platform.php"
})],
children = [ #(Text "incorporated WebKit")]
}),
#(Text ". Though KHTML development continues, WebKit has clearly left it behind.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9c15c1c {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "When Google introduced "),
#(Element:0x3fc9e9c111d0 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9c109c4 {
name = "href",
value = "http://en.wikipedia.org/wiki/Google_Chrome"
})],
children = [ #(Text "its own web browser")]
}),
#(Text " in 2008, it chose WebKit as the basis for its rendering engine. Rather than "),
#(Element:0x3fc9e94c9d8c {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94c9a6c {
name = "href",
value = "http://en.wikipedia.org/wiki/Fork_(software_development)"
})],
children = [ #(Text "forking off")]
}),
#(Text " its own engine based on WebKit, Google chose to participate in the existing WebKit community. At the time, Apple was clearly the big dog in the WebKit world. But just look at what happened after Google joined the party. (Data from "),
#(Element:0x3fc9e94c1a74 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94c136c {
name = "href",
value = "http://bitergia.com/public/reports/webkit/2013_01/"
})],
children = [ #(Text "Bitergia")]
}),
#(Text ".)")]
}),
#(Element:0x3fc9e94b94dc {
name = "span",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94b91f8 {
name = "id",
value = "graphs"
})]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94b14d0 {
name = "div",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94b10c0 {
name = "class",
value = "image"
})],
children = [
#(Element:0x3fc9e94afef0 {
name = "div",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94af888 {
name = "class",
value = "title"
})],
children = [ #(Text "WebKit: Reviewed Commits")]
}),
#(Text "\n"),
#(Element:0x3fc9e94acdcc {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94a9e4c {
name = "href",
value = "http://bitergia.com/public/reports/webkit/2013_01/"
})],
children = [
#(Element:0x3fc9e94a53b0 {
name = "img",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94a511c {
name = "src",
value = "/2013/04/12/images/webkit-reviewed-commits-per-comany.png"
}),
#(Attr:0x3fc9e94a50e0 {
name = "width",
value = "640"
}),
#(Attr:0x3fc9e94a50b8 {
name = "height",
value = "307"
}),
#(Attr:0x3fc9e94a50a4 {
name = "alt",
value = "WebKit reviewed commits per company"
})]
})]
})]
}),
#(Text " \n\n"),
#(Element:0x3fc9e949c698 {
name = "div",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e949c364 {
name = "class",
value = "image"
})],
children = [
#(Element:0x3fc9e94987a0 {
name = "div",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9498534 {
name = "class",
value = "title"
})],
children = [ #(Text "WebKit: Active Authors")]
}),
#(Text "\n"),
#(Element:0x3fc9e948dd3c {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e948da30 {
name = "href",
value = "http://bitergia.com/public/reports/webkit/2013_01/"
})],
children = [
#(Element:0x3fc9e9489264 {
name = "img",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9488b0c {
name = "src",
value = "/2013/04/12/images/webkit-active-authors-per-company.png"
}),
#(Attr:0x3fc9e9488af8 {
name = "width",
value = "640"
}),
#(Attr:0x3fc9e9488ad0 {
name = "height",
value = "310"
}),
#(Attr:0x3fc9e9488aa8 {
name = "alt",
value = "WebKit reviewed commits per company"
})]
})]
})]
}),
#(Text " \n\n"),
#(Element:0x3fc9e947d270 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Given these graphs, and knowing the history between Apple and Google over the past decade, one of two things seemed inevitable: either Google was going to become the new de facto “owner” of WebKit development, or it was going to create its own fork of WebKit. It turned out to be the latter. Thus, "),
#(Element:0x3fc9e947b31c {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e947ab74 {
name = "href",
value = "http://www.chromium.org/blink"
})],
children = [ #(Text "Blink was born")]
}),
#(Text ".")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e946dc44 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Google has "),
#(Element:0x3fc9e946bfc0 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e946bac0 {
name = "href",
value = "http://www.google.com/chrome/"
})],
children = [ #(Text "already proven")]
}),
#(Text " that it has the talent, experience, and resources to develop a world-class web browser. It made "),
#(Element:0x3fc9e942b2b8 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e942ade0 {
name = "href",
value = "http://en.wikipedia.org/wiki/V8_(JavaScript_engine)"
})],
children = [ #(Text "its own JavaScript engine")]
}),
#(Text ", its own "),
#(Element:0x3fc9e946277c {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e945efa0 {
name = "href",
value = "http://en.wikipedia.org/wiki/Google_Chrome#Stability"
})],
children = [ #(Text "multi-process architecture")]
}),
#(Text " for stability and code isolation, and has added a huge number of improvements to WebKit itself. Now it’s taken the reins of the rendering engine too.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9432edc {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Where does this leave Apple? All the code in question is "),
#(Element:0x3fc9e9417c68 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94178f8 {
name = "href",
value = "http://en.wikipedia.org/wiki/Open-source"
})],
children = [ #(Text "open-source")]
}),
#(Text ", so Apple is free to pull improvements from Blink into WebKit. Of course, Google has little motivation to help with this effort. Furthermore, Blink is a clearly declared fork that’s likely to rapidly diverge from its WebKit origins. From "),
#(Element:0x3fc9e9050f94 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e90507c4 {
name = "href",
value = "http://blog.chromium.org/2013/04/blink-rendering-engine-for-chromium.html"
})],
children = [
#(Text "Google’s press release about Blink")]
}),
#(Text ": “[W]e anticipate that we’ll be able to remove 7 build systems and delete more than 7,000 files—comprising more than 4.5 million lines—right off the bat.” (There’s "),
#(Element:0x3fc9e90484d4 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9045c48 {
name = "href",
value = "https://lists.webkit.org/pipermail/webkit-dev/2013-April/024388.html"
})],
children = [ #(Text "some streamlining")]
}),
#(Text " in the works on the other side of the fence too.)")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e903d994 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Does Apple—and the rest of the WebKit community—have the skill and capacity to continue to drive WebKit forward at a pace that matches "),
#(Element:0x3fc9e9039664 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e903922c {
name = "href",
value = "http://www.chromium.org/blink#architectural-changes"
})],
children = [
#(Text "Google’s grand plans for Blink")]
}),
#(Text "? The easy answer is, “Of course it does! Apple created the WebKit project, and it got along fine before Google started contributing.” But I look at those graphs and wonder.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e903198c {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "The recent history of WebKit also gives me pause. Google "),
#(Element:0x3fc9e90296d8 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e902897c {
name = "href",
value = "https://news.ycombinator.com/item?id=5490242"
})],
children = [ #(Text "did not want to contribute")]
}),
#(Text " its multi-process architecture back to the WebKit project, so Apple created its own solution: the somewhat confusingly named "),
#(Element:0x3fc9e9015b38 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9014d3c {
name = "href",
value = "http://trac.webkit.org/wiki/WebKit2"
})],
children = [ #(Text "WebKit2")]
}),
#(Text ". While Google chose to put the process management into the browser application, Apple baked multi-process support into the WebKit engine itself. This means that any application that uses WebKit2 gets the benefits of multi-process isolation without having to do anything special.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95ce0e8 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "This all sounds great on paper, but in (several years of) practice, Google’s Chrome has proven to be far more stable and resilient in the face of misbehaving web pages than Apple’s WebKit2-based Safari. I run both browsers all day, and a week rarely goes by where I don’t find myself facing the dreaded “"),
#(Element:0x3fc9e95cb0a0 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95cad80 {
name = "href",
value = "/2013/04/12/images/web-pages-are-not-responding.png"
}),
#(Attr:0x3fc9e95cad30 {
name = "title",
value = "I wasn’t sure I’d be able to find a clean screenshot of this dialog box, but I needn’t have worried. One appeared on my own Mac while writing this article."
})],
children = [ #(Text "Webpages are not responding")]
}),
#(Text "” dialog in Safari that invites me to reload every single open tab to resume normal operation.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95c6348 {
name = "h2",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "Princes of Android")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95c2f40 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Having the development talent to take control of foundational technologies is yet another aspect of corporate "),
#(Element:0x3fc9e95bfef8 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95bfc14 {
name = "href",
value = "http://hypercritical.co/2013/03/19/self-reliance"
})],
children = [ #(Text "self reliance")]
}),
#(Text ". Samsung’s smartphone business currently relies on a "),
#(Element:0x3fc9e95bbefc {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95bbbb4 {
name = "href",
value = "http://www.android.com"
})],
children = [ #(Text "platform")]
}),
#(Text " developed by another company. Leveraging the work of others can save time and money, but Samsung would undoubtedly be a lot more comfortable if it had more control over the foundation of one of its most profitable product lines.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95b7ab4 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "The trouble is, I don’t think Samsung has the expertise to go it alone with a hypothetical Android fork. Developing a modern OS and its associated toolchain, documentation, developer support system, app store, and so on is a huge task. Only a handful of companies in history have done it successfully on a large scale—and Samsung’s not one of them. Sure, it’s possible to staff-up and build that expertise, but it’s not easy and it requires years of commitment. I’d bet against Samsung pulling it off.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95b6268 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Element:0x3fc9e95b35e0 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95b339c {
name = "href",
value = "https://www.facebook.com/home"
})],
children = [ #(Text "Facebook Home")]
}),
#(Text " can also be viewed through the lens of developer-based self reliance. Facebook clearly wants to make sure it’s an important part of the future of mobile computing, but that’s not easy to do when you’re “just a web site.” Home lets Facebook put itself front and center on existing Android-based smartphones.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95af224 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "It seems unwise for Facebook to build its mobile strategy on the back of a platform controlled by its mortal enemy, Google. But perhaps Home is just the first step of a long-term plan that will eventually lead to a Facebook fork of Android. If so, the question inevitably follows: can Facebook really take ownership of its own platform without help from Google?")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95abd54 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Facebook has proven that it can expand its skill set. Over the past few years, it’s been hiring "),
#(Element:0x3fc9e95aa968 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95aa698 {
name = "href",
value = "http://www.mikematas.com"
})],
children = [ #(Text "talented designers")]
}),
#(Text " and acquiring "),
#(Element:0x3fc9e95a696c {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95a669c {
name = "href",
value = "http://www.madebysofa.com"
})],
children = [ #(Text "companies")]
}),
#(Text " with proven design chops. Facebook Home is the first result of those efforts, and by all accounts, the user interface exhibits a level of polish more commonly associated with Apple than Facebook.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95a259c {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Still, a lock screen replacement is a far cry from a full OS. Maybe Facebook just plans to "),
#(Element:0x3fc9e959f57c {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e959f234 {
name = "href",
value = "http://www.youtube.com/watch?v=IbRmaIzGTOM&t=37m46s"
})],
children = [ #(Text "ride the bear")]
}),
#(Text ", relying on Google to do the grunt work of maintaining and advancing the platform for as long as it can, while Facebook slowly takes over an increasing amount of the user experience.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e959b15c {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Some people wonder how Google can possibly have any power in the Android ecosystem if the source code is free. Facebook Home has been cited as an example of Google’s ineffectualness. Look at how one of Google’s fiercest enemies has played it for a fool, they say. Google did all the hard work, then Facebook came in at the last minute and co-opted it all for its own purposes.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9597cb4 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "But look again at the "),
#(Element:0x3fc9e95968a0 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9596490 {
name = "href",
value = "#graphs"
})],
children = [ #(Text "graphs")]
}),
#(Text " above. Now imagine similar graphs for the Android source code. Any company with Android-based products that wants to be truly free from Google’s control has to be prepared—and able—to match Google’s output. Operating systems don’t write themselves; platforms don’t maintain themselves; developers need tools and support; technology marches on. It’s not enough just to just fix bugs and support new hardware. To succeed with an Android fork, a company has to drive development in the same way that Apple did when it spawned WebKit from KHTML, just as Google is doing as it forks Blink from WebKit.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9592458 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "This is not a "),
#(Element:0x3fc9e958f460 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e958f050 {
name = "href",
value = "http://en.wikipedia.org/wiki/Real-time_strategy"
})],
children = [ #(Text "real-time strategy game")]
}),
#(Text ". Companies like Samsung and Facebook can’t just mine for more resources and build new developer "),
#(Element:0x3fc9e958b324 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e958b054 {
name = "href",
value = "http://starcraft.wikia.com/wiki/Barracks"
}),
#(Attr:0x3fc9e958b040 {
name = "title",
value = "hatcheries?"
})],
children = [ #(Text "barracks")]
}),
#(Text ". Building up expertise in a new domain takes years of concerted effort—and a little bit of luck on the hiring front doesn’t hurt, either.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95865f4 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Facebook may already be a few years into that process. Its "),
#(Element:0x3fc9e95834e4 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95831ec {
name = "href",
value = "http://techcrunch.com/2013/04/10/has-facebook-quietly-acquired-osmeta-a-stealth-mobile-software-startup/"
})],
children = [ #(Text "recent")]
}),
#(Text " acquisition of the mysterious, possibly-OS-related startup "),
#(Element:0x3fc9e957f5b0 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e957f240 {
name = "href",
value = "http://osmeta.com/about/"
})],
children = [ #(Text "osmeta")]
}),
#(Text " provides another data point. Samsung, meanwhile, has just joined an exploratory project to "),
#(Element:0x3fc9e957b550 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e957b244 {
name = "href",
value = "http://blog.mozilla.org/blog/2013/04/03/mozilla-and-samsung-collaborate-on-next-generation-web-browser-engine/"
})],
children = [
#(Text "develop a new web rendering engine")]
}),
#(Text ".")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95770b8 {
name = "p",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Google certainly has its own share of problems, but what may save it in the end is its proven ability to tackle ambitious software projects and succeed. The "),
#(Element:0x3fc9e9573cd8 {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9573d3c {
name = "href",
value = "http://www.youtube.com/watch?v=j82GKTgVDkw&t=58"
})],
children = [ #(Text "challenge")]
}),
#(Text " set before Facebook, Samsung, and other pretenders to the Android throne is clear. And as a "),
#(Element:0x3fc9e956fcdc {
name = "a",
namespace = #(Namespace:0x3fc9e94f6904 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e956fd40 {
name = "href",
value = "http://en.wikipedia.org/wiki/Omar_Little"
})],
children = [ #(Text "wise man")]
}),
#(Text " once said, you come at the king, you best not miss.")]
})]
}),
#(Text "\n ")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e956b380 {
name = "entry",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e956a084 {
name = "title",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "Technological Conservatism")]
}),
#(Text "\n "),
#(Element:0x3fc9e9566ba0 {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e95667f4 { name = "rel", value = "alternate" }),
#(Attr:0x3fc9e95667e0 { name = "type", value = "text/html" }),
#(Attr:0x3fc9e95667cc {
name = "href",
value = "http://hypercritical.co/2013/04/07/technological-conservatism"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e955e414 {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e955fd64 { name = "rel", value = "self" }),
#(Attr:0x3fc9e955fd78 {
name = "title",
value = "Technological Conservatism"
}),
#(Attr:0x3fc9e955fe2c {
name = "href",
value = "http://hypercritical.co/2013/04/07/technological-conservatism"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e955aa44 {
name = "id",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "tag:hypercritical.co,2013-04-07:/2013/04/07/technological-conservatism")]
}),
#(Text "\n "),
#(Element:0x3fc9e9556318 {
name = "published",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-04-07T13:04:05-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e9552dbc {
name = "updated",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-04-07T21:30:25-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e954f4dc {
name = "author",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e954e154 {
name = "name",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "John Siracusa")]
}),
#(Text "\n "),
#(Element:0x3fc9e954ac0c {
name = "uri",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "http://hypercritical.co")]
}),
#(Text "\n "),
#(Element:0x3fc9e9547610 {
name = "email",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "siracusa@hypercritical.co")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e9543718 {
name = "content",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e9543218 { name = "type", value = "xhtml" })],
children = [
#(Text "\n "),
#(Element:0x3fc9e953f2bc {
name = "div",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Element:0x3fc9e953bdc4 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Technology can be a surprisingly ideological topic. In politics, the spectrum of belief is right on the surface: conservative/liberal, right/left. In tech, that same spectrum exists, but it’s rarely discussed. What’s more, unlike political beliefs, I’m not sure most people are even aware of their own core ideas about technology.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e953a3d4 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Anyone who’s read "),
#(Element:0x3fc9e9537378 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9536ec8 {
name = "href",
value = "http://hypercritical.co/archive/"
})],
children = [
#(Text "the past three months of posts")]
}),
#(Text " on this site could be forgiven for pegging me as a technological ideologue. Though I draw the line at outright dogmatism, railing against technological conservatism has indeed been a recurring theme of mine.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9532af8 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "To illustrate the concept, I’ll use myself as an example. Back in the "),
#(Element:0x3fc9e952fa38 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e952f754 {
name = "href",
value = "http://arstechnica.com/apple/2000/02/mac-os-x-dp3/"
})],
children = [ #(Text "early")]
}),
#(Text " "),
#(Element:0x3fc9e952b898 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e952b4ec {
name = "href",
value = "http://arstechnica.com/apple/2000/05/mac-os-x-dp4/"
})],
children = [ #(Text "days")]
}),
#(Text " of the operating system now known as "),
#(Element:0x3fc9e95273b0 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9526af0 {
name = "href",
value = "http://www.apple.com/osx/"
})],
children = [ #(Text "OS X")]
}),
#(Text ", I was not happy that the "),
#(Element:0x3fc9e951f91c {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e951f430 {
name = "href",
value = "http://en.wikipedia.org/wiki/Apple_menu#System_7.0.E2.80.939.2.2"
})],
children = [ #(Text "user-customizable Apple menu")]
}),
#(Text " from classic Mac OS had been replaced with an "),
#(Element:0x3fc9e951a908 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e951a624 {
name = "href",
value = "http://en.wikipedia.org/wiki/Apple_menu#Mac_OS_X"
})],
children = [
#(Text "anemic, non-customizable incarnation")]
}),
#(Text ". In classic Mac OS, the Apple menu was how I quickly found and launched commonly used applications and "),
#(Element:0x3fc9e9516614 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95162f4 {
name = "href",
value = "http://www.folklore.org/StoryView.py?story=Desk_Ornaments.txt"
})],
children = [ #(Text "Desk Accessories")]
}),
#(Text ". Apple removed this feature in Mac OS X and replaced it with…nothing, really. The "),
#(Element:0x3fc9e950ed24 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e950e70c {
name = "href",
value = "http://en.wikipedia.org/wiki/Dock_(OS_X)"
})],
children = [ #(Text "Dock")]
}),
#(Text " attempted to cover some of the same bases, but the Apple menu could comfortably hold many more items, and in a much more compact form.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e950a288 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "In this situation, a technological-conservative position is that Mac OS X needs something like the classic customizable Apple menu. It wouldn’t necessarily have to be an Apple icon in the upper-left corner of the screen. It could be a hierarchical menu spawned from the Dock or another screen corner. (This was actually a popular request back in the days before the Dock supported any form of hierarchy.) The old OS had a feature like this, and it was useful. The new OS needs a similar feature, or it will be less useful.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9506de0 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Beneath what seems like a reasonable feature request lurks the heart of technological conservatism: "),
#(Element:0x3fc9e9503c6c {
name = "i",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "what was and is always shall be")]
}),
#(Text ".")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94ffae0 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "In my review of the "),
#(Element:0x3fc9e94fe21c {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94fbd00 {
name = "href",
value = "http://arstechnica.com/apple/2010/09/macos-x-beta/"
})],
children = [ #(Text "public beta")]
}),
#(Text ", I was self-aware enough to moderate my position, "),
#(Element:0x3fc9e94ef780 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94ef438 {
name = "href",
value = "http://arstechnica.com/apple/2010/09/macos-x-beta/15/"
})],
children = [ #(Text "merely asking for")]
}),
#(Text " “some sort of mechanism that equals or betters the functional merits of the Apple Menu.” But what my conservatism prevented me from seeing was that things like "),
#(Element:0x3fc9e94f72b4 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94f6f58 {
name = "href",
value = "http://www.obdev.at/products/launchbar/index.html"
})],
children = [ #(Text "LaunchBar")]
}),
#(Text ", "),
#(Element:0x3fc9e94ece68 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94ecb20 {
name = "href",
value = "http://qsapp.com"
})],
children = [ #(Text "Quicksilver")]
}),
#(Text ", and (later) "),
#(Element:0x3fc9e94e8c8c {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94e8980 {
name = "href",
value = "http://arstechnica.com/apple/2005/04/macosx-10-4/9/#spotlight"
})],
children = [ #(Text "Spotlight")]
}),
#(Text " would provide similar functionality in an entirely different way, and with far more efficiency and elegance.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94e47a4 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "No one wants to think of themselves as a "),
#(Element:0x3fc9e94f26d8 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94f237c {
name = "href",
value = "http://en.wikipedia.org/wiki/Luddite"
})],
children = [ #(Text "Luddite")]
}),
#(Text ", which is part of what makes technological conservatism so insidious. It can color the thinking of the nerdiest among us, even as we use the latest hardware and software and keep up with all the important tech news. The certainty of our own tech savvy can blind us to future possibilities and lead us to reject anything that deviates from the status quo. We are not immune.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94e2bfc {
name = "h2",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "Previously on Hypercritical…")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94e2800 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Consider four of my recent posts, each of which, in its own way, pressed uncomfortably against the "),
#(Element:0x3fc9e94cd810 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94cd4dc {
name = "href",
value = "http://en.wikipedia.org/wiki/Dark_matter"
})],
children = [ #(Text "dark matter")]
}),
#(Text " of technological conservatism among tech nerds.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e946e1f8 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "In response to "),
#(Element:0x3fc9e946f008 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e946ebd0 {
name = "href",
value = "http://hypercritical.co/2013/03/08/the-case-for-a-true-mac-pro-successor"
})],
children = [
#(Text "The Case for a True Mac Pro Successor")]
}),
#(Text ", a few readers insisted that there’s no longer anything technically interesting about high-performance personal computers. A new Mac Pro would just be a pair of the latest "),
#(Element:0x3fc9e9c253d8 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9c24f3c {
name = "href",
value = "http://en.wikipedia.org/wiki/List_of_Intel_Xeon_microprocessors#Xeon_E5-2xxx_.28dual-processor.29"
})],
children = [ #(Text "Xeons")]
}),
#(Text ", some "),
#(Element:0x3fc9e9c1d8b8 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9c1d214 {
name = "href",
value = "http://en.wikipedia.org/wiki/ECC_memory"
})],
children = [ #(Text "ECC RAM")]
}),
#(Text ", a few "),
#(Element:0x3fc9e9c11aa4 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9c11248 {
name = "href",
value = "http://en.wikipedia.org/wiki/Fusion_Drive"
})],
children = [ #(Text "SSDs and/or hard drives")]
}),
#(Text ", and a "),
#(Element:0x3fc9e9c06474 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94c8cfc {
name = "href",
value = "http://en.wikipedia.org/wiki/Radeon_HD_7000_Series"
})],
children = [ #(Text "big, hot video card")]
}),
#(Text ".")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94c1a10 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "That’s what the Mac Pro has been, so that’s what it will always be, right? And there it is.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94bc330 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Even "),
#(Element:0x3fc9e94b8dd4 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94b8b18 {
name = "href",
value = "/2013/03/08/the-case-for-a-true-mac-pro-successor#high-end-debut"
})],
children = [ #(Text "explicitly listing")]
}),
#(Text " several technologies that debuted on Apple’s high-end Macs did not derail the people whose feedback was based on the premise that the Mac Pro will never be anything that it is not already. This assumption is counter to the entire purpose of a product like the Mac Pro. It’s meant to push the envelope, to seek out new frontiers of computing power.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94b5404 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "In "),
#(Element:0x3fc9e94af040 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94aeba4 {
name = "href",
value = "http://hypercritical.co/2013/02/08/dont-stop-thinking-about-tomorrow"
})],
children = [
#(Text "Don’t Stop Thinking About Tomorrow")]
}),
#(Text ", I tackled technological conservatism head on—though without naming it—by addressing the surprisingly widespread notion that the iPhone 5 is “too light.” This criticism leans heavily on the seductive view of the present as an endpoint, rather than just another step in a journey towards something radically different. (For a long time, I avoided writing the post you're reading now because it felt like a retread of this older one. But I eventually decided that these ideas bear repeating. Do not be surprised when both posts arrive at a similar conclusion.)")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94a8a24 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Element:0x3fc9e94a5130 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94a4b90 {
name = "href",
value = "http://hypercritical.co/2013/03/04/fear-of-a-webkit-planet"
})],
children = [ #(Text "Fear of a WebKit Planet")]
}),
#(Text " was a celebration of what "),
#(Element:0x3fc9e94a0068 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e949df98 {
name = "href",
value = "http://blog.chromium.org/2013/04/blink-rendering-engine-for-chromium.html"
})],
children = [ #(Text "turned out")]
}),
#(Text " to be the tail end of peacetime in the browser wars. (Well, maybe it was really just "),
#(Element:0x3fc9e9499808 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e949940c {
name = "href",
value = "https://news.ycombinator.com/item?id=5490242"
})],
children = [ #(Text "a cold war turning hot again")]
}),
#(Text ".) The post addressed the fear that “WebKit everywhere” would lead us into another dark age of web development. Even before "),
#(Element:0x3fc9e9494f74 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9490d20 {
name = "href",
value = "http://www.chromium.org/blink"
})],
children = [ #(Text "Google’s fork of WebKit")]
}),
#(Text ", I "),
#(Element:0x3fc9e94894e4 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e94899bc {
name = "href",
value = "/2013/03/04/fear-of-a-webkit-planet#webkit-variety"
})],
children = [ #(Text "noted")]
}),
#(Text " that WebKit was a lot more like Linux than "),
#(Element:0x3fc9e947f6c4 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e947f124 {
name = "href",
value = "http://en.wikipedia.org/wiki/Ie6"
})],
children = [ #(Text "IE6")]
}),
#(Text ", and that “the products built with WebKit are as varied as those built with Linux.” Pondering that variety, the idea of a homogenous, stagnating WebKit monoculture seemed extremely unlikely. I didn’t have to wait long for confirmation.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e947b998 {
name = "h2",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "Uphill, Both Ways")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94748a0 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Finally, the point of "),
#(Element:0x3fc9e9474274 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e946d62c {
name = "href",
value = "http://hypercritical.co/2013/02/24/annoyance-driven-development"
})],
children = [ #(Text "Annoyance-Driven Development")]
}),
#(Text " was completely blotted out in the minds of a few readers by the audacious suggestion that a beloved service remains ripe for further improvement. This post revealed technological conservatism in its most virulent form: not only is the current state of affairs satisfactory, but wanting more is evidence of a character flaw, perhaps even a moral failing.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e946aad0 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "I find this idea absurd in its present-day context, and numerous analogous historical contexts immediately spring to mind as a means to persuade those who don’t. The trouble is, I can also imagine those same people taking the same technological-conservative positions in all the historical contexts as well. How far back in time do I have to go before it finally clicks?")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e942adf4 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Poor baby, you have to wait a whole day after a new episode airs on cable before it magically appears on your silent, $99, network-connected TV box.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e94638d4 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Walking to the mailbox, unsealing an envelope, and sticking a disc into a slot under your TV is too much work, is it? Now you need to be able to start watching a movie without even picking your lazy ass up off the couch?")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9447864 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Oh no! There are rooms in your house where you don’t have instant access to the sum of all human knowledge! And running wires is just "),
#(Element:0x3fc9e94336fc {
name = "i",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "so")]
}),
#(Text " hard, isn’t it? Those few cents for zip ties to keep yourself from tripping over the wires will obviously break the bank. The prince demands radio-based networking everywhere in his castle!")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9417664 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "I guess it’s just too much work to walk out the front door five steps, pick up the newspaper that was delivered while you slept, and then bring it back to your kitchen table each morning to read the news of the world. Now you want it to appear instantly on your computer screen. OK, Mr. Fancypants Bigshot.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e90549c8 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Yeah, pressing seven buttons in sequence is so much work. You need a "),
#(Element:0x3fc9e904d254 {
name = "i",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "faster")]
}),
#(Text " way to call someone. Pressing just one button instead will be such a big change in your life, won’t it? You’ll finally have time to write that novel.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e904570c {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "You’ve got a way to send a piece of paper from your home to anywhere in the entire country for literal pocket change, but that’s just "),
#(Element:0x3fc9e9040e28 {
name = "i",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "too much work")]
}),
#(Text " for you. You need to talk to someone "),
#(Element:0x3fc9e903c404 {
name = "i",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "right now")]
}),
#(Text ", hearing an actual voice as if it’s in the same room instead of miles away.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e9035a64 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "You are warmed by the sun for nearly all your waking hours, but I guess that’s not good enough for you. No, you’re so important that you need to have light and heat at night as well. What "),
#(Element:0x3fc9e9031b1c {
name = "i",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "you")]
}),
#(Text " need, you precious snowflake, is "),
#(Element:0x3fc9e9028300 {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e9025c7c {
name = "href",
value = "http://dresdencodak.com/2009/09/22/caveman-science-fiction/"
})],
children = [ #(Text "a miniature artificial sun")]
}),
#(Text " that’s under your control—obviously!")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95cfa38 {
name = "h2",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [ #(Text "The Unreasonable Man")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95ce2b4 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "At some point, we’re all guilty of looking down upon things that have changed since our own formative years, but this attitude has no place in technology criticism—and it’s absolute poison for anyone trying to create great tech products and services. Not all new ideas represent progress. (Do I really need to spell this out? It seems so.) But ideas should not be rejected based merely on a lifetime of having lived without them. Today’s “unnecessary” frill is tomorrow’s baseline.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95cadf8 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "As the "),
#(Element:0x3fc9e95c7d9c {
name = "a",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
attributes = [
#(Attr:0x3fc9e95c79a0 {
name = "href",
value = "http://www.quotationspage.com/quote/692.html"
})],
children = [ #(Text "famous saying")]
}),
#(Text " goes, the reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man.")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95c3918 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "Every great scientific and engineering triumph in human history has been a slap in the face of technological conservatism—the little ones, perhaps even more so. And yet each new step forward, no matter what the size, is inevitably met with a fresh crop of familiar objections. “Just look at what you have already, and it’s still not enough for you. Where does it end?”")]
}),
#(Text "\n\n"),
#(Element:0x3fc9e95c2068 {
name = "p",
namespace = #(Namespace:0x3fc9e953efd8 {
href = "http://www.w3.org/1999/xhtml"
}),
children = [
#(Text "It doesn’t. It never ends. Keep moving or get out of the way.")]
})]
}),
#(Text "\n ")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e95be314 {
name = "entry",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e95bb2f4 {
name = "title",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "Self-Reliance")]
}),
#(Text "\n "),
#(Element:0x3fc9e95b7d34 {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e95b79ec { name = "rel", value = "alternate" }),
#(Attr:0x3fc9e95b79d8 { name = "type", value = "text/html" }),
#(Attr:0x3fc9e95b79c4 {
name = "href",
value = "http://hypercritical.co/2013/03/19/self-reliance"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e95b3194 {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e95b2e60 { name = "rel", value = "self" }),
#(Attr:0x3fc9e95b2e4c {
name = "title",
value = "Self-Reliance"
}),
#(Attr:0x3fc9e95b2e38 {
name = "href",
value = "http://hypercritical.co/2013/03/19/self-reliance"
})]
}),
#(Text "\n "),
#(Element:0x3fc9e95ae3c4 {
name = "id",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "tag:hypercritical.co,2013-03-19:/2013/03/19/self-reliance")]
}),
#(Text "\n "),
#(Element:0x3fc9e95aaf30 {
name = "published",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-03-19T19:58:14-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e95a7b28 {
name = "updated",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "2013-03-20T16:36:03-04:00")]
}),
#(Text "\n "),
#(Element:0x3fc9e95a62a0 {
name = "author",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e95a33d4 {
name = "name",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "John Siracusa")]
}),
#(Text "\n "),
#(Element:0x3fc9e959fe3c {
name = "uri",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "http://hypercritical.co")]
}),
#(Text "\n "),
#(Element:0x3fc9e959e618 {
name = "email",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "siracusa@hypercritical.co")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e959adb0 {
name = "content",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e959aa54 { name = "type", value = "html" })],
children = [
#(Text "<div class=\"image header\"><img src=\"/2013/03/19/images/its-dangerous-to-go-alone.png\" width=\"640\" height=\"418\" alt=\"The Legend of Zelda\"/></div>\n\n<p>The mobile market, everyone agrees, is the technology industry’s future. What’s not so clear is which company is best positioned to thrive in that future.</p>\n\n<p>For smartphones in particular, the traditional metrics are confusing. Android has <a href=\"http://www.forbes.com/sites/chuckjones/2013/02/13/android-solidifies-smartphone-market-share/\">70% market share</a>, but Apple is taking <a href=\"http://www.asymco.com/wp-content/uploads/2012/05/Screen-Shot-2012-05-03-at-5-3-10.33.31-AM.png\">70% of the profit</a>. Google, meanwhile, is not benefiting from Android’s market share dominance as much as Samsung, which recorded <a href=\"http://webcache.googleusercontent.com/search?q=cache:Vqbt1Vyk7OgJ:online.wsj.com/article/SB10001424127887324039504578262432246509020.html+http://online.wsj.com/article/SB10001424127887324039504578262432246509020.html&amp;cd=1&amp;hl=en&amp;ct=clnk&amp;gl=us\">$4 billion in profit</a> from its cellphone and telecom business in Q4 2012. In the same quarter, Google made less—<a href=\"http://www.usatoday.com/story/tech/2013/01/22/google-facebook-zynga-motorola/1855185/\">$2.89 billion</a>—from all its businesses combined. And when it comes to selling actual smartphones, <a href=\"http://www.forbes.com/sites/ericsavitz/2013/02/06/applesamsung-101-of-q4-handset-profits-103-for-2012/\">the only two companies making <i>any</i> money</a> are Apple and Samsung.</p>\n\n<p>So who’s winning? When pondering this, I find myself thinking about dependencies. What is each company doing for itself, and in what ways does each company rely on others? I think this balance, much more than profits or market share, is what will determine long-term success. Let’s see how the players stack up.</p>\n\n<h2>Google: Mini-Microsoft</h2>\n\n<p>Google’s Android strategy looks a lot like Microsoft’s Windows strategy of yore—minus the part where you collect all the money. Google got the other parts right, though: create a viable platform, support it, evangelize it, and get as many other companies as possible to use it. That last part is made a lot easier when the OS is free and open source, of course.</p>\n\n<p>In the PC’s heyday, Compaq, Dell, HP, Gateway, and others all killed each other selling PC hardware, grinding their profit margins down to almost nothing, leaving only a few players (<a href=\"http://allthingsd.com/20130205/dell-confirms-plan-to-go-private-in-24-4-billion-buyout-deal/\">barely</a>) standing in the end. Microsoft, meanwhile, sat back and collected the same fat software margins from all of them (<a href=\"http://en.wikipedia.org/wiki/Microsoft_Office\">and</a> from nearly all of their customers, as well).</p>\n\n<p>With Android, Google seemed to posit that there was value inherent in being the platform “owner,” even if hardware makers didn’t pay for each copy of the OS. Android was filled with connections to Google’s (also free) services. More people using Android meant more people seeing Google ads, which meant more money for Google.</p>\n\n<p>In the early days of Android, this theory looked promising. As in the PC era, hardware makers jockeyed for position in the nascent Android market. Individual fortunes rose and fell, but the number of Android activations <a href=\"https://twitter.com/BenedictEvans/status/311884391464988672\">just kept growing</a>. So far, so good.</p>\n\n<p>But unlike the early PC market, the Android market hasn’t produced a group of strong competitors duking it out at the top. As previously noted, only one company, Samsung, is making any money at all selling Android smartphones—and it’s making more from them than Google itself.</p>\n\n<p>From the <a href=\"http://en.wikipedia.org/wiki/Nexus_One\">beginning</a>, Google has shrewdly hedged its bets by fielding <a href=\"http://www.google.com/nexus/\">its own line of Android hardware</a>. More recently, Google <a href=\"http://www.google.com/press/motorola/\">purchased Motorola</a>, giving it its very own bona fide handset maker. Thus far, none of these efforts have produced Samsung-like numbers. But it’s clear that Google is unwilling to be entirely dependent on other companies to create the hardware that its mobile OS needs to be a complete product.</p>\n\n<h2>Samsung: Death From Below</h2>\n\n<p>Samsung seems like an Android success story. Previously better known in the US for its TVs than its smartphones, Samsung combined its hardware manufacturing prowess (and its <a href=\"http://5by5.tv/hypercritical/83\">shameless</a> willingness to <a href=\"http://samsungcopiesapple.tumblr.com\">copy other companies’</a> <a href=\"http://www.telegraph.co.uk/technology/samsung/9932372/Seen-it-before-Samsungs-game-controller-looks-familiar.html\">design cues</a>) with Google’s mobile OS to produce profitable phones that customers love.</p>\n\n<p>Though the Galaxy line of devices would not be possible without Android, Samsung is far from Google’s ideal of a dutiful Android licensee, selflessly ferrying customers to Google’s services.</p>\n\n<p>Just as PC makers used to insist on adding their own graphical shell or other brand-specific “enhancements” to their Windows PCs, most companies selling Android-based hardware products feel compelled to put their own stamp on the vanilla Android experience. Samsung is no different, steadily papering over the underlying Android OS with each new release of its <a href=\"http://en.wikipedia.org/wiki/TouchWiz\">TouchWiz</a> user interface.</p>\n\n<p>And why not? If Android is a money-loser for every other smartphone maker, Samsung is obviously doing something right. In its recent <a href=\"http://news.cnet.com/8301-31322_3-57574466-256/samsung-gs4-launch-tone-deaf-and-shockingly-sexist/\">ill-conceived</a> Galaxy S4 launch event, <a href=\"http://www.techhive.com/article/2030981/samsung-puts-galaxy-not-android-on-center-stage.html\">Android was barely mentioned at all</a>. Samsung’s dependence on Android is clearly chafing.\n\n<h2>Apple: Once Bitten, Twice Shy</h2>\n\n<p>In truth, Apple has been bitten more than once by its dependence on other companies. The viability of the Mac once depended on Microsoft’s willingness to produce a decent version of <a href=\"http://en.wikipedia.org/wiki/Microsoft_Office\">Office</a> for it. Later, the Mac faltered multiple times when IBM and Motorola were unwilling or unable to produce competitive desktop and laptop CPUs. When Apple wanted to <a href=\"http://en.wikipedia.org/wiki/Rhapsody_(operating_system)\">revamp its OS</a>, Adobe and Microsoft were unwilling to port their software, forcing Apple <a href=\"http://en.wikipedia.org/wiki/Mac_OS_X\">back to the drawing board</a>. Then there was <a href=\"http://www.youtube.com/watch?v=TWSRgsk2oaw&amp;t=3m10s\">that time</a> when Apple asked another company to make a <a href=\"http://en.wikipedia.org/wiki/Motorola_Rokr#E1\">phone</a>.</p>\n\n<p>Like a lover who’s been betrayed one too many times, Apple has hardened its corporate heart against any form of true partnership. If it’s important, Apple wants to own and control it. When Apple does work with others, it insists on having the upper hand. iOS developers serve at the pleasure of Apple. Manufacturing partners must fight for the privilege of building Apple’s products, often using equipment Apple purchases for them. And, of course, Apple has its own mobile OS that runs exclusively on its own hardware. <a href=\"http://www.youtube.com/watch?v=gn26pEDEhyY\">As God is its witness, Apple will never be hungry again!</a></p>\n\n<p>Steve Jobs personified this attitude, which is why he felt <a href=\"http://gigaom.com/2011/10/21/steve-jobs-vowed-to-destroy-android/\">so deeply betrayed</a> when Google, his partner on stage during <a href=\"http://www.youtube.com/watch?v=TBxua7EDRdo&amp;t=51\">the iPhone introduction</a>, remade Android in iOS’s image. After that, Apple’s reliance on Google for essential parts of its mobile experience simply could not stand.</p>\n\n<p>The trouble is, online services have <a href=\"http://createlivelove.com/246\">not</a> <a href=\"http://en.wikipedia.org/wiki/MobileMe\">historically</a> been Apple’s strength. That’s why it partnered with Google, Yahoo, and others in the first place. It took Apple several years (<a href=\"http://www.wired.co.uk/news/archive/2009-10/02/analysis-apple-buys-placebase-hinting-at-split-with-google\">and</a> <a href=\"http://gigaom.com/2010/07/14/apple-acquires-poly9-mapping-company/\">several</a> <a href=\"http://arstechnica.com/apple/2011/10/apple-now-has-third-piece-of-mapping-puzzle-but-whats-the-full-picture/\">acquisitions</a>) to finally replace Google maps—and the <a href=\"http://arstechnica.com/apple/2012/11/apple-fires-manager-of-maps-team/\">results</a> were not ideal.</p>\n\n<p>There’s an old saying in business: don’t outsource your core competency. Or, <a href=\"http://www.joelonsoftware.com/articles/fog0000000007.html\">as Joel Spolsky originally put it</a>, “If it’s a core business function, do it yourself, no matter what.” This guideline makes it easy for a software developer to decide to outsource, say, catering and landscaping services. But what about Apple, with its historically well-founded paranoia about relying on outside companies for anything related to its actual products? What happens when everything starts to look like a “core business function?”</p>\n\n<h2>Sometimes You Can’t Make It on Your Own</h2>\n\n<p>Even among just these three companies, there are more than enough dependencies to go around. Google depends on other companies to make and sell the vast majority of the products that run its mobile OS. Samsung depends on Google to make and support the most important software component of its flagship mobile devices. Even the fiercely independent Apple still depends on Samsung to manufacture many of its mobile processors (<a href=\"http://www.imore.com/apple-may-say-goodbye-samsung-quad-core-chips\">for now…</a>) and Google to provide web search services—and perhaps to give <a href=\"http://arstechnica.com/apple/2012/12/google-maps-for-iphone-shows-apple-how-to-do-mapping-right/\">a little help with maps</a> as well.</p>\n\n<p>Back to the original question: who has the upper hand? Yes, there are dependencies in all directions—but not all dependencies are created equal.</p>\n\n<p>Despite its recent success, Samsung remains in the weakest position. It clearly doesn’t want to remain beholden to Google, and that’s the right instinct. But I’m not confident in Samsung’s ability to completely divorce its mobile platform from Android. I just don’t think it has the experience or expertise to be a real platform owner.</p>\n\n<p>Furthermore, while Android’s market share may be overwhelming, Samsung’s is not. Even if Samsung had the skills to take the reins of its software stack, it’d have to maintain compatibility with present and future versions of Android, lest it become just another low-volume also-ran smartphone platform.</p>\n\n<p>Google’s present position looks weak, but it has two big trump cards. First, Google has proven to be one of the few companies capable of creating, popularizing, and supporting a platform. Despite all the skinning and branding by handset makers, Google is still the driving force behind Android. This power can only be negated by another company that’s willing and able to match Google’s Android efforts on all fronts: OS development, app store, developer tools, evangelism, the works. That’s a tall order.</p>\n\n<p>Second, Google is still the king of online services. Apple, the biggest technology company in the world, just tried to replace maps, one of Google’s second-tier services, and barely avoided disaster. Microsoft, the former undisputed ruler of the tech sector, has been <a href=\"http://www.bing.com\">trying</a> for years to challenge Google for the web-search crown, with little success. Maps and search are not obscure or obsolete services. If you can’t create equal or better alternatives—and so far, no one has—then you’re stuck relying on Google.</p>\n\n<p>Google still needs hardware partners to maintain its Android empire, but we already have a model for how a software-focused platform owner can dominate a market. It’s harder to imagine a hardware maker dominating while relying on a software platform controlled by someone else.</p>\n\n<p>Finally, there’s Apple, the jilted lover, feverishly working to eliminate any dependency that puts it at the mercy of a potential competitor. Apple remembers when Samsung was a great source of mobile CPUs and Google provided network services for iOS. Now look at those two traitors. No partnership is safe!</p>\n\n<p>And so, in addition to developing its own OS, designing its own hardware, producing many of its most popular applications (built in its own IDE using its own compiler and language), Apple now has its own mapping service, is designing its own mobile CPUs, and is trying to get someone other than Samsung to manufacture them—all the while presumably eyeing its other parts suppliers and software partners warily.</p>\n\n<p>Despite the bumps, Apple’s position remains strong. It’s got the best app ecosystem, competitive, trend-setting hardware, great adoption of each new version of its OS, and double the margins of the only other company making money selling smartphones. Oh yeah, and it dominates the tablet market too. There’s a lot for <a href=\"http://hypercritical.co/2013/02/02/apples-2013-to-do-list\">Apple to do in 2013</a>, but at least it’s poised to succeed or fail on its own merits.</p>\n\n<p>Looking out further than a year, the picture gets fuzzier. An unfortunate side effect of doing everything yourself is that every other company starts to look like an enemy. Realistically, Apple can’t do everything—or can’t do everything well, anyway. Online services are only going to become more important with time, so it’s understandable that Apple wants to be the master of its own destiny in this area. But it needs to improve much more quickly if it wants to even remain competitive, let alone catch up to Google. Failing that, it needs to find some partners that aren’t mortal enemies. (I’m sure <a href=\"http://en.wikipedia.org/wiki/Marissa_Mayer\">Marissa Mayer</a> would take Tim Cook’s call.)</p>\n\n<p>In general, Apple needs to engage in more balanced partnerships that produce sustainable benefits on both sides. The switch to Intel CPUs is a good example, especially given how the situation has changed since the deal was first struck. In business, no strategic partnership is forever, but that’s no reason to avoid them entirely. And who knows? Perhaps Apple’s good relations with Intel will lead to its next great mobile <a href=\"http://en.wikipedia.org/wiki/System_on_a_chip\">SoC</a> being manufactured at <a href=\"http://en.wikipedia.org/wiki/22_nanometer\">22</a> or even <a href=\"http://en.wikipedia.org/wiki/14_nanometer\">14nm</a>.</p>\n\n<p>Let’s just hope <a href=\"http://software.intel.com/en-us/appup/tizen\">Tizen</a> doesn’t come up during the meeting.</p>")]
}),
#(Text "\n ")]
}),
#(Text "\n "),
#(Element:0x3fc9e95968c8 {
name = "entry",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [
#(Text "\n "),
#(Element:0x3fc9e9593998 {
name = "title",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
children = [ #(Text "The Case for a True Mac Pro Successor")]
}),
#(Text "\n "),
#(Element:0x3fc9e95920ac {
name = "link",
namespace = #(Namespace:0x3fc9e955aeb8 {
href = "http://www.w3.org/2005/Atom"
}),
attributes = [
#(Attr:0x3fc9e958f500 { name = "rel", value = "alternate" }),
#(Attr:0x3fc9e958f794 { name = "type", value = "text/html" }),
#(Attr:0x3fc9e958f7a8 {
name = "href",
value = "http://hypercritical.co/2013/03/08/the-case-for-a-true-mac-pro-successor"
})]
}),
#(Text "\n "),
#(