<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>joh.fi</title><link>https://joh.fi/</link><description>Recent content on joh.fi</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 05 Mar 2016 13:30:00 +0000</lastBuildDate><atom:link href="https://joh.fi/index.xml" rel="self" type="application/rss+xml"/><item><title>Encrypted Windows and Arch Linux dual-boot installation using UEFI</title><link>https://joh.fi/blog/2016-03-05-encrypted-windows-and-arch-linux-dual-boot-installation-using-uefi/</link><pubDate>Sat, 05 Mar 2016 13:30:00 +0000</pubDate><guid>https://joh.fi/blog/2016-03-05-encrypted-windows-and-arch-linux-dual-boot-installation-using-uefi/</guid><description>&lt;p>I will start this with a note that this is not a tutorial type of post. It&amp;rsquo;s just
to remind myself how I did this myself. I&amp;rsquo;m way too lazy to keep updating tutorials
and therefore it&amp;rsquo;s easier to just post some rough guidelines instead of step by
step instructions.&lt;/p>
&lt;p>For some time now I&amp;rsquo;ve been running a pretty nice dual boot setup with my trusty
old Lenovo X220. I have a 512GB Samsung 840 Pro SSD divided between a &lt;a href="https://www.microsoft.com/en-us/windows">Windows 10&lt;/a>
and &lt;a href="https://www.archlinux.org/">Arch Linux&lt;/a> installations. Both operating systems share the same EFI partition.
This is especially nice as now I have a bit more faith with Windows updates not
screwing up my linux installation. With the fact that the computer is a laptop
comes a requirement that both installations are encrypted. Luckily both
operating systems support full disk encryption and are relatively easy to set up.&lt;/p></description></item><item><title>How to fix your damaged gnupg database</title><link>https://joh.fi/blog/2015-01-02-howto-fix-your-damaged-gnupg-databse/</link><pubDate>Fri, 02 Jan 2015 11:18:14 +0000</pubDate><guid>https://joh.fi/blog/2015-01-02-howto-fix-your-damaged-gnupg-databse/</guid><description>&lt;p>Some time ago I had troubles with my gnupg installation. Namely gpg was unable
to read keys from my trusted.db. I figured this had something to do with the
upgrade to GnuPG 2.1.0.&lt;/p>



&lt;div class="goat svg-container ">
 
 &lt;svg
 xmlns="http://www.w3.org/2000/svg"
 font-family="Menlo,Lucida Console,monospace"
 
 viewBox="0 0 312 153"
 >
 &lt;g transform='translate(8,16)'>
