Categories
android

Andnav2 working on Hero again

First a short background. HTC Hero released with android 1.5. Google releases android 1.6 with TTS (text-to-speech) support. Andnav2 working fine since it uses external tts library. Author of Andnav2 (Nicolas) releases version compatible with android 1.6, but leaves all users of 1.5 devices out in the cold. The update was uploaded to marked with NO warning. After many talks back and forth Nicolas finally agrees to release a version that at least starts up on 1.5, but still crashes when using turn navigation. HTC announces that they are working on a new firmware based on 2.0, but release has not yet been determined.

So with that history out of the way, I now announce a version of AndNav2 that works on HTC Hero by simply removing all the calls to TTS. You can download the version here. Please note that you need to uninstall your previous version of andnav2 first as this version is simply signed with the android beta key.

I could have removed all the ads as well, but that was not the point of this reverse engineering. I simply want to be able to use a program, which in my view, is the killer app for the android phone. Don’t get me started on Google Maps with navigation. It’s US only, not based on OSM, and works only on android >= 1.6.

Enjoy 🙂

Categories
Programming

Go

Google released a new system programming language. I wonder if the names of Robert Pike and Ken Thomsen will make it more appealing to C people 🙂

It’s clearly meant to go head to head with C++. The two most interesting design decisions to me is their take on OO (feels like templates done right and no crappy inteheritance in the ordinary sense) and concurrency which looks a lot like Erlang because it’s CSP. Both of these things make it feel very functional.

So many languages to tinker with and so little time 😉 Oh yeah and it doesn’t run on Windows yet 🙂

Categories
python

Python scoping

Last friday, Lau discovered an interesting edge case of python. Something that at first appeared to be a bug, but later revealed a deeper truth about the scoping of Python. I guess coming from a C++ background spoils one in some regards. Scoping in C++ is simple and uniform, I have never in many years of programming C++ got bitten by the scope of the language, something that I also can’t say about C#.

The problem boils down to how Python treats local variable and global variables. The following example, stolen and modified from here, shows the edge case in its most simple form:

a, b = (1, 2)

print(a, b)

def test():
    print(a)
    print(b)    # (A)
    #b=1       # (B)

test()

(A) works as long as (B) is commented out. The strange thing is that changing (B) into += produces the same result. Actually it is the case that += a global variable will never work, unless you have declared it in the local scope first. This comes back to the way Python threats variables in the local scope. The following link has more examples to illustrate how scoping works and also how this is different in Python 3k. As explained on Stackoverflow, using the dis functionality sheds some light on strange cases like these. All this said, the scoping has one good thing going for it. The following is quite useful and perfectly legal in Python:

i = 0

def ex1():
if i < 0:
b = 10
else:
b = 20
print b

ex1()

Categories
android

Getting android emulator running on Ubuntu 9.10

I had a little trouble getting the android emulator running on my laptop. I wanted to start debugging why andnav2 is no longer working. Hopefully Nicolas can get it fixed, but it appears that he’s quite busy 🙁

The first problem I ran into was that the buttons in the tools/android application where not responding properly. Starting tools/android with the env variable GDK_NATIVE_WINDOWS=1 fixed that problem. Next problem was that the ssl mirror for getting the different SDK versions was not working. A quick google revealed that adding a sdkman.force.http=true to ~/.android/androidtool.cfg fixed that. Do not try to just remove the http. You’ll get the SDKs, but it will not work.

Last problem was getting java jdk working. I settled on openjdk as it seems to be the way forward. Be sure to use java-alternatives to set your java version. Sun-java6 seems to be 9.04 so I should probably remove that at some point. Just don’t want to ruin my webbank 😉

After getting everything up and running I tried the debugging tool and it appears to be really neat. It has tons of debug information, even down to when the GC is running, and was able to give me a proper backtrace of the problem. Another really cool thing is that it’s extremely easy to test ones application one 1.5, 1.6 and 2.0 by simply running 3 different emulators. Or different screen sizes for that matter. One can also see some of the goodies coming in android 2.0. The browser seems to have gotten a nice overhaul. Can’t wait for HTC to release an updated ROM based on 2.0.