Random links from Operability.IO conference Part 1

- 1 min read

These are my random links from the excellent 2 day conference Operability.IO. These are all links mentioned in different talks.

Worse is Better
Much to the shock of my collages I had not read about this before. Now I have!

OSV / Capstan
I’ve been using hyper.sh which is very similar except it uses Docker images inside the hypervisor. OSV looks very interesting especially the REST API for inspecting a running image.

MirageOS
This is a unikernel for compiling OCaml to Xen hypervisor

Firstly make sure you can run the standard CloudFoundry cli:

cf logs [APP_NAME]

Then turn on tracing:

export CF_TRACE=true

You will see a HTTP request and then it will switch to a secure WebSocket:

WEBSOCKET REQUEST: [2015-04-22T11:27:22+01:00]
GET /tail/?app=[APP_GUID] HTTP/1.1
Host: wss://loggregator.[YOUR_CF_DOMAIN]:443
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: [HIDDEN]
Origin: http://localhost
Authorization: [PRIVATE DATA HIDDEN]

As you can see the Authorisation header is hidden, but fear not if look in ~/.cf/config.json under “AccessToken” thats all you need ("jq .AccessToken ~/.cf/config.json"). Combine this with wscat and you are good to go:

Intel Graphics Installer on Ubuntu 14.10

- 1 min read

So if you just downloaded the latest Intel Graphics Installer and just found that it doesn’t support Ubuntu 14.10.

Fear not you can trick it into installing by doing the following:

First backup

sudo cp /etc/lsb-release /etc/lsb-release.backup

Then edit the file

sudo nano /etc/lsb-release

And put the following in there

DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty

This will allow the installer to proceed but you will also want to add the public key so updates work correctly:

wget --no-check-certificate https://download.01.org/gfx/RPM-GPG-KEY-ilg -O - | sudo apt-key add -
wget --no-check-certificate https://download.01.org/gfx/RPM-GPG-KEY-ilg-2 -O - | sudo apt-key add - 

Original articles:
“Distribution not supported” when trying to install Intel Graphics Installer in 14.10
Intel Linux Graphic Drivers

Here is my updated /etc/rc.localfor Ubuntu 14.10

#!/bin/sh -e

# Sleep so all services have started before we change settings
sleep 5

# Set Intel Audio to power save 
echo '1' > '/sys/module/snd_hda_intel/parameters/power_save';

# Temp disable ethernet port
modprobe -r r8169

# Wireless Power Saving for interface wlan0
iw dev wlan0 set power_save on

# VM writeback timeout
echo '1500' > '/proc/sys/vm/dirty_writeback_centisecs';

# Temp disable bluetooth
modprobe -r btusb

# Adjust backlight to start much lower
echo 800 > '/sys/class/backlight/intel_backlight/brightness'

# - NMI Watchdog (turned off)
echo 0 > '/proc/sys/kernel/nmi_watchdog';

# - SATA Active Link Power management
for i in `find /sys/class/scsi_host/*/link_power_management_policy`; do echo 'min_power' > $i; done;

# - USB Autosuspend (after 2 secs of inactivity)
for i in `find /sys/bus/usb/devices/*/power/control`; do echo auto > $i; done;
for i in `find /sys/bus/usb/devices/*/power/autosuspend`; do echo 2 > $i; done;

# - Device Power Management
echo 'auto' | tee /sys/bus/i2c/devices/*/power/control > /dev/null;
echo 'auto' | tee /sys/bus/pci/devices/*/power/control > /dev/null;

# - CPU Scaling (power saving scaling governor for all CPU's
for i in `find /sys/devices/system/cpu/*/cpufreq/scaling_governor`; do echo 'powersave' > $i; done;

exit 0

Getting the generic signature of a Java 8 lambda

- 2 mins read

Posted to StackOverflow

This is currently possible to solve but only in a pretty hackie way, but let me first explain a few things:

When you write a lambda, the compiler inserts a dynamic invoke instruction pointing to the LambdaMetafactory and a private static synthetic method with the body of the lambda. The synthetic method and the method handle in the constant pool both contain the generic type (if the lambda uses the type or is explicit as in your examples).

Where did I download that file from?

- 1 min read

Assuming you used Chrome and a modern Linux file system…

$ attr -g xdg.origin.url Downloads/google-chrome-stable_current_x86_64.rpm 
Attribute "xdg.origin.url" had a 74 byte value for /home/dan/Downloads/google-chrome-stable_current_x86_64.rpm:
https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

Compiling RunIt on Fedora 20

- 1 min read

I had dowloaded RunIt. Then ran

package/compile

It errored with:

./compile runit.c
./load runit unix.a byte.a -static
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
make: *** [runit] Error 1

To fix I needed to run

sudo yum install glibc-static

Bash function to switch Java versions

- 2 mins read
setjava() {
	if [ "$1" = "-q" ]; then
                local quiet=true
                shift
        fi

	local jdk=~/Applications/Java/jdk1.$1
        if [ ! -d "${jdk}" ]; then
                echo Jdk not found: ${jdk}
                return 1
        fi
	export JAVA_HOME=${jdk}
        export PATH=${JAVA_HOME}/bin:${PATH}
        if [ -z "${quiet}" ]; then
                java -version
        fi
}

export -f setjava

I have symlinks for all major versions of Java so that in IntelliJ and the command line I can upgrade minor Java versions just by changing the symlink: