Saturday, May 9, 2009

Amazon Kindle DX

I'm sure you've all heard of Amazon's new Kindle DX. If you haven't google around, it's been in the news quite a bit lately. A lot of blogs have been talking about the new Kindle and it's potential (or lack thereof) to replace textbooks at colleges. One of them in particular caught my attention: I strongly recommend you give that a quick read if you haven't already. But in case you're feeling lazy, let me summarize it really quick.

In his post, Jason Kincaid of TC, says that the Kindle DX will sell in colleges because of textbook piracy. You can read PDFs on the Kindle, and if you happened to have a copy of a PDF of a textbook, there's no reason why you won't just put it on your Kindle and save yourself hundreds of dollars. I think that's a very interesting argument. I personally shell out roughly $500 to $600 per semester on textbooks. And this is just on prescribed textbooks. Most students also buy solutions manuals etc to accompany the textbooks. I've also found that several times prescribed textbooks are boring, not a whole lot of fun to read, and therefore I end up not reading very much of them. Bottom line, if you find yourself a PDF for all your textbooks, you aren't going to buy textbooks. You would even shell out $500 or so for a Kindle once, so you can get free textbooks for the rest of your college life. And at college, if there's enough demand for something, it gets satisfied. If 10 people want a PDF of a given book, rest assured "the nerd down the hall" will find it.

As soon as I read this, safaribooksonline came to my mind. UMich gives us free access to that resource via Mirlyn. Until about a year ago, I didn't know that. Once I did find out about it, I've spent more time reading books on there than I have on reading "required" textbooks. Reason: required textbooks are usually boring. Now I'm a Computer Science Engineer in training, and deem myself to be somewhat of a nerd, so I spend most of my day in front of a screen anyway. Reading books in a browser is completely acceptable to me. I actually prefer it because I don't have to turn every time I want to switch attention from a physical book to my laptop. In his post, Kincaid says people don't like reading on a computer screen. Printing PDFs of large textbooks is sort of a stupid idea anyway. What he's saying the Kindle DX can solve a major problem that prevents people from reading e-books. And I think he's got it right. If the Kindle provides a legal, low cost way of reading books, I think it would sell like hot fire. The problem of course, is that the publishers aren't going to sell textbooks cheap. They make a living by ripping students off. If not for that they'd be dead meat. Now I'm sure they have their justifications for the ridiculous prices and I don't really understand how their industry works.
But, I think the Kindle brings with it a ray of hope. And here's why.

Before the Kindle, if you wrote a book, you needed a publisher to publish it, or you'd basically be the only person reading it. Now that you have the Kindle that's gone. You can write a book, format it into a PDF, and you're done. You don't need anyone else to invest in you and take a huge risk publishing your book (except for yourself of course) etc. You publish it yourself. And people read it on their Kindles. If the book becomes popular, you charge some small amount for it. Like I said before, I don't know how the publishing industry works, and how much money the authors make, but I'd be willing to bet that the authors get a very small percentage of the profits anyway. As Kincaid points out, if it costs $10 you're not going to bother pirating it. I think that if people start doing this instead, it will change the face of the textbook industry altogether.

Here are two examples of how the Kindle could be used to change the way people look at textbooks. The first, is what is called (or used to be called) "Daida Book". Back in Fall 2006, I took Engin 101 with Prof. Daida. The class was an intro to programming in MATLAB and C++. For the MATLAB component, Prof. Daida had written his own textbook (it was a series of Mathematica notebook files). While every other section of Engin 101 had to shell out $100-ish for textbooks, we got em free. And I'm fairly sure that no one felt that they were suffering due to lack of a "published" textbook. Personally I think Prof. Daida's book was a far better read than the "prescribed" textbooks. Bottom line, students were happier and less poor. Now you can say that Prof. Daida gave the book away for free, so what's in it for him? Well, I'll let you ask him what's in it for him, but if he wanted to make money off of it, he could've put a small price tag on it, and I'd be willing to bet that students would buy it and still be very happy about it. I'd also be willing to bet that it wouldn't be such a bad deal for him either. The Kindle lets you do this. Back in Fall 2006 adding a price tag would've been a little messy. Not anymore.

My second example is a "required" textbook: That was the required reading for my Algorithms and Data Structures class. The entire book is online, with source code for free in html format. Now I was an idiot and bought a physical copy before I realized that, but that's irrelevant. Someone in the class realized that the book was available online for free and once the word spread, quite a few people in the class never bought the book. For me, it was great because I didn't have to carry it around. Plus I get to use google search on it, so even better. I have the physical copy lying around somewhere, but even when I was in the course, I never used it. Once again, with the Kindle, this becomes so much easier.

Bottom line: I think the Kindle presents a superb opportunity to take the publisher out of the equation. After all, it's the content and not the medium of communicating the content that matters. Take the publisher out, you get a lot happier students, and equally happy authors.

