»
S
I
D
E
B
A
R
«
Practical Magic [Review]
Dec 31st, 2008 by masukomi

A while ago I stumbled across the movie Practical Magic, and loved it. It’s this wonderful, playful, tale about finding love and accepting the magic that lives within yourself. And then, a few weeks ago, I discovered that it was based on a book by the same name, which I immediately purchased.

What I read though, wasn’t a better version of the movie, as is typically the case. It was something else entirely. A slightly sad tale of finding women finding love even though they believed they either didn’t deserve it, or didn’t want it. And somehow, along the way, Sally’s children found maturity within themselves.

It was wonderfully written, but sadly mundane. “The Aunts” still practice magic, and practically embody the witch stereotype. But they’re not much more than that. Just, witchy sisters who dress in black, “cast spells”, shun society, and happen to raise the main characters. In the movie they’re happy, playful, sneaky, strong women who happen to be witches ostracized by superstition. It was as if the screenwriter took the main themes, and characters, of the book and reworked them into an entirely new tale. But, the movie does remain true to the spirit of the book.

They definitely count as a chick-flick, and chick-lit respectively, but which one is for you depends a lot on how you see the world. Is it a place filled with magic that you’ve mostly been ignoring since childhood? Or, is the world nothing more than the mundaneness that surrounds you? If the former, watch the movie. If the latter, go read the book.

They’re both quite good, but, despite its title, and skillfull writing, the book really doesn’t feel very magical, and even though it has a happy ending it’ll leave you feeling a little melancholy.

Why you think the Caps Lock key is useless
Dec 31st, 2008 by masukomi

Years ago I thought like many of you do; that the caps lock key is a waste of space. I never really got any benefit from it. It was just as easy, if not easier, to just keep a pinky on shift while I typed. There was even an article in Wired: Death to Caps Lock.

But then my eyes were opened, and I learned that the only reason I didn’t “get” the caps lock key was because I was a shitty typist. Sure, I could type over 100 words per minute, but my typing still sucked. It was some awkward crap that was bad for my wrists and that I’d just organically taught myself.

Then I learned to type correctly.

For me it was a side-effect of switching to Dvorak (because I care about my wrists). I decided that if I was going to do it I was going to do it right, so I made sure I kept my fingers in home position, and typed the way you’re supposed to, with a minimum of movement. And along the way something magical happened: my pinkies became truly useful participants in my work. I didn’t consciously notice this until a few days ago, when I came across yet another article decrying the caps lock key, and thought, “But, I use caps lock regularly…” I realized that that wasn’t always the case. I started using it, when I learned to type correctly, because my pinkies were busy doing real work and couldn’t be wasted holding down some shift key for entire words.

If you think the caps lock is an essentially useless key, odds are, it’s because you’re simply a crappy typist.

I think Jeff Attwood said put it well. We are Typists First, Programers Second. If you haven’t read that yet, I strongly suggest you do.

On the off chance that some of you will actually get off your ass and learn to type correctly you should be prepared for a major obstacle, namely, your own bad habits. The thing is you “need to get stuff done” and it’s far easier to do that using your old crappy typing method than it is while having to focus on correct finger position. But, trust me, it’s far too easy to slide back into your old lazy habits. Your brain is going to fight you on this. It has millions of past keystrokes telling it the “right” way to do things. You need to make a clean break. Go cold turkey. No more crap typing for you. You will type correctly or not at all!

Now, the following is not for the faint of heart. It’s hard medicine. In fact, you should probably just stop reading right here, because you simply don’t have the willpower to do what’s best for you. Forcing yourself to type correctly will be mentally painful enough. Actually learning to type in such a way as minimize your chances of carpal tunnel and have a long and productive career at the keyboard… That’s too much for you. Going down that road is like quitting smoking. Sure it’s going to fuck you up in the end, but let’s face it, you’re just too lazy to do anything about it, and anyway that’s “in the future”.

Or, maybe you’re not. Maybe, just maybe, you are smart enough, and have the chutzpah, to recognize that going through a little pain in the short run is worth it to help avoid carpal tunnel.

What medicine am I talking about? Dvorak. If you’re going to rewire your brain to learn a new way of typing why not go all the way and learn a new keyboard layout that will make typing even easier. The Dvorak keyboard layout was designed to minimize finger movement, and to increase the alternation of hands between keystrokes. While the minimized movement is huge, the alternation of hands makes it much easier to go faster. And I swear on everything I hold holy, Dvorak really feels better. You know that feeling you get, when you’re all tense, and you stop and force yourself to relax your shoulders, and realize you’d been scrunching them up for hours without noticing? That feeling when you release the tension you didn’t know you were carrying around? That’s what typing in Dvorak is like.

Rewiring your brain to learn how to type once is painful enough, doing it twice… even I don’t really want to go there, so learning to type right, and learning to type on a healthier, and faster, layout are things that should really be combined. Plus, switching to Dvorak will actually make learning to type correctly easier for two reasons. 1) It’s harder to type incorrectly in Dvorak than it is to type correctly. 2) It will force you to learn to touch type by virtue of the fact that you don’t have a Dvorak keyboard. All those habitual glances down to your keyboard that you don’t realize you’re making. Suddenly they become totally useless. Actually, they become worse than useless, because they give you wrong information.  You look down, see the “Y” key you were looking for and then stop and say “shit, that’s not ‘y’ anymore”.

For me, switching to Dvorak, and learning to type correctly was two weeks of pain. I strongly recommend starting after work on Friday. Go home, print out a copy of the layout and stick it by your monitor. Get used to keeping those little dimples on the “f” and “j” keys under your index fingers, and type stuff all weekend, but only do it in Dvorak. It will be frustrating as all get-out. You’ll feel like an idiot when it takes you a minute to respond one sentence to an instant message, or ten minutes to send a short email, but by the end of the weekend you’ll be doing at least 30 words per minute (which is, sadly, in the neighborhood that most people live).

By the end of two weeks of consistently using Dvorak you should be back up to 80wpm or more. How much more, is up to you.

Now, there is a catch: login screens. Unless you know the magic incantations for your OS, your computer’s login screen is still going to be in QWERTY. And, if you’re on a work computer you don’t want to change that because then the sysadmins will never be able to log in when they have to sit down at your desk and poke something. But, it’s not a big deal for you, because there’s still a handy reference on the keyboard. You know, that thing you used to have to look at back when you sucked at typing and thought the caps lock key was useless?

A simple way to encourage API adoption
Dec 14th, 2008 by masukomi

Let’s assume for a minute you have a web site with an API people may actually want to use. Let’s use Flickr as an example. You can do as they did ( document it thoroughly and hope people use it ), or, and this is especially useful if you’re someone competing with an 800 lb. gorilla like Flickr, you can do something like this: First, figure out who’s a developer. If someone’s into your site enough to code for it’s API it’s generally a safe bet that they’ve got an account on it. When they sign up add a checkbox to the form: “Check here if you write software” Add it to their profile page to so they can check, or uncheck, it later on.

Then, whenever a developer goes to a page, add a small note to the bottom “Developers: you can get the data on this page [link]with these’s  APIs[/link].” and have that link to a page that indicates exactly which APIs can be used to get everything on that page, and link to the documentation.

This has two benefits: 1) It’s a tease. It says “You could do something cool with this. Look how easy it is…” 2) when someone’s still getting up to speed with your API it makes it much easier to figure out what calls you should be making to get the information they want.

On coding for fun
Dec 14th, 2008 by masukomi

I love programming. I really do. It’s one of the few things that really gets my brain buzzing. In my twenties I’d go to work, program my ass off, then come home and repeat. Or, when I worked for myself, I’d just not stop. But, as I make my way through my thirties I’ve found that most days I come home and simply don’t want to look at code anymore.  I code the back ends to web sites you see, and I’ve been working on web dev. for over twelve years now, and honestly, there’s not a lot of innovation going on in that area. Every now and then someone comes out with a sweet new framework like Rails, but after the initial fun of learning it, and trying to convince everyone you know to use it too, you realize that you’re almost always doing the same damn thing: taking form data and shoving it into a database, then taking crap in a database and shoving it to the screen.  The only difference is which crap you’re shoving around, and where it happens to be stored.It seems that the mid-life crisis comes a bit early to coders, as a number of the ones I’ve talked to have found themselves feeling a bit ground down as they start in on their thirties, wondering if maybe they shouldn’t open a greenhouse or do something else equally removed from the world of code. I don’t blame them. I’ve felt the same way, but every now and then the universe reminds me that coding can be an absolute blast. That no matter how much I might enjoy some other simpler profession, there’s nothing that’d get my brain buzzing like this.

