-
-
9:00
»
al3x
h1Node and Scaling in the Small vs Scaling in the Large/h1
pOver the past few weeks, I#8217;ve been taking whatever spare moments I can find to think about what technologies we#8217;re going to use to build the initial release of a href="http://banksimple.net/"BankSimple/a. Many people would probably assume that I#8217;d immediately reach for Scala, what with having a href="http://programmingscala.com/"co-authored a book on the language/a, but that#8217;s not how I approach engineering problems. Each and every problem has an appropriate set of applicable technologies, and it#8217;s up to the engineer to justify their use./p
p(Incidentally, Scala may well be a good fit for BankSimple, in no small part due to a bunch of third-party Java code that we need to integrate with, but that#8217;s a whole different blog post, probably for a whole different blog.)/p
pOne of the most talked-about technologies amongst the a href="http://news.ycombinator.com/"Hacker News/a crowd is a href="http://nodejs.org/"Node/a, a framework for writing and running event-driven JavaScript code on the a href="http://code.google.com/p/v8/"V8 virtual machine/a. As part of evaluating what tech to work with, I considered Node. Yesterday, I a href="http://twitter.com/al3x/status/19622271040"expressed some general skepticism/a about Node, and the framework#8217;s author, Ryan Dahl, a href="http://twitter.com/ryah/status/19628041485"requested/a that I write up my thoughts in more detail. So here we are./p
pI#8217;m certainly not here to disparage Ryan, who#8217;s a nice guy and a superb programmer; he knows more about low-level C than most of us could ever hope to, and without so much as a a href="http://explorepahistory.com/images/ExplorePAHistory-a0b9d5-a_349.jpg"neckbeard/a to show for it. Nor am I here to question the a href="http://wiki.github.com/ry/node/"enthusiastic community/a that#8217;s quickly grown up around Node; if you#8217;ve found a tool you enjoy working with and are committed to growing with it, more power to you./p
pRather, the purpose of this post is to question two of the Node project#8217;s stated goals, goals which seem to me to be at cross purposes./p
h2What#8217;s Node For?/h2
pThe a href="http://nodejs.org/#about"About/a section of Node#8217;s homepage states:/p
blockquote
p#8220;Node#8217;s goal is to provide an easy way to build scalable network programs.#8221;/p
/blockquote
pThen, a couple paragraphs on, we#8217;re told:/p
blockquote
p#8220;Because nothing blocks, less-than-expert programmers are able to develop fast systems [with Node].#8221;/p
/blockquote
pSo, is the purpose of Node to provide an easy way to build scalable network programs, or is it to allow less-than-expert programmers to develop #8220;fast systems#8221;?/p
pWhile these goals may appear related, they#8217;re very different in practice. In order to better understand why, we need to make a distinction between what I#8217;m calling #8220;scaling in the small#8221; and #8220;scaling in the large#8221;./p
h2Scaling In the Small/h2
pIn a system of no significant scale, basically anything works./p
pThe power of today#8217;s hardware is such that, for example, you can build a web application that supports thousands of users using one of the slowest available programming languages, brutally inefficient datastore access and storage patterns, zero caching, no sensible distribution of work, no attention to locality, etc. etc. Basically, you can apply every available anti-pattern and still come out the other end with a workable system, simply because the hardware can move faster than your bad decision-making./p
pThis is a great thing, actually. It means we can prototype haphazardly using whatever technologies we hold dear, and those prototypes will often take us farther than we expected. Better still, when we hit a roadblock, getting around it is trivial. Moving forward just means spending several minutes thinking about your problem and picking an implementation technology with emslightly better performance characteristics/em than whatever you were using before./p
pThis is where I believe Node fits in./p
pIf you look at who#8217;s flocking to Node, it#8217;s largely web developers who have been working in dynamic languages with what we could politely call emlimited performance characteristics/em. Adding Node to their architectures means that these developers have gone from having essentially no concurrency story and very constrained runtime performance to having some semi-sane concurrency story – one rigidly enforced by the Node framework – running on a virtual machine with comparatively respectable performance. They slice off a painful bit of their application that#8217;s suited to asynchrony, rewrite it in Node, and move on./p
pThat#8217;s awesome. That kind of outcome definitely meets Node#8217;s secondary stated goal of #8220;less-than-expert programmers#8221; being #8220;able to develop fast systems#8221;. However, it has very little to do with scaling in the larger, more widely-understood sense of the term./p
h2Scaling In the Large/h2
pIn a system of significant scale, there is no magic bullet./p
pWhen your system is faced with a deluge of work to do, no one technology is going to make it all better. When you#8217;re operating at scale, pushing the needle means a complex, coordinated dance of well-applied technologies, development techniques, statistical analyses, intra-organizational communication, judicious engineering management, speedy and reliable operationalization of hardware and software, vigilant monitoring, and so forth. Scaling is stronghard/strong. So hard, in fact, that the ability to scale is a deep competitive advantage of the sort that you can#8217;t simply go out and download, copy, purchase, or steal./p
pHerein lies my criticism of Node#8217;s primary stated goal: #8220;to provide an easy way to build scalable network programs#8221;. I fundamentally do not believe that there is an easy way to build scalable emanything/em. What#8217;s happening is that people are confusing easy problems for easy solutions./p
pIf you have an easy problem that was handily solved by moving from one piece of extremely limiting technology to a bleeding-edge piece of slightly less limiting technology, consider yourself lucky, but it doesn#8217;t mean you#8217;re operating at scale. Twitter certainly had such an easy win when, while at a fraction of the scale the service now operates at, one of their engineers a href="http://github.com/robey/kestrel"rewrote/a their a href="http://rubyforge.org/projects/starling/"in-house Ruby-based message queue/a in Scala. That was great, but it was scaling in the small. Twitter is still fighting an uphill battle to scale in the large, because doing so is about much, much more than which technology you choose./p
h2Growing Up Node/h2
pWhat concerns me about Node is that it#8217;s going to be difficult to grow with as engineers move from scaling in the small to scaling in the large. (No, I#8217;m not making the #8220;callbacks turn into a pile of spaghetti code#8221; argument, although I think you hear that time and again because it#8217;s an actual developer pain point in async systems.)/p
pThe bold thing about Node is that emeverything/em is asynchronous, right down to file I/O; here, I admire Ryan#8217;s commitment to a consistent and clear thesis for his software. Engineers who deeply understand their system#8217;s workload may find places where Node#8217;s model is a good fit, and may be a good fit effectively indefinitely; we won#8217;t know that until Node sees long-term mature deployment. Most systems I#8217;ve worked on change, though. Workloads change. The data you#8217;re moving around changes. What was once well-handed by an asynchronous solution is suddenly now better served by a threaded solution, or vice versa, or you#8217;re faced with some other out-of-the-blue change entirely./p
pIf you#8217;re deeply invested in Node, you#8217;re stuck with one way of approaching concurrency; one way of modeling your problems and solutions. If it doesn#8217;t fit into an event-based model, you#8217;re hosed. If, on the other hand, you#8217;re working with a system that allows for a variety of concurrency approaches (a href="http://www.javaconcurrencyinpractice.com/"the span class="caps"JVM/span/a, a href="http://msdn.microsoft.com/en-us/magazine/cc163552.aspx"the span class="caps"CLR/span/a, C, C++, a href="http://www.haskell.org/haskellwiki/GHC/Concurrency"span class="caps"GHC/span/a, etc.), you have the flexibility to change your concurrency model as your system evolves./p
pAt the moment, Node#8217;s core premise – that events necessarily yield performance – is still in question. Researchers at UC Berkeley a href="http://www.usenix.org/events/hotos03/tech/full_papers/vonbehren/vonbehren_html/"found that/a #8220;threads can achieve all of the strengths of events, including support for high concurrency, low overhead, and a simple concurrency model#8221;. A a href="http://portal.acm.org/citation.cfm?doid=1272996.1273021"later study/a that builds on that work shows that events and a pipelining approach perform equally well, and that blocking sockets can actually increase performance. In the industrial Java world, it comes up periodically that a href="http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html"non-blocking I/O isn#8217;t necessarily a better fit than threads/a. Even one of the most-cited documents on the subject with the blatant title of a href="http://www.cs.sfu.ca/~vaughan/teaching/431/papers/ousterhout-threads-usenix96.pdf"Why Threads Are A Bad Idea/a ends up concluding that you shouldn#8217;t abandon threads for high-end servers. There just isn#8217;t a one-size-fits-all concurrency solution./p
pIn fact, taking a hybrid approach to concurrency seems to be the way forward if the academy is any indication. Computer scientists at the University of Pennsylvania found that a combination of threads and events a href="http://portal.acm.org/citation.cfm?id=1273442.1250756"offers the best of both worlds/a. The Scala team at span class="caps"EPFL/span has argued that a href="http://portal.acm.org/citation.cfm?id=1496422amp;dl=GUIDEamp;coll=GUIDEamp;CFID=96217084amp;CFTOKEN=25102252"Actors unify thread- and event-based programming/a into one tidy, easily comprehensible abstraction. a href="http://research.swtch.com/"Russ Cox/a, formerly of Bell Labs and now on the a href="http://golang.org/"Go programming language/a project at Google goes so far as to argue that a href="http://swtch.com/~rsc/talks/threads07/"threads vs events is a nonsensical question/a. (Note that none of this even begins to touch on the emdistribution/em aspect of scaling a system; threads are constructs for a single computer, and events are constructs for a single span class="caps"CPU/span. We#8217;re not even talking about distributing work across machines in a straightforward way, as you can in Erlang, but that#8217;s worth thinking about if you#8217;re babysitting a rapidly growing system.)/p
pThe point being: seasoned engineers are using a mix of threaded, event-based, and alternative concurrency approaches like Actors and, experimentally, span class="caps"STM/span. To them, the idea that #8220;non-blocking means it#8217;s fast#8221; sounds, well, a bit silly; it#8217;s scalability urban mythology. The guys that are getting paid the big bucks to deliver scalable solutions aren#8217;t up at night feverishly rewriting their systems in Node. They#8217;re doing what they#8217;ve always done: measuring, testing, benchmarking, thinking hard, keeping up with the academic literature that pertains to their problems. That#8217;s what scaling in the large necessitates./p
h2Conclusion/h2
pFor my investment of engineering time, I#8217;d rather build on a system that allows me the flexibility of mixing an async approach with other ways of modeling concurrency. A hybrid concurrency model may not be as straightforward and pure as Node#8217;s approach, but it#8217;s going to be more adaptable. While BankSimple is in its infancy, we#8217;re going to be faced with the happy problems of scaling in the small, and Node might be a reasonable choice for us at this early stage. But when we do have to scale in the large, I#8217;d rather have a variety of options open to me, and I#8217;d rather not be faced with the prospect of a big rewrite under pressure./p
pNode is a lovely bit of code with an enthusiastic community, a whip-smart maintainer, and a bright future. As a #8220;bridge technology#8221; that offers immediate solutions to early scaling problems in a way that#8217;s particularly accessible to a generation of web developers who largely come from dynamic language backgrounds, it makes sense. Node more than meets its secondary stated goal of bringing reasonable performance to developers of intermediate experience who need to solve network-oriented problems. Node is, for a certain breed of programmer, familiar and fun, and it#8217;s undeniably easy to get started with. People in the Node community are having a good time reinventing the familiar wheels of web frameworks, package management, testing libraries, etc., and I don#8217;t begrudge them that. Every programming community reinvents those things to their norms./p
pOnce we#8217;ve made clear what Node is a good fit for, though, it#8217;s important to remember that there are no panaceas for problems of significant scale. Node and its strictly asynchronous event-driven approach should be viewed as a emvery/em early point on a continuum of technologies and methodologies that comprise scaling in the large./p
pApproach popular solutions cautiously. Everybody may be talking about a hot new technology, but very few people are actually working at a scale at which those technologies are going to be put through their paces. Those who are tend to be heads-down in numbers and research, working with tools and techniques that have been maturing over time. If you invest your time in a new technology, be ready to learn and grow with it, and maybe to jump ship when you find yourself constrained./p
pThis stuff isn#8217;t easy./pimg src="http://feeds.feedburner.com/~r/al3x/~4/YwaHRbjxLD0" height="1" width="1"/
-
-
9:00
»
al3x
h1Something New/h1
pImagine, for a moment, a bank that doesn#8217;t suck./p
pA bank that doesn#8217;t gouge you with fees.br /
A bank that doesn#8217;t treat you like crap.br /
A bank that cares about design, but gets out of your way.br /
A bank that puts your money to work automatically.br /
A bank that#8217;s building a platform for the future of personal finance./p
pI#8217;ve imagined that bank, usually while on hold with my current bank after they#8217;ve screwed something up. I want to be a customer of that bank. More than that, I want to make it happen./p
pSo, I am./p
pStarting today, I#8217;m joining a href="http://banksimple.net/"BankSimple/a as a co-founder, with the role of Chief Product amp; Technology Officer. In a nutshell, I#8217;m going to make sure we build something that#8217;s simple, beautiful, and works really really well./p
pWalking away from Twitter wasn#8217;t an easy decision. Working there has been a life- and career-changing experience. I#8217;ve learned all sorts of lessons, made great friends, and worked on something that millions of people now use every day./p
pBut millions of people also need a better bank./p
pIt#8217;s a different sort of problem than Twitter, and it#8217;s going to be a very different sort of company. But I feel ready to take on the challenge that BankSimple presents, and I#8217;m joining on with two brilliant people who#8217;ve put a ton of thought into building a better bank./p
pIf BankSimple sounds like something you want, here#8217;s how you can help make it happen:/p
ol
lia href="http://banksimple.net/join/"Sign up/a to be first to know when we launch./li
lia href="http://banksimple.net/jobs/"Join the team/a. We#8217;re hiring interns for the summer, and we#8217;ll be hiring programmers, designers, customer support, operations, and many other positions down the road./li
/ol
pOr, just talk to me about it. Tell me what you want from it. I#8217;m at a href="mailto:alex@banksimple.net"alex@banksimple.net/a for all things work-related, henceforth./p
pI#8217;m excited. I#8217;m energized. Today is the start of something great./pimg src="http://feeds.feedburner.com/~r/al3x/~4/NG3GEBMMPAc" height="1" width="1"/
-
-
9:00
»
al3x
h1Calling off the Hiatus/h1
pMy attempt at a hiatus from blogging has clearly failed. Too much to say, and sometimes 140 is too few characters in which to say it./p
pTomorrow, I#8217;ve got something interesting to say. Re-subscribe, won#8217;t you? Things are about to get real./pimg src="http://feeds.feedburner.com/~r/al3x/~4/etw7IYsa3Mc" height="1" width="1"/
-
-
9:00
»
al3x
h1The Moderate#8217;s Position on iPad Openness/h1
pWhen Apple#8217;s iPad was announced in January, I immediately a href="http://al3x.net/2010/01/28/ipad.html"posted a reaction/a. Now that the device is out, it seems worth revisiting the subject./p
h2Do You Feel Like A Hypocrite Yet?/h2
pFirst thing#8217;s first. Back in January, I wrote that the iPad wasn#8217;t something #8220;I want to bring into my home#8221;. But right now, there#8217;s an iPad in my home. I didn#8217;t make a promise not to buy one, but I certainly implied that it wasn#8217;t appealing to me. So what changed?/p
pSince January, developers have been posting previews of their iPad apps. Some are designed expressly for the device. Some are existing Mac OS X or iPhone apps that have been reformatted for the iPad#8217;s paper-like dimensions. Regardless, even a few screenshots or a blurry demo video on YouTube is enough to show you that there#8217;s something big going on here. Look at a href="http://culturedcode.com/things/ipad/"Things/a or a href="http://twitterrific.com/ipad"Twitterrific/a. Familiar, but different, compelling; superior. That#8217;s what got me into the Apple Store this past Saturday./p
pBy the end of the day, I was convinced. Human-computer interaction has found a sweet spot on the iPad. It#8217;s all the power of desktop computing, plus the valuable constraints of mobile devices, minus the limitations of both. It just makes sense. Use one for a couple hours and your desktop or laptop will seem clumsy, arbitrary, and bewildering. It is, simply, how (most) computing should be./p
pYou can be as cooly aloof as you like about the device, but it won#8217;t change the fact that it#8217;s a fundamental step forward in computing. Many consumers can surely afford to sit this initial release out until the costs come down and the quality goes up. But if you work in tech, you should spend some time with an iPad. If it doesn#8217;t change the way you think about what you do, you#8217;re either a genius or an idiot./p
h2Claims I Stand By/h2
pI made a number of claims back in January. I#8217;ll revisit them now, in light of the reality of the situation./p
pDo I still think I wouldn#8217;t have learned to program on an iPad? In the small, no; the device launched with a span class="caps"PHP/span span class="caps"IDE/span in the App Store on day one, amongst other code-related applications. But in the large, the device still discourages the kind of tinkering that#8217;s possible on desktop computers, and I don#8217;t think it should. One could learn to program on or for the device, but it#8217;s not as easy and affordable as it could be. More on this below./p
pDo I still think the device isn#8217;t for creative uses? In the narrowest sense, you can use it to create things: sketches, modifications to images, notes and other written works, music. But in the larger sense, most of what the iPad can be used to create at this point in time are not #8220;first class#8221; creative works. This is one of the odd things about our particular place in the history of art and technology: a program that allows someone to create music from pre-recorded loops is itself a first-class creation; the music that is pieced together from those loops may be enjoyable, but it has an innately lower creative value unless re-contextualized (for example, released by a hot record label, with no mention made of the software used to create the song). But ultimately, I#8217;ll concede that the iPad will eventually become a tool for the creation and/or performance of first-class creative works./p
pDo I still think the iPad is #8220;cynical#8221;? I think it#8217;s cynical of Apple to have a device that#8217;s so closed from the get-go, but the goals of the device are so endearingly humanistic that you can#8217;t really call it anything but hopeful. I think I was probably wrong on this count, but it#8217;s something you can#8217;t really understand until you#8217;ve interacted with the thing./p
pAll in all, I stand by what I had to say back in January: that the iPad is a beautiful, important, transformative device released under a confusing regime of questionable ethics. That said, I think three simple changes would make a world of difference towards assuaging people#8217;s concerns about the iPad and Apple#8217;s direction./p
h2The Moderate Platform on iPad Openness/h2
pThere#8217;s been a lot of confusion about what a call for a more open iPad means. a href="http://www.boingboing.net/2010/04/02/why-i-wont-buy-an-ipad-and-think-you-shouldnt-either.html"Cory Doctorow#8217;s screed/a certainly didn#8217;t help things, as it#8217;s at the fiery, incoherent end of the spectrum of people who would like Apple to make some changes in policy and procedure. I don#8217;t speak for folks like Cory, and I#8217;d prefer not to be lumped in with them. I#8217;m squarely between that #8220;left-wing#8221; rhetoric of openness-as-we#8217;ve-known-it and the #8220;right-wing#8221; of Apple loyalists-cum-apologists who think that everything with iPad/iPhone is just dandy as is./p
pHere is my position, restated as clearly as I possibly can:/p
ol
liApple should not charge to put applications you#8217;ve written onto your personal iPad (or iPhone, for that matter). If you purchase one of these devices, you should be able to install software of your own creation on it without any intervention or approval on Apple#8217;s part, other than creating a free developer account. Essentially, take today#8217;s iPhone/iPad developer program, and make it free./li
liApple should lift restrictions on running interpreted code on its mobile devices. Let people run Basic, Python, and Ruby interpreters on iPad and iPhone; we could make amazing tutorial applications for these and other programming languages. Let them run emulators for obsolete devices so intellectual property for them that has passed into the public domain can live on. Given that users can do much of this by virtue of Safari containing a JavaScript interpreter, the restriction seems arbitrary and backwards./li
liApple should remove the concept of private APIs from its developer offerings. Give developers the same tools that Apple#8217;s own programmers get to use. If an span class="caps"API/span is still too unsafe or experimental for developers to make use of, don#8217;t ship it, or gate it to development versions. Don#8217;t restrict third parties from taking full advantage of the device and its software./li
/ol
pThat#8217;s it. That#8217;s all I want from Apple to make the iPad and iPhone more open. I don#8217;t think it#8217;s crazy or unreasonable./p
pYes, it#8217;s a call for Apple to give up some revenue from developer program fees. As I explored back in January, we#8217;re talking about something on the order of 0.001% of the company#8217;s annual revenue. Apple has almost certainly spent more appeasing Greenpeace and the other environmental advocacy groups that have lobbied for changes to their manufacturing and shipping processes. 0.001% of revenue to enable a new generation of programmers and remove the most fundamental objection to Apple#8217;s developer policies? That seems worth it./p
h2What#8217;s Not Being Argued For/h2
pHere, conversely, is what I am emnot/em arguing for:/p
ol
liI am emnot/em arguing that the software behind the iPad should be released under any open source license, beyond what#8217;s required to be released back to the open source community (something Apple is reasonably good about)./li
liI am emnot/em arguing that the iPad should be more modifiable by users at a hardware level, or that it should ship with any other standard ports, plugs, or interfaces./li
liI am emnot/em arguing that Apple should abandon all use of span class="caps"DRM/span. I have faith that as various parts of the media industry get comfortable with the idea of unrestricted content, span class="caps"DRM/span will fade away, as it has from part of the iTunes Music Store catalog./li
liI am emnot/em arguing anything about the ability to run background processes. I#8217;m sure this issue will be addressed in an upcoming OS release, and Apple#8217;s mobile products are more than usable without this functionality. (See, however, the item about doing away with private APIs above.)/li
liI am emnot/em arguing that Apple must make changes to its developer support procedures. I think they know that if they don#8217;t do right by developers, developers will leave for other platforms. Apple gets this, and they appear to be trying to improve things. I don#8217;t think developers have an innate right to sell their applications in Apple#8217;s proprietary, controlled marketplace. That#8217;s simply not how commerce works./li
/ol
pFinally, there#8217;s the issue of the App Store. I#8217;m on the fence about it. My hunch is that Apple should follow Palm#8217;s lead and allow users to install applications from the web, albeit after prompting for the user#8217;s consent and warning against whatever security issues might arise despite the platform#8217;s sandboxing. I also think that Apple should operate their App Store on an open, published span class="caps"API/span, and allow alternative app stores to be opted into by users. However, I don#8217;t feel strongly enough about these positions to make them part of my #8220;platform#8221; above./p
h2Aren#8217;t You On Hiatus?/h2
pAm I blogging again? I#8217;m not sure. This is, uh, a blog post, certainly. I didn#8217;t really plan to write anything else in the short term, and I#8217;m still focused on other projects. This is more of a special feature, let#8217;s say. See you later this year./p
h2Post-Script: April 14, 2010/h2
pAfter a little less than two weeks with an iPad, I#8217;ve decided to sell it. Currently, it makes more sense to sell an iPad to someone outside the US who won#8217;t be able to buy one for another month (at least) than it does to pay Apple#8217;s $65 restocking fee. The iPad is still a fascinating device, and I#8217;m glad I got to play around with one, but it needs work, and I#8217;m waiting until the next version to get really invested in it./p
pThe iPad is too heavy; that extra half-a-pound makes a big difference in many configurations. The screen is too bright for low-light conditions even with the brightness cranked all the way down. Generally, it#8217;s hard to get comfortable with the device, even with a decent case. Typing more than a tweet is un-ergonomic and painful. Plus, most of the really nicely designed software for iPad currently doesn#8217;t handle over-the-air/cloud sync, including Apple#8217;s own iWork apps. That makes juggling an iPad, a mobile device, and a personal computer a major hassle. (Yes, Dropbox is great, but it#8217;s not currently a solution to this problem. That#8217;s up to developers, and to Apple.)/p
pThere are things I#8217;ll miss about the iPad. I love having my entire library of academic papers with me at all times. The Kindle experience on it is far better than Amazon#8217;s own hardware. I sold my Kindle 2, a decision I don#8217;t regret despite not holding onto the iPad; the Kindle is simply not adequate for anything more than the most basic texts, and the iPad makes that abundantly clear. The Instapaper app is great, and I#8217;ll definitely miss using it. Beyond those good points, I found myself reaching for my laptop and phone often enough that owning a largely redundant $800+ device for occassional use seems frivolous. I offered the iPad to my wife, but she had much the same reaction of #8220;I#8217;m not sure I really need this or would use it day-to-day, save for travel#8221;./p
pIt#8217;s still hard to swallow owning a device that#8217;s subject to Apple#8217;s increasingly aggressive developer-hostile policies, no matter how carefully you paint those policies as #8220;preserving the integrity of the platform#8221; or whatever helps you sleep at night. Apple has absolutely no reason to listen to me or any other critic, as they#8217;re busy making buckets of money and, for the most part, making users happy. Since I first wrote this post, though, Apple has moved even further away from being #8220;moderately open#8221; with their new restrictions on the programming languages that can be used on their platform. I don#8217;t expect that trend to reverse, and that makes it harder for me to spend my money on Apple#8217;s closed products without feeling guilty./p
pI#8217;ll probably buy an iPad or something like it again in the future. In a year or two, they#8217;ll be cheaper, lighter, and generally better. For now, it#8217;s fun to play around and soak up all the creative interaction design that#8217;s happening on the iPad, but it#8217;s just not a purchase I can justify./pimg src="http://feeds.feedburner.com/~r/al3x/~4/oD9cZeYmhfY" height="1" width="1"/
-
9:00
»
al3x
h1The Emerging Languages Conference/h1
pSimply a pointer to an event that#8217;s likely of interest to readers of this blog./p
pIf you like programming languages and you care about how they#8217;re evolving, set aside July 21st and 22nd of this year. O#8217;Reilly#8217;s Brady Forrest and I have put together the first a href="http://emerginglangs.com/"Emerging Languages Conference/a, co-located with a href="http://www.oscon.com/oscon2010"span class="caps"OSCON/span/a, which returns to Portland, Oregon this year./p
pThe event is designed to get language designers, researchers, implementors, and enthusiasts in a room for two days to share experiences, successes, disasters, ideas, and hopes for the future. In the morning, folks working on interesting young languages (or language-related tech, like runtimes) will present 30 or 15 minute talks about their projects. In the afternoons, we#8217;ll break into to freeform #8220;unconference#8221;-style sessions where attendees can focus on whatever floats their digits: compiler design, type systems, interpreters, source-to-source translation, etc. etc./p
pIt#8217;s my hope that this event will connect people who didn#8217;t know they had common goals, in the process helping to shape the future of programming languages. I think it#8217;s going to be a big deal./p
pWe#8217;re going to keep tickets under $200 for attendees, and that price includes an as-yet-undetermined level of access to span class="caps"OSCON/span (at the very least, you#8217;ll get to see the keynotes). If you#8217;re giving a talk, the event is free, of course. We#8217;re trying to secure sponsorships to fly in folks from faraway lands who are on a tight student/academic budget./p
pCheck out a href="http://emerginglangs.com/"the blog/a, a href="http://twitter.com/emerginglangs"follow the event on Twitter/a, a href="https://groups.google.com/group/emerginglangs"join the Google Group/a, and hold tight for registration information. Hope to see you there!/pimg src="http://feeds.feedburner.com/~r/al3x/~4/zGLn6EWcqbM" height="1" width="1"/
-
-
9:00
»
al3x
h1On Hiatus/h1
pOver the past several years, this blog has gone from something that a few patient friends read to something with farther reach than I ever hoped or intended. This has been, alternately, flattering, infuriating, exhilarating, and terrifying./p
pI write for myself. Always have, always will. Writing helps me structure my ideas. I sit down to write when I#8217;ve had something kicking around in my head that just won#8217;t quit nagging at me. By the time I#8217;m done, I can put that idea to rest and move on. Unfinished thoughts structured via writing yield catharsis. Ideally, this is how the process works for me./p
pLately, I#8217;ve found the cathartic returns from blog-format writing to be diminishing. The ideas I#8217;m trying to express never really get put to rest in my head when I write, now. Instead, they spark whole conversations that I never intended to start in the first place, conversations that leech precious time and energy while contributing precious little back. Negative responses I can slough off, but the sense that I#8217;m not really crystalizing my unset thoughts by writing here is what bothers me./p
pSo. It#8217;s time for me to take a break from blogging for a while./p
h2What Might Have Been/h2
pThis is a hard decision. Right now, I have a number of posts queued up:/p
ul
liOne about how developer platforms are communities first and products second, and about how healthy platforms grow and mature organically./li
liOne about the creative possibilities of the iPad, as a sort of counterweight to my criticisms of the device#8217;s closed design./li
liOne about how Objective-C has been successful despite being a fairly limited programming language, and what other language and span class="caps"API/span designers can learn from that unlikely success./li
liOne about the necessity of treating the creative process behind technology as if you were performing magic, and the worth of opening your mind to unorthodox methodologies and approaches./li
/ul
pWhen I think about not publishing these things, I#8217;m a little heartbroken. I enjoy sharing ideas, even when my ideas are shot down. I try to get better at communicating, at arguing, at persuading. But lately, I#8217;ve been caught in a rut. I feel as if my writing isn#8217;t really improving thanks to blogging, certainly not to the degree that bloggers I admire like a href="http://diveintomark.org/"Mark Pilgrim/a have improved in the time I#8217;ve been reading them. I feel as if I stumble from one unintentionally inflammatory post to the next without gaining any particular insight./p
pA feedback loop of positive emails and tweets has kept me blogging despite my frustrations, but I find I#8217;m no happier after I finish a post than when I started. If anything, blogging leaves me stressed out, disappointed, or just stuck with the sense that I#8217;ve wasted my time. That#8217;s why I need to take a public step back from writing here for a good long stretch./p
h2What May Yet Be/h2
pI want to focus my creative energies outside of a href="http://twitter.com/"work/a on something more substantial than blogging. Co-authoring a href="http://programmingscala.com/"Programming Scala/a was deeply rewarding in a way that few other things in my life have ever been. I have another book project in the works, and I#8217;d like to embark on that in the near future. It#8217;s big project, though; daunting. I#8217;ve been using blogging as a way of putting it off while still satisfying my itch to write./p
pI#8217;ve also been a lax open source citizen. My coworkers at Twitter are a href="http://twitter.com/about/opensource"cranking out great open source code/a. I#8217;m not pulling my weight in this respect – only one of those great projects on Twitter#8217;s open source page has my avatar next to it. I have at least as many open source projects queued up as I do potential blog posts, and those projects may be a better illustration of how I view the craft of programming. Code can speak louder than words./p
pI#8217;ll still contribute to a href="http://gracelessfailures.com/"Graceless Failures/a, the group blog of Scala tips and tricks I started in 2008. I#8217;ll probably write for the a href="http://engineering.twitter.com/"Twitter Engineering Blog/a on occasion. I may yet find another outlet for my writing on programming, particularly as it pertains to the study of programming languages; a simple and frictionless format like Reg Braithwaite#8217;s a href="http://github.com/raganwald/homoiconic"homoiconic/a is appealing. In the past, I#8217;ve found it useful to have a dedicated place to dive deep into a particular topic of interest. This particular blog has always been too #8220;general interest#8221; to get highly technical./p
pOf course, I#8217;ll be a href="http://twitter.com/al3x"tweeting away/a. Over time, I#8217;m coming to realize what sort of messages I can communicate effectively via Twitter, and what sort I can#8217;t. Twitter works least well for me when I try to cram big arguments down to 140 characters. Every medium has its particular sweet spot for a writer, and I#8217;ve found that a combination of geeky humor, technical information-sharing, musical recommendations, and tidbits about my travels, drinking, and dining seem to make for the happiest followers on Twitter./p
h2The Next Few Months/h2
pThere are still friends who read this blog to hear about what#8217;s going on in my life./p
pIn about two weeks, I#8217;m getting married to a sweet, funny, smart, beautiful woman that I met while living here in the Bay Area thanks to a href="http://okcupid.com/"OkCupid/a. When we started dating, marriage was the furthest thing from my mind. True love will sneak up on you. Let it./p
pWe#8217;ll be wed at San Francisco City Hall on Friday, March 12th. That night, we#8217;ll celebrate over cocktails at a local restaurant with our friends and family. A couple of days later we get on a plane for Saint Lucia, where we#8217;ll spend a week in quiet paradise./p
pIn May, my then-wife and I will be moving to Portland, Oregon, where I#8217;ll continue to work for a href="http://twitter.com/"Twitter/a. Portland and the Pacific Northwest captured my heart and imagination in the time I#8217;ve spent there, and I#8217;m eager to get involved in the local community (tech and otherwise)./p
pAfter all that, who knows. Maybe by later this year I#8217;ll be ready to write here again. Maybe I#8217;ll be in midst of researching my next book, too heads-down to come back to blogging. I#8217;m not sure. But I thank you for having read this far, and I hope you#8217;ll be generous enough with your time to read again, someday./pimg src="http://feeds.feedburner.com/~r/al3x/~4/HOjPU8rkOKI" height="1" width="1"/
-
-
9:00
»
al3x
h1Good Things: Ubuntu and Android/h1
pThis is the second in a a href="http://al3x.net/2010/02/08/good-things.html"series of posts about good, nice things/a that I#8217;m enjoying in the world of technology. The a href="http://al3x.net/2010/02/10/thinkpad-x301.html"first post in the series/a was about Lenovo#8217;s ThinkPad X301 laptop, a solid alternative to the MacBook Air for those that don#8217;t mind running an alternative operating system./p
pThis post is all about running the a href="http://ubuntu.com/"Ubuntu/a Linux distribution on a laptop and using an Android phone. It#8217;s an experiment I did because:/p
ol
liI can. I was in the market for a personal laptop, and I had the opportunity to borrow a couple of Android phones./li
liI#8217;ve been interested in seeing what#8217;s on the other side of the fence from Apple territory for a while./li
liI#8217;m irritated at Apple#8217;s insistence on shipping closed products, and I wanted to see if I could live with open (albeit not completely open) alternatives to those products./li
/ol
h2Conclusion First/h2
pWhen it comes to touchy religious subjects like operating systems, I like to put my conclusion first so there#8217;s no confusion about the point I#8217;m trying to make./p
pThis time around, my point is this: if you don#8217;t like Apple#8217;s aesthetic, or if you#8217;re indifferent to it, there has never been a better time to try Linux on your desktop or laptop and Android on your mobile device. Ubuntu has taken Linux into the realm of real-world usability for laptops while offering myriad benefits for developers. Similarly, Android is growing by leaps and bounds, and if you last checked out an Android phone even six months ago, it#8217;s time to look again. I#8217;ve poked fun in the past, but the world of Linux-powered mobile devices is no joke today./p
pHowever, if you#8217;re a longtime Apple user like me, you#8217;ll probably want to stay where you are. I#8217;ve tried this experiment, but I#8217;m sticking with an Apple setup at work and at home. Both Android and Ubuntu have features that the iPhone OS and Mac OS X lack, respectively, but to a certain degree it#8217;s that willingness to cut features out that makes me comfortable with Apple products. To each his own./p
pEssentially, what#8217;s Good about all this is that there#8217;s real competition and real alternatives in the non-mainstream OS space for both laptops and smart phones for the first time in a long time. As a consumer or a developer, you#8217;re free to pick from some really great platforms. That#8217;s awesome./p
pHaving concluded, let#8217;s begin. Telling this story requires a bit of background./p
h2My Misspent Youth/h2
pThough I have a reputation for being a Mac guy, I#8217;ve actually spent a lot of time with Linux. Like, a ton of time. A terrifying amount of time./p
pI cut my teeth on a a href="http://www.everymac.com/systems/apple/mac_performa/stats/mac_performa_575.html"Performa 575/a. It wasn#8217;t the first computer I had ever used or programmed, but it was the first that lived in my room. I made that computer do things it probably never should have and learned a ton in the process. The Performa 575 was one of the very last Motorola 68k machines Apple made before it moved over to the a href="http://en.wikipedia.org/wiki/PowerPC"PowerPC/a architecture. Just as span class="caps"PPC/span machines have been left out in the cold after Apple#8217;s recent transition to Intel chips, so too were 68k machines like the Performa quickly obsoleted./p
pAs a broke teenager faced with the prospect of shelling out for a pricey new span class="caps"PPC/span Mac during Apple#8217;s dark ages between Mac OS 7 and Mac OS X 10.2, I sought alternatives. Around that time I had become friends with an irascible Polish kid who ran a a href="http://en.wikipedia.org/wiki/MUD"span class="caps"MUD/span/a out of his basement. Said kid#8217;s older brother was going to school for computer science, and had passed along an early version of the a href="http://www.slackware.com/"Slackware/a Linux distribution to his equally geek-inclined sibling. My friend showed me just enough of the peculiar world of span class="caps"UNIX/span to get my bearings, and I was hooked./p
pI got my hands on a cheap PC and stumbled my way through a Slackware install off of dozens of floppy disks. Then came a href="http://en.wikipedia.org/wiki/Red_Hat_Linux"RedHat/a, a href="http://en.wikipedia.org/wiki/Debian"Debian/a, a href="http://en.wikipedia.org/wiki/Gentoo_Linux"Gentoo/a, a href="http://en.wikipedia.org/wiki/SUSE_Linux_distributions"SuSE/a, and all the rest. I learned all the eccentricities and discrepancies of Linux in its many flavors. For all the frustration it brought, I found Linux captivating, even empowering. It felt like I was not only connecting with my computer, but with people all over the world who were crazy or foolish enough to use this rapidly evolving, cobbled-together operating system day-to-day./p
pI was lucky enough to attend one of a very few high schools in the country that could claim its own a href="http://en.wikipedia.org/wiki/Linux_user_group"Linux User Group/a (span class="caps"LUG/span). Spurred on by my friend a href="http://twitter.com/agfhome"Andrew/a, we participated in a href="http://installfest.org/"installfests/a, lobbied for an open source alternative to the Windows and Mac computer labs at our school, and generally made impossibly dorky trouble for ourselves and anyone who would listen. It was a brilliant experience./p
pI owe a lot of who I am today to that time, and I#8217;ve never forgotten it. I continued to participate in a span class="caps"LUG/span at the university I briefly attended, and I#8217;ve since donated my time to an installfest benefiting California schools at a recent a href="http://www.linuxworldexpo.com/"LinuxWorld conference/a here in San Francisco. All told, I#8217;ve done literally hundreds of Linux installs in my life./p
pAll this is to say that when I talk about Linux, it#8217;s not from an outsider#8217;s perspective. Though I#8217;ve cracked jokes about Linux and its warts in the past, I have a great affection for that community, their accomplishments, and their values. That#8217;s probably why I get the a href="http://al3x.net/2009/08/10/switching-season.html"periodic urge/a to go back to that world./p
h2Ubuntu Today/h2
pWhen I got my ThinkPad X301, I installed Ubuntu without hesitation. It#8217;s the distribution that#8217;s pushing desktop and laptop Linux forward most aggressively./p
pIn the past, running Linux on a laptop as your primary computer essentially meant kissing your time, sanity, and productivity goodbye. Today, it#8217;s so easy that it#8217;s almost disappointing for someone with an itch to dink around on the computer. The only thing that didn#8217;t work out of the box on my X301 was the built-in Verizon span class="caps"WWAN/span, and that#8217;s largely because the module#8217;s vendor doesn#8217;t (yet) provide an open driver. Still, there#8217;s a a href="http://www.codon.org.uk/~mjg59/gobi_loader/"community solution/a that#8217;s easy enough for a geek to install in about ten minutes. Once set up, the span class="caps"WWAN/span link is available from the same widget you use to manage wi-fi connections. Sensible./p
pOther than that relatively new bit of hardware, everything else worked. emEverything/em. Volume and brightness controls, wi-fi, Bluetooth, every little button and feature and gizmo. Once you#8217;re past the hardware setup, getting all the software you need is a few ttapt-get install/tts away, or use the handy Synaptic span class="caps"GUI/span to see what#8217;s available. If there#8217;s an app that seems like it should have been packaged up, it#8217;s probably in a a href="https://help.launchpad.net/Packaging/PPA"Personal Package Archive/a somewhere./p
pI put together an a href="http://docs.google.com/View?id=ajmh7zht8f5f_2d7b7qsd3"equivalency table/a for the Mac apps I use. There was a Ubuntu-friendly Linux counterpart for each and every one. Do those apps necessarily have the visual appeal of their Mac brethren? In most cases, no. But they#8217;re free and functional, and in some cases offered a more robust or compellingly alternative set of features. Things like persistent network volume mounts that are all but impossible in OS X are trivial on Linux today, and plenty reliable even on a laptop. There#8217;s a lot of power there, and it no longer requires the over-investment of time that it once did./p
pUbuntu is a damn impressive project. In contrast to Apple#8217;s institutional secrecy, Ubuntu operates completely in the open. Want to see everything they#8217;re planning for their next release? a href="https://wiki.ubuntu.com/LucidLynx"It#8217;s all online/a. Want a weekly newsletter of everything the Ubuntu team and community is doing? a href="https://wiki.ubuntu.com/UbuntuWeeklyNewsletter"It#8217;s right here/a, and may even be available in your local language thanks to volunteer translators. Ubuntu is transparent, friendly, and it works. What#8217;s more, they make it easy to a href="http://www.ubuntu.com/community/participate"get involved/a even if you don#8217;t have a lot of time to commit./p
pThis is, on the whole, a pretty rosy picture. The only dark cloud is that all this advancement in Linux on the desktop has arrived just as desktop computing is a href="http://al3x.net/2010/01/28/ipad.html"heading towards the exit/a. Fortunately, the Linux community has a href="http://en.wikipedia.org/wiki/Comparison_of_netbook-oriented_Linux_distributions"embraced netbooks something fierce/a, and is using that platform to explore alternative interfaces and computing models./p
pThen, of course, there#8217;s the dominant Linux #8220;distribution#8221; for the mobile world: Android./p
h2Android/h2
pI was able to borrow both an a href="http://en.wikipedia.org/wiki/HTC_Hero"span class="caps"HTC/span Hero/a and a a href="http://en.wikipedia.org/wiki/Nexus_One"Nexus One/a during my experiment with non-Apple portables. This lent a good perspective on the differences between Android devices, something that#8217;s both a strength and a weakness for the platform./p
pThe Hero, at this stage, is a bit like a first-generation iPhone in the Android world: a good bit slower than the latest devices, but still kicking. I found the Hero surprisingly usable, but its cramped form factor and odd back-button placement quickly wore thin. The phone strains a bit under the weight of multitasking, and I found myself killing apps daily via a third-party process monitoring app to get back some semblance of performance./p
pThe Nexus One, by contrast, is a sleek, smartly-designed, reasonably ergonomic phone that#8217;s competitive with the iPhone in build quality, non-unibody design aside. It is blazingly fast; the software responds quickly even when multitasking. And yes, the screen is as bright and brilliant as everyone says. The Nexus One is not the sort of plasticky embarrassment that most non-iPhone devices have become over the past several years./p
pThen, there#8217;s the software. The difference between Android 1.x and 2.x is noticeable. The Hero hasn#8217;t yet been updated, something that seems to be done if and when carriers and device manufacturers get around to it, to the great frustration of the Android user and developer community. To circumvent this delay, dozens of forums offer various remixes and mods of Android firmware, stitched together from various device/manufacturer distributions of the Android OS and sprinkled with the efforts of open source projects to offer the best blend of features, hardware support, widgets, and so forth. It makes the iPhone jailbreak community look staid and organized by comparison./p
pThe Nexus One, as Google#8217;s flagship device for the platform they#8217;re pushing forward, of course runs the latest and greatest version of the Android OS. What#8217;s interesting about the Nexus One is how little it does out of the box, clearly taking a cue from the iPhone (as it does in many areas of the user experience). Unlike the Hero, which is loaded up with a href="http://en.wikipedia.org/wiki/HTC_Sense"HTC#8217;s Sense interface/a and associated widgets and apps, the Nexus One has an unspoken but clear message for new users: emhead to the Android Market/em./p
pIf it#8217;s been a while since you used an Android phone, you#8217;ll be surprised at just how much is available in the Market. It#8217;s no App Store by the numbers, but you#8217;ll find Android versions of most of the apps offered up by household name brands and services like Yelp, Bank of America, and OpenTable. As I did when exploring Ubuntu, I put together an a href="http://docs.google.com/View?id=ajmh7zht8f5f_3dbdpf6xv"equivalency table/a of iPhone apps and their Android counterparts. I was pleasantly surprised at how many of the apps I use on the iPhone had Android ports. Where I couldn#8217;t find a port, there were reasonable alternatives, save in the area of creative applications like a href="http://www.generativemusic.com/"Bloom/a. Developers on iPhone seem to spend more time on visual polish, but Android developers seem to like packing in the features. It#8217;s all about community norms, and of course there are exceptions to those norms./p
pAndroid, at this juncture, is every bit as capable and robust a platform as the iPhone. As I said above, if you don#8217;t like Apple#8217;s aesthetic or approach, now#8217;s the time to jump ship. However, I#8217;m a big fan of Apple#8217;s aesthetic, and what I found while using the Hero and the Nexus One is that the Android workflow just doesn#8217;t jive with me. I found the multitasking and notification mechanisms distracting, and I prefer the iPhone#8217;s lack of any input other than multitouch. It#8217;s what the iPhone emdoesn#8217;t have/em that I find compelling, but that#8217;s just one perspective. If you#8217;re less than thrilled with your iPhone, give an Android device a shot./p
pWhile I don#8217;t anticipate carrying an Android device around, I#8217;m still interested in writing software for it. Android#8217;s span class="caps"JVM/span-alike software platform means that it#8217;s possible to develop in a host of different languages that have span class="caps"JVM/span implementations, languages like a href="http://code.google.com/p/jruby-for-android/"JRuby/a, a href="http://github.com/remvee/clj-android/"Clojure/a, and my personal favorite, a href="http://www.slideshare.net/michael.galpin/scala-on-your-phone"Scala/a. Tentatively, I#8217;ll be contributing to an Android implementation of a popular iPhone app, and hopefully in Scala. That#8217;s nice, and presently impossible on iPhone, where it#8217;s pretty much all Objective-C all the time (barring some clever hacks, workarounds, and outright duping of the App Store reviewers)./p
h2Good Times/h2
pHaving already concluded above, I#8217;ll simply say that it#8217;s an exciting time to be interested in portable and mobile computing. There are options for all sorts of users and developers, and those options are increasingly robust and competitive. As I#8217;m getting ready to publish this, even Microsoft is making a a href="http://www.engadget.com/2010/02/15/windows-phone-7-series-is-official-and-microsoft-is-playing-to/"respectable play/a for mobile hearts, minds, and wallets./p
pIn short, there#8217;s no reason to feel trapped by your current platform. Go out and explore. You may find that you like where you#8217;re at, but you#8217;ll definitely learn something about the creativity and diversity of the tech landscape if you look around./pimg src="http://feeds.feedburner.com/~r/al3x/~4/l9_N2khf_y8" height="1" width="1"/
-
-
9:00
»
al3x
h1Good Things: the Lenovo ThinkPad X301/h1
pThis is the first in a a href="http://al3x.net/2010/02/08/good-things.html"series of posts/a on good, nice things I#8217;ve come across lately in the world of tech. I#8217;m thinking of these posts as emcurmudgeon offsets/em./p
h2Background/h2
pLate last year, I took a long multi-city trip to Australia. As always, I hauled along the a href="http://en.wikipedia.org/wiki/MacBook_Pro"mid-2009 fifteen-inch MacBook Pro/a that a href="http://twitter.com/jobs"work/a provides for me, my sole machine for the past while. By the end of the trip, I was pretty burnt out on lugging around the 5.5 pound beast, and finally ready to violate one of my longstanding unwritten a href="http://al3x.net/2008/09/08/al3xs-rules-for-computing-happiness.html"rules for computing happiness/a: don#8217;t try to maintain multiple computers. The prospect of having a lightweight machine, one completely divorced from my work machine and the responsibilities it entails, was deeply appealing./p
h2The Failed Dell Mini 10v Experiment/h2
pMy first attempt at a travel-friendly personal machine was a a href="http://en.wikipedia.org/wiki/Dell_Inspiron_Mini_Series#Dell_Inspiron_Mini_10v"Dell Mini 10v/a. I had seen recommendation after recommendation for this particular machine, apparently the little netbook that could. Friends boasted of their success with a href="http://gizmodo.com/5389166/how-to-hackintosh-a-dell-mini-10v-into-the-ultimate-snow-leopard-netbook"hackintoshing/a the machine to run Mac OS X, or how well it ran a href="http://moblin.org/"various/a a href="http://www.canonical.com/projects/ubuntu/unr"netbook-optimized/a a href="http://www.jolicloud.com/"Linux distributions/a./p
pI ordered my Mini 10v for a great price from the a href="http://www.dell.com/outlet"Dell Outlet/a, a painless process. Upgrading its memory was not so painless, but half an hour later I had what I hoped would be the perfect ultraportable. Unfortunately, simple ergonomics doomed my Mini 10v. The keyboard and touchpad were just undersized and awkwardly-located enough to make the machine all but unusable for me. I simply couldn#8217;t use the thing for more than ten minutes without my hands cramping up and my eyes straining from the bitty screen./p
pSo went the machine to a friend-of-a-friend bitten by the netbook bug. Plenty of people have made the Mini 10v work for them, and I hope it#8217;s working out well for him./p
h2The MacBook Air/h2
pIn short order, I replaced the Mini 10v with a a href="http://en.wikipedia.org/wiki/MacBook_Air"MacBook Air/a. Having tried the cheaper #8220;span class="caps"DIY/span#8221; solution, the Air seemed like the obvious choice: pay a premium for a nice machine that Apple designed to be as travel-friendly as possible./p
pReviews of the Air really are true: it#8217;s an executive computer, for better and for worse. The Air shines when dashing out emails or documents on a cross-country flight. For anything much more intensive than that, it simply doesn#8217;t cut it. The screen is a bit too dim and unevenly backlit for graphics work. The 2GB span class="caps"RAM/span limit makes memory-intensive software development tasks difficult. The paper-thin body leaves little room for fans, so the Air will overheat if, say, you have it resting on a comforter while trying to watch a href="http://hulu.com/"Hulu/a in bed./p
pCombine those issues with my increasing wariness of Apple#8217;s politics, and after a couple of months I was left thinking that the Air just wasn#8217;t the right fit for me. Politics aside, the rest of Apple#8217;s portable lineup only gets heavier and bulkier after the Air. Even the 13quot; MacBook Pro is 4.5 pounds, a heifer once you#8217;re used the Air#8217;s feather-light weight. Where else to look for a light but reasonably powerful machine that will run something other than Windows reliably? There are plenty of MacBook Air competitors out there, but how many of them are worth it?/p
h2The ThinkPad X301/h2
pA a href="http://twitter.com/sroberts"friend/a encouraged me to look once again at Lenovo#8217;s a href="http://en.wikipedia.org/wiki/ThinkPad"ThinkPad/a lineup. While Lenovo#8217;s a href="http://en.wikipedia.org/wiki/IdeaPad"IdeaPad/a line is looking progressively and pleasantly more like MacBooks, they largely lack the power of their ThinkPad counterparts. Said friend loves his ThinkPad X200, but I can#8217;t work comfortably on anything less than a 13quot; display./p
pEnter the a href="http://shop.lenovo.com/us/notebooks/thinkpad/x-series/x301"ThinkPad X301/a, Lenovo#8217;s MacBook Air competitor. A bit pricey direct from the manufacturer, albeit comparable to the Air. I found one new on eBay for about $1400. The model I got lacks an optical drive, but then so did the Air; nothing lost there. It still has a 13quot; screen, still has an span class="caps"SSD/span, still gets good (4-ish hours) battery life under real-world load, and adds in a built-in Verizon span class="caps"WWAN/span card./p
pIn no way is the X301 as cleanly or elegantly designed as the MacBook Air. But that tradeoff has its advantages: the X301 has more ports, more choices for input (the usual TrackPoint #8220;eraser#8221; in addition to a multi-touch touchpad), and even a rather handy built-in light (I#8217;m not a big fan of Apple#8217;s light-up keyboards). The X301 also makes up for being slower in clock speed than the Air by taking twice as much span class="caps"RAM/span. The X301 feels faster than the Air even though it shouldn#8217;t. This could be due to the extra span class="caps"RAM/span, or it could be a matter of the software/OS./p
pThe screen isn#8217;t appreciably better than the Air#8217;s in terms of brightness, although it does look more consistent. The display isn#8217;t in a widescreen layout, though I#8217;ve found this to be preferable for some tasks. I#8217;m enjoying the ThinkPad#8217;s keyboard greatly, which has a wonderful tactility and finger-accommodating groove that Apple#8217;s current generation of #8220;chicklet#8221; keyboards lack. Never having to worry about whether or not I can get on wi-fi or if I remembered a span class="caps"WWAN/span dongle/card is a joy as well. All that with just slightly more weight than an Air, still light enough that I can forget it#8217;s on my shoulder./p
pI#8217;m certainly not ready to say that I#8217;ll never get another Mac portable. But for my particular set of needs/preferences in a travel-friendly laptop, the X301 seems ideal. It#8217;s a nice thing to have a viable alternative to the hegemony of Apple laptops, one that doesn#8217;t feel like a major compromise./p
h2Coming Up Next/h2
pIn my next post in this series, I#8217;ll talk about the OS and the software I#8217;m running on the X301, which has been a pleasant surprise./pimg src="http://feeds.feedburner.com/~r/al3x/~4/bjScP4eLykI" height="1" width="1"/
-
-
9:00
»
al3x
h1Good Things/h1
pIf you only started reading my blog in the last year or so, you might get the impression that I#8217;m pretty down on the tech industry. In that time, most of my popular posts have been complaints or criticisms on one topic or another: a href="http://al3x.net/2009/03/03/towards-better-technology-journalism.html"lousy tech journalism/a, a href="http://al3x.net/2009/04/04/reasoned-technical-discussion.html"the lack of reason in technical discussions on the Internet/a, a href="http://al3x.net/2009/10/04/so-youre-moving-to-san-francisco.html"issues with living and working in San Francisco/a, and most recently, a href="http://al3x.net/2010/01/28/ipad.html"questioning the politics of the iPad/a./p
pWhile friends probably wouldn#8217;t describe my personality as #8220;sunny#8221; or #8220;effervescent#8221;, I#8217;m actually not as doom-and-gloom as one might think given my posts here. I attribute this somewhat to the emYelp effect/em: you#8217;re most inclined to write a few impassioned paragraphs when you#8217;re pissed off. Everyone loves a good rant, after all, so those critical, argumentative posts tend to get linked to and passed around more than my usual output./p
pThough it#8217;s nice to have a readership, I worry about being known as a curmudgeon. So, over the next two months, I#8217;m only going to be writing about good techie things. Things I like. Things I#8217;m excited about. Because honestly, there#8217;s so much more in this industry that I#8217;m excited about than not, and I don#8217;t spend enough time sharing those things with an audience larger than my friends and coworkers. It#8217;s time to fix that./p
pThis series of positive posts will start this week, when I talk about some good things I came across while looking outside of the Apple computing landscape./p
pC#8217;mon, get happy, nerds./pimg src="http://feeds.feedburner.com/~r/al3x/~4/JNyiBLCC7lk" height="1" width="1"/
-
-
9:00
»
al3x
h1On the iPad/h1
pFor years, me and thousands of other techies have been wondering what comes after the Personal Computer as we#8217;ve known it. Yesterday, in Apple#8217;s a href="http://apple.com/ipad/"iPad/a, we caught a glimpse. If I had to pick one predominant emotion in reaction, it would be #8220;disturbed#8221;./p
pThe iPad is an attractive, thoughtfully designed, deeply cynical thing. It is a digital consumption machine. As a href="http://www.tbray.org/ongoing/When/201x/2010/01/27/iPad"Tim Bray/a and a href="http://createdigitalmusic.com/2010/01/27/how-a-great-product-can-be-bad-news-apple-ipad-and-the-closed-mac/" title="of Create Digital Music"Peter Kirn/a have pointed out, it#8217;s a device that does little to enable creativity. As just one component of several in a person#8217;s digital life, perhaps that#8217;s acceptable. It seems clear, though, that the ambitions for the iPad are far greater than being a full-color Kindle./p
pThe tragedy of the iPad is that it truly seems to offer a better model of computing for many people – perhaps the majority of people. Gone are the confusing concepts and metaphors of the last thirty years of computing. Gone is the ability to endlessly a href="http://mrgan.tumblr.com/post/357323170/free"tweak and twiddle/a towards no particular gain. The iPad is simple, straightforward, maintenance-free; everything that#8217;s been proven with the success of the iPhone, but more so./p
h2From iPhone to iPad/h2
pThe iPhone can, to some extent, be forgiven its closed nature. The mobile industry has not historically been comfortable with openness, and Apple didn#8217;t rock that boat when it released the iPhone. The iPhone was no more or less open than devices that preceded it, devices like those from Danger that required jumping similar bureaucratic hurdles to develop for./p
pThat the iPad is a closed system is harder to forgive. One of the foremost complaints about the iPhone has been Apple#8217;s iron fist when it comes to applications and the development direction of the platform. The iPad demonstrates that if Apple is listening to these complaints, they simply don#8217;t care. This is why I say that the iPad is a cynical thing: Apple can#8217;t – or won#8217;t – conceive of a future for personal computing that is both elegant and open, usable and free./p
pThe iPad was pitched by Steve Jobs yesterday as a response to netbooks. It is not a mobile device, per se. Rather, the iPad is competing with full-fledged (if small and ugly) computers capable of running arbitrary programs and operating systems. Play all the category games you want, but the iPad is a personal computer. Apple has decided that openness is not a quality that#8217;s necessary in a personal computer. That#8217;s disturbing./p
h2Tinkerer#8217;s Sunset/h2
pThe thing that bothers me most about the iPad is this: if I had an iPad rather than a real computer as a kid, I#8217;d never be a programmer today. I#8217;d never have had the ability to run whatever stupid, potentially harmful, hugely educational programs I could download or write. I wouldn#8217;t have been able to fire up ResEdit and edit out the Mac startup sound so I could tinker on the computer at all hours without waking my parents. The iPad may be a boon to traditional eduction, insofar as it allows for multimedia textbooks and such, but in its current form, it#8217;s a detriment to the sort of hacker culture that has propelled the digital economy./p
pPerhaps the iPad signals an end to the #8220;hacker era#8221; of digital history. Now that consumers and traditional media understand the digital world, maybe there#8217;s proportionally less need for freewheeling technological experimentation and platforms that allow for the same. Maybe the hypothetical mom a href="http://danieltenner.com/posts/0015-ipad-an-apple-for-mom.html"doesn#8217;t need a real computer/a. As long as real computers stick around for people who do need them, maybe there#8217;s no harm in that./p
pWherever we stand in digital history, the iPad leaves me with the feeling that Apple#8217;s interests and values going forward are deeply divergent from my own. There#8217;s nothing wrong with that; people make consumer decisions every day based on their values. If I don#8217;t like the product that the iPad turns out to be once released, I#8217;m free to simply not buy it. These things have a way of a href="http://cruftbox.com/blog/archives/001592.html#001592"evolving/a, and I won#8217;t preclude the possibility that Apple eventually addresses concerns about the openness of the device./p
pFor now, though, I remain disturbed. The future of personal computing that the iPad shows us is both seductive and dystopian. It#8217;s not a future I want to bring into my home./p
h2Postscript, January 29/h2
pHaving had a day to think this post over and receive some very thoughtful feedback, there are several things I#8217;d like to add while it#8217;s still relevant./p
pFirst off, my remark about not learning to program if I had an iPad wasn#8217;t intended to be a blanket statement about emany/em child not learning to program on the device. There are plenty of kids out there who are way smarter and more motivated than I was in my formative years, and I#8217;m sure they#8217;ll tinker no matter what obstacles are put in their way. The iPad could actually be a great platform for teaching kids to program if Apple decides to remove the artificial restrictions on running interpreted code on the iPad/iPhone OS./p
pWhich brings me to the point I was really trying to make: Apple#8217;s decision to make the iPad a closed device is an artificial one. It#8217;s been several years since I worked in security, but as best I understand, there#8217;s no practical technical reason why the iPad must be its particular flavor of closed in order to be usable and reliable. It#8217;s still possible to enforce sandboxing and resource limitations in an open system; it simply requires a different approach. As Christian Neukirchen a href="http://twitter.com/chneukirchen/status/8358945171"said on Twitter/a:/p
blockquote
p#8220;There is no reason why Apple couldn#8217;t allow enabling unapproved apps with a flag somewhere#8230; except for their greed and will to power.#8221;/p
/blockquote
pOr, as Adam Pash of Lifehacker a href="http://lifehacker.com/5458690/the-problem-with-the-apple-ipad"put it/a yesterday:/p
blockquote
p#8220;To say that #8216;either a device is user friendly or it#8217;s open#8217; is a false dichotomy.#8221;/p
/blockquote
pHonestly, as simple a step as Apple making iPhone/iPad span class="caps"SDK/span access free – along with its ability to install apps on the Apple devices you paid for – would be an acceptable first step towards openness. Let#8217;s do some clumsy math on this point. a href="http://en.wikipedia.org/wiki/App_Store"According to Wikipedia/a, there are currently around 140,000 apps in the App Store. Let#8217;s round up and say that each app is made by a different developer. So, at $99 per year per developer, that#8217;s $13,860,000 per year that Apple is making selling span class="caps"SDK/span access. For a company that just posted a net quarterly profit of $3.38 billion, I think it#8217;s safe to call the span class="caps"SDK/span money a drop in the bucket./p
pFurther, the argument that Apple has invested in the #8220;Open Web#8221; as an alternative free platform for their devices simply doesn#8217;t ring true to me. Talk to any non-geek iPhone user and you#8217;ll quickly realize that they have no idea that web apps can, for example, be saved to the home screen like regular apps. The general attitude, once they get used to the phone, is that if there isn#8217;t an app for it, it#8217;s not worth doing on the device. And why emwouldn#8217;t/em they have this impression? Apple#8217;s ad campaign isn#8217;t #8220;there#8217;s an app for that, and also the entire open web#8221;. For now, the web is an afterthought on these devices./p
pI#8217;ll close with this: if I didn#8217;t think the iPad was an important device, I wouldn#8217;t be bothering to criticize its politics. Like a href="http://stevenf.tumblr.com/post/359224392/i-need-to-talk-to-you-about-computers-ive-been"Steven Frank/a, I think this a new world, a new era, and I#8217;m not interested in hanging on to the past. Like a href="http://joehewitt.com/post/ipad/"Joe Hewitt/a, I#8217;m excited to develop for the iPad, and to use what others develop for it as well./p
pAs I said at the top of this post, I#8217;ve been waiting for years for what comes after the PC, and I truly believe that Apple has shown it to us. That#8217;s why it matters so crucially that this next leg of the computer revolution gets off on the right path, one that embraces openness rather than abhors it. We have the technology and the incentive to build the future of computing in an open way. The only reason not to is greed, laziness, and hubris./pimg src="http://feeds.feedburner.com/~r/al3x/~4/HUG2m59eUzQ" height="1" width="1"/