Puppet, VirtualBox and Interfaces

At work we’re using a small Python script to

  • do some sanity checking (hostname checks, acquiring IP address etc)
  • clone a VirtualBox machine (needs to be stopped because of Bug 9255)
  • modify machine to according # of CPUs and amount of RAM
  • mount the disk locally,
  • mount the disk’s first partition locally,
  • put SSH keys in place, used during initial provisioning,
  • update network setting files, including udev rules (/etc/udev/rules.d/70-persistent-net.rules) to get predictable network card names and being able to map them to IP addresses
  • unmount all above,
  • generate new DNS and basic Puppet manifest files, reload services (puppet),
  • boot it,
  • run puppet agent on the new machine to generate and push client signing request to puppetmaster
  • sign cert on puppetmaster,
  • run puppet to have the machine finish it’s provisioning (overwrites the SSH keys)

Done. :-)

To issue commands over SSH we’re using Fabric (and might, or might not, move to using Serf).

Some Five, Six Months of Mac OS X

I’ve been using a MacBook Air almost every day since November 2012, which is five-ish months from now, and today I successfully installed Ubuntu GNU/Linux on the machine. These are my observations from the past couple of months.

Scrolling content instead of scrolllist handle is very natural – going back really feels backward. Mac OS X does a better job at tracking two fingers – what happens is that under Ubuntu all of a sudden I end up at a new page because a link was clicked instead of scrolling continuing.
Forward/backward is another move I’ve found that I use a lot.

Vertical scrolling can be reversed, but not for all applications/widgets, using Xmodmap aor fiddling with xinput.
I’ve had very few issues with typing and accidentally moving the cursor as a result of unintended click with either thumb. After a few hours of using Ubuntu, this is the number one thing on my “to fix” list – ie disable the touchpad while typing.
Long pressing two fingers, as in resting the hand on the touchpad while reading, brings up some really nasty stuff in the Ubuntu default window manager. Yuk.

The default workspace managment in Ubuntu is limited to 2×2, but is easily overriden.

However, the window manager in Mac OS X is just horrible since you need different key bindings to switch focus between current and previous window, depending on if they belong to different applications. Full full-screen is really nice, but that it makes and takes up it’s own workspace is very annoying. It’s all Mac/Apple, so it can’t really be modified or overriden.

Delete button is missing!

Cmd+X/C/V/T/, is really nice – it’s induces less strain on the hands and also leaves Ctrl free to Ctrl+C – as in break program execution – and removes the need for Ctrl+Shift+X/C/V as used in gnome-terminal.

Using Alt to skip and/or jump a word at a time instead of Ctrl is again puts less stress on the left hand. This took some time to get used to in when moving to the MacBook, while I could still work without problems on my desktop/work station full sized keyboard. Now that I’m running Ubuntu on the MacBook, I’ve hit Alt+<- (left arrow) which translates to “back” in Firefox … Not very nice when you’re editing text. So, surprisingly hard to un-learn this.
There’s also a UX difference, since the Ctrl+right arrow jumps to the end of words, where as Alt+right arrow jumps to the beginning of a word, which makes much more sense!

Pipe, forward slash and backslash under the default Mac OS X key mapping is just awkward for a person that writes code.

Being able to reverse the mode of the fn (function) key (or keys, depending how you look at it) is really nice. Need to find a way to do that under Ubuntu.

Switching windows of the same application is something I’ve been using quite a lot. Not sure I will actually miss it. Ubuntu’s alt+tab implementation in the default window manager is – as is well known and documented – sooo broken. Fortunately Cmd+W works pretty well, except that you can’t navigate/select window using arrow keys: you have to use a mouse.

While the screen lock works better in Mac OS X, it does somewhere depend on the network which makes it a pain to wait for.
The screen lock under Ubuntu on the other hand is not always showing when bringing up the picture/lid.

Both OS:es are equally good/bad at handling multiple outputs: technically, it works but from a UX perspective it still sucks. (No, AirTV (or whatever it’s called) isn’t that good or reliable and still has UX issues.) I would really like to see the Screens/Monitors control panel/application show up when new monitors/screens are attached, AS WELL AS the controls for audio if the connected device supports sending the audio that way (which really is becoming main stream AND is probably something you want to do).

Mac OS X software updates are really intrusive, with sticky notifications.

Why change power coord connector between MacBook Air 4.x and 5.x?

The Hardware – MacBook Air

I waited three extra weeks just to get the 8 GB model (instead of 4), which makes a huge difference – especially if you’re using “heavy” tools like several instances of Eclipse, VirtualBox, browsers.

The keyboard turned out to be just as I expected it: it leaves an imprint on the monitor’s surface, it’s not as nice as ThinkPad keyboards but in no way bad. All the alluminum (or whatever what kind of metal it is) makes my hands and wrists cold.

