Category Archives: misc

Solid 2014

Two weeks ago, I had the chance to go to the inaugural O’Reilly Solid conference. Solid was billed as the Software / Hardware / Everywhere conference. The “Internet of Things” is a big buzzword right now, and I am glad that O’Reilly decided not to do an “Internet of Things” conference. There were plenty of “Internet of Things” exhibits and talks, to be sure, but the theme of the conference was bigger than that, and I think rightly so.

There is a lot going on in the hardware space, and Renee DiResta from O’Reilly Alphatech Ventures gave a good talk on hardware trends. The 2014 version of Mary Meeker’s Internet Trends report just came out, and I wonder if DiResta’s hardware trends will someday rise to similar stature. One of my favorite quotes from her talk: “software is eating the world, hardware gives it teeth”.

Changing the dynamics of working with hardware

The most important thing that is happening in hardware is that there is a lot of energy going into making it easy to design and fabricate physical things. This is true for electronic hardware but also for any product that has a physical embodiment.

Nadya Peek from the MIT Center for Bits and Atoms gave a talk on machine tools that can build machine tools. This is important because building and setting up machine tools is one of the critical path tasks in manufacturing physical objects. These tools could help cut the cycle time and cost for tooling. Also, in the spirit of the era, the designs for her machines are open source at http://mtm.cba.mit.edu/

Carl Bass, the CEO of Autodesk talked about how Autodesk took a step back and reimagined Autocad in the the modern world, against three principles:

  1. “Infinite computing” – treat computing power as if it were super cheap
  2. “Cloud based” – for collaboration and for delivery – you can get Autodesk Fusion 360 for $25/mo
  3. “Computational design” – put computing power to work to do parallel search / exploration of designs

The bottom line here is that anyone with $25/mo can have access to start of the art 3d CAD/CAM tools, based on the AutoCAD platform used by designers and engineers everywhere.

Microsoft did a live coding demo where they using an Intel Quark board to build a sound pressure meter. This was coupled with some very nice integration with Visual Studio. I’m not a big Microsoft/Intel fan for this space, but I think that this showed the potential for improving the toolchain and round trip experience for platforms like Arduino.

Julie bought our 11 year old a set of Littlebits as a way to get her some knowledge about electronics. She is a very hands on kind of learner and Littlebits seemed like a good vehicle for her. I didn’t do much homework on this because Julie did most of the research. So my impression of Littlebits was that it was sort of aimed at a kids education kind of space. Some of their marketing like “Lego for the iPad generation”, also gives that impression. Ayah Bdeir, the CEO of gave a great talk on LIttlebits and the vision of where it is going. The notion of making electronics very accessible, to the point where it can be viewed as just another material in someone’s creative toolbox, really resonated with the theme of Solid, and with our own angle on Littlebits. Littlebits is a great modular hardware platform that makes it easy to prototype electronics very rapidly, and it’s the first step in a longer journey of “materializing” electronics. It was a plus to be able to stop by the Littlebits booth and thank Ayah for Littlebits and the fact that I had to explain PWM to my 11 year old.

Vision

There were several talks which stood out because they painted a good picture of some things which are further out, but which appear to be obtainable given consistent application of product improvement and sufficient resources.

Neil Gershenfeld, the director of the MIT Center for Bits and Atoms, talked about fabrication as digital process. The key idea is that at the moment all the knowledge about fabrication is in the machinery doing the fabrication, not in the material being fabricated. He talked about what becomes possible when physical fabrication become more akin to programming.

Hiroshi Ishii from the MIT Tangible Media group talked about Tangible Bits (user interfaces based on direct manipulation of physical embodiments of bits) and Radical Atoms (materials that can change form based on digital information)

Ivan Poupyrev is now at Google but was a part of the Disney Research labs. He demonstrated several inventions from his time at Disney. Touche, which can turn lots of ordinary surface into touch sensitive input devices. He demonstrated a way to generate minute amounts of power locally without batteries, via rubbing pieces of paper together (as in turning the pages of a book). His final demo, Aireal, is a way of using puffs of air to create invisible haptic displays. The overall theme for all of these inventions was “How can we make the whole world interactive”?