- Sir Lapog Kahn.

Tuesday, May 5, 2009

Android 1.5 First Look

I just got the official release of Android 1.5 onto my ADP. And I'm loving it. I think it's a phenomenal upgrade, and here's a few features that really caught my eye.

Video camera - hell yes! It's been less than a year since the G1 release, and cupcake has video recording on it (iPhone 3.0 - still don't know if it has video recording). The quality isn't half bad either. Best part is, they've made it really easy to take a video, and instantly share it. You can either email it through gmail, the mail application, send it via mms, or upload it to YouTube.

Virtual keyboard - awesome! This really should have been in there a long time ago, but at least it's here now. I actually prefer the Android virtual keyboard to the iPhone's because it vibrates very subtly when you tap keys. I also prefer the suggestive text to the iPhone's auto correct. Another win for Android here.

Automatic screen orientation switching. Again, this probably should have been in to begin with. It works great, just as you'd expect. I never really liked this feature on the iPhone though - it never changes when I want it to, but quite often changes when I don't want it to. From my brief toying around with the feature, the Android does it slightly better, but still not good enough for me to have it turned on.

They've also made a few changes to the default UI for Android. There's some texturing going on now. Looks nicer. Nothing major though.

From a developer's perspective, this update introduces several new features to the SDK. I personally haven't tried and tested any of them yet, but will do so in the near future. When I get on it, I'll be sure to write about it.

If you're a 1.1 or earlier developer, you may be made a little unhappy by this update. They've changed the minimum size for some UI elements (Buttons for instance). So if you were relying on "wrap_content" to make your UI look just right, you may have to redo it. Not really sure why they did that.

All in all, I think this is a pretty phenomenal update. If you haven't already gotten it, get it now and you won't regret it.

-Sir Lapog Kahn.

Upgrading ADP to Android 1.5

If you don't already know, Android 1.5 is now officially released. The "official" way to get it onto your ADP is written about here. However, there seems to be an error with the javascript on that webpage and therefore, you can't download any of the images (until they fix it - if they fix it and I don't update this post, please let me know via comments/email). This got me really pissed off and took me to #android-dev to ask for help. And I did get help. I'd imagine that there are quite a few people who are frustrated by this, so I figured I'd write about how to get your hands on the updates.

Update: The page appears to have been fixed. I had emailed HTC support reporting the error, and they replied to me within 24 hours saying the page had been fixed. I am very impressed with their efficiency. Hats off to you HTC.

It's pretty simple really. You use wget to get the files directly, setting the referer to the link itself. Here is the exact command. Wait for the files to download. To ensure that the files are the right ones, you may want to do a checksum.

Once you get the files, go ahead and follow the instructions on the page mentioned above. They worked fine for me. However, I have read about a few people having problems with adb not recognizing the device. Keep in mind that you don't have to go through adb as mentioned on the HTC page. You just need to get the relevant updates onto the SD card with the name of - you can do this with Windows Explorer, Finder, Nautilus (or whatever it is you use) if you prefer doing it that way.
If you're having trouble with adb, try this instead:

Mount the phone's SD card onto your computer somehow (either through the USB cable, or by plugging it in directly). Once you've done that, copy the updates (one by one, as mentioned in the tutorial) on to the SD card, and rename it to (irrespective of what update it is). Then follow the instructions on the HTC page. This hopefully should circumvent any adb problems.

That should be all you need to get Android 1.5 onto your ADP. Have fun with it!

Friday, March 20, 2009

Background processes on Android

I’ve been working on an android application for a Special Topics class here at UMich. I chose the android platform for the app, because it offered me one great asset: background processes. I had to give up the much larger user base of the iPhone just for this. (Well, there’s also the fact that android is open, java based etc etc etc).

It’s now coming to that time of the semester when I’ve got to stop procrastinating and get started on the app. I now also have an Android Dev 1 device to play around with. So with all of that in mind, I decided to do get to work. First, I wanted to see how well background processes integrate into the android framework, so I downloaded a few generally useful applications to test this. I tried: meebo (for IM), and twidroid (for twitter). I very quickly found that these apps integrate into the android system beautifully. They use the notifications area to display alerts and also use the phone’s vibrate/LED/ring tone features to alert me. I was very encouraged by this. That’s when I hit the snag.

Most of my testing was being done at home and on campus (which is where I spend all of my time). Both places have access to Wifi networks, and therefore I was using those instead of the much slower EDGE network (no T-Mobile 3G in Ann Arbor yet). The result was that the first time I pulled the phone out of my pocket to make a phone call, the battery level was critically low. I was pretty shocked by this considering that I’d charged the phone overnight, and it had been on for barely 2 hours. Initially I thought this was a one off thing, maybe the charger had been unplugged accidentally or something. But, turned out that was not the case since it happened 3-4 times repeatedly. That’s when I thought it was because I was using Wifi all the time. So, I turned off the Wifi and started using EDGE instead. This helped significantly. The battery life went up to roughly 4-6 hours (keep in mind that I’m not much of a cell phone user – I made/received approximately 1-2 calls in each period). Still, this was really no good (who charges their phone every 4-6 hours).

Having seen this I started playing around with the apps themselves. Meebo pretty much has to run continuously and use the network. I thought this might be the root cause of the problem and turned meebo off. I also set twidroid to look for updates every 1 hours instead of every 5 minutes. And voila! I haven’t charged my phone for over a day, and the battery level indicator is still showing well above 50%.

This led me to the following belief: running background processes on a cell phone is simply *not* a good idea. The drain on battery life that it poses is absurd.

As if to prove me right, Apple said the very same thing at the preview of iPhone OS 3.0. They said that background processes reduced battery life by roughly 80% even if the phone was not being used. They cite this as their reason for using push notifications instead. I think they’ve got it absolutely right on this one. While it’d be amazing to have background processes, as things stand, they’re of no real value. I’d much rather have push notifications.


1. It’s pretty obvious that push notifications are a better way of doing things (given current technology). But, there are some uses of background processes that push notifications can’t handle. It turns out the app that I’m building is one such use. What if you need to constantly receive the phone’s location (via GPS, say)? There’s no way you can do that with push notifications. If you know a good solution to this problem, please let me know :)

