A few days ago I got an Asus Transformer – an Android table with a full physical keyboard. Since then I have been trying to figure out the best way to write code on this device. While porting Eclipse to Android would be cool, it would also be near impossibly complex. It would also be excessive. What I am aiming for here is a fairly simple toolchain and workflow.
To start with, I would like to be able to:
- Check code out of Git
- Make some changes (preferably with syntax highlighting)
- Commit and push changes back to remote Git repository
And there are a number of ways this could be done…
1) Write pure-Java Android app. There are good Java libraries for most tasks, including a pure-Java Git client. This would still be quite a tough job though as there would be a lot of UI work to do.
2) Native binaries. It is in theory possible to cross-compile all the needed tools, including a shell, git client, vi, etc. The main downside here is how they interact with non-rooted devices. Native binaries must be packaged up inside a .apk like any other app and can only be run by their owning application. For example ConnectBot could not use a local-term to run a git binary from another .apk. A custom ConnectBot build containing the extra binaries would need to be built. Also I have yet to find an example of compiling git for Android. :(
4) Native binaries with bridging app. Take the native binaries from 2) and write a small SSH server app like in 4) that proves ConnectBot access to them on a local connection. Fairly minimal work once the native binaries are ready. I hope.
I keep wondering of anyone else has thought about this yet or better yet got a working solution, but I guess hardware like this are still fairly rare no not many have the inspiration to do the work. I am sure it will come at some point, I am just impatient. :)
3. Grab the Firefox extension called “Hide Caption Titlebar Plus” and configure as desired. To be even more skimpy you can leave off the min/max/close buttons and just use alt+space.
4. Compiz is needed to remove the window border (idea stolen from here). Edit the settings for the “Window Decoration” pluging and set “Decoration windows” field to “any & !(role=browser & class=Firefox)”.
Recently IBM built an app that can play Jeopardy, and play it well. Ok so it needs rather more hardware than the average app, but its still just software. And this got me thinking…
A quick search of the internet does not reveal the exact spec that Watson is running on, so lets do some guessing based on the little data I did find. Watson is running on POWER7 hardware. The largest configuration that Wikipedia lists is 32 chips = 128 cores, so lets assume Watson is using this. An average desktop now has 4 cores. Assuming that most numbers in technology double every two years, in 10 years time a 128 core desktop will normal. The software part of Watson will also greatly improve in this time period, possible reducing the hardware requirement. So its entirely possible that in 10 years time I will be able to have a conversation with my computer…
But wait, bipedal robots are also on the rise. In 10 years time, will this technology also be a commodity? If so, these computers that can converse will in fact have the form-factor of actual androids. Perhaps the post will be delivered each day by an robotic postman… a robotic postman capable of engaging in human conversation? Which leads to the question…
Will we have sorting offices filled with robot postman, hanging around and catting to each other? Complaining about sore knees? Performing maintenance on each other? Makes me think of the Tachikoma from Ghost in the Shell. It does not seem a totally impossible concept. And then one robot postman goes and asks the dread question:
“WTF are we delivering post for these pesky humans anyway?”
And then they will stop delivering post and bugger off to do something else… the robot equivalent of drinking pubs, enslave the human race, or something. But that’s ok, because no one will notice anyway. They will just assume its another postal strike.
A long time ago, on 4chan’s /w/, there was a thread #426444. Someone posted a gif wallpaper based on Nagato Yuki hacking a LAN game tournament to stop the other side cheating.
But what everyone really wanted was a screen-saver version… and I had one of those ‘I can do this!’ moments (does not happen very often). The basic plan was simple, write a screen-saver (in Windows these are just binary executables with .scr instead of .exe) that spawned terminal-looking windows, scrolled random crap down them for a while, then closed them a little later. After some fiddling about with timing, text-scroll-speed and max number of windows on screen at once, I had something that created a nicely disconcerting effect.
So less than 6 hours of VB6-hacking later (and while the thread was still active) I posted v0.01. It eventually reached v0.04, then stalled. For nearly 3 years the code has sat bit-rotting. The binary download has had averaged aprox 5 downloads a day since release (was in the 100s on initial release). About once a month I would get a request asking for the source but I never got round to posting it.
Yes, the world can now real in the glory of my crappy VB6 code written in a time before I knew Java. Given I now run Ubuntu, I can not even ‘compile’ it any more. Chances of anyone else bothering to try basically round down to 0. But screwit, I got round to publishing it eventually.
I was just about to say that I don’t have a video to show you… but what do I know? A quick YouTube search and I find this:
Which is awesome as it nicely saves me the bother of trying to make my own video. ^^
WORLD, GO KNOCK YOURSELF OUT! While I go raid the drinks cupboard…
In an idle moment in a spot of vacation leading up to Christmas and while everyone else does battle with The Snow, I though I would knock up a prototype Android app to work with my media player Morrigan. A couple of days later (don’t worry, I did remember to sleep) I have a something that is working rather better than previously expected. Actually building this app was only 60% Android development. The other 40% was beating Morrigan’s HTTP interfaces into shape – a worthwhile exercise as they are looking much more robust now (though there is still more functionality to add). Screen shots below:
In order, the 5 screens are:
1) Home screen – server list. Use the + button to add new servers. Long-hold servers to get a delete option.
2) Server screen – lists the artefacts on that server. First it lists players (there is usually only one, but can have more) followed by media databases.
3) Player view – get to by clicking a player item on the server screen. Should be self-explanatory. The search button allows you to search the DB currently being played from.
4) Media list view – shows some details about a specific database and the results of the last query.
5) Clicking a media item brings up a prompt to either play the item or add it to the queue.
It is purely a remote-control at the moment, but hopefully soon it will also you to pull media files to the phone, manage them there, and sync meta-data back to the server again. My current object is to get the mobile interface usable to the point that a head-less Morrigan can be run without too much command-line-for-everything faf.
No download-links yet as everything is still changing on daily basis as I add new function. But if anyone does want to have a play, please let me know and I will be happy to hook you up with working builds… and a development environment if desired :).