“Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java’s features, suitable for building self-contained applications.”

Avian | About

4 notes

This post was reblogged from implicit.ly.

Vaio Pro, for programming

My ThinkPad x201 served me well for two and a half years, with its barnstorming speed, small footprint, and long battery life. It’s also heavy as a brick and about as thick, at least compared to the standard set by the Air and newer PC ultrabooks.

My work laptop for a year now has been a ThinkPad X1 Carbon, a remarkable piece of work by Lenovo after so many years of ThinkPad design stagnation. You can’t really say anything bad about the Carbon hardware — except that with a 14” screen its footprint is bigger than what I want in a personal laptop. The legendary 12” PowerBook spoiled me for life.

So I was looking at smaller ultrabooks and was very nearly tempted to buy the Dell XPS 13, a nicely made and practical system. But I hesitated. Would I regret not having a touchscreen in a year? Was it small enough? I dithered until the Haswell architecture was announced, and then I was glad I did.

I don’t really follow computing hardware news unless I’m shopping for computing hardware, so I only know that Haswell is supposed to be a “game changer” in battery life. It does seem to be that.

Vaio in use

I ordered a black Vaio Pro 11” with an i7, which is a custom build so I had plenty of time to anticipate its arrival. FedEx generously delivered it on July 5th, giving me a long weekend to shove Ubuntu onto it. More on that in a bit.

First, the hardware. This is easily the lightest computer I’ve picked up. The impression you have in handling it is that there is no battery at all.

It is a plastic case as I prefer, but it’s a very different feel than the X1 Carbon. Sharp edges, glossy plastic. It reminds me of high-end 1990s electronics, which makes sense given it’s a Sony. It’s not a bad case at all, but it doesn’t feel as solid and precisely made and classy as the X1.

The keyboard takes some getting used to. It’s chicklet style with short travel and high resistance. It’s very different from the x201’s old school (and good) keyboard, and the X1’s MacBookish chicklet keyboard. This one is weird. But it’s a keyboard, I don’t fuss over them, I adapt.

The trackpad is not bad at all. It’s a little less supple than the X1’s but a hundred times better than the X201’s and every other crap trackpad that laptops used to be equipped with. (And unlike the X1, I didn’t have to fiddle with synaptics to get it not to jitter like a cokehead in Ubuntu.)

The Vaio’s display is higher resolution than the X1’s at a much smaller size, 1,920 x 1,080 in 11.6” diagonal. Its video output port is HDMI, for some reason. So I bought a VGA adapter for presentations, I just have to remember to bring it since everyone else is on Mini DisplayPort.

There’s a fan that comes on if I put the i7 to work. Wrrr.

Okay enough about hardware, I want to talk about Windows 8.

Windows 8 is the most impressive development in software in years. It is actually really, really cool and everybody should respect Microsoft for making it. It is wayyyyy bolder and more interesting than what anyone else has done in “desktop” interfaces lately. I’m not even kidding.

Using the touchscreen with Windows 8 is a first-class phone/tablet experience. Tapping, swiping, all that stuff produces smooth animations and, you know, delight. You forget you’re using a “computer”, it’s like you have a fancy tablet held up by a hinged stand with buttons on it.

It was cool. I could see myself using it. I could see myself using Internet Explorer and Bing with it. SERIOUSLY.

Except, you know, Windows. I can’t do it. I can’t do Windows, I can’t do Mac OS X, I can’t do anything that doesn’t come with a supported open source packaging tool so I can have a controllable and uniform development environment across all my systems for the rest of my life.

And as you’ve probably heard, experienced Windows users theselves feel like aliens using Windows 8. The interface for legacy Windows apps is really pretty degraded. I repeatedly had difficulty performing simple tasks like scrolling through selection lists, and I’m not that stupid. Microsoft broke some stuff.

Still I think they made the right decision, hands down. If I were a Windows person I would complain about how badly the legacy interface behaves, but I would actually use and benefit from the new interface too. It’s the future, get used to it.

Getting Ubuntu installed on the Vaio Pro is an epic, at present. I butted my head into the wall for a while before finding this blog post that tells you how to do everything. Not only do you have to install a development version of Ubuntu„ you get to compile your own patched kernel! And more!

It’s a lot, but I actually feel lucky that everything worked in the end. I’ve recklessly bought new model laptops in the past only to find that the wifi could not be made to work reliably in Ubuntu for many months. Things are getting a lot better, in terms of Linux compatibility, mostly thanks to Intel. Yay Intel.