Beth Comstock is the Chief Marketing Officer at GE. She talked about the fact that GE makes a huge range of machines of all kinds, and has experience with all kinds of materials and electronics. GE is looking ahead to taking those machines and enhancing them and the data that they produce via software. GE is a physical first company that is in the process of becoming digital, and leading us into a Brilliant Age. In this age:

  1. We’re going to have to learn to speak industrial machine – we need to be able to deal with the immense amount of data generated by sophisticated machines
  2. The Selfish Machine – machines will use data to introspect about their own performance and operation and alter their behavior, ask humans for help, or provide input for the design of the next generation
  3. The Selfless Machine – machines will be able to exchange data with each other to coordinate with other machines
  4. Machine Knock Down that Wall – machines will impact the process of making machines – rapid iteration of hardware design, open innovation processes

Robotics

In some ways, robotics is one of the culiminations of the software / hardware / everywhere mantra. There were lots of talks and exhibits on robotics at Solid. Here are 2 that stood out.

Rod Brooks is the founder of Rethink Robotics and a long time professor of robotics at MIT. I did some robotics as a grad student. Rod’s talk was a great way to get a small glimpse at the current state of the art. His company is doing some really interesting work in making industrial robots more flexible and easier to work with. One of the interesting points in his talk was that they are now working on ways to build robotic arms out of cheaper materials/hardware by leveraging more sophisticated software to compensate for the flaws of cheaper materials. At the end of his talk, he outlined for challenges for robotics:

  1. Visual object recognition on a par with a 2 year old
  2. The language capabilities (not vocabulary) of a 4 year old – noisy environments, grammer
  3. Dexterity of a 6 year old
  4. The social understanding (model of the world) of an 8 year old.

The other talk was Carin Meier’s robotic dance party. This one was purely selfish. My 13 year old is interested in space/robotics, so when Carin did a version of this keynote at OSCON, I showed my daughter the video. She ended up doing a school project on drones. As part of the way her school does projects, she needed to get an “expert”, so I gave her Carin’s email. That eventually resulted in some tweets. For Solid, Carin expanded the scope of the dancing and added some nice music control via Clojure’s overtone library. It was fun to find her afterwards and thank her in person for helping / inspiring my daughter.

Final Thoughts

The most motivational thing about Solid was a mix of ideas from Astro Teller’s talk about GoogleX, and a quote from Jeff Hammerbacher. Teller said (my paraphrase) “most of the world’s real problems are physical in nature, you can’t just solve them with software”. Hammerbacher is responsible for a quote that went around the internet back in 2011 that goes something like: “The best minds of my generation are thinking about how to make people click ads”. A lot of bright people have gone into software because the malleability of software and the internet means that you can make something and see the impact of it in a very short time. I’m excited to see progress in making hardware development more accessible and rapid. Perhaps that will lead to more bright minds finding ways to solve important physical world problems.

Clojure Conj 2011

Last week I was in Raleigh, attending the second Clojure/Conj. The last time that I attended a Lisp conference was the 1986 ACM Conference on Lisp and Functional Programming. I am a Lisp guy. I took the famed “Structure and Interpretation of Computer Programs” course from Sussman and Abelson. I spent some time doing undergraduate research on Symbolics Lisp Machines. When Apple invested some energy into Dylan, I hoped that I’d be able to use a Lisp on a personal computer. Java pretty much ruined that. Over the years, I pretty much gave up on the idea of being able to use Lisp for my day to day work. So much so, that when I first heard Rich Hickey talk about Clojure, my reaction going in was unenthusiastic. By the end of Rich’s talk, he had my attention. Clojure has been doing some growing up since then, and I really wanted to attend last year’s Clojure/Conj, but wasn’t able to.

Almost all of my conversations at the conference involved the questions, “Why are you at Clojure/Conj” and “How did you get interested in Clojure”. I’ve answered the second question in the previous paragraph. The question of “why” boils down to three themes: Clojure itself, Data, and Clojurescript. I’m going to use these threes theme to report on the conference talks.

Clojure itself
Clojure is a Lisp dialect that runs on the JVM and has great interoperability with existing Java code. It has great support for functional programming, as well as several innovative features for dealing with concurrency.

Stuart Sierra started off with a talk that pointed out areas where people could learn beyond the books and online exercises that are available. In each of those areas, he also proposed projects that people could work on. One of the things that stood out for me was his use of the Clojure reader to deal with Java Resources. I always found Resources to be annoying, and the use of the Reader is a clever way to make them more palatable and useful.

Clojail is a system for executing Clojure code in a sandbox. The system is quite flexible and the applications aren’t just limited to security. I can imagine using clojail to implement something like the Sponsors described in the original Actor model. Anthony Grimes, one of the committers for clojail gave the presentation. He is 17 years old.