Battery is good, way better than the ThinkPad batteries I’ve had, but still not perfect. Can’t live without a charger and doing heavy lifting on the machine still drains battery like modern ThinkPads.

Weight is really nice. Love the fact that I can feed my kid with one hand, and lift and move the computer around with my other hand, easily.

The alluminum (or whatever it is) is pretty, but it also makes it more difficult to put on your lap – it very easily slides away unless you thighs are perfectly leveled with the ground. Can become very annoying.

I really want touch. And I really want to be able to flip the screen/monitor so I can use touch only as in “stowe away or hide (and inactive) the keyboard”.

Bash Completion

Jag drog nyss in en ny installation av Ubuntu 12.10 och av okänd anledning var inte bash completion (eller autocompletion) funkis. Visade sig att i /etc/bash.bashrc var följande rader utkommenterade, vilket jag ändrade och sedan var allt grönt igen.

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion

Jag använder oftast ihop med sudo aptiTAB instTAB progrTAB, men det finns även maven och gradle completions!

after install

Det händer att man möter en ren (Ubuntu-)maskin emellanåt. Och det saknas alltid en hel del, som behöver installeras. Följande postinstall-steg brukar jag lägga på.

apt-get install aptitude vim openssh-server screen curl nmap openjdk-7-jdk munin-plugins-extra munin-plugins-java meld netcat git mercurial python-concurrent.futures python-setuptools

aptitude install gnome-shell gnome-tweak-tool dconf-tools gnome-color-chooser compizconfig-settings-manager msttcorefonts
apt-get remove overlay-scrollbar liboverlay-scrollbar-0.2-0 liboverlay-scrollbar3-0.2-0
gsettings set org.gnome.desktop.wm.preferences focus-mode 'sloppy' && gsettings set org.gnome.desktop.wm.preferences auto-raise false

aptitude remove appmenu-* packages

aptitude install gimp gtk-recordmydesktop

aptitude install gadmin-openvpn-client

aptitude install pidgin-sipe

aptitude install chromium-browser

aptitude install mdadm gsmartcontrol

aptitude install python-software-properties
add-apt-repository ppa:zfs-native/stable
aptitude update
aptitude install ubuntu-zfs

Gnome Shell

gsettings set org.gnome.shell.overrides workspaces-only-on-primary false
gsettings set org.gnome.shell.overrides attach-modal-dialogs false


Problemet med svart bakgrundsfärg i popuper/hoverboxes väljer jag att lösa systembrett.

install the package “gnome-color-chooser”. In “specific” tab, you can choose the foreground and background color for tooltips.


aptitude install tk8.5
update-alternatives --config wish #make sure 8.5 is used

Alt-Tab Unity FUBAR

aptitude install compiz-plugins-extra
ccsm och inaktivera key bindings i Ubuntu Unity Plugin, aktivera t ex Static Application Switcher

More stuff

Start “ccsm“, find the Desktop section and untick “Widget Layer“. Done.

Spela in skrivbordet

Jag har tidigare använt XVidCap för att spela in (delar av) det som syns på min skärm. Det har alltid fungerat fint men idag ville det inte fungera som det skulle och jag tvingades testa något nytt. Tur var det för “Desktop Recorder” (aka recordMyDesktop) är ett kanonverktyg. Kommer garanterat användas flera gånger (vid inspelning av buggar t ex). Finns även panoreringsstöd, dvs att inspelade ytan följer med musen.

Screenshot of Record My Desktop
Desktop Recorder

Eclipse popups and focus issue

I’ve made the switch and try to live with Unity. One of the issues I’ve had is that fact that hitting Ctrl+T or Ctrl+F8 goes away if the mouse pointer is positioned where the popup window will appear. Terribly annoying.

Today I found out that it’s related to a setting in CompizConfig Settings Manager called Focus Prevention Level which is a feature intended to prevent you from continue type or click in windows that just popped up without you discovering it. Setting this to Off removes the problem with Eclipse popup focus.

Screenshot of CompizConfig Settings Manager
Changing Focus Prevention Level using CompizConfig Settings Manager

PGP och keysigning-part

FOSDEM Logotype
Free and Open Source Developers' European Meeting

Är påväg till FOSDEM i år igen. Det är en konferens inte lik någon annan (även om FSCONS ger ungefär samma stämning) som är helt fri att gå på och hålls på LUB-universitetet i Bryssel, första helgen i februari. Förväntningarna på Free Java-rummet  detta år är att det någon gång bryter ut i en fullständig politisk diskussion med smutskastning, bittra miner och “vi som klarar oss utan JCP, TCK osv”. Utöver det bör det som vanligt vara PGP-signering och CAcert Assurance-fest och en möjlighet att bli certifierad Linux-expert. Problemet med det sista brukar vara alla intressanta föreläsningar som än så länge prioriterats högre. Kanske är det dags att skaffa formellt intyg på Linux-kunskaperna.

En riktigt rolig tillställning är det i alla fall, med öppensinnade människor som lever för att dela kunskap och lära.

