An image of Earth as seen from Mars, taken by NASA’s Spirit Rover. Found via reddit.
February 2010
I just finished looking at some interesting slides about the Computational Complexity of Air Travel Planning by Carl de Marcken, when I happened upon the product portfolio of his company. What I found was Matrix 2, an advanced flight planner. It’s the best flight planner I’ve ever used.
Here are some screenshots to better illustrate what I’m talking about:
Step 1: Search

Step 2: Price Calendar
Step 3: Search Results and Itineraries
Voila!
You can’t book flights through Matrix 2, but it’s an extremely useful tool nonetheless. It’s rather advanced, too, if you need it to be:
Extra Search Options
Check it out for yourself, here.
NASA has captured the most detailed images of Earth to date. They’re beautiful:
This spectacular “blue marble” image is the most detailed true-color image of the entire Earth to date. Using a collection of satellite-based observations, scientists and visualizers stitched together months of observations of the land surface, oceans, sea ice, and clouds into a seamless, true-color mosaic of every square kilometer (.386 square mile) of our planet. These images are freely available to educators, scientists, museums, and the public. This record includes preview images and links to full resolution versions up to 21,600 pixels across.
Much of the information contained in this image came from a single remote-sensing device-NASA’s Moderate Resolution Imaging Spectroradiometer, or MODIS.
Source and higher quality images available at NASA.gov: Visible Earth: The Blue Marble
Many NAT firewalls time out idle sessions after a certain period of time to keep their trunks clean. Sometimes the interval between session drops is 24 hours, but on many commodity firewalls, connections are killed after as little as 300 seconds. To avoid having your SSH sessions become unresponsive after e.g. 5 minutes, do the following:
On Windows (PuTTY)
In your session properties, go to Connection and under Sending of null packets to keep session active, set Seconds between keepalives (0 to turn off) to e.g. 300 (5 minutes).
On Linux (ssh)
To enable the keep alive system-wide (root access required), edit /etc/ssh/ssh_config; to set the settings for just your user, edit ~/.ssh/config (create the file if it doesn’t exist). Insert the following:
Host *
ServerAliveInterval 300
ServerAliveCountMax 2
You can also make your OpenSSH server keep alive all connections with clients by adding the following to /etc/ssh/sshd_config:
ServerAliveInterval 300 ServerAliveCountMax 2
These settings will make the SSH client or server send a null packet to the other side every 300 seconds (5 minutes), and give up if it doesn’t receive any response after 2 tries, at which point the connection is likely to have been discarded anyway.
From the ssh_config man page:
ServerAliveCountMax
Sets the number of server alive messages (see below) which may be sent without ssh(1) receiving any messages back from the server. If this threshold is reached while server alive messages are being sent, ssh will disconnect from the server, terminating the session. It is important to note that the use of server alive messages is very different from TCPKeepAlive (below). The server alive messages are sent through the encrypted channel and therefore will not be spoofable. The TCP keepalive option enabled by TCPKeepAlive is spoofable. The server alive mechanism is valuable when the client or server depend on knowing when a connection has become inactive.The default value is 3. If, for example, ServerAliveInterval (see below) is set to 15 and ServerAliveCountMax is left at the default, if the server becomes unresponsive, ssh will disconnect after approximately 45 seconds. This option applies to protocol version 2 only; in protocol version 1 there is no mechanism to request a response from the server to the server alive messages, so disconnection is the responsibility of the TCP stack.
ServerAliveInterval
Sets a timeout interval in seconds after which if no data has been received from the server, ssh(1) will send a message through the encrypted channel to request a response from the server. The default is 0, indicating that these messages will not be sent to the server, or 300 if the BatchMode option is set. This option applies to protocol version 2 only. ProtocolKeepAlives and SetupTimeOut are Debian-specific compatibility aliases for this option.
I have a Razer Deathadder. It’s a nice gaming mouse. In Ubuntu its polling rates are through the roof, though, and the mouse is pretty much unusable even with GNOME’s mouse sensitivity and acceleration settings at their lowest. Previously this could be fixed by tweaking the mouse section of your X.Org configuration file, /etc/X11/xorg.conf, but in Ubuntu 9.10 a different measure is needed as most devices are managed via HAL. Here’s how I regained my sanity and mouse slowness. The fix should work for any mouse.
Update: Added instructions for Ubuntu 11.04, 10.10 and 10.04, and Fedora Core (12+). Instructions for Ubuntu 9.10 Karmic Koala can be found at the bottom.
Fix for Ubuntu 10.04+ and Fedora Core 12+
It turns out that Ubuntu 10.04 needs yet another type of work-around, as it doesn’t use HAL. This is the best solution I’ve found so far:
- Open a terminal
- Run the command:
xinput --list --short⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Razer USA, Ltd DeathAdder Mouse id=6 [slave pointer (2)] ⎜ ↳ Razer USA, Ltd DeathAdder Mouse id=7 [slave pointer (2)] ⎜ ↳ Razer DeathAdder id=11 [slave pointer (2)] ⎜ ↳ Macintosh mouse button emulation id=12 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Power Button id=9 [slave keyboard (3)] ↳ Dell Dell USB Keyboard id=10 [slave keyboard (3)] - Note the name of your device. In my case, manipulating ‘Razer DeathAdder’ worked.
- Set the constant deceleration for the device:
xinput --set-prop "Razer DeathAdder" "Device Accel Constant Deceleration" 5
That’s it. You might have to play around with the value, but 5 slowed down my mouse sufficiently.
- To see the current settings for the device:
xinput --list-props "Razer DeathAdder"
- To turn off mouse acceleration:
xinput --set-prop "Razer DeathAdder" "Device Accel Velocity Scaling" 1
To perform the tuning automatically, I simply created a file containing the script below, ran chmod +x on it and added it to System -> Preferences -> Startup Applications in GNOME (gnome-session-properties in GNOME 3):
#!/bin/sh xinput --set-prop "Razer DeathAdder" "Device Accel Constant Deceleration" 5 xinput --set-prop "Razer DeathAdder" "Device Accel Velocity Scaling" 1
Please check this comment for more information about chmod.
Fix for Ubuntu 9.10
- Open a terminal
- Run the command:
hal-device - In the output, locate the mouse’s hex format vendor and product ID’s as highlighted below:
82: udi = '/org/freedesktop/Hal/devices/usb_device_1532_7_noserial_if0' linux.hotplug_type = 2 (0x2) (int) linux.subsystem = 'usb' (string) info.linux.driver = 'usbhid' (string) info.subsystem = 'usb' (string) info.product = 'USB HID InterfacUbuntu 10.04 Lucid Lynxe' (string) info.udi = '/org/freedesktop/Hal/devices/usb_device_1532_7_noserial_if0' (string) usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0' (string) usb.configuration_value = 1 (0x1) (int) usb.num_configurations = 1 (0x1) (int) usb.num_interfaces = 1 (0x1) (int) usb.device_class = 0 (0x0) (int) usb.device_subclass = 0 (0x0) (int) usb.device_protocol = 0 (0x0) (int) usb.product_id = 7 (0x7) (int) usb.vendor_id = 5426 (0x1532) (int) usb.product = 'USB HID Interface' (string) usb.vendor = 'Razer USA, Ltd' (string) usb.num_ports = 0 (0x0) (int) usb.max_power = 100 (0x64) (int) usb.device_revision_bcd = 256 (0x100) (int) usb.is_self_powered = false (bool) usb.can_wake_up = true (bool) usb.bus_number = 8 (0x8) (int) usb.speed = 12 (double) usb.version = 2 (double) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0' (string) info.parent = '/org/freedesktop/Hal/devices/usb_device_1532_7_noserial' (string) usb.interface.number = 0 (0x0) (int) usb.linux.device_number = 3 (0x3) (int) usb.interface.subclass = 1 (0x1) (int) usb.interface.class = 3 (0x3) (int) usb.interface.protocol = 2 (0x2) (int)
In this case, my Product ID is 0×7 and my Vendor ID is 0×1532. Note that there can be more than one section containing the name of your mouse or its manufacturer — if you can’t find the product and vendor ID, look further down.
- Edit the HAL policy file for input devices:
sudo nano -w /etc/hal/fdi/policy/10-x11-input.fdi - Insert the following text:
- Hit Ctrl + X, then Y to save the file and exit
nano - Restart hald:
sudo service hald restart - Restart X.Org (log out or reboot your computer)
<?xml version="1.0" encoding="UTF-8"?> <deviceinfo version="0.2"> <device> <match key="@input.originating_device:usb.vendor_id" int="0x1532"> <match key="@input.originating_device:usb.product_id" int="0x7"> <merge key="input.x11_options.ConstantDeceleration" type="string">5</merge> </match> </match> </device> </deviceinfo>
Adjust your vendor_id and product_id to match what you noted down before. If the file is empty or doesn’t exist, don’t worry. If it already exists, omit the first line about xml.
That’s it! The “ConstantDeceleration” setting in /etc/hal/fdi/policy/10-x11-input.fdi is what does the trick. When set to a value of 5, the sensitivity will essentially be divided by 5. Oh, sweet sanity.