One thing that made me happy was to see the bridge building between the Scala and Clojure communities. Phil Bagwell, who pioneered many of the persistent data structures in Clojure is now at Typesafe, the Scala company. He came and gave a nice talk about Scala’s parallel collection classes. Perhaps these classes will one day find their way into Clojure Daniel Spiewak gave a very solid presentation on the computer science behind the persistent data structures in Clojure.

At many conferences a talk like Clojure on Android would be at the higher end. The technical level of the talks at the Conj was high enough to make the task of getting Clojure on Android seem mundane. This is to take nothing away from the very impressive work that has been done. There are some issues remaining like footprint and startup time, but it looks like some effort is going to happen at the Clojure core team level to make some of this possible. The thought of talking to a REPL running on a phone, or tablet is a tasty one.

Rich Hickey’s keynote reminded me very much of a Guido keynote at PyCon: a discussion of language issues that he was looking at, and a solicitation for discussion. Rich was very careful to say that the stuff he was discussing was not a roadmap, so I’ll repeat that disclaimer. Here are some of the items that stood out to me. Plans to allow multiple builds of Clojure – a regular version, a leaner deployment version, a really lean Android version, a super deluxe development/debugging version and so on. There is discussion about allowing the reader to be extensible, in order to allow new data types to be round tripped. I didn’t follow the history of ClojureScript, so it was useful to see that Rich is pretty committed to this idea, and that bits of technology might even be flowing “backward” from the ClojureScript compiler into Clojure on the JVM. I was also very interested on Rich’s view that the use of a logic system like that in core.logic would be a far better tool than a traditional type system. More on the logic system below.

The last talk of the conference was Sam Aaron’s talk on Overtone, which is a computer music system written in Clojure. The major point was that he used Clojure to define a language for describing computer music, much in the sam way that sheet music describes regular music. There was lots of cool music along the way, including a pretty good simulation of the sound portion of the THX commercial that often plays before movies. The description of that commercial fit in a single projected screen of code.

Data

One thing that I’ve been looking at recently is exploratory environments for working with “federated” data. I’ve grown to dislike the term Big Data, because it’s come to mean almost nothing, however, the ship has already sailed on that one. Most people would be familiar with the idea of sitting down in front of their relational database SQL command prompts, and issuing ad-hoc queries. As the use of varied kinds of storage systems grows, we are losing that kind of interactive relationship with data. Some of the people in the Clojure community have built some interesting data systems, and Clojure is itself amenable to exploratory work with data, between it’s orientation around functional programming, and a development style oriented around a REPL.

David McNeil talked about Revelytix’s federated (among RDBMS and RDF triple store) SPARQL query engine. Their system uses s-expressions to represents the nodes in a graph of stream processing nodes. These expressions are then compiled down to a form that can be executed in parallel using the Java Fork/Join framework. The operators in the s-expessions are mirrors of built in Clojure sequence functions, and can use and be used in Clojure expressions. It’s not hard to imagine extending the set of federatable storage systems.

Heroku’s Mark McGranaghan talked about viewing logs data. What he really meant was viewing log data as akin to a native data type on Clojure and being able to use Clojure’s built in functions on log data in a natural way. Heroku has built a system call Pulse which takes this view. I particularly liked the small functions that he defined for expressing the intervals for recomputing statistics. It’s the cleanest formulation of that kind of thing that I’ve seen, and it’s enabled by his thesis view and Clojure.

Nathan Marz has been doing some great work at BackType and now Twitter. At StrangeLoop he open sourced Storm, a set of general primitives for doing realtime computation. At the Conj, he was talking about Cascalog, which is a Clojure DSL for Hadoop. Both Cascalog and Storm are in use at Twitter. Cascalog is inspired by Datalog and targets the same space as Pig. Cascalog has the full power of Clojure available to it, as well as the power of Datalog. It’s a little unclear to me exactly how much of Datalog is supported, but this is a powerful idea. Imagine combining the best of Cascalog and the Revelytix system. The source code to Marz’s examples is on Github.

