Saturday, October 23, 2010
Apple Alternatives
Saturday, April 24, 2010
Switching to Android: Part 2 - Apps
Apps were probably my biggest hangup with switching to Android, at least now that the hardware is (in the case of the Nexus One at least) slick enough to feel good in use. Apps and the fact that almost every music appliance we have at home has an iPod/iPhone connector on it anyway - more on that particular hangup another time.
So, when I got the Nexus, my first task was to find apps, in some cases equivalents to those I was already using on the iPhone, and in other cases, new apps that you can not get on the iPhone for various reasons (often because Apple doesn't let them through the approvals process).
Let's take a look at some of the app equivalents for those I used heavily on the iPhone first:
- Music and multimedia apps: I came to rely on music applications like Pandora, Last.fm, various internet streaming radio and of course the built in music player on the iPhone. Happily there are equivalents for all of these in Android, and they work better (for one thing, they continue to play music when you switch to another application). I currently have installed on Android: Last.fm (with scrobbling for music you play in other apps too!), Pandora, XiiaLive, Slacker, Listen (for podcasts, includes background downloading), bTunes (a replacement player for music on the SD card) and RadioTime. There are many more, perhaps I am missing some good ones, but these have all my uses covered.
- Next most used on iPhone was eReaders, in particular Stanza. Sadly there is no direct equivalent for Stanza yet (this is an area where Android is definitely behind right now). Aldiko and WordPlayer are both excellent reading apps, but they don't have the content deals worked out with fictionwise, books on board and others right now to be able to purchase and download books, and as much as I like reading classics, I like reading bestsellers too. eReader.com lets you buy books and has an application for Android, but it's a bit clunky - nowhere near as slick as Stanza. Kobobooks is looking hopeful too, but their reader is so immature as to be unusable (for example, it goes back to the beginning of the book each time unless you remember to bookmark it before closing the app - heaven help you if a call comes in and you forget). If Aldiko can get some content deals, or Kobobooks can improve their player, or if (as I hope) Stanza gets in on the act, it will be a great solution. For now, Android gets a C+ for effort, but eReading is something I used my iPhone for a great deal. One little bonus though is that WordPlayer will read the books out to you using text to speech - a neat feature, but of course not for best-sellers just yet.
- Next up in my list of importance is Navigation/Maps. Android is almost universally ahead here. Of course, there is the killer feature - turn-by-turn directions in Google maps (with voice, street view, etc.) but in addition there is Latitude (which was rejected by Apple). Latitude on Android rocks - it updates my position for my friends to see in real-time if I turn it on (on the iPhone, you have to visit the web page to get your position updated). Layar is another great app - overlaying the world with virtual labels for all sorts of data. MultiMap and OruxMaps have great support for OpenStreetMap data (including OpenCycleMap), and finally Google's My Tracks rounds out my favorites - tracking and recording of your rides, runs, hikes, etc. with full altitude profile and trip statistics available. Google places directory gets an honorable mention too - see what's around you - I don't use it much, but it's useful sometimes.
There are a couple of disappointments though. Surprisingly, Google Earth is better on the iPhone (no reason for it to be that I can tell, it just is - e.g. no tilt with accelerometer support on the Android one), and another app I used a lot on the iPhone - everytrail, lags significantly in features (on the iPhone it lets you search for nearby trails and download them to follow, on Android it is record and upload only!).
- Communications next - in particular messaging. Google talk is built right in to android and has background notifications, Hi AIM is a free (at least for now) AIM client that has background notifications too, and there are many other options. The GMail app is easily the best mobile gmail application I have seen. Twitter is well served - everyone knows seesmic, but I have actually been using (and slightly preferring) Twicca myself. Google voice is built right in too - wonderful online service and wonderfully integrated into Android (for example, I can choose to have just international calls routed through Google voice automatically, and it also doubles as my visual-voicemail option). Foursquare has an app that is the equivalent of the iPhone one, and the facebook app that comes with Android works just fine. Android is again ahead here in my judgement, just because of background processes and the freedom of applications to make it onto the platform :-).
- Productivity and other assorted items: the only real hole here for me is, strangely enough, Google tasks. Just like the iPhone there is the online mobile targeted site, and that works fine as long as you are online, but I was surprised there was no local app that your todo list synced to on Android, hopefully it is in the works (as I tend to live and die by gmail, calendar and my tasks list). Calendar is fine (although I feel it could do with a UI makeover), syncing to the google calendar is perfect so far, and as I mentioned above it has the best mobile gmail app I have seen, but the lack of offline tasks, as well as features like location awareness for tasks, is a hole. For notes, there is evernote, wikinotes (I had to mention it) and many others, News and Weather built in options are good, but there is also the Weather Channel app which is worth a look.
In the other assorted items category, Shazam is available (thank goodness) and works as expected (if you don't know, Shazam listens to music playing somewhere and tells you what it is). The integration with the Amazon music store is good for impulse buys too :-). Google shopper is nice for sanity checks while shopping. Photo management also shines - the ability for new services to register themselves as send options means that you can install flickr uploaders that work with all apps capable of sending a photo, or send it via twitter or IM, etc. Very slick.
- There are also some apps for which there is simply no equivalent on the iPhone, at least not yet. For example Goggles - which is like Shazam for images (take a picture, tell me what I am looking at). I mentioned My Tracks already, and turn by turn directions in Google maps. Listen - mentioned in multimedia, gives a real podcast client - one that actually just automatically downloads podcasts directly to the phone so that they are available for offline listening whenever you want. SqueezeControl gives me remote control over my squeezebox (there might be something to do this on the iPhone but I didn't think of looking before), and there are neat system features that I didn't have on the iPhone, for example I can see exactly where the power has gone since the last charge (display, apps, phone radio, background file downloading, etc.) and use it to find the battery hogs.
- I should mention games too. I am not a huge game-player, so this is lower on my list, but it is also a domain where Android is weaker than the iPhone. I was actually quite addicted to Words with Friends while I was using the iPhone, but there is no Android version so I have had to kick the habit. I do have frozen bubble, and a couple of other puzzlers on there, and I also have Shortyz - a kick-ass crossword game written by my friend Robert Cooper, which is slick and almost perfect (will be perfect when it has cryptics available).
- Sign up and pay $99 for the privilege (Android market costs $25 to register, but you don't even have to pay that just to write and distribute software unless you want to go through the market)
- Agree to some truly heinous restrictions about development, like having to use a blessed language (C, C++ or Objective C), Apple having full rights to allow or block anything I write for pretty much any reason they choose (they blocked Latitude and Google Voice apps for reasons yet to be disclosed, etc.)
- Develop on a Mac. I am a Linux developer, I like it that way, and I like to develop on Linux. Android development just works on Linux, it's dead easy, quick and I can use my existing skills rather than learn a whole new set of stuff which only works on one very close platform
- Agree not to talk about the Apple developer agreement ever (this is a condition of becoming an iPhone developer). Since I co-host the Java Posse and I hate any attempt to control what I can talk about there, that simply isn't likely to happen
Saturday, April 17, 2010
Ride through Marin Headlands to the Pub
If you haven't been to this amazing area, the mountain bike trails through it are challenging, strenuous and scary in parts, and they are pretty epic. By the end of the day, I was getting pretty good at bunny hopping over smaller ditches (there have been a lot of channels cut by the very wet winter), I must admit that I took the "discretion is the better part of valor" angle with some of the bigger ditches though - I could have probably made it, but failure would have been painful. About half of the ride was on fire roads and half on single track, including a very scenic and pleasant climb back up to the highest point of the ride on the way back from the pub (this particular trail you can only climb, not descend, and when you see it it makes sense why).
The stats on the ride were (for both directions): about 19 miles total, 3300 feet of elevation gain, 3 hours of actual riding time, 4 hours in total out on the trail (yes, we stopped for photo and rest breaks a fair bit).
This was only Jackie's third serious mountain bike ride, and it was pretty tough going (more than I thought it would be) with some downhills that had me a little concerned (it wasn't the hill, it was the huge water runoff channels that had sunk into the trail that made those very steep downhills a bit alarming). The climbs were pretty tough at times as well - 3300 feet is a lot of climbing in one day, at least for us.
For those interested, the pictures taken for this posting were from the Nexus One, which I also used to record the entire trip in both directions using the My Trails application (which worked flawlessly, and the whole 3 hour trail recording used about 25% of the battery in the nexus one, implying to me that I would run out of batteries before the new gizmo did, most likely).
For those interested, the tracks of the ride out and then back again are on my Google maps. If you want to know more about the route, you can download KML files (for Google Earth) right from the trail map pages. We went in and out on the same route for the most part (except from the first climb after lunch at the pub). This was partly because the trails you can bike on are limited in the park (many are hike and/or horse only). In truth, this wasn't really an issue - the trails actually did seem quite different in each direction, perhaps next time we would try and weave Bobcat trail into the return route or something like that though.
The Felt (new mountain bike) performed admirably and demonstrated that the limitation is the rider now and not the bike :-). Jackie did really well considering her husband made her do a pretty serious ride for only her third time really mountain biking. The various devices estimated about 3000 calories burned so we had a damn good meal last night, and a whole bottle of wine between the two of us (plus a couple of glasses at the hotel we stayed at to get the evening going).
Saturday, April 10, 2010
Switching to Android: Part 1 - Introduction
I decided that I would write up my experiences of switching to it from the iPhone 3G that I have been using for the past 18 months, and I intend to be honest, both with praise and criticism, as I switch to the new device (which I will be doing - I have already decided that much).
The Nexus One came to me at a good time. I have been becoming less and less satisfied with the iPhone, primarily because I use it so much and the seemingly small limitations that Apple imposes on how I may use their device have grown over time into much more serious impediments. I will cover these limitations in detail as this series goes on, and discuss how Android improves on them (or in some cases doesn't! Life is not perfect in the Android world either, but it is better).
So let's start with a few of the higher level niggles with the iPhone. Of course, top of the list is lack of background applications. For a multimedia device, inability to keep applications like pandora or last.fm running in the background is extremely irritating. I jailbroke my iPhone to get around some of this, and could after a fashion listen to Pandora when replying to an SMS for example, but it all relied on me enabling backgrounding for that app, and it was far from a smooth user experience. Apple just announced that backgrounding was being added to the 4.0 iPhone OS, which is great, but apparently not for older devices like mine because they can't do it. Ummm, yeah, actually they can on jailbroken devices, and I am sure apple could make it smooth if they wanted to, regardless - I am out of that scene now.
Another one is that my battery life is nowhere near where it used to be. This is not due to jailbreaking (it has been that way for over a year), but more to do with the service cycle of Li Ion batteries, and the fact that they don't hold their charge in the same way after a year or two. Not a problem in most phones, but of course I can't just take out the battery and replace it with a fresh one. That's just lame, and I didn't realize how annoying it is until now. I could take it into an apple store to get it changed, but really, why? Why can't I just put a new one in myself?
So - enough of the iPhone, for the rest of this blog posting I am going to stick to my first impressions of the Nexus One. More details will be in future postings.
The Nexus One is the first Android phone that (in my opinion) measures up to the build quality and overall slickness of the iPhone (don't get me wrong - control-obsession aside, Apple did put together a marvelous device). The Nexus One is what android devices should have been all along.
The device is slim, slick and feels well built. It has an easily replaced battery, easy access to the SIM card, and a micro SD card slot with a 4G card provided with the device (but capable of taking 16G or maybe even 32G in the future). Easily replaceable storage. A nice feature (especially for large or varied media collections).
The first stumbling block was the connector. I had expected the now-defacto standard mini-USB, but it was something different - what turned out to be a micro-USB. Apparently this is the wave of the future, but the future does not yet seem to be here - a check at Target for example shows a ton of mini-USB chargers and cables, but nothing micro-USB yet. It wasn't hard to find some inexpensive converters at amazon.com though: http://tinyurl.com/y8g7rxs so I ordered a couple for all of my power chargers and cables that already use mini-USB.
The battery life is, as everyone seems to say, pretty much the same as the iPhone. The gauge is a little more honest (my iPhone reported itself as fully charged for half of the day, then started dropping quickly, while the Nexus One seems a little more linear in its estimations). One nice thing is that road warriors or power users can put in a double capacity battery (with a bulging battery cover to match). This will spoil the sleek looks, but it's a flexibility that iPhones can only get with awkward external battery pack options.
Here are a few more high-level things I have noticed about the Nexus One compared to the iPhone:
- Audio quality through the headphones is at least as good as the iPhone, the included headphones sound fine but are a bit less comfortable than the white iPhone standard ones - either way, much higher quality sounding headphones can be found (I like koss personally)
- Mysteriously, the maximum output from the Nexus is lower than that possible on the iPhone - I am not sure if this is because of some kind of effort to prevent hearing damage. Several third party apps drive the volume much higher, so clearly it is not a hardware limitation
- The speaker built into the nexus one sounds more tinny than the iPhone - this includes the ringer audio sadly
- The mic is phenomenal, eliminating almost all background noise, and this translates to much more clarity when speaking to people, and might explain some of the eerily accurate speech recognition that the phone is capable of
- The animations are slightly more jerky than the iPhone, for example list scrolling or app-starting, but not bad by any means. The overall speed seems much higher than my 3G (although the 3GS is probably as fast). It does feel nice and snappy in use
- The screen is amazing - high resolution, smooth fonts, vivid colors
- Multi-touch works well, and typing on the soft keyboard is familiar from the iPhone and just as easy
Thursday, April 01, 2010
The universe and many faces of the Doctor
Saturday, March 20, 2010
Java Posse Roundup 2010 - Day 4
Afternoon I mixed and published episode 300 of the podcast (which we recorded on Thursday night). We had a lot of snow during the day and it was still snowing pretty hard in the afternoon, so after getting the podcast out, I went and joined the group watching Hitchcock's Vertigo in front of a warming fire and hacked with Tor on the ZenWriterFX application a bit more (as well as transitioning to Mercurial on Bitbucket in the hopes that it would be a bit more user-friendly than git with Github).
Last night we headed out for a pretty spectacular meal at Django's up at the resort. Lots of small taster dishes, and some amazing food (and wine too). Had fun riding back down on the town shuttle as well, where we had pretty much the entire bus singing 99 bottles of beer on the wall :-).
Thursday, March 18, 2010
Java Posse Roundup 2010 - Day 3
In the afternoon I headed out with Jackie for some more cross country skiing - one of the intermediate trails (I fell down a couple of times, but I also got down some hills pretty well and even figured out how to turn the direction I wanted - I don't think I will be competing in the winter Olympics any time soon. We did find a mostly snow covered disc golf course on our travels though, so if I come out in the summer I will be bringing my discs.
We just got back from the recording of Java Posse episode 300 which was a ton of fun (I was worried it was too long, but people say that the time flew by). That episode will be up in the next day or so, in fact tomorrow afternoon I am planning on demonstrating the full process of mixing, editing and publishing a podcast for anyone interested.
Wednesday, March 17, 2010
Java Posse Roundup 2010 - Day 2
Three sessions this morning, there were some good choices but in the end I settled on my own proposal (about clouds, Amazon EC2, Google App Engine, etc.), then one about standardizing development across different application teams within a company, and finished up with what programming will look like in 25 years. All good, but I am looking for some more technical stuff tomorrow.
This afternoon, a bunch of us skipped the usual snow sports in favor of some extra technical discussions and demos. In the picture you can see the rigged up projection screen (a sheet over the fireplace in the house we are staying at. It worked pretty well. I led a study group on Scala, and I think picked up a few converts (people who had thought it was too complicated before now), and Fred Simon of JFrog led a discussion of build tools that improve on maven - the upshot is take a look at Gradle, and possible the Scala simple build tool (SBT).
More lightning talks tonight - last night's ones were a hoot, culminating in a fire eating demonstration (outside) by Bill Pugh - how many conferences can you say that you see a fire eating demonstration.
Tuesday, March 16, 2010
Day 1 of the Java Posse Roundup 2010
Non-SQL databases was a lively discussion about key/value, document oriented, column oriented and connected graph databases, and where it makes sense to use them. Of course, there are not usually "right answers" at the end of these sessions any more than there are in real life, but the theme was that it makes sense to use not only SQL in some cases, but that relational DBs still bring a ton of value, and if anything the new kids on the block have a lot left to learn from the old guard too - in particular when it comes to reliability, maturity and APIs.
The Scala session was more of a "what's it all about" kind of thing - with some discussion about whether the Scala learning curve is too high (it's definitely manageable), how to get into it (scalatest and soon hopefully scala-koans), whether it's enterprise ready (we think so) and the importance of a language visionary to give a language direction, as well as the trade-off between always maintaining backwards compatibility versus the freedom of being able to make breaking changes to improve a language.
After that we christened the snow with some cross country skiing, man that's fun but hard work. Tonight we have lightning talks, where I will be doing 5 minutes on genetic calculation 101 (based on some of my work at Navigenics).
So far, as always, people seem to be loving the conference - at approximately 60 people it's our largest ever (and certainly feels like it - if we get much large we will need to change venue). People are also engaging with each other really well this year - about half the attendees are alumni, and half are new, which is a great mix for keeping the flow of the conference going but still getting an injection of new ideas - an essential part of a healthy conference and community.
Monday, March 15, 2010
Day 0 of the Java Posse Roundup 2010
This year, Bruce Eckel organized an alternative business day as well - discussions around the issues of developing a business and moving it from a small startup to a larger concern without losing the spark of what makes it unique and fun among other things.
Another group went off to do a functional coding dojo covering multiple languages including Scala, Clojure, Fantom and others - including working on Koans (something close to my own heart and the subject of a future blog post).
The remaining two groups attempted to create the same application in two different environments. The application in question was based on ommwriter - a distraction free writing tool with a very nice user interface. One group got as far as they could with GWT to create an ommwriter-like tool, and hit some problems with interactions between HTML 5, database storage and the hosted mode in GWT - after working through those issues they came up with a pretty good result.
The group I was in did the same thing, but using JavaFX. You can see the results so far in the screenshot below (although there are background sounds and key clicks which don't come out in the screenshots of course :-) ). There is also a fade in panel of controls which doesn't have any icons in yet (soon).
We faced many of our own problems - some with JavaFX (Linux sound support is flaky at best, and crashes the JVM at work) and many more with github in a very active multi-developer environment, but all in all it was a pretty good day and it's always fun to do some buddy programming with Tor Norbye.
Thursday, March 11, 2010
More bike map resources
The first is http://opencyclemap.org which is a fantastic resource for cyclists. Here is an example showing the coyote creek trail (part of the same trail I showed on Google maps yesterday):
Pretty isn't it - yes, and useful too. For those who don't know, opencyclemap.org and the site it is based on (openstreetmap.org) are the source of some amazing map data, more detailed than anything else I have seen in the US, and the data has some advantages over that available from Google maps right now, namely:
- Available in other countries - someone responded to my blog post yesterday that they didn't have data in the EU yet, but openstreetmap (and consequently opencyclemap) data is pretty complete in many countries.
- It has height contour data, very useful for planning your ride to see what kind of workout you are in for.
- It is user-supported. OpenStreetMap and OpenCycleMap data is a bit like geospatial wiki data. If you know of a cycle (or other) path or road that is not on the map, you can add it. I have added a couple of paths I know of already, and it's pretty easy.
- Off road (mountain bike) trails are on there as well, take a look at the following shot of part of Henry Coe park (near Morgan Hill) which has a lot of fire roads and single track:
- It's not always clear from opencyclemaps.org whether what you are looking at is a paved (road bike friendly) trail or a mountain bike track. If you want to do a road ride, the new cycle layer in Google maps is probably better. If you want to go mountain biking, OpenCycleMap has a lot more detail for that.
- The OpenCycleMap servers are slower - naturally the Google maps server has a lot more performance and responsiveness.
- At least on the OpenCycleMap site itself, there is no automatic routing option like there is on Google maps. You will have to figure out your own route from the data.
- Download the street or cycle map data for offline usage (if you are going out into the wilds, this is probably a good idea). You can choose the detail and size of data to download when you ask for the tiles.
- It has routing! You have to set a start and end pin, and maybe some route pins, but it will then find a nice route using bike paths and tracks - very useful in the wilderness.
- You can carry it on your bike - on the handlebars even if you get the right kind of adapter.
Wednesday, March 10, 2010
Bicycle routing now in Google Maps
I am rather excited about this feature, although it seems like it has been a long time coming. Google maps now has bicycle paths and bicycle routing, including estimated times.
Under the More… menu you can see the new bicycle layer. Turn that on and you can see recommended bike routes and bike paths. Better yet, maps will now route along these paths if you choose the bicycle routing option when you get directions, in fact it will favor them. Here is a snippet taken from my bike ride home:
Notice the coyote creek trail is highlighted and selected for the route. This is a longer ride than just following Monterey road, but is vastly preferable in terms of the quality of the ride and I was delighted that maps now knows it can route along those bike paths and does so.
The estimated time is a little higher than I know it to be (I can do the ride in about 55 minutes, Google estimates 1 hour 17), but that’s no worse than the driving estimates tend to be. This is fantastic news for cyclists.