&lt;path d='M 32,64 L 40,64' fill='none' stroke='currentColor'>&lt;/path>
&lt;path d='M 32,80 L 40,80' fill='none' stroke='currentColor'>&lt;/path>
&lt;text text-anchor='middle' x='0' y='4' fill='currentColor' style='font-size:1em'>c&lt;/text>
&lt;text text-anchor='middle' x='0' y='20' fill='currentColor' style='font-size:1em'>m&lt;/text>
&lt;text text-anchor='middle' x='0' y='36' fill='currentColor' style='font-size:1em'>m&lt;/text>
&lt;text text-anchor='middle' x='0' y='52' fill='currentColor' style='font-size:1em'>m&lt;/text>
&lt;text text-anchor='middle' x='0' y='68' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='0' y='84' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='0' y='100' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='0' y='116' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='0' y='132' fill='currentColor' style='font-size:1em'>m&lt;/text>
&lt;text text-anchor='middle' x='8' y='4' fill='currentColor' style='font-size:1em'>d&lt;/text>
&lt;text text-anchor='middle' x='8' y='20' fill='currentColor' style='font-size:1em'>v&lt;/text>
&lt;text text-anchor='middle' x='8' y='36' fill='currentColor' style='font-size:1em'>v&lt;/text>
&lt;text text-anchor='middle' x='8' y='52' fill='currentColor' style='font-size:1em'>v&lt;/text>
&lt;text text-anchor='middle' x='8' y='68' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='8' y='84' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='8' y='100' fill='currentColor' style='font-size:1em'>m&lt;/text>
&lt;text text-anchor='middle' x='8' y='116' fill='currentColor' style='font-size:1em'>m&lt;/text>
&lt;text text-anchor='middle' x='8' y='132' fill='currentColor' style='font-size:1em'>v&lt;/text>
&lt;text text-anchor='middle' x='16' y='68' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='16' y='84' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='24' y='4' fill='currentColor' style='font-size:1em'>~&lt;/text>
&lt;text text-anchor='middle' x='24' y='20' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='24' y='36' fill='currentColor' style='font-size:1em'>s&lt;/text>
&lt;text text-anchor='middle' x='24' y='52' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='24' y='100' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='24' y='116' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='24' y='132' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='32' y='4' fill='currentColor' style='font-size:1em'>/&lt;/text>
&lt;text text-anchor='middle' x='32' y='20' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='32' y='36' fill='currentColor' style='font-size:1em'>e&lt;/text>
&lt;text text-anchor='middle' x='32' y='52' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='32' y='100' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='32' y='116' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='32' y='132' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='40' y='4' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='40' y='20' fill='currentColor' style='font-size:1em'>b&lt;/text>
&lt;text text-anchor='middle' x='40' y='36' fill='currentColor' style='font-size:1em'>c&lt;/text>
&lt;text text-anchor='middle' x='40' y='52' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='40' y='68' fill='currentColor' style='font-size:1em'>-&lt;/text>
&lt;text text-anchor='middle' x='40' y='84' fill='currentColor' style='font-size:1em'>-&lt;/text>
&lt;text text-anchor='middle' x='40' y='100' fill='currentColor' style='font-size:1em'>b&lt;/text>
&lt;text text-anchor='middle' x='40' y='116' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='40' y='132' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='48' y='4' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='48' y='20' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='48' y='36' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='48' y='52' fill='currentColor' style='font-size:1em'>s&lt;/text>
&lt;text text-anchor='middle' x='48' y='68' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='48' y='84' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='48' y='100' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='48' y='116' fill='currentColor' style='font-size:1em'>s&lt;/text>
&lt;text text-anchor='middle' x='48' y='132' fill='currentColor' style='font-size:1em'>s&lt;/text>
&lt;text text-anchor='middle' x='56' y='4' fill='currentColor' style='font-size:1em'>n&lt;/text>
&lt;text text-anchor='middle' x='56' y='20' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='56' y='36' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='56' y='52' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='56' y='68' fill='currentColor' style='font-size:1em'>m&lt;/text>
&lt;text text-anchor='middle' x='56' y='84' fill='currentColor' style='font-size:1em'>m&lt;/text>
&lt;text text-anchor='middle' x='56' y='100' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='56' y='116' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='56' y='132' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='64' y='4' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='64' y='20' fill='currentColor' style='font-size:1em'>n&lt;/text>
&lt;text text-anchor='middle' x='64' y='36' fill='currentColor' style='font-size:1em'>n&lt;/text>
&lt;text text-anchor='middle' x='64' y='52' fill='currentColor' style='font-size:1em'>d&lt;/text>
&lt;text text-anchor='middle' x='64' y='68' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='64' y='84' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='64' y='100' fill='currentColor' style='font-size:1em'>n&lt;/text>
&lt;text text-anchor='middle' x='64' y='116' fill='currentColor' style='font-size:1em'>d&lt;/text>
&lt;text text-anchor='middle' x='64' y='132' fill='currentColor' style='font-size:1em'>d&lt;/text>
&lt;text text-anchor='middle' x='72' y='4' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='72' y='20' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='72' y='36' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='72' y='52' fill='currentColor' style='font-size:1em'>b&lt;/text>
&lt;text text-anchor='middle' x='72' y='68' fill='currentColor' style='font-size:1em'>o&lt;/text>
&lt;text text-anchor='middle' x='72' y='84' fill='currentColor' style='font-size:1em'>o&lt;/text>
&lt;text text-anchor='middle' x='72' y='100' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='72' y='116' fill='currentColor' style='font-size:1em'>b&lt;/text>
&lt;text text-anchor='middle' x='72' y='132' fill='currentColor' style='font-size:1em'>b&lt;/text>
&lt;text text-anchor='middle' x='80' y='4' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='80' y='20' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='80' y='36' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='80' y='52' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='80' y='68' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='80' y='84' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='80' y='100' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='80' y='116' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='80' y='132' fill='currentColor' style='font-size:1em'>-&lt;/text>
&lt;text text-anchor='middle' x='88' y='20' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='88' y='36' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='88' y='52' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='88' y='68' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='88' y='84' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='88' y='100' fill='currentColor' style='font-size:1em'>$&lt;/text>
&lt;text text-anchor='middle' x='88' y='116' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='88' y='132' fill='currentColor' style='font-size:1em'>c&lt;/text>
&lt;text text-anchor='middle' x='96' y='20' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='96' y='36' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='96' y='52' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='96' y='100' fill='currentColor' style='font-size:1em'>U&lt;/text>
&lt;text text-anchor='middle' x='96' y='116' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='96' y='132' fill='currentColor' style='font-size:1em'>a&lt;/text>
&lt;text text-anchor='middle' x='104' y='20' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='104' y='36' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='104' y='52' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='104' y='68' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='104' y='84' fill='currentColor' style='font-size:1em'>s&lt;/text>
&lt;text text-anchor='middle' x='104' y='100' fill='currentColor' style='font-size:1em'>S&lt;/text>
&lt;text text-anchor='middle' x='104' y='116' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='104' y='132' fill='currentColor' style='font-size:1em'>d&lt;/text>
&lt;text text-anchor='middle' x='112' y='68' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='112' y='84' fill='currentColor' style='font-size:1em'>e&lt;/text>
&lt;text text-anchor='middle' x='112' y='100' fill='currentColor' style='font-size:1em'>E&lt;/text>
&lt;text text-anchor='middle' x='112' y='132' fill='currentColor' style='font-size:1em'>w&lt;/text>
&lt;text text-anchor='middle' x='120' y='20' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='120' y='36' fill='currentColor' style='font-size:1em'>s&lt;/text>
&lt;text text-anchor='middle' x='120' y='52' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='120' y='68' fill='currentColor' style='font-size:1em'>b&lt;/text>
&lt;text text-anchor='middle' x='120' y='84' fill='currentColor' style='font-size:1em'>c&lt;/text>
&lt;text text-anchor='middle' x='120' y='100' fill='currentColor' style='font-size:1em'>R&lt;/text>
&lt;text text-anchor='middle' x='120' y='132' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='128' y='20' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='128' y='36' fill='currentColor' style='font-size:1em'>e&lt;/text>
&lt;text text-anchor='middle' x='128' y='52' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='128' y='68' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='128' y='84' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='128' y='100' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='128' y='132' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='136' y='20' fill='currentColor' style='font-size:1em'>b&lt;/text>
&lt;text text-anchor='middle' x='136' y='36' fill='currentColor' style='font-size:1em'>c&lt;/text>
&lt;text text-anchor='middle' x='136' y='52' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='136' y='68' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='136' y='84' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='136' y='100' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='136' y='132' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='144' y='20' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='144' y='36' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='144' y='52' fill='currentColor' style='font-size:1em'>s&lt;/text>
&lt;text text-anchor='middle' x='144' y='68' fill='currentColor' style='font-size:1em'>n&lt;/text>
&lt;text text-anchor='middle' x='144' y='84' fill='currentColor' style='font-size:1em'>n&lt;/text>
&lt;text text-anchor='middle' x='144' y='100' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='144' y='132' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='152' y='20' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='152' y='36' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='152' y='52' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='152' y='68' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='152' y='84' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='152' y='100' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='160' y='20' fill='currentColor' style='font-size:1em'>n&lt;/text>
&lt;text text-anchor='middle' x='160' y='36' fill='currentColor' style='font-size:1em'>n&lt;/text>
&lt;text text-anchor='middle' x='160' y='52' fill='currentColor' style='font-size:1em'>d&lt;/text>
&lt;text text-anchor='middle' x='160' y='68' fill='currentColor' style='font-size:1em'>-&lt;/text>
&lt;text text-anchor='middle' x='160' y='84' fill='currentColor' style='font-size:1em'>-&lt;/text>
&lt;text text-anchor='middle' x='160' y='132' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='168' y='20' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='168' y='36' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='168' y='52' fill='currentColor' style='font-size:1em'>b&lt;/text>
&lt;text text-anchor='middle' x='168' y='68' fill='currentColor' style='font-size:1em'>$&lt;/text>
&lt;text text-anchor='middle' x='168' y='84' fill='currentColor' style='font-size:1em'>$&lt;/text>
&lt;text text-anchor='middle' x='168' y='100' fill='currentColor' style='font-size:1em'>s&lt;/text>
&lt;text text-anchor='middle' x='168' y='132' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='176' y='20' fill='currentColor' style='font-size:1em'>-&lt;/text>
&lt;text text-anchor='middle' x='176' y='36' fill='currentColor' style='font-size:1em'>-&lt;/text>
&lt;text text-anchor='middle' x='176' y='52' fill='currentColor' style='font-size:1em'>-&lt;/text>
&lt;text text-anchor='middle' x='176' y='68' fill='currentColor' style='font-size:1em'>U&lt;/text>
&lt;text text-anchor='middle' x='176' y='84' fill='currentColor' style='font-size:1em'>U&lt;/text>
&lt;text text-anchor='middle' x='176' y='100' fill='currentColor' style='font-size:1em'>e&lt;/text>
&lt;text text-anchor='middle' x='176' y='132' fill='currentColor' style='font-size:1em'>u&lt;/text>
&lt;text text-anchor='middle' x='184' y='20' fill='currentColor' style='font-size:1em'>$&lt;/text>
&lt;text text-anchor='middle' x='184' y='36' fill='currentColor' style='font-size:1em'>$&lt;/text>
&lt;text text-anchor='middle' x='184' y='52' fill='currentColor' style='font-size:1em'>$&lt;/text>
&lt;text text-anchor='middle' x='184' y='68' fill='currentColor' style='font-size:1em'>S&lt;/text>
&lt;text text-anchor='middle' x='184' y='84' fill='currentColor' style='font-size:1em'>S&lt;/text>
&lt;text text-anchor='middle' x='184' y='100' fill='currentColor' style='font-size:1em'>c&lt;/text>
&lt;text text-anchor='middle' x='184' y='132' fill='currentColor' style='font-size:1em'>s&lt;/text>
&lt;text text-anchor='middle' x='192' y='20' fill='currentColor' style='font-size:1em'>U&lt;/text>
&lt;text text-anchor='middle' x='192' y='36' fill='currentColor' style='font-size:1em'>U&lt;/text>
&lt;text text-anchor='middle' x='192' y='52' fill='currentColor' style='font-size:1em'>U&lt;/text>
&lt;text text-anchor='middle' x='192' y='68' fill='currentColor' style='font-size:1em'>E&lt;/text>
&lt;text text-anchor='middle' x='192' y='84' fill='currentColor' style='font-size:1em'>E&lt;/text>
&lt;text text-anchor='middle' x='192' y='100' fill='currentColor' style='font-size:1em'>r&lt;/text>
&lt;text text-anchor='middle' x='192' y='132' fill='currentColor' style='font-size:1em'>t&lt;/text>
&lt;text text-anchor='middle' x='200' y='20' fill='currentColor' style='font-size:1em'>S&lt;/text>
&lt;text text-anchor='middle' x='200' y='36' fill='currentColor' style='font-size:1em'>S&lt;/text>
&lt;text text-anchor='middle' x='200' y='52' fill='currentColor' style='font-size:1em'>S&lt;/text>
&lt;text text-anchor='middle' x='200' y='68' fill='currentColor' style='font-size:1em'>R&lt;/text>
&lt;text text-anchor='middle' x='200' y='84' fill='currentColor' style='font-size:1em'>R&lt;/text>
&lt;text text-anchor='middle' x='200' y='100' fill='currentColor' style='font-size:1em'>i&lt;/text>
&lt;text text-anchor='middle' x='200' y='132' fill='currentColor' style='font-size:1em'>d&lt;/text>
&lt;text text-anchor='middle' x='208' y='20' fill='currentColor' style='font-size:1em'>E&lt;/text>
&lt;text text-anchor='middle' x='208' y='36' fill='currentColor' style='font-size:1em'>E&lt;/text>
&lt;text text-anchor='middle' x='208' y='52' fill='currentColor' style='font-size:1em'>E&lt;/text>
&lt;text text-anchor='middle' x='208' y='68' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='208' y='84' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='208' y='100' fill='currentColor' style='font-size:1em'>n&lt;/text>
&lt;text text-anchor='middle' x='208' y='132' fill='currentColor' style='font-size:1em'>b&lt;/text>
&lt;text text-anchor='middle' x='216' y='20' fill='currentColor' style='font-size:1em'>R&lt;/text>
&lt;text text-anchor='middle' x='216' y='36' fill='currentColor' style='font-size:1em'>R&lt;/text>
&lt;text text-anchor='middle' x='216' y='52' fill='currentColor' style='font-size:1em'>R&lt;/text>
&lt;text text-anchor='middle' x='216' y='68' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='216' y='84' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='216' y='100' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='216' y='132' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='224' y='20' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='224' y='36' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='224' y='52' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='224' y='68' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='224' y='84' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='224' y='100' fill='currentColor' style='font-size:1em'>-&lt;/text>
&lt;text text-anchor='middle' x='224' y='132' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='232' y='20' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='232' y='36' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='232' y='52' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='232' y='68' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='232' y='84' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='232' y='100' fill='currentColor' style='font-size:1em'>$&lt;/text>
&lt;text text-anchor='middle' x='232' y='132' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='240' y='20' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='240' y='36' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='240' y='52' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='240' y='100' fill='currentColor' style='font-size:1em'>U&lt;/text>
&lt;text text-anchor='middle' x='240' y='132' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='248' y='20' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='248' y='36' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='248' y='52' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='248' y='100' fill='currentColor' style='font-size:1em'>S&lt;/text>
&lt;text text-anchor='middle' x='256' y='100' fill='currentColor' style='font-size:1em'>E&lt;/text>
&lt;text text-anchor='middle' x='264' y='100' fill='currentColor' style='font-size:1em'>R&lt;/text>
&lt;text text-anchor='middle' x='272' y='100' fill='currentColor' style='font-size:1em'>.&lt;/text>
&lt;text text-anchor='middle' x='280' y='100' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;text text-anchor='middle' x='288' y='100' fill='currentColor' style='font-size:1em'>p&lt;/text>
&lt;text text-anchor='middle' x='296' y='100' fill='currentColor' style='font-size:1em'>g&lt;/text>
&lt;/g>

 &lt;/svg>
 