2. I didn’t mention earlier that the android system keeps your contacts, gmail and google calendar in sync (almost instantaneously). I also have the phone set up to receive my UMich email via IMAP (also almost instantaneously0. Somehow, this doesn’t seem to drain battery life at all. Is it just the case that the applications I chose are badly written?


- Sir Lapog Kahn.

Sunday, March 15, 2009


I’m sure most of you have heard of, or use it actively. If not, check it out now! We all know how awesome Meebo is. What may not be all that well known, is that there’s an Android application by Meebo. And it’s awesome!

It works the same way as does, except, since it’s a native application, it integrates really well with the Android OS. It runs as a background process when you close it, so you can receive IMs even if the meebo application is not open. This is really cool, because now I can stay signed in on my phone all the time. Not something I can do on my iPod Touch.

The app has support for everything that’s supported on You can still login with your meebo id. The app’s well built (has yet to crash on me), and like I said before, integrates really well into the phone. Plus, it’s free.

Bottom line: if you’re an android user, you should get Meebo yesterday.

- Sir Lapog Kahn.

Android Dev 1

I’m currently in a class that’s about developing applications for the iPhone/Android operating systems. My team and I are working on an application for the Android.

For several reasons, we stayed off the iPhone. The most important one is the closed-ness of the iPhone. I have several rants to make about this, but I’ll get into them some other time :)

To help debug and test our application, I recently got an Android Dev 1 device (the University is paying for it, so whoo!). This is the same HTC G1 handset, but shipped to registered Android developers only. It’s unlocked, which means you can put in a SIM card from any carrier, and it will work. The idea is to have developers be able to test/run their applications on a device, without having to get a contract with T-Mobile. (Of course, this can’t be done with the iPhone, so boo!).

Couple of quirks with the device though. It *needs* you to have a data plan enabled SIM card. It can be from any carrier, but it must have a data plan, even if you only plan on using the WiFi connection. From what I’ve read, you can boot up the phone with such a SIM, take it out, and all future boots should work without a SIM card. But, since I got a data plan on my TMobile SIM anyway,  figured I’d make the Dev 1 my primary phone.

Second quirk: (sorta, not really) you need to have a google account linked to the phone. This way it syncs your contacts, gmail, gtalk, etc to your phone automatically. This is 2 way sync, btw. This feature is really awesome and I would’ve done it even if it weren’t required, so it’s all good.

I’ve been using the device for a couple of days now, and it’s been awesome! I actually like it much better than my iPod Touch. Except for the fact that you can’t use standard headphones, which basically means I can’t use it for music. I loathe the provided headphones. As to why HTC did this, is a mystery. It makes *no* sense. Also, the phone gets really hot, is heavy, and runs of battery insanely fast.

Things I like: background processes mean I can run a host of interesting applications that couldn’t possibly run on the iPhone OS; Physical keyboard means I type much faster, without losing screen real estate. There’s a bunch of other stuff, but those 2 are the big ones for me.

As I use the device more, I’ll be sure to keep updating the blog with my opinions. Watch out.

- Sir Lapog Kahn.

A New Beginning

Once again, I have decided to start blogging. It’s one of those things that I decide to do everyday, but never get down to actually doing. This time, I sincerely hope that I keep with it. In order to actually make this work, I’ve decided to change my blogging style and keep my posts very short and specific. So, here goes!

-Sir Lapog Kahn