John Bender has come up with five simple rules to keep programming fun. And while they’re all good, I, like you, look at it a bit differently. So here are my rules for keeping programming fun.

1) Remember that nothing is more important than living a full life. When I worked at iPhrase there was this one guy who worked on the back end. He probably averaged 16+ hour days because he was really into his piece of the project. It really got his brain going. But, eventually, he, like everyone else, got laid off. And I always remember him, because when he looks back on those years of his life, there’s nothing there. There was not time for a social life, and IBM now owns (and has probably mothballed) all of the code he wrote.

Code is guaranteed to become obsolete. Pretty much anything you work on will be abandoned sooner or later. Don’t get so wrapped up in your code that you forget to spend time with the people who matter to you. There will always be more code to write. That weekend getaway with your friends is a little once-in-a-lifetime experience you can’t replicate.

Sometimes, it’s even simpler than that. When you’re sitting there coding away and your child, wife, or even pet comes up and asks you to play, or spend time with them, do it. Finish that function, hit save, and walk away from the computer. Do not make them wait more than a few minutes.

2) Small, self-useful, projects. John talks about small triumphs, and while those are very important, I’d take it even further. I get the most joy out of small projects. Writing some cool little app for my phone that I’ll use every day, or some helpful little tool. While John’s right that “You’re rarely going to write the next big thing, or anything really meaningful in a single day’s work.”  To me it’s so self evident as to be a non issue. Not only that, if you attempt to write the “next big thing” or anything “really meaningful” it’s going to be work, not play. And I want to look back and think that ,while I may have been spending some of my free time coding, I was coding something fun that put a smile on my face.  As such I try and work on very small projects, or very focused features of someone else’s project. Making each feature it’s own little one day project.

Let me give you an example. I’ve been hacking on a fork of Photostream because I thought it was a great proof of concept, but one that could use a lot of improvements. For example, it doesn’t support Flickr contacts. So, while I can add people in manually, I can’t say “load in all the people I’m following on Flickr.” So, one night’s project was to make it support adding a person, their contacts, or them and their contacts. A small accomplishment, like John says. But, I like to, whenever possible, make it so that I could walk away, after a nights work, and have something that would be useful as is, without ever touching it again. If I wasn’t forking the whole project I would have just submitted that change and felt I’d accomplished something useful, that others could benefit from. But, as I make my way through the day at work I think “I wish it would…” and every couple nights I’ll boot up Eclipse and hack in another feature. But, if my dog decides I’ve been spending too much time at the computer, and too little time with him, I remember rule number one, finish the current thought, or leave myself enough comments to pick it up tomorrow, and go play with him.

But, I’ve found that it’s not just about making small goals. Time and again I’ve found myself getting the most enjoyment out of the smallest projects. A tiny Flickr app, an app that hollers if your servers go down, something that graphs the lines of code per package in a Java project, a distributed bug tracking system, or a library that’ll save me tons of frustration on other projects. These won’t change the world. They aren’t “really meaningful” but they’ve all been useful to me, and because they’re never so large as to have any chance of becoming work, they’re always lots of fun.

Instead of hacking the next great foo, consider adding that feature you always wished that app you use every day had. It doesn’t matter if you never contribute another thing to that project. It doesn’t even matter if you release your code. What matters is that it’s a fun little challenge that you’ll appreciate the results of afterwards, and hopefully learn something interesting along the way.

3) It’s all about you baby. Never code for anyone else in your free time. If you do, it’s work. Rick Miller left a great example of this in the comments on my art-blog.  He said,