Clojure has a logic programming library, core.logic which is based on the miniKanren system developed at Indiana University by Daniel Friedman, William Byrd, and Oleg Kiselyov. Ambrose Bonnaire-Sergeant presented an excellent tutorial on logic programming in general, and miniKanren in particular. David Nolen talked about predicate dispatching, a much more general way of doing method dispatch, and talked about his plans to tie that together with core.logic. The surprise highlight in this area was that Dan Friedman and William Byrd came to the conference and did a BOF on miniKanren and their constraint extensions to miniKanren. The BOF was surprisingly well attended (over 60 people), due in part to Ambrose’s excellent talk earlier that day. A key philosophical point about miniKanren is that there is a straight forward mechanical conversion from a functional program to logical/relational (miniKanren) program. This looks very promising, and it has me thinking about mashups of miniKanren (core.logic) and Datalog (cascalog). Professor Friedman and his students have done some very important work in the Scheme area over the years, and it was a great experience to meet him and spend some time over dinner. After dinner, we were sitting in the hotel lobby, and David Nolen was walking Friedman and Byrd through the implementation of core.logic, which was ported from the Scheme version of miniKanren, and then optimized for Clojure. There was a free flow of ideas back and forth, and it was a great example of a collaboration between academia and practice (it’s hard to say industry because Nolen and company are doing this in their free time). This is one of the things that I’ve always hoped for around open source, and it was nice to see such a concrete example. MiniKanren is described in Byrd’s PhD dissertation, and in the book “The Reasoned Schemer“.

ClojureScript

ClojureScript is a Clojure compiler which emits Javascript, which is then run though Google’s Closure compiler. I’ve been doing some prototyping work using Node.js and HTML/Javascript, so ClojureScript looks kind of interesting, particularly because it is good at some the data intensive stuff that Javascript is so laborious at. There were three ClojureScript sessions. Chris Houser took us on a deep dive of the compiler, Kevin Lynagh show us some basic applications of ClojureScript in the browser, and David Nolen did a BOF where he showed off the browser connected REPL for Javascript. ClojureScript is still in its infancy, but it’s interesting nonetheless. Once David gets the constraint version of core.logic working in ClojureScript, it should get a lot more interesting.

Community

The thing that stood out to me about the Clojure community was the presence of the “young Jedi”, Anthony Grimes, and Ambrose Bonnaire-Sergeant. Both of them were able to attend their first Clojure/Conj (Anthony’s was last year) due to fundraising campaign initiated by Chas Emerick. Anthony is 17, and Ambrose has not yet graduated from college. Both of them are lead developers on highly technical projects within the Clojure community, and both did a great job of speaking in front of 300+ people who were mostly older than them. When I worked at OSAF, I worked with Stuart Parmenter, who started working in open source when he was 14. It’s great to work with these young, very gifted people, and I love seeing the community welcome and make a space for them.

The flip side of this is that like many open source, programming language oriented conferences, there were very few women in attendance. Perhaps the Clojure community could take a page from the very successful work that my friend Sarah Allen has done on RailsBridge.

Learning More

O’Reilly has finally recanted and is doing a Lisp book. Clojure Programming should be done soon, and Manning has Clojure in Action and The Joy of Clojure. If you are looking for an interactive way of learning Clojure, there is Try Clojure. Those looking to sharpen their Clojure skills can look at the Clojure Koans and 4Clojure .

The speaker slides from the Clojure/Conj 2011 are available on GitHub.

Update: corrected the name of Indiana University – thanks to Lindsey Kuper

Update: linked to a more up to date Overtone repository – thanks to Sam Aaron

Thanks, Steve

Yesterday, Steve Jobs resigned as the CEO of Apple. This wasn’t really a surprise, because Steve has been sick for some time. Nonetheless, it was a shock to me, and judging by Twitter, to many other people.   

My history with computing goes back to the Apple II. The first computer that I ever wrote a program on was an Apple II, and an Apple II was the first computer I ever owned. It was in the days when nobody really knew if a personal computer was a practical notion at all. It’s easy to look at the myriad forms of “personal computers” that we use today, and forget that. Before I became interested in computers, I was going through serious interests or hobbies at the rate of one a year. I locked onto computers with a passion, one that was undivided until I took up photography several years ago. Apple, more than any other company, inspired me about computing – what computers might do for people, how they should work. I imbibed the Apple philosophy – I “bled six colors”.   

It was one of my childhood dreams to work at Apple, and I was fortunate to work on the Newton for two years. I was at Apple when Apple bought NeXT, and when Steve took over the company from the inside. When the Newton team had meetings with Steve (before he cancelled the project), I was amazed at how much sense he was making. The respect I had developed from afar turned into respect developed from actual experience. I felt that if anyone could fix Apple’s woes, Steve was the one to do it. I just didn’t believe that anyone was going to be able to do it, so I left. How glad I am that I was wrong.

