Category: Various

Various, uncategorized things (default category)

Guaranteeing memory safety in Rust | Air Mozilla

Nicholas Matsakis of Mozilla on how Rust guarantees type soundness, memory safety, and data-race freedom while still offering control similar to C/C++:

(via Guaranteeing memory safety in Rust | Air Mozilla.)

Rust, with its funny name, reminds more of a mutt than an academic programming language. It’s that pragmatism however, that has a lot of potential to help solving well-known “real world” reliability problems in software engineering. It would definitely make a worthwhile addition to other programming languages taught in CS classes.

Mozilla has already started building Servo, a web browser engine based on Rust. While still far from usable (Disclaimer: I’ve just compiled and quickly tested the current master branch sources on Mac OS X Mavericks), it’s the right strategic move and I wonder when other browser projects, like Chromium, will start shifting to safer programming languages too.

Modern web browsers are very complex and accordingly vulnerable pieces of software and yet, with the rise of the browser as an app platform, we depend more and more on their reliability, safety and security.

Ironically, my Chrome browser irrecoverably froze while I was drafting this blog post. Although chrome doesn’t rust, some Rust would actually be a good thing for Chrome, in the long term.

Moving Zimbra Collaboration Server to a new IP address

Here’s a quick overview how to migrate a ZCS mail server (based on Ubuntu) to a new IP address:

0) Not covered here: Adjusting DNS entries. Make sure you lower the TTLs of the relevant DNS entries a couple of days in advance in order to minimize downtime for clients (e.g. set a TTL of 300 for a 5 minute downtime).

1) Set the new IP address in:
* The relevant DNS entries
* /etc/network/interfaces
* /etc/hosts
* If ZCS runs in a container/VM, don’t forget to adjust its IP address too.

2) If the new IP address is part of a new subnet, make sure to add this new subnet to ZCS’s trusted_networks, otherwise, sending (relaying) messages through ZCS from Zimbra Desktop (or any other mail client) won’t work[1]. This can be set using ZCS’s web admin interface (i.e.
Navigate to “Server settings”, then open the “MTA” tab and set something analogous to the following in “MTA Trusted Networks”: w.x.y.z/26

3) Restart networking and the ZCS services (it’s important, as this adjusts the trusted_network setting in ZCS’s amavisd too):
# /etc/init.d/zimbra stop
# /etc/init.d/networking restart
# /etc/init.d/zimbra start

Alternatively, just reboot the server, particularly if it runs in a VM.


Note: The need for the adjustments in step 2) might come as a surprise. Authenticated messages to be relayed through ZCS apparently seem to originate from the external IP address, not localhost/

[1] A typical postfix error message might look like:
Delivery Failure Notification: Invalid address: somebody . com.zimbra.cs.mailbox.MailSender$SafeSendFailedException: MESSAGE_NOT_DELIVERED; chained exception is: com.zimbra.cs.mailclient.smtp.InvalidRecipientException: RCPT failed: Invalid recipient 554 5.7.1 : Relay access denied

Mac OS X Snow Leopard Server: Send e-mail alert if RAID 1 degraded/fails/goes offline

By default, Mac OS X Snow Leopard Server (and later versions likely too) doesn’t send any e-mail alerts when a RAID set degraded. Fortunately, sending such a notification can be implemented using a script, as explained in

# vi /etc/periodic/daily/150.check-raid

# cat /etc/periodic/daily/150.check-raid

# This script checks for any degraded/offline/failed/whatever software
# RAIDs, and if any are found emails a note to an admin.  To use it,
# replace the ADMIN_EMAIL value with your own email address, drop it in
# /etc/periodic/daily, and change the owner to root.  This’ll make it
# run its check every morning at 3:15am.
# Warning: this script doesn’t check anything other than software RAIDs
# built with the Apple (i.e. Disk Utility) RAID tools.  It does not check
# any hardware RAIDs (including Apple’s RAID card), or even any third-party
# software RAIDs.  If “diskutil listraid” doesn’t list it, it’s not going
# to be checked.


if diskutil listraid | grep “^Status:” | grep -qv “Online$”; then
diskutil listraid | mail -s ‘RAID problem detected’ “$ADMIN_EMAIL”

# chmod a+x /etc/periodic/daily/150.check-raid

Of course this requires that your server can actually send outgoing e-mail messages which may need some manual configuration, as explained in:

Mac OS X Snow Leopard Server: Configuring outgoing SMTP authentication for postfix

[Edit 20130401: Clarified the phrasing, anonymized data]

Samsung Audio Dock DA-E750 supports AirPlay and AllShare

Das Samsung Audio Dock DA-E750 ist das erste Audio-Device mit integrierter Docking Funktion, das über ein einzigartiges Dual Dock System verfügt. [..]

Darüber hinaus „verbindet“ das Samsung Audio Dock DA-E750 auch kabellos – und zwar nicht nur mit dem Samsung Galaxy S II und Galaxy Note über AllShare. Auch Apple iPod, iPhone und iPad können sich barrierefrei über AirPlay andocken. [..]