“I know from experience that something you love doing can become a pain in the ass when you feel like you have to do it.

For a while, I was making flutes out of any kind of pipe, hose or hollow plant stalks that I could get my hands on. I used to carry them with me and play them when I had a few spare moments. Sometimes when someone would make a positive comment or if a child was curious about the flute I would hand it to them and say, “It’s yours.” Sometimes I’d give them away just on a whim. Once I even gave one out through my car window to a girl in another car on the freeway at 60MPH.

Then I agreed to make a flute for a Spanish fellow for $20. My flutemaking stopped. When I finally forced myself to make the damned flute, it was nothing to be proud of. I was glad that my bank couldn’t figure out how to draw on a check from the boonies of Galacia because I’d have felt bad if the guy had actually paid for such a piece of crap.”

You’ve never hear of a child “playing for someone else”. Why? Because it’s simply not possible to play for someone else. You can play by yourself, or with others, but never for others.

4) Prioritization. John says

“Write whatever you need to put a useful piece of software out, then add on the frills later. This will let you release earlier, possibly get feedback and, if anyone is interested in your project, maybe even get help.”

And while that’s a good plan, it’s a bit too close to work for me. I prioritize my personal coding like this:

hacking for fun flow chart

It’s only when I’m about to release a new project that I even begin to consider what anyone else wants, and even then it’s pretty minimal. Because it doesn’t matter to me if you use my code or not. I had fun writing it and that’s the only thing that’s important. However, I’d feel bad if my code caused you misery or frustration, so, before the release of a new project I make sure that I’ve got all the basics covered. For example, my Photostream fork isn’t released yet because if you tried to load junku’s 3,700+ contacts, you’d almost assuredly run out of ram. So, I need to add some paging to the list of your buddies. And, it just wouldn’t be right to use the same icon, so I need to change that too, but, both of these things are things I want to do for me anyway, and thus they’ll be fun, but even if they weren’t fun, the knowledge that it would make others unhappy would make me unhappy. So I’ll do a little work to avoid sadness, and increase everyone’s happiness.

5) Share freely. Talking about “advice” John says:

“I find myself afraid of asking questions for fear that someone else will steal my idea or think I’m an idiot, and this keeps me from heading to the an irc channel when I need help. The bottom line is, 99 percent of the people who come up with really cool ideas never finish them and most never even start, so if you need to divulge a little in the interest of getting the thing done, do it.”

I say, screw that. You’re doing this for fun right? If you’re playing it so close to the vest that you don’t want anyone finding out what exactly you’re doing, then you’re working not playing.  I remember reading a post by a novelist who talked about how there were all these people with great ideas for a novel who were afraid to mention them for fear some author would steal them. But professional authors don’t hesitate to share their ideas because they know that cool ideas are a dime a dozen, and, like John says, executing on one of them is something hardly anyone ever bothers to do. Even if someone took your idea and ran with it, what they’d end up with would be radically different from what you would end up with. Plus, there’s the fact that all the stories have pretty much been written already. New novels are just old stories processed through different people’s imaginings.

As with writing, there are very few new software ideas. Mostly, we’re just making iterative improvements to existing ideas. Personally, I’ve got notebooks filled with ideas for projects, and about half of them would be profitable businesses, but I’m not going to implement 99% of them (and if any of my geek friends was in need of a business idea they’re there for the taking). So ask your questions. Discuss your ideas.

“Worst” case scenario someone else does most, or all, of the work for you, and you get that fun app you wanted without having to lift a finger, which leaves you more time to work on that other fun app.  Or maybe they point out that you really are an idiot, but, wouldn’t it be better to discover that you’re doing something stupid *before* you spend weeks coding on it?

Best case scenario, you get free suggestions on how to make your thing better, and if you release it open source then maybe someone will send in a patch with a nifty new feature, or fix that bug you never got around to addressing. Because remember, as soon as you start charging for it, you have responsibilities to the users, and those can very quickly turn into work. And if you’re not charging for it there’s no good reason not to release it as open source. Plus, every time you get a patch or a bug fix sent in it’s like a mini-christmas. Some surprise present, and we all like presents.