For me, Apple has always been more than just a company that makes great products (because in those dark days, some of the products were quite bad). Apple has been the embodiment of a particular vision of how computers should be, and Steve Jobs was the person that drove that vision and inspired many in my generation to get interested in computing. No company or person can be perfect, and both Apple and Steve Jobs have easily identifiable flaws, but the vision that Apple represents has driven dramatic improvements in computing since 1977.

Thank you Steve for being the torch bearer, and for the impact that you’ve had on my life, and on the world.

iPad = Newton 3.0

On Saturday (iPad day), I had a brief twitter exchange with someone comparing the iPad to Newton 2.0. Of course, this was inaccurate, because the Newton Operating System actually reached version 2.1. But in spirit, at least to me, this was correct.

The User Experience

After playing with my iPad for a bit, I feel that it has captured some of the things that I envisioned in an ideal Newton experience. The form factor is right – we had had slate sized Newton prototypes that were never produced. The MessagePad 2000/2100, which you can see next to my iPad, was both too small and too large. The split between the iPhone and iPad form factors is closer to the right set of tradeoffs, at least for me. The achievements in hardware are impressive. The A4 powering the iPad can trace its lineage to the StrongARM powering the MessagePad 2xxx’s, and the ARM 6xx’s that powered the original Newton. The iPad is very responsive, much more so than my iPhone 3G or the MessagePad. That makes a huge contribution to the overall experience when you use the device. Performance is part of the user experience. Going back to the iPhone after using the iPad is a very frustrating experience. I hope that Apple will be announcing an A4 powered iPhone on Thursday. A4 and the rest of the hardware design have pushed iPad’s battery life over a key threshold. The 10-12 hour lifetimes being reported mean that the iPad should easily be able to run all day on a single battery charge. It also means that I can use the device all day without worrying about whether the battery is going to die on me. In contrast, if I am using wireless data on my iPhone, human power management is part of the user experience. Internet access is also part of the user experience. The iPad is significantly less valuable without a network connection – the Newton barely had any connectivity.

The Hardware

As happy as I am with the performance and the battery life, there are some aspects of the hardware that could be improved. The iPad screen has a glossy finish, a featured shared by my new work MacBook Pro and LED Cinema Display. Much as I love the way that photographs and colors render on these displays, the reflections and glare are problems that I haven’t been able to get over. I would have preferred a matte screen. The iPad casing is a machined single block of aluminum, again, like the MacBook Pro. I have no problems walking around carrying the MacBook Pro (at last with the display closed). When carrying the iPad in the halls in the office, I have this feeling that it might just slip out of my hand. The MessagePad 2000 series had a special rubberized paint (which was expensive) which made it easy to grip. It also had a fold over plastic cover for the screen. This version of the iPad really needs some kind of case to overcome these two issues.

The iPad has an issue when charging from non “high-power” USB ports. When attached to one of these ports, the iPad will only charge when it is asleep. If you charge your iPad overnight, this shouldn’t be a big issue, but it would have been nice to find this out from the Apple documentation rather than one of the Mac news sites.

The Software/Apps

The iPad software is largely like the iPhone software with some additional interface elements to deal with the larger screen. On the surface this just doesn’t seem like a big deal, but it is. The combination of the large screen and the performance, along with those new elements yields a much better experience. This is obvious if you run the iPhone only version of an application and then try the iPad version. In every case where I did this, I much preferred the iPad version. It is true that iPhone applications run just fine on the iPad, and that you can use pixel doubling to make them fill the full screen. But compared to a native iPad version, apps running in compatibility mode are a joke. This puts the truth to the idea that there is a new form factor in between the smart phone and the desktop/laptop. I know that in any place where I have WiFi, I will reach for the iPad instead of my iPhone. Going back to doing things on the iPhone after using the iPad seems like a kind of torture.

I wish that there were more iPad applications out there. Many of the ones that I use regularly have not been updated yet. Some of the applications that I like at the moment:

  • Evernote – this is my go-to note taker on the Mac, mostly because of the syncing to iPhone. The iPad version really takes advantage of the new form factor, and I’m looking forward to being able to use the iPad as a real replacement for a paper notebook.
  • Instapaper – I love Instapaper, and I’d definitely prefer to read my Instapaper articles on the iPad’s larger screen. My need for it has gone down a little bit because I signed up for Boingo in order to use WiFi on the ferry to work, so I have connectivity in many more of the situations when I would have used Instapaper
  • Goodreader – This is a big one. The e-reader that I want can show me my Manning MEAP editions, the research papers from the ACM Digital Library, and MIT PhD dissertations from 1978. That means it has to do PDF. Unfortunately, the iPad doesn’t come with a PDF reader built in, which seems nuts to me. Goodreader was only a dollar and seems to have more features that an iPad of Preview might, but still.
  • AccuWeather Cirrus – This is a flashy weather display program. It looks cool. And I love the little clock based UI for the hourly forecast. Yes, it’s eye candy.
  • MindNode – MindNode Pro on the Mac is my program of choice for Mind Mapping, and the iPad is great form factor for mindmapping, especially that stage where you are trying to organize jumbled up thoughts
  • Adobe Ideas – This is a cool little visual sketchbook application – I’m sure it will be good for doodling and quick napkin type sketches. For the heavy duty diagramming, I’m probably going to end up at OminGraffle.
  • The Elements – This is an “interactive” book rendition of the paper book “The Elements” which is about the periodic table. Thus far, this is the best example of what books could become on a device like the iPad. That said, I think that we are just at the beginning of what will be possible – we’re going to see a lot of exploration and experimentation in this area over the next several years, I am sure.

In my original post on the iPad, I was inspired by the UI interactions that I saw in iWork. Of the three programs in the suite, I’ve only downloaded Keynote. I am still impressed by the UI, but I am not impressed by the compatibility restrictions. When I imported my presentations from 2009, Keynote reported a number of problems. Some of the fonts that I used were not present on the iPad, but more importantly, Keynote stripped out all my speaker notes. I hope that Apple will be adding speaker note support in a future update. On the font side, it seems like it ought to be possible to package the needed fonts as part of the Keynote presentation itself. I’m less hopeful that this will happen since there is probably some legal restriction on the ability to “distribute” fonts in this way. Keynote and iWork also showcase an area which I am unhappy about, which is integration with the filesystem on the Mac (or PC, if you must). It is very annoying to have to use iTunes to manage the files that are going in and out of iWork. It’s even more annoying when you consider something like Dropbox. I’d really like to see Apple improve this part of the experience. At the moment it feels like a copy of the Newton Connection Kit, and unforunately, that’s not a compliment.

Many applications developers still haven’t finished their iPad versions. Here’s are some of the applications that I am still waiting for:

  • Either Tweetie or Echofon. I am using Twitterific at the moment, and it’s good, but on the iPhone, both Tweetie and Echofon are better. As in worth paying for better.
  • Dropbox
  • Facebook, Foursquare, and Yelp
  • Tripit
  • Meebo
  • Airsharing
  • Darkslide
  • Google Earth
  • Almost the entire Omni Group’s product line. Ok well really OmniOutliner and OmniFocus

The Omni apps are particularly important to me because they will be ports / companions of their desktop versions, which should make the iPad more usable for me in a work setting.

Open Issues

There are some other issues with the iPad which are getting a lot of discussion.

First there is the issue of freedom or openness, depending on where you come from. This has been beaten to death already. I would certainly prefer a more open ecosystem on the iPad, and I don’t think that there is an enormous amount that would need to change in order to satisfy me. After a few days of playing with a production iPad, I am convinced that this is an important device, and that the iPad is the first entrant in a mass market tablet space. I also believe that it is likely to be the most innovative because of Apple’s ability to integrate the hardware and software. There is plenty of room in the space for other players, and I believe that in the end Apple will need to make some concessions if they want to be the high volume player in the space.

The next issue is the “multitasking” issue. I remember the MacOS when there was no multitasking, then cooperative multitasking, and finally in OS X, true preemptive multitasking. At the end of the day, I want to be able to switch between multiple applications without them losing their context. I do use a few applications that could benefit from running in the background all the time, but that’s not a huge number. I would happily trade a hour of the iPad’s 10-12 hour battery life to get this capability. I am sure that the Apple team knows how to implement both the low level functionality needed as well as a good end user interface for this functionality. Multitasking is just a matter of time. It’s inevitable. Maybe it’s even tomorrow.

For those in the ebook side of the world, there’s a different sort of issue. I’ve heard several people pontificating about the difficulty and cost of creating / producing interactive books. As far as I can tell, the toolchain for this is non-existent. It looks to me that iLife includes many of the applications that someone might need in order to produce an interactive or multimedia book. Conventional wisdom used to be that it took a big movie studio to produce a decent movie. The advent of consumer HD cameras and the broadening availability of powerful computers and production is changing that. Expect the same thing to happen to interactive books.

It’s the beginning

