I haven’t posted in forever. I have a bunch of things I want to post about, though, and I will continuing forward.
Thing is, a lot of these things I want to write about having absolutely nothing to do with the tech world, and I didn’t feel that it was appropriate to post non-techy things on “vimtips.org“.
It’s been a while since I posted anything; but not to worry. I’m still alive. I’ve been super busy in my free time, with a top-secret Android project. It’s getting closer to being done, so hopefully I’ll be able to post more details about it soon.
Meanwhile, I found a new way to waste my time on the internet (we all need those, right?). During my latest project, I had a question, and someone recommended I ask it on http://stackoverflow.com.
I had heard of stackoverflow, and I’m not sure why I had never used it prior to this (perhaps it was that it kind of looked like a forum, or a mailing list), but I’m pretty sure I’m addicted at this point. It’s better than a mailing list when it comes to asking questions.
The idea is that you can post questions about programming (any language, any topic that has to do with the process of programming), and other members using the site will answer your questions. The thing is, your question will be answered, correctly, usually, faster than any other method I’ve seen (forums, mailing lists). The answer will be high quality and will usually include some code or links to places you can find more information. It’s all free, it’s got an intuitive interface, and it’s very fast.
What motivates your peers on stackoverflow to answer your questions quickly and for free? An achievement (ala xbox 360) style reward system. The more questions you answer correctly, the more karma you get. You get certain “badges” for different things you do on the site. If you answer a question incorrectly, you lost karma. That’s basically it.
Why does it work? This karma doesn’t produce money. These badges aren’t worth anything outside stackoverflow. Bragging rights? I don’t know, but it’s just the type of thing that attracts computer nerds. Users are motivated by receiving these superficial rewards, hell… it motivates me to answer questions on there. It’s a civilized pissing match. It’s actually quite fun.
stackoverflow.com is for programming questions, but they also have serverfault.com for questions relating to server administration, and superuser.com for questions related to every day desktop computer use.
SupaCount 0.1.0 published to the Android Market. I don’t suspect that it’ll be a highly successful app, being that it’s a utility that most people won’t need. However, being my first app on any of the mobile markets, it’ll be interesting to see what happens. There are, at the very least, hundreds of thousands of people (200,000+ people bought a Motorola Droid the first week it was released) with access to the market.
My first impressions of the Android SDK were just from using the platform itself. It seemed great then, just because of the results I could see by installing other applications (the open nature of it, the ability to replace system components, etc), but now that I’ve actually taken a further look at the internals, I like it even more. It encourages you (if not requires you) to create highly modular applications.
Along the way, I found a great book that I’d like to recommend if you’re thinking about getting in on Android development. “The Busy Coder’s Guide to Android Development”. If you buy it at it’s very reasonable price, you get free updates to the book when there are new releases of the SDK. They also have kind of a community editing thing going on, you can join the mailing list and add “patches” to the book if you feel so inclined. You also get “The Busy Coders Guide to Advanced Android Development”.
Edit (12-22-2009 @ 11:11pm): After one day, the market reports 120 active installs.
Edit (12-29-2009 @ 7:20am): After eight days, the market reports 272 total installs, and 172 active installs for a 63% retention rate. The average rating is 4 1/2 stars. So, even though not many people kept it installed, those that did rated it highly. This is about what I thought would happen, just because a multi-countdown timer isn’t an app that many people would really need. I think I’ll get more success if I implement a one off timer that doesn’t require you to save it before you run it. This will give it the same feature set as any other countdown timer, plus more.
So, I got a Droid, which for me, meant that I had to start learning the Android SDK. In my opinion, the best way to learn something like this is to write an application. It's how Exaile and JBother came to be, and now, it's how SupaCount came to be.
I've always wanted a countdown application that would allow you to run more than one countdown at a time, and save them for later use, so that's exactly what SupaCount does. You can save multiple countdowns, and run any number of them at the same time. When a countdown is done, you can have it alert you, optionally by blinking the LED, vibrating, and playing a notification ringtone. You can specify how long the alarm will last before it stops on it's own (to save your battery).
Some Screenshots (click on an image to view the full size):
I decided to publish it here before I publish it to the market. It uses the Apache 2.0 OpenSource License. Here are download options, should you be interested:
- SupaCount.apk Installable apk. This is now on the Android Market. You can pick it up from there.
- http://github.com/synic/SupaCount - the sourcecode.
I bought myself the first generation iPhone about 8 days after it came out, and have followed the upgrade path (getting the 3G and 3Gs as soon as they were available) clear up until about a week and a half ago, when I jumped ship from AT&T. I love the iPhone. Sure, there are some things that bother me about it, but it really was good to me. Especially now, that a lot of the features I was missing in a phone were suddenly there (copy & paste, MMS, etc).
Everything was great until I moved from SLC to Seattle, where my data plan took a horrible turn for the worst. Even with full bars, I could rarely access webpages, post to twitter, read my headlines on facebook, or send an email. AT&T was less than helpful, asking me to "restore" my iPhone to factory settings, which didn't do much for me at all. Living in Utah, where AT&T is grand, I really didn't ever get the reports I read about their service being poor (here's an example). Now I do.
I flew back to Utah about a week before Thanksgiving to spend the holiday with my family. Whoop, suddenly my data service works again! A couple of my friends had picked up a Motorola Droid (and thus, Verizon) recently, one of them even coming from an iPhone. Both of them said they liked it. One of them (the one that switched from an iPhone) was actually in Seattle that week for the MLS cup, and said the Verizon coverage in the city was great. So, I jumped on the bandwagon, and purchased a Droid.
Being an iPhone/AT&T user for 3 1/2 years jumping to the Droid/Verizon has been a little rough for me. Now, while I realize that a week and a half is a pretty short time to develop a great opinion of the Droid, I'm pretty sure I've got a fairly good grasp of it. Here are the pros and the cons for a user switching from the iPhone to a Droid - I'm listing the cons first since I'm sure those will be the ones people will want to look at first if they are considering the change:
- Verizon's Visual voicemail app pales in comparison to the one provided by Apple/AT&T. Here's why:
- Constant notifications that a connection could not be made to the visual voicemail service. I get one each time I boot up the phone - I assume this is because the background service of the app starts before the network connection is made. I also get them randomly througought the this day.
- The service costs $2.99
- You cannot listen to or delete Visual Voicemail messages while connected to a Wireless network. If you try to do so, the application will completely shut down your wireless connection, and it won't bring it back up automatically when you're done.
- The app itself looks like it was made in 1999. The buttons/widgets/gradients are low resolution and generally look like crap. Take a look at the screenshots below and you'll see what I mean.
(Click on an image to view the full size).
- The Android API itself seems to have a lot less in the way of user interface design standards and stock icons. There's not really a common theme between different apps on the phone, let alone in the apps on available in the Android Market. The SMS has nice clean dark theme, while the Camera app appears as though it was designed to look like it was made out of brushed granite. A lot of the apps on the market have buttons with weird fonts, weird colors, and weird layout positioning. Everything on the iPhone is pretty seemless, and in most cases, has a unified design that's familiar when switching from application to application.
- Games. There are probably 10 games in the Android Market that are worth purchasing. No "Worms", no "Doom Ressurection", no "Super Monkey Ball". I think you get the point. Sure, there weren't many great games for the iPhone when the app store and SDK first arrived, but the simple fact is, Android doesn't have them now.
- You cannot surf the web and be on a phone call at the same time.
- I don't know if it's Verizon's network, or the Droid itself, but SMS messages have a hard limit of 160 characters. I know that this is the SMS standard, but somehow the iPhone gets around it. Whether it pieces multiple SMSes together when recieving, or it splits long ones into multiple packets when delivering, it doesn't really matter. With the iPhone, you really don't need to worry about the length of your SMS.
Composing an SMS longer than 160 characters on the Droid and sending it to a contact on another network will result in the message being truncated to 160 characters. There is no automatic splitting, the contact simply will not recieve the entire message.
There's an SMS replacement app on the Android Market that'll automatically split any SMS that's longer than 160 characters, but while using it, the alerts I get from our Nagios server via Verizon's email to SMS gateway are still truncated at 160 characters, making the messages fairly useless to me. The app is also terribly ugly, suffering from UI weirdness like I described in number 2.
- No pinch to zoom in the built in browser. I have seen it on the Eris, and it even works in a 3rd party browser called "Dolphin", so it's not the hardware that's causing this limitation, but the functionality definitely is not present in the Droid's default browser.
- The Micro SD card system. You cannot store apps on the included 16GB SD card. You can only store them in the 256MB built in storage. Possibly because of security reasons? I don't know. Apps can access data on the SD card, which probably makes all of this a moot point. All of the gigantic apps I used on the iPhone consumed their space using data that could probably be downloaded to the SD card after the app is installed and launched for the first time. For instance, Doom Ressurection (50mb or so if I remember correctly), and the TomTom app (1.7GB).
- The obvious. Verizon's data network actually works where I live.
- Multitasking. I love how Android does this. I love that you can keep applications open, and switch around between them at will. Sure, the iPhone's hardware supports this, and some of Apple's apps even make use of it, but this stuff has been purposely left out of the public SDK. The only way around it is to Jailbreak.
With Android, it's more than just having multiple applications running at the same time. The SDK also allows you to create services that run in the background. Services that can use Android's cool notification system to alert you of things, which brings us to:
- The notification system. Google has created a way for applications to alert you in a non-obtrusive and super useful way. The statusbar at the top of the screen can display little icons and little blurbs of text when something of interest happens. A simple swipe of the finger and you can see a list of recent notifications; tap on one and you can switch to the application that cause the notification. The iPhone has nothing like this. It has "badges" and alert windows (which are most definitely NOT non-obtrusive).
- The keyboards. Both of them. I like the physical keyboard because, well, it's a physical keyboard. Yes, the keys are a bit cramped, but I did get used to it eventually. The software keyboard is somewhat better than the one on the iPhone. It does everything that the iPhone's does, but the autocorrection is a LOT better, simply because it provides you a list of words to choose from, and allows you to click on the one you like the most instead of always just picking one for you (though it'll do that too if you opt not to pick one).
- The Android Market (app store) policies. There basically are none. I've done a touch of iPhone development, and I can tell you that Apple will most likely NOT approve an app if it doesn't somehow help their bottom line. If you're trying to sell a service with your app, direct business to your website, etc, then good luck. If you're trying to duplicate functionality that's already present on the iPhone, even if you think you can do it better, good luck with that too.
- More on the SDK: Android allows you to replace system components. Don't like the built in software keyboard? You can replace it with one from the App store. You can route phonecalls through the Google Voice App. You can replace the SMS app entirely with a new one. You can replace the Home screen with a new one. You can cause an app to start when another one starts: for instance, the Last.FM app will start and scrobble your music automatically when you open Android's music player.
Also, you don't need to buy a Mac to write Android applications. You can write them completely for free using the operating system of your choice.
- You can download applications from random websites, bypassing the Android market all together. Find a link to a sweet app? Just click from the Android Browser and it'll download and install for you. No way in hell Apple would let this type of thing happen. How would they get any money this way?
- Mass storage capability for the SD card. You can simply mount the SD card on your computer (running any OS that supports Mass Storage) and copy your music/videos over. You aren't stuck using iTunes to get music on the phone.
Some other notes:
- ConnectBot, the SSH client on the Android platform, is quite a bit better than the options on the iphone. It supports your screen+irssi+nicklist.pl session quite nicely. It's fast. It resizes the terminal contents corretly. With the physical keyboard, your input method isn't getting in the way.
- Android lacks the super sweet TomTom app that the iPhone app store has, though it does include Google Navigation. Google navigation is fine, however, you cannot use it in areas where there is low or no signal because it transfers map data over the air as you drive. The TomTom app on the iPhone takes up about 1.7GB of your precious music space, so there's a downside to that as well.
Another thing about Google Navigation is that it doesn't automatically shut down when you get a phone call. I found this out the hard way, answering a phone call, only to have the other person get talked over by the computerized voice trying to give me driving directions.