In summary, for me, the key to having fun with coding is to focus on the fun, the little bits of joy, and always keep sight of the life that’s going on around you. Be part of it, and make sure that when you look back on any part of your life, you’ve got something to show for it beyond some code that’ll probably be replaced or abandoned in 5 years.

I give up. You and your ads can piss off.
Dec 11th, 2008 by masukomi

A month ago I lamented that the excessive use of ads on sites was getting to be too much for me. Well, after a week where it seemed that every other article I went to read had a full page ad (or “welcome page” as Forbes called it) that I had to wait or click through to get to the article, which was still totally overrun with ads, I have given up and installed an ad blocker.

To all the sites who haven’t been abusing their priveleges I’m sorry. I really do want you to profit from my visitation. I really don’t want to have to pay for your services, and I realize you’d probably loose money if you switched to a subscription model, but I just can’t take this shit anymore.

I’d say that if the offending sites cleaned up their acts I’d turn the ad blocker back off, but honestly, now that they’re gone, I won’t notice if they do. With Google talking about including ad blocking software as a default plugin in  upcoming Chrome releases, you should seriously rethink your strategy. When we reach the point when all browsers have ad block software build in with no download required, you better pray to all your respective deities that you haven’t been abusing your visitors. Alas, you’ve already lost any income from me, and the 30+ MILLION other browsers that have installed Adblock Plus. If you think your excessive ads won’t hurt your bottom line, you are sorely mistaken.

The hyprocisy of Amazon
Dec 9th, 2008 by masukomi

Don’t get me wrong, as a customer I love Amazon. But their recent policy towards mobile devices is BS.

In 2003 Amazon said

 ”…wireless users find themselves living in an increasingly mobile world. Mobile phones are a commodity. Users have grown accustomed to staying connected while on-the-go. As smart mobile device penetration grows, more and more users are expecting their devices to provide anytime, anywhere connections to data services and information.”

And then went on to extol the virtues of a company that used their web services to make mobile phone apps.

And yet, in 2008 when this has never been more true. Amazon refuses any developer the ability to use their web services from a mobile device while they simultaneously make one of their own.

The associates program has been a huge success, and in a time when they are more than happy to have desktop and web apps using their service, and have more infrastructure to support requests than they’ve ever had, they won’t let anyone but themselves do it from a phone.

That’s just hypocritical BS amazon.   If you’ve got a good reason for refusing us access to your API from mobile devices then please, make it known. Otherwise, I, and my fellow developers are Calling Bullshit on your actions.

A review of Android and the T-Mobile G1
Dec 9th, 2008 by masukomi

I’ve had the G1 for about two weeks now, and have been coding for it pretty much since the day I got it, and I have to say I love it, and regret only one thing: buying the Bronze one.

So, lets start with that, and the other shortcomings, before moving on to the coolness. You’ve got three choices for the G1 Black, Bronze, and White. I’m always partial to earth tones, and  I think the white one looks like a cheap plastic toy, so Bronze it was. I really should have fiddled with one first. The black and the white are pretty much what you’d expect, the bronze though, they tried to go a little fancy on the keyboard. Instead of making it the same color as the body, like the other two, they made it silver, which does look good, BUT the letters, are a dark-ish grey on a silver background. Now, once you start typing the actual letters are backlit, except, you can only notice that if you’re not in a room with light. Like say, your house, or your office, or outside during the day… You get the picture. What’s worse is the alternate characters (slashes, semicolons, etc). These are in a nice rust color, that is totally invisible unless you’re in a strong light.

So, don’t buy the Bronze…

As for the UI, it’s pretty much what you’d expect from the ads. Nice, but a little “ten years ago” feeling, and interactions aren’t as polished as they feel on the iPhone. Once you’re actually *in* an app it’s as slick as the developer felt like making it. Some of them are *very* slick. ShopSavvy is a good example of a really nicely done UI. Some of them are crap. But, I suspect it’s the same on the iPhone.

