Stuff tagged "hackers"
Posted by Antonio
4 days, 21 hours ago (March 7, 2010)
It is a mystery to me how the hobbyist hacker community can make Android so much better than the stock images that Google ships, but if you've got a Nexus one, Cyanogen has just made things much much better. As an iPhone owner from day 1, I can tell you that the simple fact of moving from the stock 2.1 image that comes with your Nexus to the latest Cyanogen creates about the same feeling of improvement that moving from an iPhone 3G to a 3GS provided— except that in this case, you aren't changing your hardware. It is software's true magic!
If you've got a Nexus One, and are interested, read on.
Unfortunately, the process is far from simple and the Android mod community has a lot of new jargon that you have to get used to. If you've ever jailbroken an iPhone or iPod Touch, I'd say this is about 30-50% more involved, so get ready to rumble.
Fortunately, I had the benefit of Eddie's amazingly good notes to guide me through it all. I am reproducing them below, along with a mini glossary at the front, and some comments in places that I found tricky. Your mileage may vary on these, and be aware that you could in theory brick (or destroy) your phone, though practically speaking, I've found this to be almost impossible to do with how well the boot loading sequence has been thought out on Android.
--
Some basic terms:
In Android land, the equivalent of jailbreaking is "rooting" which refers to getting access to the root directory of the phone's ROM (which is not really Read Only since both Google/HTC and you overwrite this with every update). In the steps below, you will be using a command line program called "fastboot" to do the unlocking on that root directory and install custom software. Fastboot is also the name of a mode in the Nexus when you first boot up (it is actually available to all Android phones) that gives you a sort of minimalist OS/boot loader thing to take actions that affect the OS in the phone. It's not quite like a PC BIOS menu, but it can be helpful to think of it that way. Below you'll see the key combination required to get the phone to that which can vary a little by model.
Also, there are three basic software bundles you will be applying after the phone is "rooted:" the recovery image which basically provides a more powerful fastboot environment (to do things like unlocking and backing up), the baseband update (which is just like the iPhone one is that it updates the separate system that runs the radio), and the Cyanogen custom ROM which is the magic that will make your Nexus instantly better.
There is an additional step required which has to do with the crappy licensing around the proprietary Google apps (that you will definitely want on: Market, Gmail, Maps, etc.). Because Google asked the Cyanogen guy to stop including those with his mods, you'll have to apply them as a sort of patch when you are done. This is ok and is actually the easiest part of the update.
We did all of this on a Mac and the instructions below are for that platform— however, I am sure the Android SDK is good enough that it will be a relatively simple exercise to transpose the instructions for Linux and Windows. We did assume however that you are comfortable with the command line.
Finally one important note: in doing this, you will lose all of the data on the phone. Because of Google's phenomenal sync, this won't affect email, contacts, or calendars, and because the media (pictures) are stored on the SD card, you will be fine there, but depending on which apps you've installed, you may lose some local data. You will also have to reinstall all of your apps. You have been warned.
Let's get started:
1. Take a deep breath. It is just software and you are going to master it!
2. Download and install the Mac OSX Android SDK. I am going to assume for the purposes of this list that you have put it in /Applications/android-sdk-mac_86/tools/ but it doesn't matter.
3. Get fastboot-mac from here. Rename it 'fastboot' and put it in /Applications/android-sdk-mac_86/tools/.
4. Get Radio_20100203_2_Signed_PASSION.img,
update-cm-5.0.4.1-N1-signed.zip AND gapps-passion-ERE36B-2-signed.zip
from here and put them in /Applications/android-sdk-mac_86/tools/.
5. Get recovery-RA-nexus-v1.6.2.img from here and put it in /Applications/android-sdk-mac_86/tools/
6. Put Get Radio_20100203_2_Signed_PASSION.img,
update-cm-5.0.4.1-N1-signed.zip and gapps-passion-ERE36B-2-signed.zip
on the root of the SD card. You can do this by mounting the phone via a USB cable (this works just like any USB stick except you have to click a button on the phone's UI).
7. In your phone settings > applications > development, set usb
debugging to enabled.
8. Turn off your phone and put the SD card with the 3 files on it
into your phone.
9. Hook up the USB connection to your phone and your mac.
10. Reboot phone into fastboot: Hold down trackball, push the power
button and hold both until you see the fastboot screen. (The fastboot
screen is the one with the Androids on skateboards)
11. In Terminal on your mac, cd to /Applications/android-sdk_mac_86/tools
12. Type ‘./fastboot devices‘ to make sure your phone is recognized
(it should list a device number rather than simply returning to
command prompt with no feedback).
13. Type ‘./fastboot oem unlock‘ to unlock the bootloader (wohoo, your phone is now rooted!)
14. Use volume keys on the phone to navigate to yes and press the
power button to confirm.
15. When the phone finishes booting, in your phone settings >
applications > development, set usb debugging to enabled, then power
it down.
16. Reboot phone into fastboot: Hold down trackball, push the power
button and hold both until you see the fastboot screen. (The fastboot
screen is the one with the Androids on skateboards)
17. (you're still in terminal in /Applications/android-sdk_mac_86/tools)
Type ‘./fastboot flash recovery ./recovery-RA-nexus-v1.6.2.img‘. (Note
filename will change as recovery image is updated)
18. Type './fastboot flash radio ./Radio_20100203_2_Signed_PASSION.img'
to also update your radio at this point
19. Once the Recovery flash is complete (should be almost instant),
press the Power Button. The highlighted blue text should now say
HBOOT. Use the volume down button to highlight "Recovery" and hit the
power button to reboot into recovery.
20. if this step fails, power down the phone, and try this: hold down
the VOLUME DOWN button and then hold the POWER button until you get to
the skateboard screen; use volume down to highlight RECOVERY and hit
the POWER button
21. You should now be in the Recovery screen after a reboot -- this
screen has 9 green text options at the top and an android x in the
center of the screen
22. Once in Recovery Mode, use the trackball to scroll down to
"Backup/Restore" and press the trackball three times, and wait until
the backup is complete.
23. Once backup is complete, wipe, since you're coming from stock
(even fastboot oem unlock may not fully wipe, do it just in case) many
users report the phone not booting properly without a wipe at this
point.
24. Scroll down to "Flash zip from sdcard", and press the trackball.
25. Select the CyanogenMod update (update-cm-5.0.4.1-N1-signed.zip),
and press the trackball again to confirm. Wait until the flash is
complete. (Note: this will take a little while).
26. Once again, Scroll down to "Flash zip from sdcard", and press the trackball.
27. This time, select the Google Apps File
(gapps-passion-ERE36B-2-signed.zip), and press the trackball again to
confirm. Wait until the flash is complete.
28. Once you are back in the main menu, press the trackball select the
first option (Reboot system now) and reboot the phone.
29. If everything was done correctly, the phone should boot into CyanogenMod!
Eddie's extra bonus section— only for the adventurous (I have not tried this!)
Follow the instructions here to download your kernel and associated .ko module, your overclocking tool, and go
to town with undervolted and overclocked goodness!
Good luck. If it works correctly, it should take about 35-45 minutes to do it. And at the end of it, you will not only have one of the coolest hacker phones, but you will have done it! And trust me, it is worth it!
[A big thanks to Eddie, who both plied me with drinks last week to convince me that I should take this on, and then produced the first draft of this document so that I could not end up bricking my own iPhone]
REFERENCE
http://forum.xda-developers.com/showthread.php?t=611829
http://androidandme.com/2010/01/hacks/video-how-to-unlock-and-root-a-nexus-one/
http://forum.xda-developers.com/forumdisplay.php?f=559
http://wiki.cyanogenmod.com/index.php/ADB
http://developer.android.com/guide/developing/tools/adb.html
http://forum.xda-developers.com/showthread.php?t=459830
http://andblogs.net/fastboot/
http://developer.htc.com/adp.html
http://wiki.cyanogenmod.com/index.php/Full_Update_Guide_-_Nexus_One_Firmware_to_CyanogenMod
http://www.mahalo.com/how-to-hack-a-nexus-one#cite_note-4
http://www.cyanogenmod.com/home/cyanogenmod-5-0-nexus-one
http://forum.xda-developers.com/showthread.php?t=633238&page=66
Tags:
hackers
,
digerati
,
geeks
Posted by Antonio
2 weeks, 5 days ago (Feb. 21, 2010)
Pycon has always been a fantastic conference— especially given that it is run entirely on the backs of volunteers. Much better than most paid for-profit conferences for sure.
I've posted the notes and slides from my closing keynote this morning— a small contribution to this excellent conference. If you are interested in reading how it was supposed to go (and I think I got close), feel free to go read it.
Looking forward to PyCon 2011.
Tags:
hackers
,
buddies
,
geeks
Posted by Antonio
3 weeks, 1 day ago (Feb. 17, 2010)
Liz Gannes over at Gigaom has a coined new term for what Google is doing now that it is back in the $3-15MM acquisition game for former Googlers that have left the nest: "acquiring," a mixture of acquiring and hiring. In the case of companies that have received external funding, this is a fast way to poison the well (after all no fund, no matter what the size, has its needle moved by such low dollar exits) so it's pretty clear that it is a bad thing for the ecosystem. In the case of bootstrapped companies however, I can't tell if this is a good thing or a bad thing.
It is a good thing because the founders of these projects walk away with two really important things: some cash in the bank and the confidence that they can build something that is valuable to someone— valuable enough that the mighty Google is willing to pay an especially outsized hiring bonus for it.
It is a bad thing because it creates the feeling that shooting for feature on products is a viable (and relatively safer) way to achieve success. This is an illusion for two reasons: first, future real investors and employees are savvy enough to see these types of exits for what they are. And second it allows entrepreneurs to focus on incremental "pickoffs" from the guessable product roadmaps of mainstream products instead of completely disruptive ideas.
Another way to put it: I've met with a few folks in the Boston ecosystem recently who are trying to get this "Think Big" meme jumpstarted with entrepreneurs and investors. And sadly, these "acquhires" seem to be taking us all in exactly the opposite direction.
Tags:
hackers
,
geeks
Posted by Antonio
1 month, 2 weeks ago (Jan. 26, 2010)
The humble and most underappreciated client of the RSS revolution, Google Reader, has just launched an interesting feature: the ability for a user to subscribe to a page that doesn't natively emit a syndication feed and still receive changes as a stream of events.
As RWW reports, this is not the first time a product has attempted to do this (and more significantly, geeks have been scraping webpages since the dawn of Perl), but the fact that it is Google, doing it at Google scale, is particularly relevant.
For a while now, we've had available both the page-oriented web that is best suited for humans to consume, and the stream-oriented publishing formats that blogs and RSS pioneered and that Facebook and Twitter popularized. In the middle, a few services have willing to take the step of translating the torrent of the stream into something page-oriented that people can consume in a page format (look at Techmeme or Tweetmeme for two great examples), but the promise of the programmable web is to lower the required investment in making a million such efforts not only possible, but easy.
And there lies the rub: Google providing any webpage's diffs as a stream is bound to lower the barriers to anyone looking to build on top of streams to create their own page aggregators. This was the promise of Yahoo Pipes (or Google Mash Editor), two products that couldn't overcome the complexity of incorporating content that was not readily digestible in one of a few syndication formats.
It's easy to imagine the possibilities, especially because we've got a good set of aggregators that scrape e-commerce, travel, and finance sites already. However I suspect the real promise of this particular Lego brick will come in scraping public data websites that have previously been ignored, either at the local level or around particular topics.
And I for one would much rather see Google spending engineering cycles in useful extensions to the web like this one than on bashing it out with Apple over the next dominant consumer computing device.
Tags:
hackers
,
geeks
Posted by Antonio
1 month, 2 weeks ago (Jan. 25, 2010)
Chris Anderson has a piece in the latest issue of Wired, "Atoms Are the New Bits" (not yet online) which chronicles the emergence of DIY hardware development. Covering the basics of prototyping tools like 3D printers and CNC machines, he goes on to make a connection to the newly emerging short-run Chinese manufacturing supply chain to explain how a new industrial revolution might take place, even going so far as to quote from my favorite fiction book of 2009, Cory Doctorow's Makers:
The days of companies with names like "General Electric" and "General Mills" and "General Motors" are over. The money on the table is like krill: a billion little entrepreneurial opportunities that can be discovered and exploited by smart, creative people.
As with his article on the Long Tail from five years ago, I think Anderson is on to something very big here even if he doesn't get all the causation correct. Short run manufacturing could be the basis for a whole new industrial base here, but not necessarily because of the democratization of prototyping tools (which as the story of Makerbot Industries shows is indeed happening along the same story arc as the PC revolution), but because of the powerful combination of the Internet as a collaboration channel (for ideas) and the Internet as a demand aggregation and distribution channel (for niche interests, passions, and ultimately sales).
This is the story of Threadless, a company which exists today because it is perfectly evolved to take advantage of these two forces in the apparel space. But increasingly it may also become the story of much more complex products. The Wired piece covers a local Boston startup called Local Motors which is trying the approach with cars— a complex multi-component electromechanical product that has all sorts of safety and regulatory challenges. If they can pull it off there is no reason not to wonder about other similarly complex products.
For instance, just the other day I was commenting to someone that I'd love to have a smartphone that had an internal 3000 mAh (they mostly have 1/2 of that) and a cheap low-power 7-segment display for most of the notifications that it would normally power up the battery for— "the longest lasting smartphone in the world." One can argue whether such a monster might end up being the Spruce Goose of the category, but with Android we've got the software to be able to do just that, and looking through any of the iSuppli teardowns, you quickly realize that most of the internal components of these devices are increasingly as "standard" as what goes into your typical PC.
How far are we from the day when someone can start the Threadless of smartphones? Then we could go from custom cases and wallpapers to devices truly tailored to our specific needs.
There are many wrecked ships that have fallen victim to the siren song of mass customization, but given enough relevant customization in a product category that has enough demand and you may just have something here.
Tags:
hackers
,
buddies
,
digerati
,
geeks
Posted by Antonio
1 year, 9 months ago (June 14, 2008)
Three lessons, from simplest to deepest:
1. That "live blogging" stuff requires the right template, and the blog format just wasn't right. Talking to folks that followed the live updates, it turns out that it's kind of annoying to see 140 character "title posts" which are paginated 5 at a time. Oh yeah, and Twitter still sucks; due the fact that their API was overwhelmed and I was using it to post there after posting to my blog, I got some really bad duplication problems.
2. Apple is finally getting the whole cloud thing, and more specifically, there are at least some folks there that have gotten the AJAX religion. I remember 3 companies ago being there to pitch one of their experience folks on a web-based music server, the summer before the iPod, and way before the current crop of really capable Javascript/DHTML engines. This designer, let's call him John, told us that apps in the browser were a passing fad, and an ugly one at that. And in a way, in 2001 they were, but these days Apple is dead serious about it (so much so that they are willing to spend cycles pushing their Javascript engine to the front of the pack). There were plenty of sessions related to web apps for Safari for deployment on both the Mac and the iPhone and little of that typical second class citizen feeling that Apple is known for (Java/Cocoa bridge anyone?)
3. That Apple couldn't achieve escape velocity and get out from under the carrier-runs-the-world model that mobile computing is subject to in the US sucks— it sucks really bad. While people may be excited about the new $199 price tag, there are going to be so many old problems in going back to that model. The awesome iTunes activation model for the phone? Gone. The way you could just gift iPhones to spread the cult of Apple? Not without stealing the recipient's identity. The impunity with which you could trash your iPhone knowing that for $250 Apple would give you a new one? No mas. And perhaps most importantly, the critical missing functionality like IM or unfettered access to the 3G network? Not likely, not as long as they might potentially undermine some Guantanamoesque carrier business model.
This last one is the big take-away for me; in short it means that we're going back to a world where we rent our mobile computing experience and hope that our feudal overlords (the carriers) dole out the features at a decent enough rate.
As I was flying back, it occurred to me that two groups of folks who I've enjoyed lampooning over the last few months, the iPhone jailbreakers and the Android people, may actually be really important as we move towards evolving the mobile experience in spite of carrier interests. So please please please go hug one of these lovable rebels who live by their own rules ;)
Tags:
hackers
,
buddies
,
geeks
Posted by Antonio
1 year, 9 months ago (June 8, 2008)
I am going out to California tomorrow and if all goes well, I'll be dropping by the keynote at WWDC to see what goodies Apple has in store for us. Last time I went to one of these, one of the most fun parts of the experience was trying to get the word out to friends and family back home in real time— the rabid Apple fans— about what was being announced by Steve on stage. I quickly discovered that Wi-Fi is totally useless at these events (because everyone else is trying to do the same thing), and that the only truly reliable messaging layer was SMS which really meant that all I could do in terms of group broadcast was Twitter. However during Macworld back in January Twitter dropped 50-70% of my updates and duplicated a bunch of the ones that made it through, no doubt because everyone else sitting in Moscone was in the process of trying to do the same.
I am quickly discovering that Twitter just doesn't cut it, not only because of its scaling problems (especially around events like these), but because I've got a lot of people in my life that have no interest in joining Twitter, and even when they do, find it difficult to stay engaged. These folks do come to read this blog though, so tomorrow's experiment is going to be to use the Onda as a sort of Twitter stream.
To do this, I wired in a web service called Textmarks into this blog. Essentially Textmarks provides a neat gateway between SMS and http where you can send a text with a keyword that can fetch the contents of a URL for automated replies. My current plan is to text short messages that will then become blog post titles with no bodies. This should create a Twitter-like experience for anyone using an RSS reader, and for those that don't, a simple refresh of the main page of the blog ought to provide a running stream.
I thought about having each of the SMSes update just one blog entry to minimize the noise on my RSS feed, but it occurred to me that this would break the way that RSS is supposed to flow content around the network. Also, asking people to subscribe to an RSS feed tied to one blog post seems a little goofy.
Instead where I decided to get was in adding an email-to-post mechanism where I can send an email with a photo and some text to a particular Gmail account that then generates a blog entry with the picture parked at Amazon's S3 (I could have used Flickr but wanted to play around with S3). Most mainstream blogging platforms have email-to-blog so there is nothing really novel in this (we had a little-publicized feature at Tabblo that did something similar that I loved, however it didn't survive the move into HP's datacenter); what really struck me about the exercise though was how relatively simple it is to wire together all of these pieces. In a couple of hours it was easy to speak IMAP to Gmail to get my photo and text out, use S3's relatively straight-forward HTTP interface to deposit the image, get a fast and (hopefully) reliable Textmarks SMS-to-web bridge and composite the whole thing as an entry into my blog for general consumption. For distribution, RSS does the rest. As a nice bonus, I've also used the Twitter API to put pointers to the stuff that will go up here into my Twitter account, though in a non-blocking way as the service will most likely suffer another outage tomorrow.
In this great new world of the web, these experiments are relatively cheap. Most will fall way short of being useful, but I suspect that it is only by messing around with all of these pieces in a loosely coupled way that we'll bump into something really interesting.
On to WWDC...
Tags:
hackers
,
buddies
,
digerati
,
geeks
Posted by Antonio
2 years, 1 month ago (Feb. 9, 2008)
These days everyone wants to grow a big cloud-based service with millions of users and billions of page views. Even Microsoft has got cloud-envy and wants to plunk down $50B to prove it. Unfortunately, most of us mere mortals have tons of trouble really getting these services to scale once we do get the users in the door. Things start to crawl, drives start to fill up, and before you know it you're Twitter with everyone biting the hand of the free service you've given them. Including this piece that argues for fronting Twitter with a proxy based of some sort of distributed hashtable thing.
While the caching/proxying thing has worked great wonders for most of todays super-scaled cloud services (YouTube, Facebook), I doubt it will continue to be the panacea for write-heavy communications applications like Twitter. Even the infallible Google seems to occasionally hit speed bumps with its venerable Gmail (which is not RDBMS-backed but is no doubt cooked from dilithium crystals).
It strikes me that the right solution to this problem is to revisit the notion of making distributed Internet applications work— but not the kind that have the service provider scaling across cages and datacenters. Instead what we need is to find models for using the "dark matter" of the Internet, namely all client computers connected to broadband connections and sitting idle for most of the day. NAT traversal issues and the mass-migration to laptops notwithstanding, these machines could be what is needed to help truly scale cloud-based services.
And even if all of those home/office PCs are too sporadically available, we could begin to rely on the growing number of personal accounts being created on VPS/shared hosting/Dot-Mac/whatever environments where each user is given some fractional part of a CPU and disk storage to do with as he pleases. This is why Wordpress's attempt at distributed Twitter, launched just a couple of weeks ago, is so interesting; most shared hosting environments provide a Wordpress install which means that with a little work (and some coordination between Twitter and the Prologue team), everyone can help take the load off.
There are "business model" reasons for why pulling off a hybrid implementation like this might prove difficult. After all at the end of the day, most consumer cloud services are valued by how many users (and more importantly user data and metadata) they are in possession of at the time of acquisition. Technical challenges aside, I am 100% certain that had someone pitched this approach to us at Tabblo back in 2005, we would have flat-out rejected it for all of the wrong business-model reasons. However, now that we are moving data centers though, I'm keenly aware of all of the terabytes of high-res image data that we must now shepherd across the continent when for most of what we needed, we could have done with a lot less (incidentally this problem is much worse for all of our bigger older cousins in the photo-hosting business).
Hopefully sometime soon we'll all get back to the original architecture of the Internet when it comes to this stuff— loosely coupled and distributed when it counts the most— and the scaling question will morph into one about writing large-scale distributed systems, a much more fun problem to work on.
Tags:
hackers
,
geeks
Posted by Antonio
2 years, 2 months ago (Jan. 2, 2008)
It's always good to start the first entry of every blog year with some predictions. Making accurate (and actionable) predictions is the chief currency of the entrepreneur in the technology industry (along with not confusing a long view for a short distance), so any practice in gazing into the crystal ball is a good thing.

The usefulness/pervasiveness of the web will really hit a tipping point this year: David Weinberger wrote a short piece for HBR called "The Year of Scale" which makes this point nicely. Everything from markets to expectations is now mediated by bits of information that we pluck from the ether on websites, social networks, blogs, tweets, etc.— whether we work and live in the medium or not. Of course Google plays a huge role in this augmentation of our own intelligence (as might Facebook and Twitter over the coming year), but so do web-enabled smartphones and the ever-increasing expectation that we can just "know" the answer to something.
Recently a friend told me that her 5-year old had defined Google as "where you go to find out what is true—" a sentiment that when expanded to the web itself, captures the zeitgeist of what is going on here. The next chapter in the story of the Flynn effect won't be written as the increasing ability to reason abstractly but by our ever-increasing ability to weave the information stream into making better decisions.
Smart, speedy, and portable interfaces frozen in hardware are now mass market: this is the iPhone effect, plain and simple. A couple of years ago I was writing that Apple should become the less-than-6lb. company ("if it weighs less than 6lbs and does computing, we rule it"). Last year they took the most important step in that transformation by launching the iPhone— but not because it's the sexiest product ever built, nor because it's a particularly good phone (let me tell you, it isn't!), but because it is the perfect embodiment of portable web consumption experience.
If the web browser itself could leap out of your computer and take the form of a piece of hardware that you could carry all the time, it could do no better than to look, feel, and behave just like an iPhone. From the huge screen to the multi-touch interface, every feature that makes it truly stand out boils down to delivering a killer web browsing experience (and the only real handicap, the pokey EDGE network is ameliorated by the Wi-Fi and will soon be crushed with a 3G rev).
Expect a lot more, and not just from Apple. Sure, Cupertino will ship the rest of the dev kit (which I still contend should be nothing more than an enhanced object model for mobile Safari that gives web developers access to the camera, the addressbook, any forthcoming GPS information, and the SMS message stream), as well as begin a whole load of experimentation with point-of-presence applications that mix the virtual world with the physical world. But everyone else will try their hand as well, starting with mobile giants like Nokia (where I am 100% sure some Finnish dude named Pekka is now tied to the bottom of a dogsled crossing the tundra for having missed the all-screen embodiment of a browser in a phone), and filtering down to all of the smaller venture backed startups crazy enough to do hardware (which I think should be all consumer-facing VC startups these days, but more on that in a later post).
And this mobile fever is not just about phones, but in fact about any small devices that help people better consume the web. For instance, I bet this is going to be a good year for MIT-spawned Ambient Devices which has always seemed like a glorified science project to me. Unlike digital photo frames or the utterly useless Chumby, Ambient has figured out that simple design, well-instrumented cues, and singularity of purpose can make the different between a gadget which suffers from the net-connected version of the alarm-clock flashing "12:00" (e.g., my Chumby), and a device that weaves itself into your everyday life. Physical computing is here to stay and 2008 is going to be a vintage year for it.
The Activity Stream will become hot as Hansel: I'm not sure whether it will be Twitter, Google's Jaiku, the Facebook minifeed, or something completely new from a random startup, but the notion that there will be streams of metadata that we'll share with each other in the same way that people share blog feeds today but on a much more massive scale is going to become a standard part of the way that people interact with the web, and with each other. I suspect Facebook has the lead today, mostly because its minifeed takes no effort to set up and is very nicely scrubbed in the application, but Facebook seems to be getting this walled-garden stench which may create an opportunity for a lighter-weight, more open alternative. Initial setup will remain the challenge for regular users (and may be why the platform vendors: Google, Amazon, Apple, and Nokia could win here, or at least do a bunch of cool M&A in 2008), but once people get used to living in each other's flows, they'll be no going back.
Those are my top 3 predictions for this year. A little more abstract than usual, but thinking at this level certainly beats wondering whether we're going to suffer from a global economic recession.
Finally, just to mark where I've gone wrong in this game in the past: I'm ready to throw in the towel on the unwitting blogger, the casual publisher, or whatever you call the regular person who does something akin to starting a blog. I've been looking for the mass market application that causes millions of people to sit forward and put the same level of effort that those of us that keep blogs do, believing that the right combination of ease-of-use and ego gratification could get people over all of the barriers, but I just don't see it. Micropublishing— a popular trend predicted for the mass market for 2008 by the pundits— may come the closest, but there is a point at which it's just not publishing anymore.
R.I.P, Mister Unwitting Blogger— you content creating bastard— we hardly knew ye!
Tags:
hackers
,
buddies
,
embahs
,
digerati
,
geeks
Posted by Antonio
2 years, 3 months ago (Dec. 8, 2007)
It usually takes me hearing really clever smart (but crazy sounding) ideas three times before they begin to sink in. So hopefully, noticing them at two is an improvement. A couple of months ago, while attending a conference with Alan Kay, I heard him talk about how any new modern computer should be designed with "Internet principles" at its core. That is, the hardware and OS should be designed to support small isolated "components" that behave like nodes on the Internet, sending each other messages through a TCP/IP-based networking fabric even on the bus of the computer itself. Knowing that he is the perennial object & message nut, I filed his statements away as curiosities, thinking only that while his observations about how the unstoppable trends of virtualization and multiple cores as the base substrate for this fundamental change in the architecture of every individual computer seemed clever, the practicality of it seemed elusive.
After all, the stored-program, shared-memory, single instance computer exists for good reasons (simplicity, efficient, cost) right?
Imagine my surprise then while running today to the latest episode of the Google Developer Podcast (hit-and-miss, but pretty good as of late as far as podcasts go), the "All About Android" episode which basically described an implementation of what Alan was talking about in almost every aspect of system design: from the message-passing model for app interop to the way resources are described internally. It gave me pause for thought— after all, if resource-constrained mobile devices are being designed around these architectural principles by smart people, then maybe there is something to this notion of turtles all the way down, from the services we use from the cloud to the devices we carry in our pockets.
I think I've let Fake Steve with all of his Googletard ranting color my perspective too much, as I've paid scarcely any attention to the Android project. And truth be told, I wanted to write this before digging into it— after all, ideas are much prettier as abstractions, and Android seems to be one weird beast of a mix of things on the face of it: Linux + Java + Webkit, all on very resource constrained but heterogeneous hardware platforms. I mean, we're talking about serious potential for a fly in the transporter with this baby.
Still, it's the second time I've heard it, so time to pay attention...
Tags:
hackers
,
buddies
,
geeks
Posted by Antonio
2 years, 3 months ago (Nov. 30, 2007)
It must be a slow end-of-the-month press cycle because the press seems intent on proving to the world that Apple's OS X 10.5 (Leopard) was just too buggy to put out there, joining its Redmond cousin in the land of crappy desktop OS releases.
Personally, I've only been dealing with small annoyances (keyboard locking up, Desktop files flickering incessantly, Spaces not working, the Finder losing its handle to certain running apps) and not the really big stuff (network not working, data loss), but I am somewhat underwhelmed by what Apple delivered with this release both from a polish perspective and in terms of new capabilities.
Maybe what is happening now with OSX is that it has reached that level of maturity that most big software projects get to where it is very hard to make forward progress without noticeable regressions. This would be ok though because I'm fairly certain that better processes (Apple bring back the public beta please?) would take care of this.
But maybe, this is about the fact that all of the big brains in Cupertino are now enamored with Apple's next platform, the iPhone.
Listening to the newly (re)launched Gillmor Group on the airplane a couple of days ago (this show is definitely an acquired taste, but one which I would recommend for nuggets such as this one), I heard Steve Gillmor defend Apple by saying that the iPhone was "the center of Apple's universe now" and that everything else including the computers and Leopard were just "peripherals." Sad as this may be to admit, it sounded somewhat right to me in that there seems to be a lot more "denting the world" potential in putting very capable portable multimedia computers in the hands of tens of millions of folks than in continuing to polish the desktop platform of yesteryear.
I'll be sad though; as the sun sets of the PC platform as the most innovative place to be developing, all of us who were introduced to computers through it will go through our own little pangs of nostalgia.
[Postnote: After writing/before posting, it occurred to me that projects like OLPC may have quite a bit of innovative growth in them... we will have to see]
Tags:
hackers
,
buddies
Posted by Antonio
2 years, 4 months ago (Nov. 8, 2007)
Dave Thomas, the technical world's version of Mark Twain, has a nice short article "Programming the World in a Browser Real Men Don't Do JavaScript Do They?!," which covers how Javascript is coming out on top of the dynamic language pile and will probably be one of the most popular computer languages in use going forward. It's funny to see the parallels between it and C: how they were both languages created to solve a specific problem (script the browser for JS, write UNIX in C's case) that exploded as their underlying hosts became more pervasive. The lesson seems to be: if you want to write a long-lasting meaningful computer language, get out of the ivory tower of ideal types and find a host that is just going to take off— in fact, the model could be called "Languages as remoras."
In my new job as member of the CTO's office at HP, I am supposed to have opinions on all sorts of "where is this going?" questions, at least from a technology perspective. One popular topic these days is browser-based runtimes for building the next generation of applications or: who will win the death march between Flash/Flex, Silverlight, Java, and DOM scripting with Javascript?
I should note here that I am pretty awful at doing this part of my job because I find it hard to get to an answer I believe from abstract principles— that is, if I haven't worked myself in the specific platforms, it's hard for me to get to a credible opinion on who is likely to win the hearts and minds of the next wave of developers.
But despite who wins the runtime, it is worth noting that Javascript (or its "Kentucky-cousins" ECMAScript, Actionscript, and even VBScript) all underlie most of the solutions out there as glue language at minimum, and the core language in some. So in some way, shape, or form, Javascript is here to stay.
Tags:
hackers
,
geeks
Posted by Antonio
2 years, 4 months ago (Oct. 22, 2007)
Of all of the stuff I saw last week at Web 2.0, the most exciting meme was that of the mobile devices in our pockets finally turning into true portable computers. Together, all of these different smartphones are supposed to become a viable platform for innovation— ushering in a new era of social applications that are not only more useful (finally delivering on the whole "augmenting human intellect" thing, but also more ubiquitous and relevant.
Amen to all of that. Except of course that I walked floor and listened to companies big (Nokia) and small (Fizzl, Pizzl, or Dizzl) tell this tale, I kept thinking of the way Steve Jobs talked at D a couple of years ago about how getting to consumers via the phone carriers was like going through "orifices," and that Apple wasn't very good at that.
Fast forward two years. Apple made a deal with the devil and is reaping the profits from it— but the orifices remain. Which is why it is so great to see tech's last great journalist taking an aggressive and thoughtful stance on the issue in his latest blog post, "Free my Phone."
Walt is a real standup guy when it comes to calling it like it is. He is often accused of being too "soft" on the big companies he reviews— but what I've noticed is that when it comes to egregious behavior on the part of companies trying to make profits from consumers, he often pulls no punches.
And the best part: I know first hand that when he writes the folks at Apple listen. Ditto for AT&T, Verizon, Microsoft, and all of the other big companies. A very good thing if last week's utopian vision is ever likely to come to pass here in the US.
Great piece.
Tags:
hackers
,
buddies
Posted by Antonio
2 years, 5 months ago (Sept. 26, 2007)
"The best way to predict the future is to invent it."
—Alan Kay
It was the moment I read that quote a few years ago that I decided that Alan Kay was one of my absolute top software heroes. Of course it also had to do with his pioneering work at Xerox PARC (read all about it in Dealers of Lightning), around object oriented programming, conceiving the first laptop, and a general adherence to both elegance and execution in software design that make him truly stand out among an already pretty impressive class of peers at PARC.
Yesterday I attended a TTI Vanguard conference on behalf of HP and had the chance not only to meet Alan, but to spend 90 minutes talking with him about software design and the state of engineering, as well as a whole bunch of related topics. I've been unwinding the conversation for most of the past twelve hours, and if I have one regret, it's that I don't have a transcript of it so that I could spend some time really digesting what he was getting across to me. He has a way of using very concise terms that carry a tremendous amount of meaning and then backing them up with references to work done by colleagues across a broad range of disciplines that is incredibly dense. If Alan himself were a Smalltalk object, I think he might need a little refactoring on the messages he sends; they are compact for sure, but depend on such a rich shared context of meaning that it can be hard for the rest of us to follow.
And speaking of compactness, I really dig his latest project. He's gotten funding from the NSF (and some other folks) to rebuild an entire personal computing system in 20,000 lines of code. And by personal computing system he doesn't mean a VM like the JVM or .NET, but in fact the "whole stack—" from the interface the user sees to the instruction set on the processor. Yeah, crazy right? When he first said it to me, I wasted the first 10 minutes trying to understand what kind of "whole system" definition he was going to use to cheat his way to the 20K LOC constraint, but it soon became clear that he was deadly serious about doing this soup-to-nuts.
Why? Because according to Alan, the edifice that is any major computing "stack" (Windows, Linux, OSX + drivers + frameworks + applications) can easily run into 100-300M lines of code— far too much for any one person to even hope to begin to understand (20K lines is by comparison, about the equivalent of a 400 page book). And if we can't understand it, there is no way that we could ever hope to begin to fix the entropy that is slowly eating these systems from the inside out, or to innovate enough in software development practices to allow software to experience its own Moore's law-like exponential increase in power per line of code written.
I'm torn over whether I think that working the sort of alchemy that Alan & team are going to have to undertake to pull off this Herculean task so that one person can truly understand the entire computing environment is going unleash the type of revolution that he hopes it will. On the one hand, I love the notion that building this type of system will usher in new tools and ways of thinking about software development that will allow us to keep teams small and productive. I've always been very proud of the small size of our team at Tabblo (especially relative to what we are able to do), and have been a little shocked since joining HP about how many other "lab managers" scoff when I tell them that our team is fewer than 10 people, following it with some statement of size about their own multi-hundred person team. It shouldn't be this way— on this front both Alan and Google are absolutely correct. Small teams make the magic happen; in fact, I can not remember the last piece of software that I was blown away by that had more than 25 people working on the core of it (one of my favorite analogies that he used while we chatted yesterday was that of the pyramids, "hunks of rubble covered with limestone," that took thousands of people years to build and could not stand up to the simple Roman arch built by 2-3 masons).
On the other hand, one of my favorite things about working in software is how well abstractions work to isolate me from the stuff that I don't care to know about. As I type this, I have a vague idea of what the CPU and GPU are doing together to make the characters appear on the screen, but most of the time I don't want to have to think about it. And if I wanted to build a new kind of word processor, I'm not sure I'd really want to think about it either. Furthermore, there is a whole generation of people just like me who probably don't have the training and experience to think that deeply about the low levels of what the OS and the hardware are doing to provide us with our computing environments— and each generation of kids coming out of school knows less and less about this arcane stuff. Today's PHP hacker wants to build the next Facebook, but he is likely to know very little about how PHP executes, how a webserver is built, or even how TCP works to send bytes all over the Internet. Should he have to worry about this if his goal is to build social applications?
Obviously, I am simplifying his argument as I think that what he would argue is that in a properly self-describing, self-bootstrapping system, it's turtles all the way down which would make it a lot easier for our PHP-hacker friend to understand the system to its core.
In fact, it is the pursuit of this elegance that is the most inspiring part of Alan's new project— and of his whole life's work. The fact that he is always looking to make things more logical and concise, to find a new kind of science (and art) in the way that most of us will build software in the future is a very good thing indeed.
And in the meanwhile, the rest of us still working on the pyramids should take a pause to think a bit about how we could move towards that arch.
[Postnote: After writing this, I went and read his NSF proposal. I'm not an expert in grant writing, but this proposal is so good that anyone looking to write any sort of pitch should read it (especially people writing business plans for risky new ventures). It's grand while remaining incredible humble in what is known and what is really hard to do. It covers the depth of experience the team has concisely, and gives a great history of "water under the bridge." But most of all, it inspires with its broad vision of what computing could be for everyone, and why it's so important that we be commissioning this type of work. I don't know who you are NSF person who approved this, but you have definitely spent my tax dollars well here!]
Tags:
hackers
,
buddies
,
digerati
,
geeks
Posted by Antonio
2 years, 6 months ago (Aug. 26, 2007)
One of the best things that I've learned to do in order to improve my "game-changing technologies predictive power" is to look back in 2,3, and 5 year chunks at what the things were back then that I thought were for sure the up-and-coming winners. It is a sobering exercise for understanding how in technology it is so very easy to confuse a long view for a short distance.
For instance, take web services. Back in 01-02 they were all of the rage. Websites were going to syndicate functionality to everyone, and companies big and small were going to reap huge rewards from weaving all of these new-found APIs together. And sure, 5 years later we've got a collection of interesting services from Amazon/eBay/Google, a bevy of Web 2.0 companies with half-baked APIs (mostly following in the lead of Flickr), and the built in expectation that if you're building a website today, you are a nobody until you can offer an API to your web service.
In the meantime though, only one ubiquitous API has truly emerged: RSS. As Steve Rubel pointed out in the blog post that started me thinking about this again, RSS is now the common glue by which developers can weave blog posts, pictures, tweets, and whatever else into one uniform stream of data to be consumed, remixed, and shared as needed.
And indeed, this is pretty awesome, despite the fact that we're just now scratching the surface. Adam Green (who in my mind is one of Boston's best software minds, a guy that really can span generations with his thinking) told me almost two years ago that right about now developers would be waking up to a "feed management" problem. What is more, he then set out to build the tools needed for addressing some of these challenges. I haven't stayed close enough to what he's done thus far, but I do agree with the notion that most of the interesting opportunities out there today for people working in the consumer Internet revolve around orchestration of different services through "feed management," though not quite in the publish-it-all-this-is-who-I-am-hear-me-roar style that is so prevalent among the Web 2.0 set.
Most "regular folks" don't care to be emitting digital excrement about every part of their lives for all to see, all of the time. And unfortunately, the privacy model for sharing items from feed selectively is either not there (most blogging tools), too cumbersome (Vox), or too coarsely grained (Twitter). Of all of the existing services, I've seen, Facebook's Mini Feed comes the closest to representing real life use cases, but only because Facebook is itself a closed system with a nice natural mechanism for representing friends and colleagues (though we'll see if this scales as the company moves beyond its traditional college demographic).
In order to be able to remix feeds in an interesting way, we need not only a service that sucks up RSS output from all of one's online publishing/communication platforms and normalizes it all, but also one which can then provide the right level of access control to the people and services that are likely to want to consume that amalgam of information. Now, who is working on that part of the feed management problem? Who has the scale and scope to pull it off in a way that both users and developers trust? Or can we pull it off with some combination of OpenId and RSS extensions?
It seems to me that cracking this identity/authentication/access problem is going to open up a whole world of interesting opportunities for syndicated content and services that will go well beyond publishing for most regular folks, but only if it is done in an open and distributed way. Let's just hope it doesn't take another 5 years to get there.
Tags:
hackers
,
digerati
,
geeks
Posted by Antonio
2 years, 8 months ago (July 2, 2007)
Sorry to everyone that comes here for the "big thoughts" about the following shop talk. Feel free to skip— for those interested in web frameworks, read on...
Being the conservative guy that I am, I was willing to bet millions of dollars of investors' money on an "unproven" open-source web framework, but not my own puny personal blog. But a few days of vacation have finally cleared the head and have caused me to abandon the whole Ruby-on-Rails powered fad (more specifically the twice-abandoned Typo project) for a blog powered by Django.
I can't say enough good things about Django. Professionally, it was one of the best technical decisions that I got to make early on at Tabblo. I had always assumed that we would use it for the alpha, maybe the beta, and then dump it for a custom system that could perform. Instead we rode it from the first alpha until the day we got acquired by HP. In the meanwhile we ran 5 million photos through it, a million users, and over 150,000 content publishers. We had some ugly moments (the shift from mod_python to lighttpd/FastCgi and the move to magic removal stick out in my mind), but overall it performed incredibly well. A lot of props go to Adrian and gang for putting together such a flexible framework. They used it as a lightweight CMS, but we were able to take it and build out a full UG content publishing platform (with a lot of help along the way from memcached and solid engineering on the part of the Tabblo folk).
In fact, the HP folks doing diligence on us started by asking why we had not chosen Ruby on Rails and came out the other end incredibly impressed with our Django choice. We survived our security audit (coming out much more unscathed than a lot of other HP acquisitions) thanks mainly to Django, and have continued to develop on top of it even as we get ready to truly become the "print engine for the web."
For sure there are things, I'd love to see improved, namely: mutliple DB support (sharding), a better testing framework, and general speed improvements. But hey, now that we're HP maybe we can find a way to help out with those things!
In the meantime, theonda.org (or an.ton.io) is now officially "Django Powered." I haven't had this much fun programming since at least 6 months before we got acquired. In fact, I've decided that Django— when it comes to web stuff— is perfect for "vacation programming." What do I mean by this? It's the type of programming where you get to focus on the fun stuff and ignore all the crap you find yourself having to do again and again on every web project. A few examples:
* Generic views: if I had 5 dollars for every time I've parsed URL fragments to present a list of objects by date/type/whatever, I'd be long retired.
* RSS/ATOM framework: this one is a bit messy (tightly coupled) but man is it great not to have to deal with XML encoding/decoding. Wowee, the funnest 30 minutes of the project.
* All sorts of nice html-ifying functions: want to wrap your paragraphs in p tags? Format columns of text? All built in with Django.
Finally, Django is just well architected. I use a venerable Mac program called MarsEdit to write all of my blog posts. Unfortunately MarsEdit seems to support mostly crappy old XMLR-RPC-based protocols for publishing (Blogger1, metaweblog). Fortunately for me, between Python's support for xml-rpc and Django's URL dispatch mechanism, supporting metaweblog was a "nap time" exercise (it would have been less time if there was clean and current metaweblog docs on the web). Fun stuff.
Now that I've moved to Django, I'm really excited to start playing again. The thing about Typo was that it was hard to make any changes to it without having some of that RoR "magic" explode in my face. With the Django there is no magic— just clean, explicit, and simple design.
Well done guys!
Tags:
hackers
,
geeks
Posted by Antonio
2 years, 8 months ago (June 29, 2007)
Back in 1999 there was this dot-com company called Third Voice that was the first Internet 1.0 attempt at providing "co-presence" as you surfed on Internet pages. The idea was to use the content of the web as a substrate for building real-time communities where people could interact by "chatting" on top of pages. Needless to say, the concept did not catch on in any meaningful way, and to this day, many Firefox extensions and widgets later (even Flickr 0.1 was just a rehash for photos of this co-presence idea), we're still not there. I'm almost ready to call it and assert that the notion of a layer of people interacting in real time on top of the more slowly moving content of the web is just not likely to be a mode of interaction that will ever catch on. IM is for realtime, Second Life is for realtime— but the venerable and scaleable web— even with its rapidly accelerating update cycle (fueled by wikis, blogs, and microblogs) is just fine without it.
Except of course that every once in a while I experience a content consumption craving that leaves me thinking about the promise of the Third Voices of the world. For instance, today, on the most momentous product launch of 2007, I am sitting thousands of miles away on vacation in Barbados, feeling very far from it all. I'm not sure that I'd be standing in one of the lengthy queues encircling each and every Apple store in the US (though I might be), but I would definitely love to get a better feel than what I can get from the blog coverage, Twitter updates, and occasional big-time journalist dispatch.
A few brave folks are trying video steaming but it isn't working well (because of the lame reason that the multiplexers don't seem to be able to take the load), and the Engadgets of the world are doing a nice job of the constant update to keep feeding us photos.
But overall, cobbling these bits and pieces together is a pretty dissatisfying experience. What I want sort of like Techmeme (who has the right starting approach to this) but faster moving, more tunable to my network of people, and way richer in terms of the multimedia being shared. Discoverable through Google— in fact maybe even promotable through Google, and capable of taking user comments, photos, and videos all one one page and with adequate peak-load capacity planning.
It's not clear to me why this hasn't emerged yet as a sort of web platform for events. It could be used extensively at conferences and then brought out for product launches, political events, even disasters. What is more, it is clear that various folks are bumping around its edges: from the Facebook news feed to the Twitter update, all of the leading-edge social platform experiments are feeling various parts of the elephant in the dark. And eventually I suppose, something might emerge from all of this experimentation that will finally deliver the live web we need to cover these types of things.
In the meanwhile, I'll be clicking refresh on apple.com...
Tags:
hackers
Posted by Antonio
2 years, 8 months ago (June 24, 2007)
A month ago I switched to Google Reader from NetNewsWire because I was tired of the cross computer synchronization problem. Reader is also one of those nice applications that doesn't just ape its desktop predecessors— perhaps because there isn't a real strong legacy of desktop RSS readers— but that instead tries to make the whole experience of consuming feeds more web native by weaving in social features around the sharing of posted items. I'll have a lot more to say about mixing together feed management and social features over the next few days (as I am on vacation and will have finally have a chance to write about friends, feed management, and the secret of Facebook's success) so for now I will just say that Reader is a good application that anyone interested in going beyond very basic feed consumption should definitely check out.
This post is not about Reader though, but about Google Gears, a new browser plug-in that was released recently around Google's first Developer Day to make it possible to take web applications offline. Basically Gears combines 3 things together in a local runtime: an RDBMS (SQLite), a local web server, and a multi-threading primitive in the form of a worker pool. The plug-in (which currently runs on IE and Firefox and sort of supports WebKit/Safari) provides these three services and leaves the rest to you, the developer.
I have to admit that when I first read about Gears, I was a bit disappointed that Google had chosen to bite off so little in order to solve what is probably the Achilles heel of all web applications, offline use. If solving this problem had fallen to me (which it did in a small way 7 years ago when we were building a bandwidth-enhancing service for the Memora Personal Server), I would also have used a local webserver but made it capable of running server code (in the form of Java/PHP/Python/Ruby plug-ins) and capable of transparently rewriting URLs so that the enduser was unaware of which server was actually handling the request while the developer had less work to do in building out hybrid applications. We pulled this trick off at Memora to serve big video files from a local webserver instead of across the network when the assets existed in both places with the best part being that outside of a bit of middleware which the developer had to be conscious of in certain cases, the rest of was completely transparent.
That said yesterday I got my first chance to test Gears via a synced version of Reader that went "offline" with 755 of my most recent posts for a long airplane ride. Holy smokes, that thing is fast! Though it could have quite a bit to do with the way that Reader itself is architected, the best part of using Reader offline is that you don't have to wait for the server loads as a new bunch of posts is loaded in. It just screams. By comparison, I've got a single user instance of the entire Tabblo website running on my machine for development purposes (MySQL, Apache C modules, Python, Django) and it is much much slower despite having no real server load, so much so, that I'm beginning to think that there may be quite a bit of connection setup/teardown overhead between a web browser and even just a local server, and that the Google guys may have been conscious of this in the design of Gears.
Gears is not without some enduser annoyances that are imposed on it by the browser, the biggest one being that you have to remember to leave the browser window open before you go offline or you're stuck despite the plug-in having all of the data anyway. There is also of course the nasty problem of distribution; despite the fact that it's provided as a smallish .xpi or ActiveX control, it would be a whole lot better if it could come pre-bundled with the browser, or at the very least with the Google Toolbar. There is zero doubt in my mind that Gmail is going to get a Gears life any day now, something which will likely remove the last obstacle for my going to it full time for all of my email needs, so perhaps there are plans to address both of these issues.
In the meanwhile, I can't wait to try using Gears for a project as it's clear that the Gears folks have done a very nice job of doing a UNIX (little small tools that can provide big leverage) to a key piece the "webapps all the time and everywhere" challenge we're all dealing with these days.
Tags:
hackers
Posted by Antonio
2 years, 11 months ago (March 22, 2007)
The Acela, Amtrak's high-speed train that runs the length of the eastern seaboard (and my favorite train ride in the world), makes an interesting stop in New Haven Connecticut. As you are heading north on the train, you will spend about 5 minutes stopped there during which the train will jiggle this way and that while something is being done to it. And then, zoom! the rest of the way to Boston, the train speeds at what feels like 150% of the speed that you had coming up to New Haven.
I've never know exactly what happens at that stop but in my cartoon imagination, I've always thought that the Amtrak guys must strap some sort of rockets to the top of the train.
Today is that day for Tabblo.
Five minutes ago, a press release went out that said that the Hewlett-Packard company is acquiring us to execute on their web-to-print strategy. Details of the deal were not disclosed, and I am not going to elaborate here, save for three facts:
- We (Tabblo and our investors) are very happy with the outcome
- We (Tabblo and the Tabblo community) are going to stay on board at HP executing on our combined strategy and building great products
- We (Tabblo and HP) are incredibly excited because it feels like someone is strapping that rocket to the top of the car
I think #3 is the reason why I am not simply feeling the "pheew, we're done" emotion that entrepreneurs talk about when they sell their companies. On the contrary, I'm itching to see just how fast we can make this train go now that we've got a rocket to boost the "print engine of the web" strategy. So stay tuned there.
On a more personal note, I could not be prouder to be joining HP. Growing up in Venezuela, HP and Apple were the two companies that represented everything that was great about the American entrepreneurial ethic both in terms of ingenuity and hard work. I still have the HP-29C my father gave me when we first got to the US (its programability got me into college), and have very fond memories of my struggles at Terman (the engineering building at Stanford that Hewlett and Packard gave in name of their mentor).
In short, I am really happy to be merging Tabblo's future plans with such an incredibly rich and long-lasting institution, and I'm really looking forward to what the future holds for us.
On that note, if you are from HP, please don't hesitate to drop me a note to introduce yourself at antonio -at- tabblo -dot- com.
Tags:
hackers
Posted by Antonio
3 years, 8 months ago (July 15, 2006)
Chris Mesinna (who I don't know but who I gather spent some time at social browser company Flock) had a thought-provoking piece on content-creation tools for the web and the future of rich browsers. I suspect Flock folks are none too pleased that he disses their efforts but I was much more interested in his conclusion that there might really be a future in innovative rich Internet applications built with Webkit which is Apple's equivalent of Microsoft's 8 year-old embedable IE browser control. Using it, a developer can write a rich client application that functions largely like a web-browser but with hooks into the OS for key actions that browsers have traditionally sucked at.
I am all for making better tools for content creators, but this seems like a risky approach to take mostly because of the fact that I don't think it's a tenable strategy to expect a regular user to take an 18.2MB download of a custom web-browser in this day and age (I am in fact trying to write this blog post on the OSX machine in the time that it takes me to download Flock and might just make it). Plus even if the Flocks of the world were to get past the download hurdle, people just don't want more clients– if RSS readers couldn't make it as standalone applications in large numbers given how much value they add over all of the web-based experiences I have seen for consuming RSS, I seriously doubt that custom browsers will.
However 10 years into this web thing, it's not too much to ask that the existing browser vendors address a couple of critical things, namely better upload, rich text editing, and some sort of canvas for drawing (that actually works). That would be a great start, and notice that it doesn't include fancy things like offline use or drag-and-drop across applications. Given their client-side thick-headedness I very much doubt that Microsoft will address this, but I have great hopes that at least some of these issues will be tackled by the forthcoming Firefox 2.0 release.
And when that happens, if Apple has any sense whatsoever, they'll get WebKit in shape to support these things as well. In a future post I am going to write about all of the "dirty little Safari secrets" that we've learned about while developing Tabblo (there really are a couple of gems especially around performance that no one seems either aware of or willing to blog about). And if they Apple doesn't get its act together, well then we'll just continue to be glad to see all of those Mac users at conferences running the Fox on OSX despite its heinous widgets and it's fat footprint.
In the meanwhile, I'm not ready to give up on how far we've come in just about a year's time with interactivity in the browser and the kludge of technologies now known as AJAX. The Javascript libraries are getting quite good (you might even call them platformy) and there are a whole bunch of people coming at the problem from interactive design, engineering, QA, and a whole host of other perspectives which really do help to make a platform.
[As an aside, custom browsers as development tools are a great thing. I've used this trick in the past, and from Greasemonkey fittingly enough, the new Webkit Javascript debugger, there is a whole ton of sense in being able to instrument the browser when you're trying to make it to fancy tricks for users.]
Tags:
hackers
Posted by Antonio
3 years, 11 months ago (April 8, 2006)
As the first high-profile rich browser app, Google Maps unleashed an explosion of creativity in pushing the web-browser-as-application-runtime. It gave birth to the term AJAX, put drag-and-drop on the list of approved cross-browser features, and seemed to lift the ban on imaginative ways to use Javascript and DOM manipulation to give users a much richer experience.
Proponents of the browser-as-platform have been around since Andresen's famous snub at Microsoft ten years ago ("Windows is gonna be reduced to a buggy bag of device drivers"), but in recently years people have noticed that some apps (i.e., webmail) are making a real run at replacing their desktop cousins.
But what if instead of working on a task-by-task basis, someone came out with a full-blown application runtime for the browser? I'm not sure I buy it, but I was reminded of it yesterday when I saw this Mac OS 7 emulation in the browser. Now it turns out that this is actually very painstakingly constructed Flash movie with a bunch of interactive dead-ends, but it nonetheless got my wheels spinning on what would be required to go further and provide a full OS environment in the frame of the web browser. Are there ways in which this would be more useful than the current stand-alone "rich" browser-based apps, i.e. Gmail, or Writely?
From an implementation point-of-view, I think that the pseudo OS in browser is finally really possible now. In the office, everyone is really tired of my constant touting of the recently open sourced Yahoo User Interface Library which I find to be as well thought-out and documented as any rich GUI library that I've seen. It would not take too much work to wrap something like Amazon's Simple Storage Service, and a few web service APIs for richer interop with "application islands" out there on the Internet (EBay, Google Maps, etc.), and you've got a really rich runtime at your hands.
This morning I saw a glimmer of this in the Y-Combinator backed YouOS. They've got an application installer, cross-application interop, an API for people looking to write new applications for YouOS, and even a set of primitive data structures that can support concurrent network access and be persisted on the server. I think these guys deserve a lot of credit for trying this, and the remarkable thing is that it works almost as well as an early Linux X-Windows window manager.
However, it's just a glimmer because no matter how far the richness of the browser has come, my rich client has gone further. Right now OS X 10.4 on Intel is finally snappy enough to be a first class GUI with a rich UNIX core and there ain't no web-based OS that can come close to that level of productivity.
But there may be a compromise. Apple (to continue the example) provides a hosted-data service called Dot-Mac which supports webmail, calendar, and basic web publishing as well as a very limited backup service for data and metadata. Over the years the web side of Dot-Mac has gotten richer and richer in terms of the functionality exposed. Why couldn't Apple go the whole way and create an AJAX version of their Display PDF engine and Cocoa framework, sync the list of your installed applications, and allow you to run an entire Desktop in the web browser? They've already got key data and metadata stored on the server, and they own the real OS APis that everyone is already programming to. For sure the web experience would be slower and crummier, but for occasional use it would be just fine.
To repeat it for the third time, I am not sure that this whole OS-in-the-web-browser is a better model than finely tuned webapps that use their own native medium better- in fact, if I had to bet on it coming from a startup like YouOS, I'd bet against it. But I do think that if someone could pull off a valuable use-case, it would have to be one of the rich client platform vendors (Microsoft or Apple). Dashboard Widgets was an interesting step in that direction from the rich client out (as was Konfabulator), but the big guys could do much more.
[ As an aside, it is too bad that the guy with enough skill, experience, and muscle to pull it off seems now to be distracted by the kind of cute web hack that should be left to the rest of us not in control of a major platform. ]
As I often think when I finish one of these posts, it's nice to see that we live in interesting times.
Tags:
hackers
Posted by Antonio
4 years ago (Feb. 12, 2006)
Marc Hedlund over at O'Reilly Radar had an interesting piece about how smart kids, when left to their own devices in a new environment, will independently come up with a set of good development practices for Web 2.0. Adam Green followed up with a post about how some of these practices aren't so new after all since he was using them almost a decade ago and Andover.net (both pre and post the Slashdot acquisition).
While I think Adam is right that the best of the Web 1 companies were implementing some of these practices back in the 1990s, it is much more the norm now than it used to be. Part of this comes from the maturing of the problem domain-- we are all that much more educated now than we were back then about how to think through building web applications. But the biggest contributor to this brave new way of doing things in my mind is transparency of commodity infrastructure.
Let me use an example: back in 1998 if you were building a web-based startup, you were probably running on Solaris/SPARC and using an Oracle database. You were also likely to be running on some sort of a Java servlet engine (though there were exceptions, this was again the leading edge). This huge apparatus usually required at least 1 of the following: DBA, sys-admin, release manager, and build manager-- nevermind all of the consultants and vendor people that it took to solve problems that arose from trying to get everything working together.
Fast forward to 2005. Anyone still using Solaris/SPARC for web apps is either a moron or a depressed Sun shareholder. MySQL and Postgres are now considered "enterprise-grade," and if you should be so masochistic as to still want to do Java development on the app-tier, you've got Tomcat, Jetty, and even JBOSS available to you on your platform of choice.
Now here is the key: every piece of infrastructure is free, has a thriving online community that can help you with issues better than the vendors ever did, and perhaps most importantly, can scale down to run on almost any type of laptop.
This last piece is what I found was missing from Marc's post: the fact that in the Brave New World, every developer can get to have the entire stack on his own machine. The value of this should not be underestimated. It allows for features to be prototyped and tested much more quickly. If you are running across different platforms on the dev machines (Linux, OSX, and Windows) it enforces good discipline in the build system and in the modularity of the code. The platform differences will also surface bugs which would not immediately show up in a more homogenous environment (for example, concurrency is a great thing to suss out by deploying your app across platforms).
When we started building Tabblo, I insisted that we be able to build the full stack across different flavors of Linux (our deploy platform), OS X, and Windows. Given that we have a bunch of C code in the application, this proved particularly painful at the outset in the Makefiles and Linux/OSX differences. Moving it to Windows meant dealing with a bit of a Rube Goldberg that leveraged VMware for piece of the app and the portability of tools like MySQL and Python for another piece. Having taken that pain up front however, I do not think that there is anyone at work today who regrets the investment. We can all work completely independently even while completely offline despite the fact that our deploy infrastructure requires a dozen machines running together in a data center.
This was just not possible last decade. We owe it to the transparency of the open source infrastructure that we can do this now across a whole set of components that used to be the domain of experts and alchemists. Anyone who doesn't take advantage of it now is doomed to slow release cycles, the need for a full QA team on hand, and a staff-imposed level of overhead that is tough to build a business out from under.
What a great Brave New World.
Tags:
hackers
Posted by Antonio
4 years, 2 months ago (Dec. 31, 2005)
So I am back from my holiday experiments with Squeak and Seaside. I guess it's called experimentation because you are supposed to play without necessarily having a real agenda. This is a good thing because despite the fact that Smalltalk is a language I've been wanting to learn for a long time, and despite the fact that Alan Kay is one of my all-time computer heros (along with Ken Thompson and Dennis Ritchie and Knuth), I was sort of left ho-hum about the whole thing.
First, Squeak: while the idea of a fully integrated environment in a great thing in principle, Squeak is just too baroque and isolated from the surrounding environment (the web, the OS, etc.) for me to really envision using it as my primary development environment. From the trivial (the fonts supplied with it are just a complete eyesore) to the significant (in full screen mode on my 23 inch display the UI does not redraw correctly or respond to mouseclicks in a consistent way), the whole environment feels stuck in 1980. It may be better on Windows (I used in on a 2x2GHZ G5) but running inside a window in OSX made it's retro feel painfully obvious. The Squeak browser pales in comparison to Firefox and the web and basic OS-integration is sorely missing (sort of like Java apps from 3 years ago). The class browser looked like an awesome tool but too many things about the way you could scroll the panes was just broken in my view. And finally in some cases, like when grepping for a method name with the "method finder" the whole environment would just freeze up for 10-15 seconds at a time becoming completely unresponsive.
Then there was Seaside: Very cool idea, and probably a great implementation, but so sorely missing in documentation that it's pretty hard to go beyond the basic trivial counter application. I was particularly interested in how the continuations-based pattern for web development dealt with persistence (beyond with keeping things in RAM on the image) and concurrency (users working with the same model object at the same time) but I found little help in either case and it was not immediately clear to me from browsing the class hierarchy how this was supposed to get done.
The one thing that Seaside did have which is worth copying was a really neat way to inspect all of the page fragments (or widgets) from the web browser (outside of Squeak) including a fully web-based class browser. This was pretty awesome and it's a testament to Seaside (and a discredit to Squeak) that I found it better to work from the browser-based interface than in the cumbersome class browser-transcript-debugger inside the Squeak environment.
I still think that the Ruby-on-Rails podcast on Seaside with Avi is well worth listening to but I am not sure how he manages to be so productive with a tool that, at least after about 5 hours with it, seems so much like a university research project, and not a full-blown development environment. Maybe I lack the vision for it, but for now, I'm staying above the waterline for real work.
Tags:
hackers
Posted by Antonio
4 years, 2 months ago (Dec. 24, 2005)
A must-listen from the Ruby-on-Rails podcast (has very little to do with Ruby on Rails): an interview with Avi Bryant on a new Smalltalk-based web framework that breaks the straw-thin mode of thinking about programming for the web (session-less back-and-forth of key-value pairs does not have to be the state of the art).
This is one of those interviews that makes you wish podcasts had a way to "call in." There were just so many more questions that the interviewer should have asked but didn't like: how you deploy faceless Squeak-based applications? How you distribute them? And why is Smalltalk really is so much more efficient than Ruby/Python/Perl?
For everyone with some downtime over the next few days, spend some time down by the Seaside and think about a better world.
Tags:
hackers
Posted by Antonio
4 years, 5 months ago (Sept. 19, 2005)
Eddie and I (and some soon-to-be-mentioned others) have been working on a project that requires a number of key pieces of infrastructure as well as some high-level components and we've had some spirited discussions about programming languages (somewhat inspired by this post). Recently he's been working in C while I've been working in Python and I find that it's harder to get into the C-groove when reading his code after working in Python than say reading a more modern language like Java. And he's finding that chasing memory leaks also takes some mental re-tooling. And yet, the approach still feels more "right" than this 100% Java stuff which has become so popular on the web these days.
Today he revisited the issue of safety and freedom languages with me and we got into a discussion of control versus flexibility that merits its own post (or maybe a comment from him here) but during our conversation I was struck by the fact that both of us kept trying to work Java into the spectrum we had arrayed the various different languages into without much success. Java seems to fall somewhere in the nebulous middle where you get little control and little flexibility with performance that is somewhere in the middle of the two.
Anyhow this got me to thinking about Java and about why it was that in the last 5 years I've gotten so disenchanted with it and I realized that despite the hundred of millions of lines of Java code, despite the amazing state-of-the-art stuff JITs can do today-- Java has gotten pushed into the nebulous middle of a spectrum that will probably make it obsolete for web development over the next few years. The two things that were most exciting about it are now almost completely irrelevant:
(Just to be clear, the following applies only to web applications. PC fat clients, phones, and WARP engines may be a different story)
Portability: Back in the day of #ifdef UNIX hell, Java was a breath of fresh air. However, Linux won the Unix wars. Peter Yared, and ex-Sun guy who got the LAMP religion and started a company, put it best in an interview when he was asked about platform independence:
You know you’re running on Linux ‘x86, you don’t need platform portability at the language level anymore. We all spent a long time in Java to make sure developers were no longer locked into an operating system or chipset. That was what made Java successful. When it took off in 96-97-98 when it moved from the browser to the server, you weren’t locked in to Solaris or HP-UX or AIX or whatever. Linux does the same thing. So, if you know what operating system you are running on, in this case Linux, do you need layer in between? We think the answer is no.
Alternatives: C++ does really suck and Java really did a great job of making programming fun again. Plus, 10 years ago Perl was the only credible alternative to Java (which is why I think it did so well). Today, you've got Python and Ruby and a
number of
credible apps that show that it's possible to work in these languages. Sure the JITs aren't there and the dev tools are not super rich but the runtimes work well and the languages are nice and clean. And most importantly, these languages/runtimes/communities play well with all of the existing web infrastructure so people feel little need to
he compared Java to Cobol and called it an "evolutionary dead end." And the flamewars that the RoR folks have started over and over again with the Java people have now gotten so old, I wish there was a wired-tired list for geeks to post them to. I like Java, and as I said above, it's really much easier (at least pre-1.5) to read that straight C. My only real point here is that for what we're doing, it's funny to see it occupying a dead man's area on the spectrum of today's computer language trade-offs.
Update: A
Tags:
hackers
Posted by Antonio
4 years, 6 months ago (Aug. 28, 2005)
I've spent the last couple of months thinking about web development platforms (due to a project that I will soon be able to talk about here) and apparently so have other people.
The debates have ranged from thinking about the nature of the languages, to thinking about the points for modularization of functionality (the libraries versus frameworks question) to the value of the community in helping get the tedious stuff out of the way. In this post, I want to focus on the language part of my thinking; in future posts I will move up the stack to consider libraries, frameworks, and communities.
A long time fan of Paul Graham, I naturally started by focusing on the importance of the language in terms of productivity. This answers the whole Java/P-languages question on the side of the P languages (Perl, PHP, Python & Ruby). In my experience, dynamically-typed wins every time. In fact, it's funny how many Java web projects I've been involved with that end up supporting dynamic language semantics via internal Hashtables and some sort of "meta-method" call system. That said, here is the caveat: I have never worked (and hope never to have to work) on an engineering team that is bigger than 12 people but I could imagine how the formalism of Java/C# helps when the problems of coordination become more significant the problem the code is actually trying to solve.
The more interesting question to me over the last two months has been: once you know the P-path is the way to go, how to pick? And here is my conclusion: among the P-languages (Python, Ruby, PHP, and Perl), there is only one relevant distinction, designed languages versus evolved hacks with Python and Ruby in the designed camp and Perl and PHP in the hacked camp. I'm not going to go into this distinction in detail as whole religious wars are being fought over this right now on IRC. I will just say that OOP seems like a hack in Perl and a crazy global namespace with several different ways to parse a string seems like an even bigger hack in PHP. Both languages have strong advocates that are Very Bright Folks. These people have valiantly tried to smooth over some of the major issues in Perl and PHP but at the end of the day you can only polish coal so much and I am often left wondering how much further Python or Ruby could be if these Very Bright Folks had spent their efforts there.
Among the designed languages (by which I mean someone with a good sense for computer languages drove the core of the design early on), I think things boil down to maturity of the runtime and taste. Python beats Ruby on the former and in my opinion it beats it on the latter as well. Python's runtime seems to have received more attention: it has been implemented 3-4 times (CPython, Jython, IronPython and PyPy), there has been more solid debate about implementation internals, and CPython appears to release often with about 10-15% speed bumps every time. And more importantly, it has bytecodes! Ruby's running straight off the AST worries me, not because I am some sort of VM purist but because it seems like this sets a natural limit for the optimization of the runtime (and yes I know that Rite will move us to a bytecode-based runtime but I have to wonder how long this will take to get to the mainstream).
On the taste side, I dislike the @:@@# littering Ruby code and the parentheses-for-method-calls-as-optional and I haven't yet seen why I should go ga-ga over Ruby blocks, but I am willing to admit that is just me and that I need more deep experience with Ruby to really be conclusive here.
The thing that is clear however is that both Python are more alike than different at their core. They offer the same built-in types, they are both extremely dynamic, their C-based runtimes are relatively easy to understand, and their C-extension mechanisms are pretty clean. Which means that despite my slight preference for Python, once you've crossed the bridge to the P-world, the web application development question has to be answered higher up the stack.
Update: A fabulous piece on closures Ruby and Python. The best argument and link list I've seen yet.
Tags:
hackers
Posted by Antonio
4 years, 8 months ago (June 20, 2005)
I love my 802.11g wireless card. Wifi has been one of those things that has just transformed the use profile of laptops all over the world. A connected computer is a productive computer plain and simple.
Every week I ride the Acela (Amtrak's northeast corridor high speed train). Sometimes, for kicks, I do the entire ride with MacStumbler open listening for open access points all the way between Boston and New York. I've picked up as many as 42 different access points in the 220 mile ride. Wouldn't it be neat if I could borrow little chunks of bandwidth all the way down and thus remain connected-- albeit in a very bursty way.
The problem is that when the Acela is doing it's job, my little wifi radio is a 70-100MPH moving target. So assuming that I am not just picking up stray beacon frames with MacStumbler and in fact I have a signal that is strong enough to connect to, I still don't have enough time to do the requisite DHCP negotiation (assuming most of these networks are running something like a Linksys router) and create and end-to-end TCP connection, nevermind having a full HTTP or SMTP dialog.
So here is my question/lazy web request: would it be possible to write an app that was sort of a MacStumbler/NetStumbler on steroids that would queue up network requests for when a strong enough signal is picked up for association between the client radio and the AP's radio. Then (and this is where the hand-waving starts due to my poor knowledge of 802.11 specifics as well as any non TCP IP-based stuff), the app could send any waiting TCP traffic as a burst of UDP packets to a specific server on the Internet. The server could reassemble the TCP dialog and make the connection to the actual endpoint. It would hold the conversation on behalf of the semi-connected client.
Now here is the part I haven't quite figured out: how do you send communication back to the bursty client? You can't presumably do the same UDP-to-TCP in reverse because the client is not addressable. Or can you? I haven't read up on it but this new NAT-traversal (or port-knocking) thing that all of the p2p apps do looks very promising as a way to do this. The question is: do you need an IP address on the client? Because if you do, I'd bet the negotiation between the client and the server (DHCP) would make the approach not work (though you'd have to work the numbers out).
If this could be made to work, I would be a very happy customer of the app-- even if the quality of the connection was flakey at best. Right now I pay out the teeth ($80/month) for a Verizon EvDO card that goes into my PCMCIA slot, radiates the hell out of my knee while sucking my battery down as though I had shorted it, and still doesn't really work that well. It claims to seamlessly switch between EvDO and 1xRTT which it does to some degree but it is nowhere near as reliable as my Bluetooth phone over its own antiquated 1xRTT connection.
So that is my lazy web request for today: an app that uses the software to make the people's infrastructure better than what the carriers can provide. After all, software can do everything, no?
Tags:
hackers