Well not quite. Turns out people have been getting confused on the pricing grid Oracle has on their site for the various products they provide. The confusion comes from the Embedded version of MySQL not supporting InnoDB and that the community edition isn’t listed as part of the grid.

The community edition still has InnoDB built in as an available storage engine but you can’t buy support from Oracle.

http://www.mysql.com/products/
http://palominodb.com/blog/2010/11/04/oracle-not-removing-innodb

TUAW is reporting that VLC may soon be removed from the App Store because it violates the GPL on the grounds that because the copy downloaded to your device is copy protected using a DRM then it violates the GPL.

I’m not a lawyer, but I don’t think VLC on iOS is in violation of anything so long as the source is available. Just because I can’t copy the compiled program doesn’t mean it violates the GPL. It comes down to the source code itself. In a sense, a version of VLC compiled for older PPC Mac systems also violates the GPL because I can’t copy the binary from an PPC system to an Intel system or even from a Mac to a PC. Further, you’d never copy the program files from one Windows PC to another because it’s far easier to download the installer and install it. So goes with VLC on an iPod or iPhone, it’s easier to just install it from the App Store, it’s free after all.

Been a lot of rumors flying about that the Macbook Air is finally getting an update. The Air hasn’t gotten a meaningful update in quite a while and is currently the only laptop model from Apple that doesn’t have a the large multitouch trackpad. Rumors include an 11 and 13″ sku and SSD only. AppleInsider has the details at http://www.appleinsider.com/articles/10/10/16/more_details_surface_on_apples_next_generation_macbook_airs.html.

In my previous post I talk about needing a TFTP server in order to serve some files to a hardware device. This post describes how I used expect to automate the process of logging into the hardware device and issue commands that copy in a config file, commit it to the device, upgrade the firmware and finally tell the device to reset to factory defaults and reboot.

Expect is a way to programmatically work with a normally interactive process. Using expect you can write a script that telnets into a system and then issues commands based on what it “sees.” Here is the script I used, with some important values removed, to automate the process of updating a number of devices.

#!/usr/bin/expect
set timeout 300
spawn telnet 192.168.1.1
expect "login: "
send "root\n"
expect "Password: "
send "tehmagicphrase\n"
expect "# "
send "cd /tmp \n"
expect "# "
send "tftp -g -r config.ini 192.168.1.159\n"
expect "# "
send "config.sh import config.ini\n"
expect "# "
send "tftp -g -r firmware.img 192.168.1.159\n"
expect "# "
send "firmware_upgrade /tmp/firmware.img 1\n"
expect EOF

The above script was saved into a file called pushConfig.expect and set as executable using ‘chmod +x pushConfig.expect’. To run the script, I powered on the device and waited for it to be ready, once ready I issued ./pushConfig.expect to start the update process.

Using expect is fairly straightforward. The most difficult part is ensuring you correctly tell expect what to look for before sending the next command. In the script above I do the following:

set timeout 300

This tells expect to wait at least 5 minutes for matching text before continuing to the next send command. What this means, is if I tell it to send some data it’ll wait up to 5 minutes to see what is in the expect line after the send. In the case of my script the firmware upgrade could take quite a bit of time and I didn’t want it to timeout so I set the value fairly high.

The next line tells expect to start a telnet session to a remote machine and then to wait until it sees:

login: 

Once it sees that it sends the username. The script continues like this until it sees EOF. At this point expect knows that the process is now complete and it exits.

By using an expect script I was able to simply power on the hardware device and wait for it to boot. Once booted I ran the script. This saved me and a co-worker a lot of time while pushing custom configurations and upgrading the firmware on a number of devices.

Expect is capable of a lot more than I used in my example and can react differently based on what it receives back from the interactive process or even loop over a series of commands. To learn more about expect try ‘man expect’ or search your favorite search engine.

Ran into a situation today where I needed a tftp server in order to serve files to a hardware device. Normally I would have fired up a Linux system to get the job done but it hit me (again) that I’m using a UNIX operating system and it’s bound to have a tftp server built in. Sure enough I found it hiding on the system but I couldn’t get it to run. After some searching around I found my answer and I thought I’d post it so hopefully someone else will find it.

If you want to run the tftp server issue the following command:

sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist

This will cause the tftp server to load and stay running until it either crashes or you restart your system. If you want to ensure that tftp is always running issue the following:

sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist

To stop the tftp server issue the following command:

sudo launchctl unload /System/Library/LaunchDaemons/tftp.plist

To permanently disable tftp issue the following command:

sudo launchctl unload -w /System/Library/LaunchDaemons/tftp.plist

When asked how Microsoft plans to the extended battery life and instant on capabilities of the iPad Ballmer had this to say

“I think probably the things of tomorrow are best left for tomorrow and the things of today are best discussed today,” he said. “So today, I will focus on Windows Phone.”

Or in other words, “we have nothing.”

Came across this article talking about progress being made with the new Apple TV in regards to jailbreaking and adding new functionality. Jailbreaking was recently ruled as legal. I think this is a big win for consumers who want to be able to use their hardware devices for whatever they want. For example, I think it’s ridiculous that Apple is allowed to force me to join their developer program if I want to write my own iOS application for a device I own. It’s perfectly reasonable that if I want to distribute my software using their App Store platform but beyond that I should be faced with such restrictions.

Also, just because jailbreaking has been deemed legal doesn’t mean pirating software is suddenly legal as well. There are still plenty of other existing laws protecting against that. In the next few months or years I think we’ll see additional clarifications with the DMCA and jailbreaking. For example, although the iPhone was specifically mentioned in the ruling, I actually don’t think it should be ok to jailbreak an iPhone for security reasons as it pertains to the cell phone network. The iPhone is part of a bigger infrastructure that is not owned and operated by the owner of the phone and in that case it’s a lot like a business PC being connected to a business network. At the same however, such a ruling will hopefully coerce Apple into providing a toggle on the phone allowing end users to install software outside of the App Store. This would satisfy what some end users want while still protecting the security of the cellular network.