New Apple USB Keyboard
I've been dreaming of having a USB keyboard that uses the keys in my Macbook. I've been in total love with the keyboard on the MacBook since it came out and I picked one up a few weeks later. The keyboards on MacBookPros feel like crap. The current Mac USB keyboards are also near useless- their gentle slope hurts my hands after a few days of use. Soon however, my dreams may be reality as pictures of the new Apple keyboards are leaking all over the net, and they are definitely MacBook-based. The MacBook keyboard looks like an old 1980's chicklet keyboard, however, it has the best spacing and feedback of any keyboard I've ever used.
See Apple Keyboards Compared to Old Keyboards at circa1978.com.
OpenEinstein build 48 for Nokia 770
I've complied OpenEinstein 2007-07 build 48. Current as of today. You can download it below. It's about 1.8 megs, bzipped. It will expand into a 16 meg file.
Feel free to download the binary here. You'll need this file also: Einstein.rex. The last thing you need of course is a real Newton ROM, so please have that handy. Directions are in the manual-- it's worth the read if you are going to try and run this.
I'm still trying to figure the best way to make this run on the 770. I like killing the maemo_af_desktop, so that the OpenE isn't locked into it, but sometimes OpenE won't start. If someone has it going full screen on the 770, please add a comment for your exact startup line. I still haven't gotten it to go the full 800x480 on the 770.
Managing multiple JMX controls on Tomcat
We had another puzzle at work again. How to manage all the JMX controls that the devlopers had nicely written for us using little tiny MBeans.
Normally, the devs just ssh -X over to their tomcat instance and fire up the jmx console via X. This won't scale out to 10's of tomcat nodes. And we have to manage some custom controls on each node.
A great open-source app that handles this smartly is jManage. It's a self-contained jetty container and app. It deploys quickly and is a snap to setup.
Their Tomcat directions were empty, but I figured out how to make it work with some googling. I've since updated their Tomcat Wiki page with the directions. It's easy. If you need something like this to consolidate JMX management, jManage is just the lightweight tool you need.
[UPDATE 7/25] A good page from sun on JMX Management.
iPhone Compromise Reported
There is a lot of buzz regarding this article that was printed in the NYT this morning. ISE (Independent Security Evaluators) found that not only does every process run as root on the iPhone, the heap is executable. So they fuzzed mobileSafari till they found an overflow, which allowed them to execute any API call on the iPhone. More details are in their white-paper at their site (and direct link is below). They notified Apple back on the 17th of July.
THere white paper discussing their discover techniques and findings is here.
I suppose we'll be getting our first iPhone update fairly soon now.
First non-Apple iPhone App – creeping closer to N770 hackability
The first ever non-apple application has been allegedly run on the iPhone. The people over at the iPhone DevWiki report. Watch out Nokia 770, soon the iPhone will be as hackable as you are!
At least, some day it will. This user, Nightwatch is using his own arm toolchain, so this isn't like we have a nice Scratchbox available to install onto debian. But as time moves on, our own apps on the iPhone draw closer and closer.
Xen Domains, RHEL and Networking
At the office I'm deploying some new servers using Xen domains running under RHEL 5.0. We use RHEL 4.4 for our systems, and so re-deploying some of them as RHEL 4.5 (the Xen-kernel enabled version) Domains saves hardware space, money and keeps the server room cooler. Many dev servers are not utilized like production systems and so will benefit from the Xen virtualization.
Setting up the domains is pretty straight forward, RedHat has a nice guide using their virt-manager GUI tool. There are also excellent guides at the Centos wiki.
Two things were not obvious to me, and I'm posting my findings here to help others.
Issue 1 Multiple networks
After building the domain, the first thing that stopped me was that I needed multiple networks. The virtual hosts need to be on three networks, and so I needed three virtual devices. The RedHat guide has a nice section on how to create the necessary br0 (network bridge devices) devices, so modifying the scripts to go from one br0 to three (br0, br2, br3) each corresponding to a real NIC on the host was straightforward. However, how to get the virtual devices to recognize and use these new bridges? There is only one config file for your domain, and it looks like this:
# Automatically generated xen config file name = "myVirtualPony" memory = "1024" disk = [ 'phy:/dev/virt_vg/some_virtdisk,xvda,w', ] vif = [ 'mac=00:16:3e:3d:11:f7, bridge=xenbr0', ] vfb = ["type=vnc,vncunused=1"] uuid = "fff0f6c0-60e2-xxxx-xxxx-xxxxxxxxxx" bootloader="/usr/bin/pygrub" vcpus=1 on_reboot = 'restart' on_crash = 'restart'
It should be obvious to any Python programmer, but it wasn't to me initially. Eventually I realized you had to add some new attributes to the vif list. The Redhat guide has a nice python snippet to generate new MAC addresses for you. I used that to generate two more MACs, then added them in:
# Automatically generated xen config file
name = "myVirtualPony"
memory = "1024"
disk = [ 'phy:/dev/virt_vg/some_virtdisk,xvda,w', ]
vif = [ 'mac=00:16:3e:3d:11:f7, bridge=xenbr0',
'mac=00:16:3e:19:11:ed, bridge=xenbr2',
'mac=00:16:3e:49:11:40, bridge=xenbr3', ]
vfb = ["type=vnc,vncunused=1"]
uuid = "fff0f6c0-60e2-xxxx-xxxx-xxxxxxxxxx"
bootloader="/usr/bin/pygrub"
vcpus=1
on_reboot = 'restart'
on_crash = 'restart'
Now just reboot the domain with a quick
$ xm reboot myVirtualPony
and loginto the domain. Copy the /etc/sysconfig/network-scripts/ifcfg-eth0 to ifcfg-eth1, ifcfg-eth2 and edit them, using the new MAC addresses you created and the proper TCP/IP info.
There is an excellent Page on Xen Networking at Xensource Wiki. I wish I had found this when I was banging my head on this problem.
Issue 2 - Virtual Console
After my domains were setup most Xen docs talk about using the virtual console to login to your domain from the host, similar to what you can do with Solaris Zones.
On the master host you should be able to login to the virtual console of the local domains. However, when you build your domains with RedHat's virt-manger they don't setup the virtual console correctly. They attach serial output to the virtual-framebuffer. So if you try and use the virtual tty, you only get the output of the kernel booting, then it stops and your terminal is stuck.
To fix this, you can follow the directions Xen Centos Tips and Tricks page:
You just need to add
co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
in /etc/inittab
and add
xvc0
to the file /etc/securetty. Then do a @ telinit q to re-load the /etc/inittab and you should be able to use the virtual console from a tty.
Now with that out of the way I can do this to login into my domain:
xm console myVirtualPony
Xen is fun.
Next Internet Tablet to include Phone?
Nokia must be responding internally to the iPhone mania. The question is, will it be a more advanced smartphone, or a phone enabled internet tablet? Scoble asked around and only got some smiles. Can Nokia really continue to push the Internet Tablet line, sans phone, now that the iPhone has set the bar so high? Nokia has some cool devices, good technology, mature development infrastructure and a lot of community based support and coding efforts. But relying only on wi-fi will not enable a truly mobile communications device. They have something ready to replace the N800. Will they strap a phone onto it? Will they dump Opera for Mozilla or build-out their Webkit browser? That would certainly be in the arena for an iPhone competitor.
For all the committed Nokia users out there, hating the iPhone buzz-- if you haven't seen this page yet, give it a look. Why? 'cause someone thinks that The iPhone is a piece of shit, and so is your face. Perhaps Nokia's answer to the iPhone is already here, it's just losing marketing game.
iPhone vs N800 Quick Comparison
Apple iPhone: ARM CPU @ 667mhz [Samsung], 128Mb ram, 8GB Flash
Nokia N800: ARM CPU @ 320mhz [TI], 128Mb ram, 256Mb Flash
N800 has dual SD cards for more Flash, iPhone has no way to extend the 8Gb. N800 has a bigger screen, higher DPI but doesn't have the light-touch touch-screen like the iPhone. I'd still consider getting a N800 to replace my 770 if the price drops. I'd like to use ITOS2007 and have Flash 9 available for browsing-- especially now since Mozilla has just been released for ITOS2007. We'll probally never see Flash in the iPhone, but who knows. I just don't think Apple will do it.
Building Open Einstein
Here are some more detailed instructions on getting Open Einstein built on MacOSX Intel, using the JAM complier and targeting the Nokia 770. I also built it for MacOSX, to run locally on my macbook.
The published directions are here, and you should read them first and familiarize yourself with them.
Install MacPorts
Open a terminal and then use macports to install the following packages:
$ sudo port install gettext $ sudo port installlibffi $ sudo port install jam $ sudo port install arm-none-linux-gnueabi-gcc
Then you must add
/opt/local/bin
to your $PATH on the Mac (edit .bash_login in your home directory), then restart your terminal or read in the new bash_profile.
Pull down Klibs and Build
K is located at SourceForge (http://sourceforge.net/projects/KLibs/)
$ cvs -d:pserver:anonymous@klibs.cvs.sourceforge.net:/cvsroot/klibs login [Enter] for password $ cvs -z3 -d:pserver:anonymous@klibs.cvs.sourceforge.net:/cvsroot/klibs co -P K $ cd $PATH_TO_KLibs/_Build_/Jam $ jam -starget=nokia2006
Klibs should build with out problems. If you want to build for the Mac, just leave off the -starget parameter.
Pull down Open Einstein and Build
$ svn checkout http://einstein.googlecode.com/svn/trunk/ einstein $ cd einstein/Einstein/_Build_/Jam $ jam -sK=$PATH_TO_KLibs -starget=nokia2006 -sjittarget=GENERIC
Now there is a new folder in the /_Build_/Jam directory called build.ARM-LINUX-Nokia2006. This folder will contain the einstein binary for the Nokia 770.
Move files over to 770
You need three files:
[You should set up sshd on 770, change password of 'user' to something you know, change the ip address below to match your 770 local ip. Use ifconfig -a to check the local 770 ip.]
Now copy the files:
$ scp $PATH_TO_EINSTEIN/_Build_/Jam/build.ARM-LINUX-Nokia2006/einstein user@192.168.155.155: $ scp $PATH_TO_EINSTEIN/_Data_/Einstein.rex user@192.168.155.155: $ scp $NEWTON_ROM user@192.168.155.155:
Once they are copied over, you can start Open Einstein like this:
/home/user # ./einstein -l log2 -m 737041 . Welcome to Einstein console. This is Einstein Platform 2007. Creating image... Max units count = 986 Max units count = 1026 Booting... Type help for help on available commands. einstein> power
And you should see the Newton Start up on your device. Below is a screen shot of the Newton running on my MacBook, in Xwindows:

Open Einstein booting on 770
After some trial and error, and some help from Paul G, I managed to build Open Einstein for both my Intel Mac and for my Nokia 770, using just my Macbook. I followed the directions to build at the Google Code site. I'll have more explicit directions soon, but the code does build and run on the 770. And you don't need scratchbox to build it! Excellent work Paul.
Here are some screen shots (click for bigger versions):
After Einstein was built, the directions for starting it are the same as before. The easiest way to control einstein is via SSH into the 770, so that you can shutdown all the Hildon interfaces.
Full directions to build this will be up soon.
Update: There is a new Einstein Platform 2007.7 User Manual at Paul's Einstein Page.
Nokia 800, N95, iPhone Browser Video Comparison
Update 06/17/07: Here is the link to the original post over at atmaspheric. The blog is worth reading.
I found a cool video over at umpcportal.com, filmed by Jonathan Greene. He puts an iPhone, Nokia 800 and the N95 thru their paces while browsing the web. The video is nicely done and well narrated. It shows a lot more than my pictorial essay from a few days back. Worth a look at only 22 min long. You'll certainly get a sense of the various levels of ease-of-use for these devices when browsing the web.
Some points that stuck me as I watched it:
Asus Eee PC $250 Linux Laptop
$250, 16Gb flash drive, 512Mb RAM, 7" LCD, 2 lb., full keyboard. Runs Linux. Has Firefox and Openoffice, Skype. 3 USB ports, VGA out, SD card reader, ethernet, wifi, webcam. Linux.
On sale worldwide in August from Asus. Is this going to be a hit or what? I'll pick one up for that. It's less than the Nokia 800, and it has a keyboard. For when I need to do more typing that I can stand on my iPhone.
Nice hands-on review and many pictures at Notebookreview.com
Newton ARM Emulation Goes Open Source

At the 2007 Worldwide Newton Conference in Tokyo on July 8th, Paul Guyot announced that his most excellent Newton Emulator for ARM, Einstein, was now open source and available immediately on Google Code. His announcement to the NewtonTalk mailing list is worth the read. One improvement that sounds enticing:
"the heavy work done these past weeks allowed me to design a new experimental module where NewtonOS instructions are executed natively on ARM PDAs. "
There have been other improvements to Einstein since last year- the biggest (to me) is the ability to cross-compile and build Einstein on your Mac while targeting the Nokia 770. No more waiting for binaries to be released. The 800 was tested and the binary didn't run-- ITOS2007 has some different libraries (from ITOS 2005 and 2006), which probably caused issues. I'm attempting to roll a build for my 770 this weekend. We'll see how it goes.
Here are my screen shots of my 770 from the release of Einstein last year.
Also announced was the release of Driver Labo, the wifi drivers for Newton by Hiroshi Noguchi. AFAIK, these are the only available drivers in the world that support WEP on the Newton. I had purchased licenses back when they were available, but since 2005 Hiroshi hadn't ever responded to requests and pleas to accept payment for new licenses. As a result many Newtons can't participate in locked-down Wifi networks. The release of these drivers as Open Source is a welcome event.
There is an overview of the WWNC '07 with some pictures of course.

iPhone Development- Old School
There was immediate and critical response to Steve Job's announcement of the SDK for iPhone.... use html. But is Apple on to something? Forcing eager developers to use the open standards of the web? Forsaking almightly Flash? No IDE? Apple seemed by many to be channeling the Reality Distortion Field at full blast. But the more I read about this, especially in regards to dumping Flash (and I don't think Apple will release it for iPhone) it seems that Apple may be helping foster a new, more open, standards-based category of web applications-- freed from the sluggish, cpu hogging stinking pile of crap that is Flash. Because what has been happening so far, and so rapidly, is amazing to me. A growing hot bed of activity is the google groups organized by iPhoneWebDev. How hot is this? So hot that a few old skool Newton developers are kicking around with web apps for iPhone. Both Hardy Macia and Serg Koren have posted recently, and I'm not surprised that they are embracing the iPhone development as it stands now. Javascript is probably pretty easy compared to NewtonScript.
Size of iPhone vs Nokia 770
I took some pictures showing the size difference between the 770 and iPhone. iPhone is really is smaller than you'd first think. Unfortunately, it also has a lower resolution screen than the 770. The zoom feature makes up for that somewhat (see the last picture in this post for an example of a zoom). It is nice that Safari always renders the whole page, so there is not any horizontal scrolling (unless you pinch-zoom). On the 770, boing-boing was wider than the screen and so it used a horizontal scroll. You can see that Safari didn't render the flash banner add on the top of boing-boing. You can also notice in the first picture that Safari does a better job of using larger fonts- the smaller screen is more readable than on the 770.
The touch-screen on iPhone is remarkably different than what is on the 770- it only requires the lightest touch of a finger, not physical pressure. Using a stylus on iPhone doesn't work- the screen is using the conductivity of your flesh to make contact, more like a touch pad on a laptop than a traditional touch-screen.
You can click on each of these to load a larger version in a new window.
The iPhone and the 770 both rendering boingboing.
Size comparison- stacked up.

The iPhone's tabs - multiple windows open. You slide the windows left and right to go to each one.
Safari zoomed for the main column of text on boing-boing.
Amy Banse Interview on Wallstrip
Our boss at Comcast Interactive Media, Amy Banse talks about CIM:
3:00 into the interview is talk of fancast.com
The Power of Marketing
Posts that contain IPhone per day for the last 30 days:
Posts that contain N800 per day for the last 30 days:
How about posts that contain Nokia per day for the last 30 days:
Amazing. I wonder how much Apple spent on the marketing for iPhone launch?
Speaking of the iPhone, I've been happily using mine since release and I've been able to do what I wanted to for the past few years: use a PDA sized device to browse my favorite websites and have them render on the device in an acceptable time frame. Using the iPhone for browsing is a delight and is many times faster than my n770. The cpu in the iPhone is a screamer. I can listen to music via the iPod functions and browse (with multiple 'tabs') with ease- as long as I'm in wifi range. Edge is pokey, but the majority of my browsing is a work and at home, where there is plentiful wifi. Nothing else near this size can render pages this fast- it's faster than some older laptops I've used.
And having a real working phone to boot is just one less thing I have to carry around. I'm sure there is a place for the Internet Tablets, but the 770 was never so useful as this iPhone has been in just a few days of using it. My 770 is fun to hack around with for a few hours at a time, but I've never been able to use it like i can the iPhone. And just imagine what is going to spill out once Apple gets a SDK out. Ebook readers alone will be a killer app. A lot of possibilities.
iPhone- cutting edge haptic interface
UPDATED: Neils in the comments set me right.... I'm just blocking the sound with my finger. I don't think this is any haptic interface at this point. Too bad, it's a cool idea.
The iPhone is an ingenious device-- anyone that's used one for a few hours can tell you this. Even with all the missing features, so much thought and design has gone into this first generation iPhone that getting this to ship on the promised date must have been a staggering amount of work.
The iPhone is on the cutting edge of haptic interfaces- the much vaunted pinch-and-zoom is the most striking example of that. But there are other interfaces around, some more subtle. I'm sure there are more that I haven't even found yet. But here is one I haven't seen written about anywhere else- the mute-touch.
If you play a video on iPhone, (YouTube or iPod video) the screen wants to go wide, and so you rotate it counter-clockwise, with the speakers now pointing to the right.
You need to be using the speakers for this to work- as you are listening to the video, touch the lower speaker (this would be the right-hand bottom quarter) on iPhone. It mutes the sound. Let go and the sound pops back to normal. A really nice touch.
Philadelphia EDGE Service Restored
Since I activated the iPhone on Saturday morning, Edge has never worked here in Philly. I finally called ATT and they reported no Edge for PA- all of PA? Regardless, it just started working now. I get a little E icon replacing the wifi icon. Seems pretty snappy.