I look at the iPad and I see the beginning of something. Even though it appears polished, I think that we have a lot more to learn about the form factor, size appropriate UI’s, the more intimate experience that tablets create, and other attributes of the platform. I for one, am looking forward to learning the lessons.

What I am going to do next…

On Monday morning I’ll be down in Burbank, CA at the Walt Disney Studios getting ears fitted for my new job. I’ll be working in the Disney Interactive Media Group as Director of Advanced Technology. The advanced technology group has a fairly broad scope, and a few of the things that we’ll be looking at include devices such as tablet computers / e-book readers, HTML5, and cloud computing fabrics. The world of media is being reshaped by technology, and I am excited to have the chance to help Disney navigate those changes.

The Disney Interactive Media Group is located in downtown Seattle, a few blocks from the ferry terminal. So after nine years of working at home, I’ll be going to work in a “normal” office setting. I had several work at home offers, but I have been feeling restless about working at home, so I’ve decided to shake things up a bit on that front. Seattle locals, I’d love to catch lunch or coffee with you.

Job Search Insights

One interesting part about looking for a job is that you end up talking to lots of people and companies. As I’ve been doing this, I’ve noticed some interesting patterns.

Companies

“Services” are more interesting than “pure software”. Many of the companies that I found most interesting were not creating software for distribution, but were creating or modifying software in the course of providing some other service. This is a trend that has been going on for some time, arguably since the arrival of the web, but for some reason, this stood out to me in a way that it hadn’t before.

Open Source

Open source has won, at least for the companies that I’ve talked to. Most of them were using infrastructure mostly based on open source software. Many had people contributing changes back to various open source projects. A few were looking to open source their internal software as a way of defraying development costs, increasing adoption, and/or many of the other known benefits of open source software.

There’s still some ways left to in terms of people understanding the world of open source software. Several interviewers thought that I worked for (as in got paid by) Apache. That’s probably partially LinkedIn’s fault, but it also shows that while people are eager to use open source software, they do so without an understanding of the nature and role of open source foundations.   

Nonetheless, I’m happy to see evidence that open source software is coming closer to being standard operating procedure.

Technologies

Of course it is always interesting to hear about the technologies that people are working with, especially if they have put them into production. Here are some technologies or areas which appeared often enough to be notable: Cassandra, Redis, Hadoop, mobile devices, good analytics, machine learning / prediction, and “cloud computing”.

Peopleware

I was definitely surprised by the number of companies, particularly startup companies, that were willing to take on a remote employee, especially given the state of the economy.

Process

I’ve accepted an offer for a job, and I’ll be writing about that tomorrow. For now, I’d like to say thank you to everyone who contacted me with a job opportunity. It’s nice to know that there are jobs out there, since much of what we hear about the economy is quite negative. Even more than that, I am grateful that people extended themselves to help someone (in this case me) in need.   

Thoughts on WWDC

Some thoughts on yesterday’s announcements:

MacBook Pros

The laptop refresh was a surprise to me. I wasn’t expecting anything until Intel’s Nehalem based laptop CPU’s and chipsets hit the market late summer or early fall. The basics of the machines haven’t improved that much, and won’t until that happens. I’m wary of the unibody built in battery – I had to have my MacBook Pro batteries replaced recently, and the built-in battery would make that a lot harder. As a photographer, I like the wider color gamut of the LCD, but I don’t like the glossy finish. I also find there replacement of the ExpressCard slot with an SD card slot odd. It would have been more “Pro” to at least use a Compact Flash slot.   

In any case, I’m not in the market for a new laptop, so the minor changes and the nice price reduction don’t mean much to me at the moment.

Snow Leopard

Snow Leopard, on the other hand, is of great interest to me now that my primary box is a Mac Pro. I’m eager to have OS X taking better advantage of the all the hardware threads in the box. I was disappointed that there wasn’t more discussion of this in the keynote, but I also understand that having more than 2 cores is still a bit out there. I’m also disappointed that there was no mention of ZFS in either the workstation or server editions of Snow Leopard.

I guess that Snow Leopard is not as ready as many people (including me) thought. It won’t be shipping until September. Apple has taken a very reasonable approach to pricing the upgrade. The biggest issue for me is that I’ve been having problems with 10.5.7. I uninstalled it from the MacPro, and my work laptop wigged out on me last week during JavaOne, and I am very suspicious that the problems are 10.5.7 related. Jeffrey Zeldman is chronicling his own set of problems with the update. It’s going to be a long time between now and September if Apple doesn’t sort this out.

iPhone 3.0

