GPRS, Bluetooth and Mac OS X

GPRS in your mobile phone and bluetooth are a real dream-team: Phones like that are small, fit in your pocket and still, they allow you to connect to the internet from your laptop – and even at reasonable speeds.

In contrast to the widely spread PC-Cards or wired connections, the handling too rocks: Just keep your phone in your pocked, dial from the laptop and use the internet. No fiddling with cards (or drivers. or strange software. your OS comes with all it needs to get the connection going), no problems with forgotten cables.

Bluetooth brought simplicity to the connection with your phone. Earlier we had infrared or cables, but nothing works as reproducibly as bluetooth does – at least in Windows.

As you know, I switched over to using Mac OS for my main office workstation. And today I was in the situation of needing internet in train and at a customers site.

Naturally, I wanted to use my mac to connect via Bluetooth to my K750i to use it’s GPRS capability.

While the bluetooth stack provides a very nice assistant to add a new bluetooth device and even allows you to create the GPRS connection, unfortunately, it does not work in the end.

Apple does provide some very specialized modem scripts, which is both good and bad. Good because if there’s a script for your modem/phone, it’ll work perfectly. Bad because if there is no script, it won’t work at all.

The assistant provided a list of Ericsson phone scripts and suggested using “Ericsson Infrared”. Naturally I first tried connecting with that, dialing *99***3# as I would in windows (the GPRS data connection being the third configured connection on the phone).

The phone did not even begin the dialing process.

I rebooted the Mac, launched Windows, created the RAS connection there and connected via GPRS to google for a solution (oh the irony…).

And I quickly found one: The modem scripts by Kia ora Ross

One thing to note though: You must use the script using a CID which is not configured on your phone (which is different from windows) and use the name of the APN as phone number (which also is different). With that in mind, connecting is easy.

What remains to be told: Apple which claims to be the superior OS usability-wise fails on this not-so-advanced task. Not only that. It fails in multiple ways:

  • It does not provide a generic modem script (like Windows does)
  • It suggests a completely non-working solution (instead of telling “sorry. I have not matching script.”)
  • One you get the right scripts, you have to click the “Show all”-Checkbox to be actually able to select it – despite all scripts listed in the default configuration being completely unusable.

So I’m coming back to what I was saying all the way: OS X or Windows? Doesn’t matter. Both have advantages. Both have disadvantages. Neither is clearly more usable than the other. Just go with what you feel more comfortable and live with the problems.

Oh and: Setting up a GPRS connection via a bluetooth-connected phone arguably is not a task doable at all for the people OSX was designed for. So it’s probably OK if it’s a bit harder. But still…. I’m not very happy about this.

PS: This is written and posted during a train ride. Connected via GPRS. Written on my MacBook Pro.

Tweaking Mac OS X for the Linux/Windows user

As you no doubt know by now, I’m gradually switching over from using Windows to using Mac OS X.

I have quite some experience with using Unix and I’d love to have the power of the command-line combined with the simplicity of a GUI here and then.

OSX provides that advantage to me: For one, I’m getting a very styled and time-tested UI, the ability to run most applications I need (this is where Linux still has some problems) and on the other hand, I’m getting a nice well-known (to me) command line-environment.

Of course, in my process of switching over, I made some tweaks to the system, I’m sure some of my readers may find useful:

  • Use a useful default shell: I very much prefer ZSH, so chsh -s /bin/zsh was the first thing I did.
  • Use a useful configuration for said shell: I’m using this .zshrc. It configures some options, enables a nice prompt, fixes the delete-key, sets the path and does other small cosmetical things.
  • Install the developer tools. They are on your install DVD(s).
  • Go and install Fink. No UNIX without some GNU utilities and other small tools. The current source-distribution works perfectly well with the intel macs.
  • Fix the Home- and End-Keys.
  • Tweak the terminal: Open the Window-Settings, chose “Display”, use a reasonable cursor (underline) and set your terminal to Latin-1 (I had numerous problems using UTF with ZSH). If you want, enable Anti-Aliasing. Then chose “Color”, use the “White on Black” preselection and play with the transparency slider. Use the settings as default.
  • Install VLC – your solution for every thinkable multimedia need. Watch out to get the Intel nightly if you have an Intel Mac.
  • I never use sleep-mode because it feels “wrong” not to shut the machine down completely. That’s why I entered sudo pmset -a hibernatemode 1 to make the “Sleep” option in the Apple-Menu work like Hibernate in Windows.

If you are a web developer on an intel mac and consider using PostgreSQL, don’t use the premade builds on entropy.ch because they are still built for PPC. You may use the StartupItem which is provided there though. If you do, call PostgreSQL’s configure like this to get the paths right:

./configure --prefix=/usr/local/pgsql --bindir=/usr/local/bin --with-openssl
--with-pam --with-perl --with-readline --with-libs=/sw/lib
--with-includes=/sw/include

This is after you’ve installed readline using fink. OS X itself does not come with readline and psql without readline sucks.

After installing PostgreSQL with make install, the paths are set correctly for the premade StartupItem, which makes PostgreSQL start when you turn on your machine.

Furthermore, I created my own customized PHP-installation (5.1.2) using the following configure line:

./configure --enable-cli --prefix=/usr/local --with-pear --with-libxml-dir=/sw
--with-apxs=/usr/sbin/apxs --enable-soap --with-pgsql=/usr/local/pgsql
--with-readline=/sw --with-pdo-pgsql=/usr/local/pgsql --enable-pcntl
--with-curl=/usr --enable-ftp --with-gd --with-png-dir=/sw --with-jpeg-dir=/sw
--with-zlib-dir=/usr --with-freetype-dir=/usr/X11R6 --with-bz2

Use fink to install libxml2, libjpeg and libpng

Using the hints provided here, you’ll get a configuration which makes working with the machine much easier for a UNIX/Windows guy. I hope it’s of some use for you.

Praise to VLC

Now that I can be assured to have a windows system ready at hand should I need one, I’m more and more switching over to using Mac OS X for day-to-day productivity work – at least if it’s not about doing delphi work.

Now this sounds crazy, but in the end it all boils down to (IMHO) better font rendering and a
alpha-blended terminal.

Functionality-wise and productivity-wise, MacOS and Windows are on par. Both systems have little things that suck and both have advantages in other little things.

In the end, both are OSes.

Today, I was in the position of wanting to listen to the streaming version of OCRemixes once again.

They are using an .ogg-stream which I appreciate because of two things: For one it provides a
better Bandwith:Quality ratio and furthermore ogg’s a patent-free technology.

Problem: How to listen to a OGG-Stream on OS X?

Apples arrogance in regards of QuickTime is one of those things that bother me in OSX. Apple: There’s more to the world of multimedia than just QuickTime and MP3, so make the infrastructure extendable in a sense so it actually works (Hint: DirectShow works quite well – despite being a Microsoft product).

There are some QT/Ogg-plugins available on the net, but none of them (not even one I compiled myself to be 100% sure to have an Intel build) actually worked.

Just when I thought that all was lost, I remembered VLC.

My experience with video already showed it to me: VLC just plays everything you can possibly throw at it. And yes: It managed (and still manages) to play the remixes stream.

And the UI is great on OS X (if you don’t look at the awful preferences dialog).

VLC IMHO is a really nice example how a cross-platfrom UI should be done: It looks like it’s perfectly at home on my OSX. And it ALSO looks like it’s perfectly at home on Windows XP (a bit
minimalistic, but it does it’s job).

And with feeling at home I don’t mean: “It looks the same on both platforms”. No. It’s perfectly adapting to the look & feel of the platform it’s running on. No common theme, no quasi OS-look. It looks as much as your native Mac OS X application as, say, iTunes or TextMate does.

So: Thanks guys. This is great stuff!

XP on the MacBook Pro

As I’ve announced earlier, I’ve bought myself a MacBook Pro with the intention of running Windows XP on it (see that other post for the reasoning behind that), thought I changed my mind considering the multimedia capabilities: VLC (the preview for intel macs) plays whatever I throw at it, has a nice GUI and does NOT use 100% CPU time all the time.

One day after I made that blog post, I actually got my machine and immediately used the XOM EFI-Hack to actually install XP.

The process went quite smoothly despite it being quite a hack. The installation process actually was one of the fastest I’ve ever seen so far.

The problem with the XOM solution is the lack of drivers where it hurts the most: Power Management and Graphics

Having no graphics driver means: No acceleration, no DVI, no 2560 pixels resolution.

Useless for my purpose.

Yesterday, Apple announced Bootcamp, their solution for installing XP (or any other x86 OS for that matter) on the Intel Macs. Bootcamp requires a firmware update on the Macs which actually does nothing more but adding a real BIOS compatibility layer, allowing to install any non-EFI system.

Bootcamp itself is a graphical partitioning tool with the capability of resizing HFS+ paritions without data loss. And it comes fully packed with drivers for most of the integrated hardware (only iSight, the harddisk shock protection and the keyboard backlight don’t work)

As installing that driver package on a XOM solution sounded risky to me (and does not work as I’ve learned afterwards), I’ve installed the whole thing from scratch, deleting the former two paritions and letting bootcamp create new ones.

Installing XP was fast as ever and installing the drivers was one of the most pleasant experiences: Just doubleclick that large MSI and let it do it’s work. Reboot. Done.

Here’s my desktop in full 2560×1600 resolution (warning: The linked full-size picture is large) of my 30-inch cinema display, showing some CPU specs, the resolution control panel applet and the tool for selecting the default OS which was installed by Apple’a driver package.

The OS you select there is booted by default, but you can hold the Alt-Key while booting to bring up a boot manager.

I’m very plesed by the speed and low noise of the machine. Now the only thing I’m still whishing for is a docking solution as I now have to plug in three (DVI, USB, Power) or four (if I want ethernet) cables each day.

Well done, Apple. And: Thanks!

Update: This is a screenshot of the same machine running OS X. The installation is quite fresh still, but the most important things are installed already: Textmate, X11 and SSHKeychain.

Ruby on Rails

Today, our first project done in Ruby on Rails went live.

Christoph has done a wonderful job on it. The only thing I had to do was to fix up some CSS buglets in IE and install a deployment environement (developement was done using the Rails-integrated WEBRick server)

Personally, I think I’d have preferred using LightTPD with FastCGI instead of Apache, but the current setup pretty much prevented me from doing so.

Which is why I’ve installed mod_fastcgi on apache which was very, very easy on Gentoo (emerge mod_fastcgi – as usual).

Once I’ve corrected the interpreter path in dispatch.fcgi (which was set to the location of Christophs developement environment), the thing began working quite nicely.

And fast.

Considering the incredible amount of magic rails does behind the scenes, those 73.15 requests per second I got are very, very impressive (ab -n 100 -c 5). And actually so much faster than a comparable PHP application running using mod_php on a little faster server (19.36 req/s, same ab call).

The results have to be taken with a grain of salt as it’s different machines, different load and a different application.

But it’s similar enough to be comparable for me: the PHP application is running on a framework somewhat similar to rails with lesser optimization but also with lesser complexity. Both benchmarks ran against the unauthenticated start page which comes pretty much down to including some files and rendering a template. No relevant database queries.

I wonder how much of this higher speed is caused by FastCGI (a very convincing technology) instead of running the code in the apache server itself and how much is just rails being faster.

I will set up a test environement which is better defined to actually allow an accurate performance comparison: Comparable application in mod_php, php-fastcgi and rails-fastcgi. And if I have time, I’m going to run the two fastcgi-tests on LightTPD aswell.

Benchmarking is fun. Time-consuming, but fun.

For now, I’m content with the knowledge that an application that took a very small effort to write (even considering that Christoph had to learn the rails environment first) is running fast enough for its intended purpose.

As Christoph said: Rails Rules

thanks, guys

Jabber: Even file transfers work

Transferring large amounts of data is a problem to overcome for all the IM networks.

You see: Usually you don’t transfer files over the central IM server because it will use the IM providers bandwith which is better used sending out those small text messages. That’s why files are usually transferred in a P2P fashion.

The problem here is that usually there’s a NATing router or even a firewall working at one, or most of the time both ends of the communication. This usually forbids the making of a direct connection – at least without some serious trickery (warning: PDF link) going on

This is why I never expect a file transfer to work – even when using the native IM client.

And today, a guy sent me some image. Via Jabber. Via PyMSN-t.

Just when I wanted to write that it’s never going to work, I watched the bytes flow in.

I’m still unable to belive it: Wildfire/PyAIM-t/Psi succeeded in making a direct P2P file transfer happen from a friend in MSN to my PC running a jabber client.

transferworks.png

pilif’s guide to jabber

I have been talking about jabber before on this blog (here and here). And each time the euphory was put back by one or another malfunctioning element. You know: I would never use a third party service for a fun-project if I can be my own provider aswell.

And being ones own provider is one of the biggest advantages of using jabber. Over the years (the experiment began in the winter of 2002/2003), I have been running a jabber-server here and then.

First it was after reading the jabber book (very interesting read) which ended with me installing a jabber server with transports for aim (aim-t) and icq (jit? I don’t remember). Installing jabber on debian was quite hard because there was no (useable) package (too old – as usual), but once I got it to work, it was fun.

The problems began with the advent of iChat and .Mac: aim-t was not able to detect the presence of .Mac users and thus I was unable to talk with them via the jabber server. Unfortunately, Richard is one of those .Mac guys, so I had to find another solution to talk with him.

For long, the only solution was original AIM itself, but in the fall of 2003 Trillian 2.0 was released with AIM/iChat-Support. This was the demise of my jabber-solution.

While I’ve always liked to have the whole client-configuration, contactlist and whatnot stored on the server, the advantage of actually being able to chat with richard made me switch to trillian and thus even pay for a IM solution – regardless of the many free alternatives.

Remember: At the time, Trillian was the only AIM client capable of talking with the .Mac guys. The original AOL client excluded of course, but who wants to be running a ton of IM clients at the same time (most of my buddies were on ICQ which was not compatible with AIM then)? And who wants to cope with advertising all over the place?

After that, I was keeping Trillian, where I used a Jabber-Plugin to still be connected to the Jabber-Server (which was completely pointless as I was and am the only user on that server and no-one I know is using jabber (any more)).

Then the Debian installation went away and Gentoo came. I’ve written about the pleasant experience with jabber on Gentoo. Still: As I was the only user, that jabber installation lived not very long either (I’ve never come around to have jabberd start automatically, so after a power outage, the service was gone. And I did not even notice *sigh*)

Only last week, my interest came back when I’ve seen that iChat provides jabber-support. Don’t ask me why. I just wanted to check the progress of the various projects once more.

I immediately noticed ejabberd which is what’s currently powering jabber.org

On their site I read about PyAIM-t. Finally a replacement for that old aim-t without .Mac support. And I checked the readme-file: Yes. PyAIM-t uses the oscar protocol which is what’s needed to get the presence info of those .Mac users

Installing ejabberd failed miserably though.

For one, the gentoo ebuilds are outdated(!) and I never managed to install the whole thing in a way that the command-line administration tool was able to access the (working) server. I admit: I’ve not invested nearly enough time to understand that erlang-thing. But why should I? It’s a for-fun-only project after all.

Via the installation instructions of that PyAIM-t transport I found out about Wildfire. Wildfire is GPL, but backed by a company with strict commercial interest. A bit like the MySQL-thing. For me it did not matter as I did not want to integrate the thing into a commercial solution. Heck! I did not even want to use the unmidified thing commercionally.

Installing wildfire was – even though it required Java – easy to do. Especially as Gentoo provides a current ebuild (hard masked though because Wildfire depends on Java 1.5). Getting the thing to work was a matter of emerge wildfire, /etc/init.d/wildfire start and rc-update add wildfire default as it’s the norm with Gentoo.

Then I read the documentation to learn how to add a SSL certificate (signed by our company’s CA) which was a bit hairy (note: the web interface does not work. if you use the web interface, you corrupt the certificate store).

Installing the transports (PyAIM-t, PyMSN-t, PyICQ-t) was a matter of untaring the archive, entering the right connections settings I’ve configured in wildfire and launching the scripts. Easy enough.

Then I went to select the right client (on windows this time around): I’ve already known jajc, new for me were Exodus and Psi and Pandion. I could have kept trillian, but the nicest thing about the jabber clients is that they can store their settings on the jabber server. Trillian can’t do that. So if I’m working on a new machine, I have to reconfigure Trillian where every pure jabber client will just fetch the settings from the server. Also, I wanted to have an OpenSource solution.

Now, that client-thing is a very subjective thing as functionality-wise, all three are identical – at least concerning the jabber-featureset (I’m not counting addons like RSS readers or whatever).

So here’s my subjective review:

Jajc is not open source, provides a ton of settings to tweak (too many for my taste) and does not look that attractive (UI-wise).

Exodus seemingly does not provide a way to make the different contacts on the list look differently depending on which transport they use and the chat window is very, very limited in featureset and looks. If you dislike good looking programs with tons of unimportant settings to tweak, go for Exodus (this was not meant with disrespect. I was one of those users myself).

What remains is Pandion and Psi.

What I like about Pandion is the nice contact list display. You know: With avatar display (which works cross-im-network with those python transports!) I also like the nice looking chat window. What I dislike is the limited amount of settings to tweak (hehe… It’s hard to make it right for me. Isn’t it?).

I like the space-economic, yet still nice looking contact list in PSI. I also like the design of the chat window and the count of settings to tweak.

Personally, I can’t decide between Psi and Pandion, so I’m running both of them currently. One day I will sure as hell know which of them I want to use.

So finally I’m up to speed with jabber again: Nice opensource client, working server and – finally – the .Mac AIM-Users on my contact list, while even able to chat with them.

So, you may ask: Why go through all this? Why not just stick with trillian?

Easy!

  • A pure Open Source solution. No strange subscription model
  • As settings are stored on the server, equal configuration wherever I am.
  • Jabber has inherent support for multiple connections with the same account.
  • Jabber works on many mobile phones. That way I can IM with my mobile phone while not being locked into a specific service
  • It was fun to set up!

*happy*

A praise to VMWare Server

putty.png

This is putty, showing the output of top on one of our servers. You may see that there are three processes running which are obviously VMWare related.

What’s running there is their new VMWare Server. Here’s a screenshot of the web-interface which gives an overview over all running virtual machines and allowing to attach a remote console to anyone of them:

web.png

As you can see, that server (which is not a very top-notch one) has more than enough capacity to do the work for three servers: A gentoo test machine and a Windows 2003 Server machine doing some reporting work.

Even under high load on the host machine or the two virtual machines, the whole system remains stable and responsive. And there’s so much work needed to even get the VM’s to high load, so that this configuration could even be used in production right now.

Well… what’s so great about this, you might ask.

Running production servers in virtual machines has some very nice advantages:

  • It’s hardware independant. You need more processing power? More ram? Just copy the machine to a new machine. No downtime, no reinstallation.
  • Need to move your servers to a new location? Easy. Just move one or two machines instead for five or more.
  • It’s much easier to administer. Kernel update with the system not booting any more? typing “shutdown -h” instead of “shutdown -r” (both happened to me)? Well… just attach the remote console. No visiting the housing center anymore
  • Cost advantage. The host-server you see is not one of the largest ones ever. Still it’s able to handle real-world-traffic for three servers and we still have reserve for at least two more virtual machines. Why buy expensive hardware?
  • Set up new machines in no time: Just copy over the template VM-folder and you’re done.

And in case you wonder about the performance? Well, the VM’s don’t feel the slightest bit slower than the host (I’ve not benchmarked anything yet though).

We’re currently testing this to put a configuration like this into real production use, but what I’ve seen so far looks very, very promising.

Even though I don’t think we’re going to need support for this (it’s really straight-forward and stable), I’m more than willing to pay for a fine product like this one (the basic product will be free, while you pay for the support).

Now, please add a native 64bit edition ;-)

Powerbook runs XP

It’s done. The contest has been won.

Windows XP is installable on a MacBook Pro and it even boots from there after the installation.

This solves a big problem I’m having: In the office, I’m using a 30″ cinema display connected to a Windows XP box which I had to custom-build because no out-of-the box systems have graphics cards with dual-link DVI ports which is needed for all resolutions bigger than 1920×1080 (technically, the limit is even 1600×1200, but 1920 still works somehow).

Now, custom-built boxes are nice, but they have two flaws: The first is the noise. Even though I got it to run very quiet despite the kick-ass graphics card I had to put in, it’s louder than your average laptop (it was even louder before I unplugged the chipset fan. As it’s working stable since more than a year now, I guess it doesn’t matter). The second problem is the problem of data redundancy:

If you prefer and have the ability, like I do, to both work at home and in the office, you are dependant of having current data at both places. Version control systems help a lot here, but they don’t solve all the problems (unfinished revisions which I don’t like to commit and binary files). In the end, the only way to have your data where you need it is to maintain it only at one place at a time.

This is the main advantage I’m seeing in laptops (beside the quietness).

Looking at the current laptop pc market, it’s even worse in respect of dual-link DVI outputs: Usually, you don’t even get single-link DVI. And custom-building one is no option unfortunately. There are some barebones, but what comes out of such an operation is a loud, badly manufactured “thing” with short battery life.

So, hardware-wise, powerbooks were always perfect because all of them have my direly needed dual-link DVI port.

The problem was the software. I’m dependant on Delphi for my daily work. Even if days can pass without me actually using it, it still happens that I need it. And when I do, it must be quick.

The other thing is multimedia. No matter what you are now going to tell me: Nothing on the Mac matches the perfect architecture of DirectShow which allows media players and codecs to be developped independently. Core Media Player with the right codec pack is unbeatable in performance, usability (at least for me) and versatility. Sorry Quicktime (only quicktime and maybe DivX). Sorry MPlayer (always uses 100% CPU, awkward GUI). You just don’t beat that.

Also multimedia related is my passion for speedruns and superplay movies in particular. For the latter ones, you need the emulator and the original ROM and especially the emulators (some of which are patched for the movies to work) don’t run on the Mac Platform and if they do, they only do with some limitations (like pausing the emulation stopping the playback of the movie in Snes9x).

If I want a single computer to work both at home and in the office, it must do both: Provide an environement to work with and an environement to play with.

OS X allows me to do some developement (TextMate comes to mind), but not all. It allows me to do some multimedia (XVid works sometimes), but not all. Thus, OS X is currently not a solution for me. At least not the single one (I’d love to work in TextMate for PHP and Ruby, eclipse for Java, but I can’t do Delphi or Windows CE).

So what I need is Windows (where the software does everything I need) on a Macintosh Laptop (where the hardware does everything I need).

Up until today, this was not possible.

Now it is. This wonderous hack (which is not completely disclosed yet, but I have a very good idea how it works) solves my problem in allowing me to combine the optimal software (for me. I know lots of people who can be perfectly happy with OS X) with the optimal hardware (for me).

Needless to say that I’ve ordered a MacBook Pro at our hardware distributor. They even had 13 on stock, so I’ll be getting mine tomorrow.

I hope the hack gets disclosed shortly, so I can do that nice dual-boot configuration :-)

Or maybe Virtual PC just works good enough for delphi and the speedruns…

Update: A howto with needed tools is now ready to be donwnloaded

Sure. Just dump your trash right here!

Boy was I pissed when I read my mail today:

Spam in Inbox

Dear Spammer. What do you think to get out of this? All links your post will be masked, so no page rank for you. And I will almost certainly not overlook something like this (400 comments in one night), so no chance in it persisting either.

I’m sick of cleaning up after you guys. Dump your trash somewhere else. /dev/null sounds like a nice alternative.

Oh, and MT: Why did your Spam filter not catch this?