Android Dev Phone doesn't do copy protected apps

Some developers have asked about the support for copy-protected apps on developer devices, and indeed there is a limitation you should be aware of. Many developers are concerned about the unauthorized redistribution of their applications, so they make use of the copy-protection feature (known as "forward locking") which prevents applications from being copied off devices. However, developer phones like the ADP1 allow for unrestricted access to the device's contents, making it impossible to enforce copy protection. As a result, the Market application on such devices is not able to access copy protected apps, whether they are free or paid. If you choose to add copy protection when you upload your application to the Android Market, then you won't be able to test it on the ADP1's Android Market client. Your application will always be accessible to users who have standard configurations though, and if your application (whether it is free or paid) is not copy-protected it will appear on all devices, including developer configurations.

So I've found a reason (other than it being more expensive) why someone might want to buy the locked version of the Android phone. I still think the dev phone is more attractive, since the unlocked phone is pretty much a Linux box that fits in your pocket. (And I'm pretty sure it's more powerful than my first Linux box, too. =)

Collaborative Map-Reduce in the Browser

After immersing yourself into the field of distributed computing and large data sets you inevitably come to appreciate the elegance of Google's Map-Reduce framework. Both the generality and the simplicity of its map, emit, and reduce phases is what makes it such a powerful tool. However, while Google has made the theory public, the underlying software implementation remains closed source and is arguably one of their biggest competitive advantages (GFS, BigTable, etc). Of course, there is a multitude of the open source variants (Apache Hadoop, Disco, Skynet, amongst many others), but one can't help but to notice the disconnect between the elegance and simplicity of the theory and the painful implementation: custom protocols, custom servers, file systems, redundancy, and the list goes on! Which begs the question, how do we lower the barrier?

