I've recently acquired a new phone to replace my aging iPhone 3G: The Samsung Galaxy S (or the GT-i9000 everywhere outside of the UK [apparently]). This is my first dip into the Android world, and I've got mixed feelings about it.
In the past I had Windows Mobile devices for work, around the 5 series, and in many ways Android reminds me very much of that experience. Now hear me out before you start tracking me down and attempting to kill me: Applications vary wildly on quality and the operating system gives you a reasonable amount of flexibility at the expensive of battery life and in some instances a complexity of use.
After 2 years of almost exclusive iPhone use I'm starting to remember what the appeal was of the original iPhone, despite the somewhat draconian strangle hold Apple has over the platform. From time to time I yearn for a dictator to swoop down and with an ironfist make every useful application I've installed follow some sort of coherent usability and style guidelines. I long for someone to clear the piles of crap from the Application Marketplace, or at least create some clever system where they don't bubble to the surface.
Despite this I do still love the Android platform, but it just feels like it's not quite finished - yet. The default mail application needs some love (or better yet, to merge the changes from k9), the browser needs a little tweaking, and so on and so on. I'm not yet regretting the move to Android, and I'm not sure that I will for sometime to come, if at all. The fact that I now have a mass storage device in my pocket at all times, which is also a hackable unix box underneath is very comforting.
As for the Samsung Galaxy S, it's a great bit of hardware on paper. In real life I feel it does need more RAM, and the battery really does need to be better. With some faffing it's acceptable. This is in part down to some of the applications that are bundled, and in part down to the massive screen and GPS, but even with just bluetooth on in the car it really does drain more quickly than I've become accustomed to. If anything it's another reminder of the Windows Mobile days of yore. The build quality is one place where I really feel like I've been spoiled by Apple. I've become very used to aluminium laptops[1] and phones that feel solid. On a favourable day I would describe the Galaxy S, as "classic phone" or "classic Samsung", and on an unfavourable day as "cheap". It's a bit of a let down considering the outstanding specs on the rest of the phone.
The one thing that is the "killer app" for this phone is the inclusion of Swype as standard. Whilst not exclusive to the Galaxy S, or even Android, I can tell you that this; Swype should become the defacto standard for input. The fact that the iPhone is inflexible enough to allow modifications to this extent places the nail in Apple's coffin as a mobile phone supplier for me.
If you've got any phone with Swype included in the default ROM I highly recommend that you enable it and have a play. If you're unlucky enough not to have a compatible phone trawl the nearest city until you find someone with one so you can understand why I feel it's so great. It may sound completely nuts, or like a gimmick, but it's really not.
[1] Having had accidents with laptops, ranging from dropping off tables to having rackmount servers and IBM thinkcentres landing on them, only my previous Apple Macbook Pro survived to live another day. To me this makes the case for decent build quality.
It's been a while since I've played EVE, but one of the issues even since the beta was that certain systems were laggy. Jita springs to mind.
To combat it as much as possible the EVE team have used some cool and interesting tech over the years, but earlier today they announced what might be the biggest change in their hardware (that I've noticed). Being a massive nerd it's an interesting read, especially with further promises on more information. Whilst CCP are generally quite open it's great to see them continuing - which for a MMO is mightily unusual.
It's hardly a first, but I did find some of the information out there a bit spread out. So, just incase I need to go through this again, I figured a 'blog post might be interesting - doubly so as I've not really got anything interesting from work, that I can blog about at the moment!
So, a bit of background. The AppleTV (ATV) is basically a dumb x86 PC - Pentium M 1GHz, 256MB of RAM, 40 or 160GB PATA HDD, 1x USB 2, 1x IR receiver, 10/100Mb ethernet, 801.11n Broadcom WiFi and a Nvidia Geforce GO 7300 - all which uses about 17W of power in a fairly compact and quiet, form factor. What I hadn't banked on was the very retarded power supply. I knew that the ATV wasn't able to power off, but I assumed that was a software thing. Oh no. The actual power supply has no concept of switching. It's either on or off. Which is slightly annoying.
The whole "hacking" process is largely taken care of - a bunch of enterprising invididuals have got it running, over the course of several iterations. The most recent is the efforts from the ATV-Bootloader team, who have basically built a small recovery image, which translates some of the EFI structures into BIOS compatible (allowing unpatched kernels to run) and has a very cut down Linux installation which then chainloads (using kexec) another Linux kernel. The really awesome thing is that these guys have made some nice tools to stream line the efforts if you want the ATV OS and Linux to co-habit. I didn't want this particularly.
So first thing first was the old hard disk was removed and a new one was prepared under my desktop install of Linux, via a USB to IDE converter, using the instructions on the ATV-Bootloader project wiki. Pay close attention to the requirements for a patched parted.
Next I used debootstrap to install a basic Debian (squeeze) system into /dev/sda4 (ATV-Bootloader sees all drives as /dev/sd*, where as when you boot into a kexec'ed kernel they will be seen as /dev/hd* - this confused me for a few minutes - not something you want when you're scrabbling around at stupid o'clock in the morning). At this point I then chroot'ed into it and used apt to install a kernel, but no bootloader. Since the ATV-Bootloader uses kexec all you need to do is have a valid one of the following: mb_boot_tv.conf, menu.lst (grub), syslinux.cfg (ISOLinux), or kboot.conf. Having played with grub files quite a lot I thought that I knew the syntax well, but do you think I could get it to work with a grub file? No. I ended up whimping out and using a mb_boot_tv.conf (popped it into the root of the Linux partition) which is a lot simplier[1] and is infact the first file searched for (so its slightly faster to boot). If you don't fancy that then check out boot_linux.sh from the ATV-Bootloader trunk to see all the options and example configs (in-line comments). The only other things you need to remember are the usual when debootstrapping - create a valid /etc/network/interafces (man 5 interfaces, if you're unsure), make sure udev numbers your network cards correctly (/etc/udev/rules.d/70-persistent-net.rules), and of course your root password. Exit, reboot and hey presto, you should be into a very basic Debian install.
My next annoyance was the flashing LED. By default it flashes orange to tell you that its booting, and then the ATV OS would reset it to a white light. Thankfully a great chap by the name of Peter Korsgaard has written a tool (available from git and here - note needs to be compiled) called atvtool to control the LED and the fan. It's a little basic and doesn't play well with lircd at the moment (you can set atvtool to release the controller back, at which point lircd needs to be restarted), although I'm hoping to have a poke and understand why and hopefully fix this.
WiFi is also fairly important to me since I'm going to use the ATV to replace my WRT54G bridging 2 networks here. Sadly the only real options seem to be using ndiswrapper or the Broadcom-STA drivers. I opted for the Broadcom-STA and things are going well, with no issues at present - the only special thing I did, for my own brain, was to rename the adapter to wlan0 (again, udev persistent-net.rules).
From here on out, if you're running headless, everything should be working like a dream. At this point I elected to install the nvidia kernel module only to see if I could get anything useful from lm-sensors, but there wasn't much luck on that front. if you're planning on using the ATV as a media center or with a monitor/TV, then you'll definitely need it.
What does this leave you with? A low power, almost silent, fairly capable machine to run part of your network. The only sad thing, in my eyes, is the limitation of a single USB port. From here you could run forked-daapd to share your music, any of the several network file systems, DHCP, DNS, you name it. Just watch the memory usage - don't forget that there's only 256MB of RAM to play with.
[1] Vaguely what my mb_boot_tv.conf looks like - note the /dev/hda4 instead of /dev/sda4. #try-net-boot
kernel /vmlinuz
append ro root=/dev/hda4
initrd /initrd.gz
Over the last few days I've been conversing with Current Cost, a UK based company which produces energy monitoring devices.
After I made a bit of a cock up (I eventually wanted a data cable after some testing with the unit in order to graph our rough power consumption and the Trec unit does not have a serial output) with the order they promptly handled and corrected my mistake.
When my unit arrived there was unfortunately the wrong sort of clamp, within the day a replacement was on its way with a little extra (USB-to-Serial data cable) to say sorry. The next day the clamp arrived and my Current Cost Envi is monitoring our apparent power consumption.
During the whole process the Current Cost staff were courteous and basically pretty damn awesome, and I'd highly recommend doing business with them to any one.
I've not yet decided how I want to grab output from the Envi yet: Perhaps an Arduino, perhaps a slightly modified WRT54G, however given that there's serial out, the fact that the units use Zigbee, and there's a fair bit of documentation out there, it's going to get done one way or another.