The only non-obvious thing about the UI is that, unlike the iPhone it doesn’t swap from landscape to portrait mode, and back, as you turn the device. The G1 *knows* that it’s on it’s side, it just doesn’t bother to do anything with that information. Now, some creative geeks have figured out how to implement it but it’s not there for general consumption yet. Currently, it goes into landscape mode when you slide open the keyboard, and back to portrait when you close it. A couple apps, like the browser, allow you to set them permanently into landscape mode even if the keyboard is closed. But honestly, it feels like the kludge it is. You get used to this limitation pretty quickly, but it’s still leaves you feeling a little annoyed that it can’t switch itself.

The construction is suprisingly nice. One of my requirements for any phone is that I be able to shove it in my back pocket and sit down. Yes, I am exceedingly careful about making sure the glass is pointed inwards. But, I would never feel comfortable doing that with one of those first gen iPod nanos for example. Those always felt like I’d snap them. And, even if that’s just perception, it’s an important one. You don’t want to feel like your phone is a piece of glass that needs to be wrapped and coddled. It needs to feel like a tool you can pull out, set down, sit on, and generally use without worry. The G1 totally succeeds on this front.

The camera is… annoying. Don’t even attempt to take a picture of a non-sleeping cat with this. Click, wait, wait, wait, wait, get coffee, wait, go pee, wait, *snap*. Oh look, you got the blurry tip of the tail as it walked slowly out of the frame. It’s nice that during that time it’s doing some physical moving of the lens to auto-focus on whatever you’re pointing at, but still.  Also the button. The button is awkwardly placed when the keyboard is closed, and downright difficult when the keyboard is open. The lens is right under your left hand as you hold it. You will, sooner or later, sit there wondering why the screen is dark when you open the camera. It’s because your finger is over the lens.

And last, but not least, is the plug. I hate that plug. So, it’s powered by a mini-usb, which is convenient. Charging, and mounting as a USB device all in one. BUT, that’s the only “orifice” on the device. Like most of the smart phones it’s got crap battery life (about 24 hours), so I frequently find myself wanting to charge it AND listen to music, but I can’t. I can do one or the other but not both, unless I want to listen on the little speakers, which no-one does. The headphones, you see, plug in to a dongle on a cord, which plugs in to the mini-usb port. Now, it’s a good idea, because the dongle has the microphone on it, which means you can use any headphones with it, and still be able to hear, and speak with people on the phone. The problem is, that the microphone, is on the dongle near the device and not up high on the headphone cord near your head. If you want to talk to someone you’ll have to clip the mic up by your face. By default, if I stick the phone in my back pocket, and use the headphones that come with it, the microphone is right at crotch level. And, while you *can* use any headphones with it, you won’t want to because they’re the length you need them to be, but the cable / dongle thing that comes out of the phone is almost 3 feet long, which means your “nice and long” headphone cords are now about one mile too long.

And, if that wasn’t bad enough. You simply can’t use the keyboard in the standard thumb-keyboard position while it’s plugged in (or has headphones attached). The plug prevents your right hand from gripping it. However, I find that If, I hold it so that my hands are coming down from above, instead of holding it from the edge like you’d hold out a plate, and let the cord go between my second and third fingers, it works fine. This is, of course, totally bullshit.

The headphones that come with it are ok. Decent mids and highs, crap bass, and quite possibly the most tangley earbud headphones I’ve ever owned. Also, they keep wanting to fall out of my ears. I’ve never had a real problem with earbud headphones, but these just don’t work well with my ears when I’m walking.

The built in apps all work really well. I have some weird issue with the browser where, after a search I occasionally find myself on a Google page with no search field and no results. Also, there’s sometimes a bit of a pause, which is especially noticeable when pulling down the menu-bar. If you’re not aware, many apps will give you notifications that show up in the menu-bar across the top. You pull this down with your finger to get the details, and/or to switch directly to one of the apps that left you a notification. It’s a nice feature once you get used to a menu-bar being something you can interact with, but frequently I’ll pull it down and have to wait 2 seconds for it to give me any indication it recognized my action.

So far, you’re probably wondering how I could posssibly love this phone. And if the annoying bits, which every device has some of, was all there was to it, I wouldn’t be so thrilled. I mean, overall, using it is a lot like using the iPhone only not *quite* so polished. Which is pretty much what I expected going in to it.