This idea is my kind of crazy. Map Reduce using JavaScript and HTTP. Nice. (And hey I was a big dnetc fan back in the day when I didn't pay for electricity and I owned a desktop =)

HP Laptop Redux

Perhaps I spoke too soon. One of my coworkers got a 6930p, and I have to say that the pictures don't do it justice. It actually looks rather nice in person. So it looks like it's just that it took HP awhile to create business laptops that don't bore me. Novel. Its too bad that the best way for me to actually see HP's business computers in person is to wait for someone at work to get one issued to them.

JRuby lead developer expounds on useful JVM flags

I probably start up a JVM a thousand times a day. Test runs, benchmark runs, bug confirmation, API exploration, or running actual apps. And in many of these runs, I use various JVM switches to tweak performance or investigate runtime metrics. Here's a short list of my favorite JVM switches (note these are Hotspot/OpenJDK/SunJDK switches, and may or may not work on yours. Apple JVM is basically the same, so these work).

If you write any serious Java at all, I highly recommend that you click the link above and read his post. It is full of many amazing gems that I can see being really useful for optimizing and debugging Java applications.

Why me and HP laptops don't work

I think I've completely figured out why while I'd like to buy an HP laptop (given that I work for them), I still haven't quite found one that would work for me. I'll start by breaking down the general laptop categories:

  1. Home/Consumer Laptops: These are the laptops you can get from and in most big box electronics stores. They tend to be designed primarily for aesthetics and to keep costs low. While HP tends to get good scores on consumer support metrics, everyone who has ever dealt with standard consumer phone support knows that the bar is pretty low to be better than the majority. Having dealt with this support myself, I can say that I'm not impressed. Admittedly, one probably shouldn't expect much for these prices. Also, getting Linux running on a HP consumer laptop can be very hit or miss, given that it's generally not even thought about when designing these computers.
  2. Business Laptops: I believe you can only get these laptops via These laptops tend to be designed with durability and more of a value cost structure in mind. The customer is generally assumed to be rather computer savvy and understands fully what the specifications mean and generally how much comparable computers cost. Also, the customer tends to want to buy something that would let them just get things done and stay out of their way. This goes to the customer service as well. While I haven't dealt with HP's business customer service myself, I would be surprised if it isn't on par with IBM's customer support, given that business customers generally are very conscious about what you get for your money, and don't want to waste their time. Of course, what suffers here is the aesthetics. HP's business laptops tend to be rather boring, even ugly. They get the job done well, but that's about all one can say. However, HP business laptops tend to support Linux very well, as they often have most of their hardware from vendors like Intel, who have excellent Linux support.
  3. Premium Laptops (Voodoo): HP has one other class of laptops, and that's the laptop that Voodoo PC makes. On first sight, this seems to be a great enthusiast laptop: designed with both aesthetics and durability in mind, it also has a great set of features. The problem is that Voodoo designs computers for those whom cost is no object, and at the moment, only has a laptop for the MacBook Air demographic. I've also done some searching in the past, and it seems like running a standard Linux distribution on the Voodoo Envy is a non-trivial proposition, especially if one wants to use most of the hardware.

While it seems like they may make a laptop for everyone, there's actually a missing segment in here, and I'm smack dab in the middle of it. At first glance, one might think that this segment is best served by the business laptops, since we tend to be knowledgeable about computers, and want a high amount of value for our money. We are very similar to the people that make the business purchasing decisions and care about many of the same things. The big difference is that we are also consumers, so we do care about aesthetics, which means that while we might buy the business laptop because it's a better value than the premium Voodoo laptop, we really want something that looks as nice as the Voodoo laptop, without the Voodoo premium.

I don't think you'd be surprised at all when I say that Apple seems to get this, and makes laptops that balance the needs of the consumer with those of the computer savvy. Apple doesn't really have a distinction between consumer and business lines; everyone gets the same laptop. (The Pro thing really is more of a performance distinction, nothing more.) While there are plenty of things in the Apple laptops for us geeks to complain about, there's very little in the way of huge issues, and it's amazing how much good support can make up for.

So while I've been contemplating my future computer purchases, and thinking that I might be able to get away from the cult of Mac, it seems that if I want to buy a laptop in the near future, I may not be able to beat the MacBook. Counter arguments are more than welcome. :-)

Rhodes framework - Open Source Ruby based Smartphone development

The Rhodes framework is an open source Ruby-based platform for building locally executing, device-optimized mobile applications. It is similar in concept to MVC frameworks such as Rails, Merb and Camping but much lighter weight (and hence executable on a mobile device) than any of these. Along the way of course, we had to implement Ruby for these device operating systems (iPhone, Windows Mobile, RIM and Symbian).

In general, developer productivity is much higher in Rhodes than writing to diverse native device operating systems and APIs since most of your UI customization can be done in HTML templates (ERB files). Rhodes also provides access to native device capabilities such as GPS and PIM data via an extended set of tags (e.g. <geolocation/>).

These applications are also optimized for interacting with hosted enterprise app (SaaS) backends . That is,  it allows mobile applications to work offline with synced local data by embedding a client for RhoSync. The Rhodes source tree contains sample apps for SugarCRM, Siebel Field Service and Ligthouse.

Rhodes is available for iPhone, Windows Mobile, Research in Motion (BlackBerry) and Symbian smartphones. Support for Android devices will be available by end of February 2009.

I just found out about Rhodes, and it looks crazy cool. While I don't currently have a smart enough phone to play with it myself, maybe they'll eventually make it so the thing can target J2ME. (Or, I'll end up getting a smart phone). Regardless, the idea of writing phone applications in Ruby (or another dynamic language) has lots of charm for me, and I've been idly contemplating implementing a interpreter for some small language so that I can do just that on my phone.

In related news, I got to play with my friend's developer G1 this past weekend, and I like. I'm pleasantly surprised at the size and how well it feels. Perhaps I'll get one in a year or so. (And maybe I'll end up with version 2 at that point. ;)

The harsh reality of netbooks and other laptop musings

I spent two posts drooling over the new HP netbook, and contemplating how awesome it would be to have one. Recently, I was at Costco, and I discovered that they had it for sale. After messing around with it in person, I can say that it does have the best keyboard I've ever seen on a netbook (aside from the HP 2133, which has a nearly identical keyboard). While the 2133 has more solid construction, the Mini 1000 has an easier to read display because of the lower resolution. And of course, the Mini has a better processor.

All that's pretty standard; however, after typing on the keyboard for a little bit, it dawned on me that it reminded me of using the Sony Picturebook, which I had back in the day. The formfactor was awesome, and I could carry it everywhere, but it had one fatal flaw: typing on the keyboard for more than an hour was generally a bad idea. My hands hated me after I spent a good part of a day coding on the thing. Since most of the point of having a computer for me is to actually be able to input information, I think I may have come to the realization that although the HP netbooks are cool and have a decent size keyboard, trying to use one will probably only end in pain. So I think that's the end of my netbook dreams.

Of course, now I'm looking at the EliteBook 2530p. But I can get the 2510p much cheaper (like $900) refurbished via HP's employee plan, so that might be a better idea, despite not being quite as neat as the 2530p.

Only vaguely related: In wandering around looking up details on the 2530p and 2510p, I discovered a a page about HP's laptop naming scheme, which would have been really useful when I was choosing what laptop to be provided with for work. As it is, I ended up with an 8510w, which while really fast, has the main problem of being way too heavy. It also has an insane 1920x1200 resolution on a 15" screen, and with my crappy vision, that's just too much. I have to run it at 1440x900 in order to be able to use it.

More on Firefox and Ubuntu

It looks like at least some of the Firefox font issues are fixed in Ubuntu 8.10. The fonts are comparable in size to Opera now, but Opera's fonts still look slightly better. They also seem to have fixed the "use system proxy settings" so that it actually works, which is neat. The thing is, Opera does have a lot of nice features that I do like about it, like the fact that it groups popups in a per-tab basis, and you can configure things like popup blocking and whatnot on a per site basis. If it wasn't for the fact that it seems to have weird issues with flash performance (today I was watching Zero Punctuation, and the audio kept on going fine, but the video would stop and then run really fast and then stop and then run really fast.), and I have had flash actually lock up the browser, so that only one tab locking up thing must have been a fluke. It's really too bad that I actually want to use web content that needs flash, since my life would be so much easier without that plugin. Anyways, I'm contemplating switching back to Firefox, for reasons that are completely not even remotely the fault of Opera. We'll see where this goes.

More HP Netbook news

Because I'm insanely excited that HP is making a computer that I actually want, here's even more coverage. Linux Devices has some impressive pictures of the Linux version, and hints that the Linux one may even have higher specs than the Windows one. Imagine that. Even better, Laptop Mag has a video of the Linux one in action. Apparently, the Linux thing is based on Ubuntu, which is promising. Here's the weird thing: No one on HP's internal Linux mailing list seems to know anything about the Linux software on this thing (or they're not allowed to tell the rest of us), which is really odd. Anyways, hopefully I'll find out more as January approaches.