&lt;/div>
&lt;p>That&amp;rsquo;s all for now folks and happy new year!&lt;/p></description></item><item><title>Install Ubuntu 13.10 on top of encrypted lvm</title><link>https://joh.fi/blog/2014-03-15-ubuntu-13/</link><pubDate>Tue, 18 Mar 2014 20:08:00 +0000</pubDate><guid>https://joh.fi/blog/2014-03-15-ubuntu-13/</guid><description>&lt;h3 id="introduction">Introduction&lt;/h3>
&lt;p>Ubuntu&amp;rsquo;s installer provides a simple option for installing on top of encrypted
lvm. The option however does not allow to modify partition layout and that for
me is a showstopper. The other option is to create an encrypted container for
all the partitions which works fine but then one has to enter the passphrase
to each and every device individually.&lt;/p>
&lt;p>This guide explains how to install ubuntu on top of an encrypted lvm and also
give user the power of specifying partition layout. Using LVM makes it
possible to specify partition sizes and unlock the encrypted device with a
single passphrase. The alternative is to use encrypted devices for each
partition and store keyfiles, that are used to unlock the other devices, on
the root device.&lt;/p></description></item><item><title>IPv6</title><link>https://joh.fi/blog/2013-12-31-ipv6/</link><pubDate>Tue, 31 Dec 2013 22:38:00 +0000</pubDate><guid>https://joh.fi/blog/2013-12-31-ipv6/</guid><description>&lt;p>Just a quick note that the this site is now accessible via IPv6. :)&lt;/p>
&lt;p>Unlike many others I will not be doing recaps for the past year nor
predictions or promises for the next one. Still I wish happy new year for
everyone!&lt;/p></description></item><item><title>Fresh new look</title><link>https://joh.fi/blog/2013-10-09-fresh-new-look/</link><pubDate>Wed, 09 Oct 2013 20:28:00 +0000</pubDate><guid>https://joh.fi/blog/2013-10-09-fresh-new-look/</guid><description>&lt;p>As you can see the site has a new fresh and responsive look. :)&lt;/p></description></item><item><title>New Skype for Android</title><link>https://joh.fi/blog/2013-07-01-new-skype-for-android/</link><pubDate>Mon, 01 Jul 2013 17:16:00 +0000</pubDate><guid>https://joh.fi/blog/2013-07-01-new-skype-for-android/</guid><description>&lt;p>It&amp;rsquo;s about time! Finally the functional but otherwise not very attractive
&lt;a href="https://play.google.com/store/apps/details?id=com.skype.raider">Skype&lt;/a> on
android has been updated. User interface has been totally revamped and follows
the nowadays so popular flat style. With my initial testing the new version
seems to work really well and so far I haven&amp;rsquo;t found anything to complain
about. Well except for the most awkward
&lt;a href="https://www.youtube.com/watch?v=QHIzzQB4Lew">ad&lt;/a> I have seen in a long time.&lt;/p></description></item><item><title>Post status format</title><link>https://joh.fi/blog/2013-06-27-post-status-format/</link><pubDate>Thu, 27 Jun 2013 15:57:00 +0000</pubDate><guid>https://joh.fi/blog/2013-06-27-post-status-format/</guid><description>&lt;p>I just found out that wordpress supports different &lt;a href="http://codex.wordpress.org/Post_Formats">post formats&lt;/a>. Neato!&lt;/p></description></item><item><title>Newsblur</title><link>https://joh.fi/blog/2013-06-17-newsblur/</link><pubDate>Mon, 17 Jun 2013 20:51:00 +0000</pubDate><guid>https://joh.fi/blog/2013-06-17-newsblur/</guid><description>&lt;p>I recently wrote about
&lt;a href="http://www.joh.fi/2013/03/14/goodbye-google-reader/">leaving Google Reader&lt;/a>.
Of course this decision was made for me when Google announced that they will
shutdown Google Creader on 1st of July. In the beginning I simply used
thunderbird as my RSS reader but eventually this became too limited as for
instance I couldn&amp;rsquo;t easily access my thunderbird installation from work. Then
I switched to &lt;a href="http://theoldreader.com/">theoldreader&lt;/a> which is more or less a
Google Reader clone with additional features. It worked just fine and was free
as in it didn&amp;rsquo;t cost anything. However theoldreader failed to fetch all the
articles for me. Of course I couldn&amp;rsquo;t complain much as I was not a paying
customer but it was enough to push me for searching for an alternative.&lt;/p></description></item><item><title>Waiting for Haswell Macbook Pros</title><link>https://joh.fi/blog/2013-06-15-waiting-for-haswell-macbook-pros/</link><pubDate>Sat, 15 Jun 2013 17:56:00 +0000</pubDate><guid>https://joh.fi/blog/2013-06-15-waiting-for-haswell-macbook-pros/</guid><description>&lt;p>I am a strong believer of mobile computing and to me a perfect setup is a
small laptop that can be connected to a bigger screen via docking station or
similar setup. My current setup consists of two year old
&lt;a href="https://en.wikipedia.org/wiki/ThinkPad_X_Series#X220">Lenovo X220&lt;/a> and a high
resolution
&lt;a href="http://accessories.us.dell.com/sna/productdetail.aspx?c=us&amp;amp;l=en&amp;amp;s=bsd&amp;amp;cs=04&amp;amp;sku=224-8284">Dell U2711&lt;/a>.
I&amp;rsquo;ve been quite happy with it. Laptop is easy to take out from the docking
station, which by the way comes with the device, and it serves as a desktop
replacement while at home. However two years is a long time in technology and
I constantly find myself drooling after newer laptops.&lt;/p></description></item><item><title>Goodbye Google Reader</title><link>https://joh.fi/blog/2013-03-14-goodbye-google-reader/</link><pubDate>Thu, 14 Mar 2013 20:34:00 +0000</pubDate><guid>https://joh.fi/blog/2013-03-14-goodbye-google-reader/</guid><description>&lt;p>So yesterday Google announced that they will retire Google Reader. At first
this annoyed me since to me Google Reader was their best service after Google
Search of course. Luckily there are plenty of alternatives and for now I chose
Thunderbird as I already use it for email.&lt;/p>
&lt;p>Good riddance!&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>From your &lt;span style="color:#ae81ff">55&lt;/span> subscriptions, over the last &lt;span style="color:#ae81ff">30&lt;/span> days you read 9,443 items, clicked &lt;span style="color:#ae81ff">480&lt;/span> items, starred &lt;span style="color:#ae81ff">1&lt;/span> items, and emailed &lt;span style="color:#ae81ff">0&lt;/span> items. Since May 21, &lt;span style="color:#ae81ff">2010&lt;/span> you have read a total of 237,212 items.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Installing ownCloud on a shared host</title><link>https://joh.fi/blog/2013-01-10-installing-owncloud-on-a-shared-host/</link><pubDate>Thu, 10 Jan 2013 18:45:00 +0000</pubDate><guid>https://joh.fi/blog/2013-01-10-installing-owncloud-on-a-shared-host/</guid><description>&lt;p>I&amp;rsquo;ve been using &lt;a href="https://www.dropbox.com/">Dropbox&lt;/a> and
&lt;a href="https://www.google.com/calendar/">Google Calendar&lt;/a> for as long as I can
remember and I&amp;rsquo;ve rarely had any problems with them. As a matter of a fact
both products work great, offer free service and have saved my ass on few
occasions. Sounds too good? Yeah&amp;hellip; The old truth still stands: If you&amp;rsquo;re not
paying for it; You&amp;rsquo;re the product (and sometimes even if you&amp;rsquo;re paying). The
part of me that is concerned about privacy issues has never liked the
situation but I&amp;rsquo;ve argued that the benefits are greater than lack of privacy.
Also lately I&amp;rsquo;ve been syncing more files to my Dropbox and my free disk quota
is running out. Therefore I need to either find a better alternative or start
paying for the service. Well yesteday I had some free time on my hands and
decided to look for an alternative to Dropbox. Ideal replacement should be
easy to use, work well and preferably be open souce. It didn&amp;rsquo;t take me long to
bump into &lt;a href="http://owncloud.org/">ownCloud&lt;/a>.&lt;/p></description></item><item><title>My first patch to GNOME</title><link>https://joh.fi/blog/2012-12-16-my-first-patch-to-gnome/</link><pubDate>Sun, 16 Dec 2012 19:22:00 +0000</pubDate><guid>https://joh.fi/blog/2012-12-16-my-first-patch-to-gnome/</guid><description>&lt;p>I&amp;rsquo;ve used open source software for many years now but I haven&amp;rsquo;t really
contributed back to any of the open source communities. I have filled some
bug reports but other than that I&amp;rsquo;ve been simply a happy (and sometimes less
happy) user. However yesterday I took the first step by doing tiny tiny
contribution to &lt;a href="http://www.gnome.org">GNOME&lt;/a> or to be specific to
gnome-session. The funny thing is that it was all because of selfish reasons.&lt;/p></description></item><item><title>Git subtree merge</title><link>https://joh.fi/blog/2012-10-29-git-subtree-merge/</link><pubDate>Mon, 29 Oct 2012 18:31:00 +0000</pubDate><guid>https://joh.fi/blog/2012-10-29-git-subtree-merge/</guid><description>&lt;p>Last week I took part to an intensive
&lt;a href="http://iloveponies.github.com/">Clojure-course&lt;/a> which was an introduction to
functional programming using &lt;a href="http://clojure.org/">Clojure&lt;/a>. The course itself
was fairly well organized and interesting but that&amp;rsquo;s not the topic of this
post.&lt;/p>
&lt;p>The course was built around solving small programming tasks using clojure.
Each topic had their own separate git repository on
&lt;a href="http://www.github.com">github&lt;/a> which we cloned and added our solutions in.
The end result was that participants had many repositories (one for each
exercise set) and this was fine during the course. Now that I&amp;rsquo;ve successfully
passed the course I wanted to get rid of all the separate repositories and
combine them to a single git repository. I could have simply created a new
repository and copied the files into it but this way I would have lost all
commit history. I have previously used git submodules but since I won&amp;rsquo;t be
developing these assignments further I would rather not user that method. Few
minutes of googling and I found a solution for my problem,
&lt;a href="http://git-scm.com/book/ch6-7.html">git subtree merge&lt;/a>.
Subtree merge is perfect for my use case since I my repositories were separate
but they shared no data with each other. In other words there would not be any
merge conflicts.&lt;/p></description></item><item><title>Migration to Octopress</title><link>https://joh.fi/blog/2012-07-12-migration-to-octopress/</link><pubDate>Thu, 12 Jul 2012 21:43:00 +0000</pubDate><guid>https://joh.fi/blog/2012-07-12-migration-to-octopress/</guid><description>&lt;p>Brace yourselves, it&amp;rsquo;s time for another &amp;ldquo;I migrated from X to
&lt;a href="http://octopress.org/">octopress&lt;/a>&amp;rdquo; blog post. Try to bear with me.&lt;/p>
&lt;p>Like the title hints I have finally started my migration process from
wordpress to octopress. I have nothing against wordpress per se but it&amp;rsquo;s way
too big for my needs. I only need a simple way of creating posts every now
and then and for that purpose octopress seems to be quite suitable. Also
static html pages are more pop than hipster glasses these days.&lt;/p></description></item><item><title>KDE and ssh-agent</title><link>https://joh.fi/blog/2012-07-09-kde-and-ssh-agent/</link><pubDate>Mon, 09 Jul 2012 15:21:00 +0000</pubDate><guid>https://joh.fi/blog/2012-07-09-kde-and-ssh-agent/</guid><description>&lt;p>Hello lazyweb!&lt;/p>
&lt;p>&lt;a href="http://www.gnome.org/">GNOME&lt;/a> or to be more precise
&lt;a href="http://live.gnome.org/GnomeKeyring">GNOME keyring&lt;/a> has nice feature of
including ssh-agent that integrates nicely with gnome-keyring. I find this
feature very convenient since I don&amp;rsquo;t have to input my password every time I
connect to a server. (I sincerely hope that no one is using ssh-keys without
password protection).&lt;/p>
&lt;p>Things are quite not as convenient on &lt;a href="http://kde.org/">KDE&lt;/a> side of desktop
environments even though KDE provides handy tool called
&lt;a href="http://utils.kde.org/projects/kwalletmanager/">KDE wallet&lt;/a>. Luckily with few
simple scripts we can use the combination of KDE wallet and ssh-agent to
provide similar functionality on KDE. So without further ado here is the
guide.&lt;/p></description></item><item><title>Disable arrow keys in Vim</title><link>https://joh.fi/blog/2012-06-15-disable-arrow-keys-in-vim/</link><pubDate>Fri, 15 Jun 2012 10:24:00 +0000</pubDate><guid>https://joh.fi/blog/2012-06-15-disable-arrow-keys-in-vim/</guid><description>&lt;p>I know this information can be found in n+1 other places but I will write it
here anyway to be able to access it easily later.&lt;/p>
&lt;p>One of the most important things when starting to use Vim as your editor is
to drop all old habits! Therefore we will disable the arrow keys so that you
are forced to use h, j, k, l to navigate. So without further ado here are the
changes one should add to their .vimrc file.&lt;/p></description></item><item><title>Implementing binary heap without an array</title><link>https://joh.fi/blog/2011-11-17-implementing-binary-heap-without-an-array/</link><pubDate>Thu, 17 Nov 2011 17:06:00 +0000</pubDate><guid>https://joh.fi/blog/2011-11-17-implementing-binary-heap-without-an-array/</guid><description>&lt;p>So I had this school assignment to implement a
&lt;a href="http://en.wikipedia.org/wiki/Binary_heap">binary heap&lt;/a> with a twist of not
using an array to store the binary tree. You might think that this is an easy
problem to solve and after some thinking it turns out that it isn&amp;rsquo;t much
harder than the generic array implementation. However if this is the first
time you&amp;rsquo;re implementing binary heap this way, you&amp;rsquo;ll likely find it difficult
to insert new nodes in O(lg n) time. With arrays you can always find the last
element in constant time. Unfortunately this is not the case with object
references unless you have a trick or two in your sleeve. Once you&amp;rsquo;re able t
access last node of the heap and sibling nodes of a particular node in
constant time, the solution is similar to any text book implementation. It is
also worth noting that at the time of writing &lt;a href="http://www.google.com">google&lt;/a>
isn&amp;rsquo;t much of a help solving this problem because next to every example shows
the array implementation.&lt;/p></description></item><item><title>256 colors in vim and screen</title><link>https://joh.fi/blog/2011-11-03-256-colors-in-vim-and-screen/</link><pubDate>Thu, 03 Nov 2011 14:44:00 +0000</pubDate><guid>https://joh.fi/blog/2011-11-03-256-colors-in-vim-and-screen/</guid><description>&lt;p>For some strange reason at least &lt;a href="http://fedoraproject.org/">Fedora&lt;/a> ships
&lt;a href="http://www.gnu.org/s/screen/">screen&lt;/a> and &lt;a href="http://www.vim.org/">vim&lt;/a> with
256 colors disabled. Here&amp;rsquo;s a quick guide how to enable 256 colors in vim and
screen.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Add to you .vimrc file&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>set t_Co&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">256&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Add following lines to your .screenrc file&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>attrcolor b &lt;span style="color:#e6db74">&amp;#34;.I&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>termcapinfo xterm &lt;span style="color:#e6db74">&amp;#39;Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>defbce &lt;span style="color:#e6db74">&amp;#34;on&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;p>Also check that your terminal supports or has 256 colors enabled. At least
gnome-terminals seems to have this by default. Enjoy combination of vim and
screen with 256 colors. :)&lt;/p></description></item><item><title>Unmounting a busy drive</title><link>https://joh.fi/blog/2011-10-03-unmounting-a-busy-drive/</link><pubDate>Mon, 03 Oct 2011 18:45:00 +0000</pubDate><guid>https://joh.fi/blog/2011-10-03-unmounting-a-busy-drive/</guid><description>&lt;p>My computer setup consists of
&lt;a href="https://www.lenovo.com/products/us/laptop/thinkpad/x-series/x220/">Lenovo x220&lt;/a>
with a docking station, two external screens and of course mouse and keyboard.
Even though my laptop has a fast hard drive, it has only 120GB disk space
which means I need external hard drives to store my data. I have one external
hard drive and one docking station which accepts regular internal 3.5&amp;quot; and
2.5&amp;quot; hard drives. Since I prefer suspend over shutdown I sometimes get
problems with my external docking station.&lt;/p></description></item><item><title>Spotify 0.6.1 on Fedora 15/16</title><link>https://joh.fi/blog/2011-10-03-spotify-0-6-1-on-fedora/</link><pubDate>Mon, 03 Oct 2011 18:31:00 +0000</pubDate><guid>https://joh.fi/blog/2011-10-03-spotify-0-6-1-on-fedora/</guid><description>&lt;p>Edit: This works for version 0.6.2 as well.&lt;/p>
&lt;p>&lt;a href="http://www.spotify.com/">Spotify&lt;/a> is a popular music streaming service which
unfortunately isn&amp;rsquo;t globally available. Here in Finland we have had the
opportunity to enjoy Spotify from the begining which is a rare thing. For a
minuscule amount of 9.99€ you&amp;rsquo;ll have pretty much unlimited collection of
music at your hands and on your mobile phone. Ok, granted not every artist has
their music in Spotify but the collection is huge! Better yet they &amp;ldquo;support&amp;rdquo;
Linux with their preview client. The support is nothing compared to Windows or
OS X but it&amp;rsquo;s more than most services ever offer. While the service is
certainly rewarding for the end-user, I&amp;rsquo;ve heard stories about artists
complaining that the money coming from Spotify is next to nothing. Personally
I don&amp;rsquo;t know what real situation is, probably record labels are taking most
of the money. Enough said, lets get our hands dirty.&lt;/p></description></item><item><title>Disabling URL trimming in Firefox 7</title><link>https://joh.fi/blog/2011-09-29-disabling-url-trimming-in-firefox-7/</link><pubDate>Thu, 29 Sep 2011 14:23:00 +0000</pubDate><guid>https://joh.fi/blog/2011-09-29-disabling-url-trimming-in-firefox-7/</guid><description>&lt;p>Mozilla released
&lt;a href="https://blog.mozilla.com/blog/2011/09/27/mozilla-firefox-significantly-reduces-memory-use-to-make-web-browsing-faster/">Firefox 7&lt;/a>
released yesterday (actually day before yesterday since it&amp;rsquo;s already 29th
here) and of course I did an upgrade as soon as RPM files were available in
&lt;a href="http://koji.fedoraproject.org/koji/">koji&lt;/a>. Call me old fashioned but I
didn&amp;rsquo;t like the new feature which trims the http:// part of URL. Perhaps it&amp;rsquo;s
something that I&amp;rsquo;ll eventually get used to but for now I disabled it. Luckily
disabling the feature was easy enough.&lt;/p>
&lt;p>Here is how you do it:&lt;/p></description></item><item><title>Project Euler</title><link>https://joh.fi/blog/2011-09-27-project-euler/</link><pubDate>Tue, 27 Sep 2011 14:44:00 +0000</pubDate><guid>https://joh.fi/blog/2011-09-27-project-euler/</guid><description>&lt;p>&lt;a href="http://projecteuler.net">Project Euler&lt;/a> is a website containing computational
problems intended to be solved by small programs. Currently there are 351
problems to be solved and all of the problems should be doable within one-
minute-rule. In other words you are doing something wrong if computing the
solution takes more than one minute (or at least your program could be
optimized). If you&amp;rsquo;re interested in programming or mathematics then
Project Euler is for you. Solving problems is fun and along the way you may
learn something new.&lt;/p></description></item><item><title>NTMLv2 authentication on Linux</title><link>https://joh.fi/blog/2011-09-15-ntmlv2-authentication-on-linux/</link><pubDate>Thu, 15 Sep 2011 12:04:00 +0000</pubDate><guid>https://joh.fi/blog/2011-09-15-ntmlv2-authentication-on-linux/</guid><description>&lt;p>Today at work I was trying to get my virtual machine, running Fedora, to
access internet. Unfortunately the place I work is pretty much married to
products from Microsoft. All the networking to the outside world go through
proxies and in this case through Microsoft ISA. ISA uses NTLMv2 authentication
mechanism which is not supported out of the box by Linux. Luckily there was
multiple applications that were able to act as a man in the middle proxy, such
as &lt;a href="http://cntlm.sourceforge.net/">cntlm&lt;/a> and
&lt;a href="http://ntlmaps.sourceforge.net/">NTLAMPS&lt;/a>.&lt;/p></description></item><item><title>About</title><link>https://joh.fi/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://joh.fi/about/</guid><description>&lt;p>Ahoy there! My name is Janne Haapsaari and I&amp;rsquo;m a software developer based in Helsinki, Finland.
At the moment I&amp;rsquo;m writing code for &lt;a href="https://qvik.com">Qvik&lt;/a>. It should go without saying but
this is my personal journal and opinions reflected here are my own.&lt;/p>
&lt;h2 id="contact">Contact:&lt;/h2>
&lt;ul>
&lt;li>Email: &lt;a href="mailto:janne@joh.fi">janne@joh.fi&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>