Der gute Ton macht die Musik
Für audiophile Enthusiasten spielt das DA-E750 alle Stücke. Das Gerät ist mit Samsungs exklusiver Hybrid-Technologie an Röhrenverstärkern ausgestattet. Sie erzeugt die, für diese Verstärkertechnik typischen, klaren und warmen Klänge. Das 2.1-Soundsystem samt integriertem Subwoofer sorgt für 100 Watt sattem Sound. Das Samsung Audio Dock ist aber nicht nur für die Ohren, sondern auch für die Augen konzipiert. Die Lautsprecher sind aus Fieberglas gefertigt. Das Dock selbst verbirgt sich kaum sichtbar im Hintergrund und die Oberfläche aus Holz verleiht dem Produkt ein elegantes Auftreten.

via Offen für Neues? Samsung Audio Dock DA-E750 verbindet

Would like to listen to it to compare it to other high-end Airplay iPhone/iPod/iPad docks like the B&W Zeppelin Air.

The Samsung DA-E750 isn’t a steal, but considering the high-quality components and manufacturing, a price of around 700 CHF seems reasonable.


Belkin Zero Stand for MacBook Pro

Belkin’s stylish Zero Stand is the ultimate solution for your MacBook or MacBook Pro, providing an optimal viewing angle for comfortable, everyday use.


  • Rubber grip keeps laptop in place
  • Open design improves airflow
  • Clutter-free cable management
  • Easy to assemble

via Belkin Zero Stand for MacBook Pro – Apple Store (U.S.).

Haven’t tried it yet with my 13″ MacBook Air, but this stand seems to be pretty good (though expensive) according to reviews (youtube video).

(Thanks to @fjoachim for the hint)

HP 48G: How to fix the “Warning: Invalid Card Data” problem

Recently, my good old HP 48G calculator (one of the best calculators ever built and my longtime personal favourite till today) started displaying the following message whenever I switched it on:

Warning: Invalid Card Data

Which seems a bit odd at first, considering the 48G model has no card slot (only the 48GX model has one). Luckily, there’s a simple solution: Execute the PINIT command by typing “PINIT” (without the double quotes) and pressing the ENTER key.

There’s a great, detailed explanation of this problem and the according fix in the “invalid card data at my hp48g” thread over at the independent HP calculator museum. If this warning message appears on a HP 48GX and the problem persists after applying this fix, take a look at step 3 described in the  article titled “Message, Invalid Card Data, is Displayed when the Calculator is Turned On” on HP’s support forum.

Wouldn’t it be a pity if a company with such a great history and so many great hardware products ceased to be a hardware company?

Animated Driving Directions using Google Maps Street View

A simple and yet fascinating and useful example app by Keir Clarke (@keirclarke) for all those many people who don’t have a Google Nexus One mobile phone yet (or any other similarly powerful turn-by-turn navigation device):

Google Maps Street View API Driving Directions Example

E.g. for driving directions on how to get from Zurich Airport to Printscreen GmbH‘s homebase by car(*), enter

From: Zurich-Airport

To: Heinrichstr. 223, Zurich

Speed: Choose Medium or Fast

And hit the “Route” button to display a map and list with driving directions.

Then click on “Drive” to see an animated simulation of your drive on Google Maps Street View.

Great, isn’t it? Now imagine this would be a seamless video..

P.S. If you’re looking for ideas for a road trip, consider taking this Grand Tour in Italy (and Switzerland and France). (Even better: Go by train and other public transport and you won’t even need a car or driving directions ;)

(*) Note: I’d strongly suggest using public transport instead. It’s almost as fast (during rush hour even faster), cheaper and tends to be more relaxing.

tiny tiny rss: A great web-based feed reader!

I’ve just installed tiny tiny rss (tt-rss), an open source web-based news reader/aggregator for Atom, RDF and RSS feeds. Configuring it as the default news reader in Firefox is very easy (just click on the according link at the bottom of the preferences page) and a convenient solution.

The installation is pretty straightforward too, but here are a couple of hints for installing it on a Gentoo box:

1. Download the tt-rss-1.3.3.ebuild file and all other files and directories from and place it in the www-apps/tt-rss directory (create it) in your local Portage overlay (usually /usr/local/portage).

2. Rename the file to tt-rss-1.3.4.ebuild (= the most recent version at the time of writing, released on Oct 21, 2009), execute ‘ebuild tt-rss-1.3.4.ebuild digest’, set the flags you need (e.g. for mysql and vhosts) and emerge the ebuild.

3. Follow the post-install instructions on the screen (bascially the official tt-rss installation notes)

If you intend to use the default, single-process update daemon, you can use the following init files I created (loosely based on Pierre-Yves Landure’s init script):


# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

depend() {
    use net
    use mysql

# Function that starts the daemon/service
start() {
    ebegin "Starting $NAME daemon"
    start-stop-daemon --start --quiet --make-pidfile --background --chdir $DAEMON_DIR --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS
    eend $?

# Function that stops the daemon/service
stop() {
    ebegin "Stopping $NAME daemon"
    start-stop-daemon --stop --quiet --make-pidfile --retry=TERM/1/KILL/5 --pidfile $PIDFILE --name $NAME
    eend $?

(replace “mysql” by “postgresql” if you use postgresql)


# Defaults for the Tiny Tiny RSS update daemon init.d script

# Location of your Tiny Tiny RSS installation.



(make sure TTRSS_PATH points to your tt-rss installation)

4. Note that for using the default update method, PHP needs to be compiled with pcntl support. If required, set the pcntl flag and remerge PHP.

5. Have fun!