The iPhone 3.0 stuff was pretty much a rehash of what was previewed back in March. The only surprise was the “Find My iPhone” feature, which really ought to be a standard feature. I’m not sure if I’m going to buy MobileMe just to get this ability. Everybody is going to get an upgrade to this version of the software so there’s nothing but happiness all around.

What’s not so happy is that some of the features will be unavailable because AT&T isn’t ready to support them: MMS and Tethering. I’m not really sure that I would actually use the MMS. I do most of my picture sharing via Twitter or Facebook. I am pretty sure that I would use tethering, either when riding the ferry or when traveling for work. However, if AT&T adds another $30 a month for the privilege, I probably won’t do it. I can get a Boingo account form $10 a month. True that it won’t work everywhere, but it will work on the ferry and in major airports. Does AT&T really think that we don’t know how to comparison shop?

iPhone 3GS

The iPhone 3GS is a nice upgrade. I’d be happy with the speed, but I’m going to get a speed increase (supposedly) from the iPhone 3.0 software. Faster 3G data would also be nice. The battery life improvements don’t cover the 3G radio usage, which is how I pound my iPhone.   

There are two features which really stand out to me: the compass and the camera.

I travel a lot, and I get mixed up a lot. Having the compass to help decipher directions would really be a help to me. I can think of several occasions in the last 6 months, where I could have saved some aggravation if I knew what direction I was pointed in.

The improvements to the camera look really good. Chase Jarvis is calling it the photographer’s iPhone, which is pretty much a no brainer. There was no mention of speeding up the amount of time it takes to get the camera to come on, which is one of my biggest gripes with it. Is it really a decisive moment camera? No way. But it looks like it is a much better camera than what we have now. I could probably justify $199 to upgrade my 16G iPhone 3G – it’d be a lot cheaper than a camera.

Unfortunately, I’m not going to get to do that. At least not until December 2009, due to the subsidized pricing of the iPhone. Lots of people are complaining about this, but that’s the way that the carriers have always worked. It’s not something new, in fact, its a sign that AT&T has a little more pull on Apple that we thought. So I’ll be waiting at least until December. The problem is that if I wait till December, I’m only 6 months away from the next iPhone product launch (if they keep to the current schedule), and as TechCrunch points out, if Apple lets its exclusive contract with AT&T expire in 2010, then you’d actually have carrier choice. That would be a good thing, and since getting onto Verizon’s huge network can only help iPhone sales, I’d bet that the iPhone is on Verizon in 2010. That’s not an impossible thing. Verizon made its first appearance ever at JavaOne this year, a sign that things are starting to change over there. I guess I’m going to wait and see how AT&T treats me between now and then. But they should be painfully aware that people are buying the iPhone, not the carrier.

Sun Folks on the loose: Sara Dornsife

Crack marketing person Sara Dornsife is looking for a new position. But I bet she won’t be.

I’ve known Sara for several years. I think that we first met at an ApacheCon, but we kept running into each other at various open source conferences. She has done a great job of learning what is important to a particular community (take the open source community as an example), and then figuring out how do something that is both good for the community and for the company. Before I came to Sun, she was definitely on my list of “Sun people that really get open source”. Sara is also a leader using social media technologies to change how marketing is done, and she’s been nominated by Austin’s American Statesman for the Texas Social Media Awards. The bottom line on Sara is this: before Thursday, if you were an open source company or a company whose business plan relied on building and engaging a community, I would have said that you ought to pay very careful attention to what Sara’s been doing. Now, you can just plain hire her.

Sara has a profile on LinkedIn, and a new blog.

Retry: Dynamic Languages for Desktop Apps

Apparently, I wasn’t very clear in my previous post, because almost all of the commenters seem to think that I was talking about using a dynamic language to script parts of a desktop application. That’s not at all what I mean. I think that it will be a success point when a dynamic language (I don’t care which one) is used to write a substantial portion of a desktop application that enjoys reasonably widespread success/distribution. I used Lightroom as my example because that’s the kind of application that is the target. While 63% of the code written by the Lightroom team is in Lua, only around 40% of all the code in the application is written in Lua. I am looking for a much higher percentage. I don’t have quibble with Lightroom’s percentages, because it’s very sensible for Adobe to reuse their C/C++ code for RAW processing etc, and there’s no commercial justification for even trying to rewrite that code in Lua.

We already know that dynamic language interpreters can be embedded in applications. That’s been happening for years and years. But since we are starting to see progress in the performance of dynamic language runtimes, it should be possible to write really good desktop applications using them.