Actually, going in to it I thought it would be less polished than it is. Then I got to play with a friend’s, and realized that once you get past the lack of sexy makeup on its interface, it’s actually quite nice. And that, brings me to this mornings realization, which is what made be get off my butt and write this review.

There is something incredibly powerful about *touching* your e-mail. *Touching* your photos. Email stops being “those messages on the computer” and becomes *my* e-mail. It’s *mine*. It’s right here. I can touch it. I can stick it in my pocket and take it with me. It doesn’t live in a box that’s so unquestionably separate from me. Now, I had a Sidekick before this, so I had my email in my pocket, but I didn’t care. It was nice to have access to it wherever I was, but I never had this visceral feeling of *mine*. Also, i never *wanted* to read e-mail on it. I just did when I had to, or was very bored and stuck on the subway.

On Android, and I suspect the iPhone. You *want* to touch *your* stuff. You want to slide things around. The kinesthetic interactions that we’ve been largely ignoring in computing for years have incredibly powerfully subconscious ramifications.

Speaking of my photos, once you take some, or download some, or get some onto it in any other way, they’re very well integrated. Take a pic of someone, go to set it as their icon, which shows up on the screen when they call you, and Android will pre-select all the faces in the image for you. Then give you nice cropping tools if you want to tweak its selections, or use some other part of the image. Everything shoves images in the same place so everything that consumes images knows just where to look.

The interaction between apps is really nice. Really, really nice. It’s trivial for one app to hand tasks off to some other one. A simplistic example is the camera app. It *just* takes pictures. If you want to look at pictures it seamlessly hands you off to the Pictures app, without you even realizing you’ve moved to a different app. And, dealing with pics, for example, is so nice that I want to go around taking pics of everyone I know, not so that I’ll have their pics, although that would be nice, but so that I can see their face when they call AND so that I can go through the fun little process of taking the pic, choosing a contact to add it to, and cropping it to just their face. It seamlessly takes me through three apps and is kinda fun.

And that brings me to developing for Android. Developing for android is *awesome*. There are tons of open source examples to get you started, including the code to all the built in apps. Want to know how the mail app does something, go look. I’ve learend so much reading the code of the example apps, and the built in ones. The APIs seem, so far, very sensible. Unlike the iPhone it’s multithreaded, so your app can be happily doing some background tasks while the user is fiddling with something in the foreground. The emulator is really nice, and best of all, you do not need anyone’s permission to put whatever app you want on your phone. And I assure you, it’s freaking awesome to have *your* app running on *your* phone. Especially when you had so much fun making it. Working on Android apps has been a total shot of adrenaline to my coding brain. I can’t wait to get home and work on my apps some more. It’s fun. And, I know that when I’m done other people will be tapping and pushing on my icons in my apps. And if I’m really good, I’ll be able to look at someone with an Android phone and say “You’ve probably got some of my stuff on there right now.” and that would just rock.

Unlike iPhone. It doesn’t matter if Google doesn’t like your app, or it competes with some app they wrote. You don’t need your app to be in the built-in marketplace in order for someone to download and install it, although it’d be nice. You can stick it on a web site with a download link just like any other file. You could probably even e-mail it to someone. Yes, the user has to manually click it, approve the access it’s requestiong (contacts, internet, etc) and install it, as they should.

If you weren’t aware, every developer writing an iPhone app runs the risk that after pouring months of development into their baby, Apple with say refuse to put it on their marketplace, and they’ll be left with nothing. With android you can either pay $25 for the ability to upload apps to the marketplace, or your can say screw it, and distribute it through whatever method you prefer.

The killer development environment, in a language that millions of developers know, and use in their day-to-day work (as opposed to some obscure C variant that essentially only gets used on Apple products), combined with an unrestricted marketplace, means there is absolutely no question that we can expect to see some truly extraordinary apps coming out for Android.

In the end it’s a great product, but, from an end user perspective, it does still feel a little version 1.0. From a developers perspective, there’s no question. You *want* to be developing for Android.

»  Substance: WordPress   »  Style: Ahren Ahimsa
© Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.