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:

Error: Invalid or corrupt jarfile

- 2 mins read

I was creating a Jar via the Java API’s and I couldn’t get it to run my main class:

 $ java -jar foo.jar
Error: Invalid or corrupt jarfile foo.jar

Running it via the class path worked fine:

 $ java -cp foo.jar Bar
Hello world!

So now I knew it was something to do with the manifest file but it wasn’t being caused by

  • The 65535 file limit (See Zip64 and Java 7 ).
  • The 72 bytes limit per line
  • Missing newline at the end of the Main-Class (Displays “no main manifest attribute, in foo.jar”
  • A blank line before Main-Class (Displays “Error: An unexpected error occurred while trying to open file foo.jar”

So after scratching my head for a while I tried comparing a working jar with the failing jar: