I am currently trying out Apple’s Mobile Me service, which is free in the first two months. It seems relatively nice, but has some drawbacks. On the plus side, you get 20 GB of storage space, or 40 GB for the family pack. Also you can track your iPhone if you lose it. The mail service is useful, but on the downside: It does not support server side filtering! That’s a great, great bummer. Also it does not seem to support Apple’s notion of filtering, called “intelligent mailboxes”. If that were supported on the server, I would ditch my GMX ProMail account, and switch to using Mobile Me for mail services.
Elegantly making a dictionary of lists
In Python I sometimes want to make a dictionary of lists. So usually I would write something like:
mydic = {}
for something in somethingelse:
mydic[somekey].append(something)
This however will not work, if somekey did not exist so far, because it will raise an exception. But there is help! You can use a collection:
import collections
mydic = collections.defaultdic(list)
for something in somethingelse:
mydic[somekey].append(something)
PyQt dynamic uic example
Here is a minimal example for PyQt4, to set up a main window and connect a simple action to some slot. The documentation on doing this is sparse to say the least. So I hope this is helpful for anyone trying something similar. I assume that you have created a ui_MainWindow.ui file with Qt Designer, which contains a form derived from QMainWindow.
import sys
from PyQt4 import QtCore, QtGui, uic
class MyMainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = uic.loadUi("ui_MainWindow.ui", self)
self.connect(self.ui.actionOpen, QtCore.SIGNAL('triggered()'), self, QtCore.SLOT('open()'))
@QtCore.pyqtSlot()
def open(self):
fileDialog = QtGui.QFileDialog(self, "Open file")
fileDialog.show()
app = QtGui.QApplication(sys.argv)
mainWindow = MyMainWindow()
mainWindow.show()
sys.exit(app.exec_())
Not happy with Qt on OS X…
I really don’t get happy with Qt 4.6 on OS X 10.6. Nokia rates Qt on that platform as Tier 2. Which means, it is not fully supported. This results in stupid things happening. With Licq, I currently have the problem that the whole program crashes with the following message:
Update on MacPorts: Qt working again
Good news: The Qt port of MacPorts is working again. The port was upgraded to Qt 4.6 and now it compiles again. Now all I need is a 64 bit CUDA package for Snow Leopard, and I’ll be happy.
Preprocessor Tricks
This allows you to convert any preprocessor macro value to a string, e.g. for printing.
#include <iostream>
#define MEINMAKRO 1.3.4
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
int main()
{
std::cout << TOSTRING(MEINMAKRO) << std::endl;
return 0;
}
Syncing Google Calendar with the iPhone or iPod Touch
Some small iPhone address book nags
I am using the try-out version of Mobile Me for the iPhone. Syncing the device with the Macbook Pro. Whenever I go to my address book, all the contacts appear twice. Very strange, I though, until I noticed that I was in the Group “All contacts”, which will show the contacts synced from the Mac and from Mobile Me. What a stupid way to present things. Right now, I just need to switch to “All contacts from my Mac” to fix this, but when I were to add another address book (say a corporate one or the Google one), I would be in trouble. Not very clever, Apple…
Qt woes on OS X 10.6…
Oh dear, Nokia and Macports do seem to hate me. I’ve spent half a day to get some version of Qt running on OS X 10.6.2. The problem is as follows. Nokia only provides 32 bit builds of their Qt SDK for OS X (universal binaries for PPC and i386) as can be seen here and here. Under OS X 10.5 this was no problem, since the whole system was basically 32 bit. But Snow Leopard now builds for x86_64 per default. Especially when using Macports. So I thought, lets just install the qt4-mac port from Macports. Wrong again! That port is currently broken. So, my project depends half on Qt and half on stuff from Macports. Now neither one is in a usable state. Ok, so I thought maybe I can force Macports to build in i386 mode only, to be compatible again with Qt. So I edited /opt/local/etc/macports.conf, cleaned the whole Macports tree and reinstalled. Fail again. This time, perl5 fails to build. That port is broken on 10.6 for non 64 bit builds. Hooray. Well, I give up for today, but will continue to investigate and will report back, as soon as either Nokia provides a decent 64 bit build, or Macports recovers and fixes any of their build issues.
What’s with PulseAudio?
After my upgrade to OpenSUSE 11.2, I noticed that VLC was again stuttering when playing videos. A quick check revealed, that the upgrade re-installed the PulseAudio system. Removing all Pulse related stuff fixed the problem. I wonder why, oh why on earth all the sound servers under Linux suck? And why are they default for every installation, if they don’t work as expected? I still own a nice SoundBlaster Live, which does sound mixing in hardware, which means I do not even need a sound server, since the card can expect many different audio streams from many applications. Anyway, please, dear sound server developers: If you need to write such a beast of a tool, make it work as expected!