Archive for the 'Software' Category

Page 2 of 6

Impressions of Android From an iPhone User/Developer

I just got an Android phone, the HTC Hero, to play around with and perhaps develop on. It was only $55 on Ebay (including shipping) which seemed like a steal to me. I’m currently using it on WiFi without any phone service (the phone has a bad ESN, so that’s probably why the price was so low).

My first impression as an iPhone user is that the interface is really clunky. There just isn’t as much attention payed to detail. For example, there are often measurable delays between pressing a button and seeing something happen. This happens when I try to add a widget to the home screen or open an app that hasn’t been opened into memory. If I press a button and I don’t see something happen immediately, I will assume I missed the button and press it again. This is extremely frustrating since the iPhone animates immediately upon user interaction. The iPhone may not be any faster than my Android phone, but it at least gives the illusion of it (which is probably just as good in terms of usability).

Another thing I noticed is the lack of “back” buttons in the Android apps. Even Twitter lacks the onscreen back button. I assume this is following some kind of standard Android paradigm of favoring physical buttons over onscreen ones. It took me a while to get used to hitting the physical back button (and home, menu and search for that matter) instead of looking for navigation on the screen. While this is a different paradigm, I’m not sure I’m in a position to say it’s worse, better or on par with the iPhone. My suspicion is that the lack of onscreen navigation requires the user to go through more context switches (screen to physical button back to screen) which is disorienting. This is made worse by the fact that there’s seven fuckin’ buttons on my particular phone! I’m sure people adapt and get used to it, but I’m personally used to having just one button that takes me to the home screen (oh, and the volume and lock buttons, but they don’t serve dynamic functions in applications (unless they want to break the App Store terms)).

About the only positive thing I can say about the Android platform is that Google is integrating the shit out of it with their own services. I only have to sign in once with my Google account and I get Voice, Talk, Maps, Search, Goggles, Places, Latitude, Market, Contacts, Gmail, YouTube and probably some other things I’m forgetting. The voice commands are incredibly cool, though I wonder how many times I’d actually use them instead of doing things the normal way. Oh, another positive is that Angry Birds is free on Android, though my device is way too slow to run it.

I’m currently using a ROM with 2.2 on my HTC Hero, so that might account for some performance issues (though I thought it was supposed to be faster). I’m still kind of unimpressed by Android as a whole though, especially in terms of end to end usability. I originally got this device so I could test code on hardware, but I’m not so sure I even want to develop for Android anymore. I’ll probably end up writing some simple code, at least.

Does anyone with a newer Android phone want to debunk or argue with anything I’ve written?

♥s Threadless: iPhone App Launch!

Today my newest app was approved for the App Store (and should be propagating quickly)! ♥s Threadless is what I’ve been working on mostly for the past few weeks or so. Hurry up and download and review it, then come back here for more info about the app.

It’s no secret that I’ve been a huge fan of Threadless since I discovered it back in 2005 (see these blog posts for proof). I really love the fact that the community provides designs and decides which ones will be printed. The company is really only there to provide the machinery to make shirts and fulfill orders! I wanted to contribute to the community by making an unofficial Threadless app (and maybe get a little store credit to feed my t-shirt needs).

My main reasoning for writing a native Threadless app is that I found it pretty hard to browse shirts, even in a fully fledged web browser let alone an iPhone browser. The Threadless site is by no means bad, but it’s hard to see what designs look like when the images are small and on models. I prefer viewing the actual design. So I built an app that makes it easy to 1) browse and find cool shirts and 2) share them with your friends.

In order to do this, I needed to get a database of shirts on Threadless. It’s kind of unfortunate that Threadless doesn’t have an API. At all. Threadless does, however, has a few feeds of shirts: one for shirts that are in stock and another for the weekly additions. I parsed this list of shirts and saved them in an App Engine database along with some other metadata like image urls, category info, etc. I also figured out a way to get the list of all Threadless shirts, including the ones that aren’t currently in stock. What this means is that the ♥s Threadless app will help you find more shirts than even the official website can. You can filter by category, color and run fulltext searches on the entire shirt database.

As far as the front end work went, I had to build a custom table view cell to scroll through shirts and a nested scrollview to view shirt images. The shirt view looks a lot like the native photo browser app for the iPhone. I also added features for sharing, including saving the image to your photo album, posting the design on Twitter and Facebook and emailing the shirt design as an attachment. I figure that covers most bases as far as sharing goes.

So far I’ve only designed and built the iPhone version. I think an iPad version would be neat, too, but I want to gauge the interest in the iPhone/iPod app before putting more time into this. If you like the app, let me know and write up a review for it!

Finally, here’s a video demo of the app, just for fun:

Letterpress in Apple iLife ’11

Today I decided to have the Apple “Back to Mac” keynote stream while working on other stuff. I was literally setting up a print job in my composing stick when I heard Steve Jobs mention that iLife will have a letterpress printing option. I never imagined that Apple would move in on my turf when I decided to get an old style printing press!

It looks like you’ll be able to order prints from a number of templates, some of which can also include photos:


I think it’s neat that letterpress is becoming mainstream (again) enough that it warrants a feature in iLife. As far as my concerns about taking away business (which I haven’t quite decided to get into), I think it’s good that Apple’s pushing this kind of typing further into the mainstream. There’ll probably be a lot more people interested in letterpress, and not just for the personalized photo cards, etc.

On a technical note, I’m interested how Apple is going to farm out the print jobs. Do they have their own print shop with all the Heidelberg machines, or are they partnering with a shop? Depending on the volume of orders, I wonder what their turnaround time would be.

What I Learned From Checkmate

Just about two weeks ago, I released my first paid iPhone app, Checkmate. The experience has been priceless, plus I made a few bucks as well. I thought I’d share the stuff I learned, both technical and otherwise.

Technical:

Core Location. Being the first iPhone app I’ve done that uses Core Location, I learned a lot about the process of starting up the location manager, filtering location updates and getting them to work in the background. The background stuff is pretty new, just released in iOS 4.

Design takes thought. One of the most difficult things in designing an app is balancing between user expectations (“it should work like magic”) and real-world constraints (battery, accuracy tradeoffs). I’ve taken the approach of leaving the details under the hood (another app that does something similar gives users full control) for simplicity. This is a deliberate design decision. I’ve found that many users are happy with the app, and some are unhappy. I assume there is a minority that is unhappy, but that they seem to be more vocal (more on that later).

Core Data. I also learned about Core Data, since I use that for storing venue data persistently. There’s a bit of a learning curve with Core Data, but I have a pretty good idea of how it works. I guess it helps that I’ve designed a bunch of database schema in the past.

Get to good enough. I definitely feel like I have accomplished something by releasing the app. I have wrestled in the past between releasing something when it’s “good enough” but not getting stuck in perfectionist limbo. In the case of Checkmate, I got to a point where I was happy enough with its performance (it works) and did not want to delay any further, lest I lose steam and give up on ever releasing it. Now that I’ve gotten a feedback loop going, it’ll be easier to improve and update the app anyway. As far as interface design goes, the app is a bit clunky for my taste. Having admitted that, I think I could go back and make some things more obvious (like the login screen) and polish up the user experience.

Business-ey

Ask for reviews. Ask satisfied customers for reviews. Because if you don’t, only the unhappy users will post them. And you’ll end up getting a pretty bad average rating. Even if your app makes crap into gold, there will be users who don’t see the value in it, or think that $2 is too much to pay. Encourage users to post reviews in-app and you’ll see a well-rounded view of what people think about your app.

It’s okay to have a competitor. While developing my app, I found that another similar app had launched and gotten some press from Techcrunch. This was a bit depressing as I wanted to have that exposure. I ended up using it as a motivator since the blog post and app validated my own idea. There’s always room for competition, especially if you can outdo them.

Popular takes all on the App Store. There have been blog posts on the subject of iTunes ranking and how valuable it is to make a top 100 list. Apps seem to be ranked in search based on their sales volume, which means that popular apps will become more popular. Having been featured on Mashable at launch, my app got to #2 for a “foursquare” search. This helped a lot for residual sales. I’m assuming that most apps are sold directly from app store searches. There are other ways to discover apps.

Have fun! It was really exhilarating to see my app get into the app store and into the hands of users. I set up a twitter account to communicate with users, monitored twitter searches for my app and answered emails sent through a contact form on my website. It was really fun having people react to work that I did. It’s probably one of the strongest motivators for me to keep doing what I’m doing.

I have learned a great deal from my first commercial app launch. I’m really glad that I had an idea and stuck with it to completion. I’m still learning a great deal from Checkmate. I know that this experience will make the launch of my next product/app (whatever it might be) more smooth, both for me and users!

Checkmate for Foursquare (for iPhone) Release!

My second iPhone app, Checkmate, just got approved in the Apple App Store last night. It’s an auto-check-in app that runs in the background. You select your favorite venues, and Checkmate will check you into them when you get close enough, even when the phone is still in your pocket! I wrote this app because I got annoyed at forgetting to check into places on foursquare while there.

If you’d like to get Checkmate, you can buy it here for the low price of $2. For more info, check out the official website I made for it. And follow Checkmateapp on Twitter for news on the app.

Books

Hung Truong's  book recommendations, reviews, favorite quotes, book clubs, book trivia, book lists

Capitalism!