Gällande nyckelsignering så är verktyget caff (CA – Fire and Forget) helt oumbärligt för att orka med att signera hundratals nycklar. Under Ubuntu är det paketerat i signing-party. Caff tar en rad nyckel-ID:n som argument, hämtar hem nyckeln, signerar (interaktivt), skickar sedan nyckeln till varje e-postadress för respektive UID som ingår i nyckeln. Den skickade nyckeln är krypterad med den publika nyckeln så man kan vara säker på att man bara signerar nycklar till folk som den verkligen tillhör. Biff sade räven.

För att komma igång så bör man byta nyckelserver (jag kör pgp.mit.edu) och redigera .caffrc för att ställa in e-postsaker och ange nyckel man vill signera med. Sedan är det rätt rättframt.


Det var ett sabla pill (och letande) för att få callto-, tel- och skype-länkar att hanteras från en webbläsare. Lite förvånande att skype inte skickar med detta från början (gäller Linux).

Hur som helst, min arbetsväg:

  • xdg-open är bra att använda när man skall öppna URLer
  • xdg-open använder gnome-open (i min miljö)
  • gnome-open använder gconf och kikar under /desktop/gnome/url-handlers för att hitta en url-handler som hanterar URLens schema (http t ex)
  • varje “url-handler” skall ha tre nycklar:
    • command – kommandot som körs, t ex /home/ceda/bin/skype.py %s
    • enabled – true/false
    • use_terminal – true/false

Sedan var det bara att hitta ett lämpligt kommando. Skype visade sig inte stödja något alls vad gäller binären och flaggor till programmet. Däremot använder man tydligen DBus och därigenom är möjligheterna större. Efter ett tags letande hittade jag Philipp Kolmanns skript skype action handler.

Nästan klart – det har ett tillkortakommande vad gäller URL-kodning. En ring-länk till mig skulle se ut såhär: callto:+46702778511 och Philipps skript hanterade inte att plustecknet kodades om till %2B. Jag fixade detta såhär:

# urldecode
if '%' in sys.argv[1]:
        import urllib
        sys.argv[1] = urllib.unquote(sys.argv[1])

Nu funkar det fint! (Vem var det nu jag skulle ringa egentligen …)

Internet Explorer under Ubuntu 10.04

Ja – min arbetsgivare använder en lösning för registrering av utlägg som är hårt knuten till ActiveX-komponenter. Därför är det smidigt att kunna köra Internet Explorer under Ubuntu GNU/Linux 10.04 (äks Lucid Lynx). Paketet som de flesta kört heter IEs4Linux och man får installera det själv – Ubuntu paketerar det inte.

Jag drog in det och instruktionerna på hemsidan stämmer, men jag fick (som andra också rapporterat) problem med GTK+ pga att jag körde flera skärmar. Med flaggan –no-gui körde installationsprogrammet ies4linux utan större problem – flash-installationen sparkade bakut men det gör mig inget.

Plexgear TV-stick USB

Skaffade för ett tag sedan en TV-sticka från Kjell & Co. Idag testar jag den och hoppas kunna se lite TV-strömmar helt enkelt – får se hur långt jag kommer.

[ 8927.236139] usb 2-2: new high speed USB device using ehci_hcd and address 2
[ 8927.374608] usb 2-2: configuration #1 chosen from 1 choice
[ 8927.491429] dvb-usb: found a 'Afatech AF9015 DVB-T USB2.0 stick' in cold state, will try to load a firmware
[ 8927.491441] usb 2-2: firmware: requesting dvb-usb-af9015.fw
[ 8927.511734] dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
[ 8927.567371] dvb-usb: found a 'Afatech AF9015 DVB-T USB2.0 stick' in warm state.
[ 8927.567475] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 8927.567806] DVB: registering new adapter (Afatech AF9015 DVB-T USB2.0 stick)
[ 8928.078311] af9013: firmware version:4.65.0
[ 8928.083146] DVB: registering adapter 0 frontend 0 (Afatech AF9013 DVB-T)...
[ 8928.112897] tda18271 0-00c0: creating new instance
[ 8928.119550] TDA18271HD/C2 detected @ 0-00c0
[ 8928.430339] dvb-usb: Afatech AF9015 DVB-T USB2.0 stick successfully initialized and connected.
[ 8928.440748] usbcore: registered new interface driver dvb_usb_af9015
[ 8928.468162] usbcore: registered new interface driver hiddev
[ 8928.468211] usbcore: registered new interface driver usbhid
[ 8928.468217] usbhid: v2.6:USB HID core driver


Blir tyvärr påmind om varför jag inte tycker om KDE. Plottrigt GUI. Men, dessvärre får jag inte in någon bild … http://bernehjalt.wordpress.com/2009/06/13/roxcore-dvb-t-tv-reciever-usb-stick/


Börjar med att installera MySQL …