Unfortunately Windows 8 was a casualty of one my late night Ubuntu installation binges. I deleted it completely by accident. It’s sad because I was planning on playing around with 8 a bit more, and demoing it to people like me who forgot about Windows. Oh well.

Ubuntu runs well on this machine, with one caveat: the high DPI screen makes Unity feel clunky and ancient. Kind of like legacy mode in Windows 8, except it’s all you’ve got. I hadn’t anticipated this and am slightly bummed about it.

I’ve bumped up font sizes all over the place, but still some UI elements are stubbornly tiny. Chromium’s tab bar is a ridiculously thin strip. And my precious touchscreen: useless. I mean, it works, but you wouldn’t use it for anything. Compared to how it performed with Windows 8, it’s like my Vaio lost a secret talent it had. I want to flick out that panel from the side of the screen!

I feel sorry for Unity, and GNOME, KDE, and everybody actually. These are dead-end interfaces. Microsoft of all companies has brought the future here. Laptops will be with us for a while but a laptop without a good touch interface is going to feel like half a laptop.

Mac OS X at least has resolution independence, but that’s just putting the WIMP interface on life support. Windows 8 did the painful, right thing, and you will see Apple follow soon enough. Canonical should do the same with Ubuntu Touch. It’s going to take that or some other hybridization with Android, or Tizen, or Chrome OS — but you have to walk away from years of work on GNOME. Some upstart distribution might do it first and dethrone Ubuntu.

Anyway, none of that matters as far as comparing this to any other laptop. It has a touchscreen, lying in wait until I again have software that puts it to good use. With some fiddling I can read everything on the screen, it’s just not always pretty or easy.

So how about it, X1 Carbon vs. Vaio Pro 11? For my home machine I have no regrets with the Vaio, it’s the size I want and there’s no ThinkPad in the same ballpark. Despite its impossibly light weight it lasts longer on battery than the Carbon. Neither machine has unsolvable issues with Ubuntu, but on the ThinkPad you can install a stock 13.04 while the Sony requires all sorts of gymnastics (for now).

If you aren’t a tiny laptop addict, you should probably go for the Carbon. It’s super solid, respectable, has a straightforward Ubuntu install, and a big screen with a traditional pixel density. The battery life is okay, not remarkable. It recharges fast.

Lenovo takes their sweet time but they’ll probably have a Haswell X1 Carbon with better battery characteristics by the end of the summer. And some day/year they’ll surely equip their small-footprint ThinkPads with a modern, Carbon-type case. You’ll hear about it all over the programmer internet.

But the Vaio Pro is already of that next generation of computers. Riding the bleeding edge of Linux in exchange for a devilishly small and light machine sounds like a faustian bargain, but so far my soul is intact.

1 note

Vaio Pro 11 first impressions

12 notes

Scala in 2007 - 2013

One of the highights of this year’s Scala Days, for me, was Shadaj Laddad’s talk on Fun Programming in Scala. His unabashed love of programming reminds me why I started to learn it myself, at a later age when I had saved up enough money to buy a C++ development environment. Today anyone can download compilers for free, for any programming language. To be honest, I’m jealous of kids who now get to learn Scala as a first language.

I was surprised and proud to see how enthusiastically Shadaj was using giter8 to efficiently create new projects. When I made giter8 I was mostly inspired by the automation, efficiency, and evident pleasure that Ruby programmers took in automating mundane tasks like making a new CRUD website.

I’d tried to do the same with Java tool-chains in the past, mostly Maven’s archetypes, but found them to be over-architected, and under-designed for creation and maintenance. To eliminate grunt work for the end user you had to do about 10x the grunt work as an author, not exactly a formula for success in the unmarket of free software.


The other cool thing about giter8’s appearance in Shadaj’s talk is it lifted my spirits a bit from what I’d been hearing about the morning’s keynote, which I hadn’t seen. Apparently Rod Johnson, Spring Framework author and recent dependency injected to the Typesafe board, had used Dispatch (my first Scala software project and one of my proudest creations) as an example of what not to do in Scala.

I wasn’t going to watch the talk myself or write about it. It was the same old criticism of an old version of Dispatch, a programming style argument that never interested me and was ultimately easier to leave behind.

But after the videos were posted, inevitably, more of my colleagues saw the talk, and talked about the talk. Friends spoke up for me, and for Dispatch. I started to imagine that the criticism was very harsh, that it was personal, that it was something I should worry about. So yesterday, I watched Scala in 2018.

Johnson doesn’t speak in the sneering tone I’d imagined. There’s no emotion, no blood at all. His criticism of Dispatch isn’t cutting, it’s very general. Dispatch and libraries like it, he informs the audience, simply should not exist.

I have to say I was surprised when finally watching the video just how flatly Johnson ignores the fact that Dispatch was completely rewritten over a year ago. There is no point in listing the differences; they are many and self-evident. I invite you to watch the "Dispatch" portion of the talk with the Dispatch home page open in another window, and see for yourself.

I’ve given a few talks and I know the work that goes into every beat. It’s time consuming; many hours of work go into a one-hour talk of any quality. So it’s astonishing to me that a fundamental error in one of the longer chunks of the talk, and which is used to support one of its primary themes, survived Johnson’s own review of his notes. Whether Dispatch is, still, a wrapper for Apache HttpClient, with dozens of symbols that cause right-thinking enterprise developers to blush politely — these are facts you can check in ten seconds.

Further, you might expect a secondary review by someone more familiar with the Scala community, when a keynote puts its critical focus on that community. It’s how you avoid these kinds of blunders, and how you later avoid having to say, “stop talking about my blunders and instead please discuss my important message.” (We’ll get to that.)

But for the record, if anybody is weirdly still interested in the full story of the Dispatch rewrite that I completed early last year, I wrote a series of posts about it. If not, that’s great! Neither am I.

The road to perdition

Johnson makes his thesis plain. In five years he hopes Scala is a leading programming language for traditional enterprise apps. He doesn’t have the same hope for startups. Or for front-end (web?) programming. This stated goal is the motivation for his criticism of some Scala libraries and of the ways that some people participate in the Scala community. He projects a series of beliefs and behaviors onto the community using the trusty myth list formula.

One must imagine all the hard core Scala programmers champing at the bit, or champing like that doctor zombie in the B wing of the W.H.O., to debate these “myths”. But before tearing through the glass, it’s important to ask yourself: do I want to be where Rod Johnson wants me to want to be in five years? Do I want Scala to be less popular in startups, more popular in traditional enterprise settings?

For me, debating how to get there would be like arguing over the fastest route to the gulag. If that’s where this bus is headed I don’t particularly care how it gets there, I just want off.

Luckily, that’s not where the bus is headed, at all. Johnson greatly overreaches in discounting the use of Scala in startups, allowing only that some startups may experience a “Twitter scenario” where they are successful and have to scale.

Like many things in this talk that is purportedly about the next five years, the “Twitter scenario” is from five years ago. Today there’s no shortage of startups using Scala from the beginning, in New York and elsewhere. You don’t have to look any further than the list of sponsors for Scala Days to see some of them. There’s no reason to think, and less reason to hope, that Scala’s popularity in startups won’t continue.

Aside from that, if you value a healthy open source community for its own sake, you might want that as a target. If you value projects that do something creative, cool, beautiful, or clever, you might want to list that. If you want Scala to be used as a teaching language in public schools, you set it as a goal for 2018.

In other words, you might want some things for Scala that are outside your immediate career interests.

Alternative mythologies

Suffice to say that my hopes for Scala are very different from Johnson’s, and so would produce a very different set of guidelines. Or perhaps, none at all: it’s your day off, your computer, your electricity — do what you want.

I’m not going through the whole values exercise here, so I’ll end with this thought: when I escaped Java five years ago it wasn’t entirely, or even mostly, about the language. I was stifled and utterly uninspired by the Java Community — the same one Johnson puts up as a stretch goal for Scala programmers.

I don’t feel there is a Java community so much as there is a Java audience, in the sway of one “thought leader” after another, chasing one magic bullet after another, always one enterprise software purchase away from the ultimate salvation of not having to program.

But there are many programming language communities where individual freedom of expression is prized, where experimenters are praised for their successes and their failures, where we all thank our lucky stars we live in an era where programming exists and we can do all we want for free. For me Scala is one of these languages.

Having seen a few other talks that same morning, I don’t worry about our future in the slightest.

1 note
completeme is a python script to auto-complete filenames in a given directory, much like Github’s ‘t’ keyboard shortcut or Command-T in TextMate or SublimeText. When you’ve settled on the file you’d like to edit, press “Enter” to open it with whatever’s in your $EDITOR variable or press “Tab” to drop that filename at the end of your current command!”

mattspitz/completeme · GitHub

1 note

This post was reblogged from implicit.ly.

Page 2 of 49