<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Variable Bit Rate</title>
	<atom:link href="http://akiniemi.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://akiniemi.net</link>
	<description>Just a personal weblog</description>
	<lastBuildDate>Sun, 10 Mar 2013 13:25:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Web scraping papunet.net</title>
		<link>http://akiniemi.net/web-scraping-papunet/</link>
		<comments>http://akiniemi.net/web-scraping-papunet/#comments</comments>
		<pubDate>Sun, 10 Mar 2013 13:10:37 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
				<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://akiniemi.net/?p=296</guid>
		<description><![CDATA[I completed this weekend&#8217;s project of updating my web scraping script for papunet.net&#8217;s new site layout. The script is available under GPLv3 at github. The new script is better at getting at the right stuff, so there are now a couple hundred images more that it is able to scrape. I use this script to [...]]]></description>
				<content:encoded><![CDATA[<p>I completed this weekend&#8217;s project of updating my web scraping script for papunet.net&#8217;s new site layout. The script is available under GPLv3 at <a href="https://github.com/akiniemi/papunet">github</a>. The new script is better at getting at the right stuff, so there are now a couple hundred images more that it is able to scrape. I use this script to get the image data for <a title="Viito" href="http://akiniemi.net/viito-app/">Viito</a>, so there is now an update pending that brings these new images available to the app as well.</p>
<p>As an item for future improvement to folks at papunet.net, it would be nice to have a more programmable API to accessing the image data. I wouldn&#8217;t mind being able to get the images as a zip file either.</p>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/web-scraping-papunet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kuivausrumpu tukossa</title>
		<link>http://akiniemi.net/kuivausrumpu-tukossa/</link>
		<comments>http://akiniemi.net/kuivausrumpu-tukossa/#comments</comments>
		<pubDate>Mon, 23 Jul 2012 09:21:18 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
				<category><![CDATA[DIY]]></category>

		<guid isPermaLink="false">http://akiniemi.net/?p=260</guid>
		<description><![CDATA[Meillä on pesutornissa Siemensin lämpöpumpullinen kuivausrumpu, joka alkoi varoittamaan vesisäiliön täyttymisestä heti muutama minuutti ohjelman alkamisen jälkeen. Säiliössä ei kuitenkaan ollut koskaan kuin pieni loraus vettä. Googlailulla selvisi todennäköinen syy: kondenssivesi kerääntyy pumpun alle pieneen altaaseen, missä vaahtomuovinen pala nousee vedenpinnan mukana, kunnes osuu mikrokytkimeen aiheuttaen ohjelman katkeamisen. Ilmeisesti altaaseen kerääntyy aikaa myöten nöyhtää, joka [...]]]></description>
				<content:encoded><![CDATA[
<a href='http://akiniemi.net/kuivausrumpu-tukossa/dsc_0013/' title='DSC_0013'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/07/DSC_0013-150x150.jpg" class="attachment-thumbnail" alt="DSC_0013" /></a>
<a href='http://akiniemi.net/kuivausrumpu-tukossa/dsc_0014/' title='DSC_0014'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/07/DSC_0014-150x150.jpg" class="attachment-thumbnail" alt="DSC_0014" /></a>
<a href='http://akiniemi.net/kuivausrumpu-tukossa/dsc_0015/' title='DSC_0015'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/07/DSC_0015-150x150.jpg" class="attachment-thumbnail" alt="DSC_0015" /></a>
<a href='http://akiniemi.net/kuivausrumpu-tukossa/dsc_0017/' title='DSC_0017'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/07/DSC_0017-150x150.jpg" class="attachment-thumbnail" alt="DSC_0017" /></a>
<a href='http://akiniemi.net/kuivausrumpu-tukossa/dsc_0018/' title='DSC_0018'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/07/DSC_0018-150x150.jpg" class="attachment-thumbnail" alt="DSC_0018" /></a>
<a href='http://akiniemi.net/kuivausrumpu-tukossa/dsc_0019/' title='DSC_0019'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/07/DSC_0019-150x150.jpg" class="attachment-thumbnail" alt="DSC_0019" /></a>

<p>Meillä on pesutornissa <a href="http://www.siemens-home.fi/tuotetiedot/pyykinpesukoneet-kuivausrummut-ja-silitysraudat/kuivausrummut/WT46W570DN.html">Siemensin lämpöpumpullinen kuivausrumpu</a>, joka alkoi varoittamaan vesisäiliön täyttymisestä heti muutama minuutti ohjelman alkamisen jälkeen. Säiliössä ei kuitenkaan ollut koskaan kuin pieni loraus vettä. Googlailulla selvisi todennäköinen <a href="http://www.fixya.com/support/t4613797-dryer_stops_after_few_minutes_showing">syy</a>: kondenssivesi kerääntyy pumpun alle pieneen altaaseen, missä vaahtomuovinen pala nousee vedenpinnan mukana, kunnes osuu mikrokytkimeen aiheuttaen ohjelman katkeamisen. Ilmeisesti altaaseen kerääntyy aikaa myöten nöyhtää, joka estää vaahtomuovisen palan vapaan liikkumisen.</p>
<p>Aika selvä diagnoosi siis, joten ei kun purkamaan! Kannattaa varata aikaa kunnolla, sillä koneesta joutuu irroittamaan lähes kaiken: ohjainpaneelin, (edestäpäin katsottuna) oikean kyljen suojapaneelin, takapaneelin, katon ja rummun (joka lähtee takakannen kanssa yhtenä kappaleena).</p>
<p>Nyt toimii taas, eikä ruuvejakaan jäänyt yhtään yli.</p>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/kuivausrumpu-tukossa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Suojakotelo lämpöpumpulle</title>
		<link>http://akiniemi.net/suojakotelo-lampopumpulle/</link>
		<comments>http://akiniemi.net/suojakotelo-lampopumpulle/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 21:01:00 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
				<category><![CDATA[DIY]]></category>

		<guid isPermaLink="false">http://blog.akiniemi.net/?p=206</guid>
		<description><![CDATA[&#8220;Pääsin&#8221; pitkästä aikaa puutöihin kellarin ahtaaseen, mutta matalaan ja kylmään verstaaseen. Asennutimme taloon marraskuussa ilmalämpöpumpun, jolle piti rakentaa osuuskunnan mallin mukainen suojakotelo. Seitsemää puuseppää häiritsin tarjouspyynnöllä, mutta yksikään ei vastannut. Joten tein sen Ihan Itse. Reilut pari viikonloppua paloi aikaa, ja materiaalit olivat luokkaa 250EUR.]]></description>
				<content:encoded><![CDATA[<p>&#8220;Pääsin&#8221; pitkästä aikaa puutöihin kellarin ahtaaseen, mutta matalaan ja kylmään verstaaseen. Asennutimme taloon marraskuussa ilmalämpöpumpun, jolle piti rakentaa osuuskunnan mallin mukainen suojakotelo. Seitsemää puuseppää häiritsin tarjouspyynnöllä, mutta yksikään ei vastannut. Joten tein sen Ihan Itse.</p>

<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111126_001/' title='Työpajalla'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111126_001-150x150.jpg" class="attachment-thumbnail" alt="Työpajalla" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111126_003/' title='20111126_003'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111126_003-150x150.jpg" class="attachment-thumbnail" alt="20111126_003" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111126_004/' title='Sivulistat'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111126_004-150x150.jpg" class="attachment-thumbnail" alt="Sivulistat" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111126_005/' title='20111126_005'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111126_005-150x150.jpg" class="attachment-thumbnail" alt="20111126_005" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111126_006/' title='20111126_006'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111126_006-150x150.jpg" class="attachment-thumbnail" alt="20111126_006" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111126_007/' title='20111126_007'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111126_007-150x150.jpg" class="attachment-thumbnail" alt="20111126_007" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111127_001/' title='20111127_001'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111127_001-150x150.jpg" class="attachment-thumbnail" alt="20111127_001" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111127_002/' title='20111127_002'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111127_002-150x150.jpg" class="attachment-thumbnail" alt="20111127_002" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111127_003/' title='20111127_003'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111127_003-150x150.jpg" class="attachment-thumbnail" alt="20111127_003" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111127_004/' title='20111127_004'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111127_004-150x150.jpg" class="attachment-thumbnail" alt="20111127_004" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111127_005/' title='20111127_005'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111127_005-150x150.jpg" class="attachment-thumbnail" alt="20111127_005" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111127_006/' title='20111127_006'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111127_006-150x150.jpg" class="attachment-thumbnail" alt="20111127_006" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111127_007/' title='20111127_007'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111127_007-150x150.jpg" class="attachment-thumbnail" alt="20111127_007" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111228_001/' title='Kokoamisvaihe'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111228_001-150x150.jpg" class="attachment-thumbnail" alt="Kokoamisvaihe" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111228_002/' title='20111228_002'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111228_002-150x150.jpg" class="attachment-thumbnail" alt="20111228_002" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111228_003/' title='20111228_003'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111228_003-e1341306649995-150x150.jpg" class="attachment-thumbnail" alt="20111228_003" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111228_004/' title='20111228_004'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111228_004-150x150.jpg" class="attachment-thumbnail" alt="20111228_004" /></a>
<a href='http://akiniemi.net/suojakotelo-lampopumpulle/20111231_003/' title='20111231_003'><img width="150" height="150" src="http://akiniemi.net/wp-content/uploads/2012/04/20111231_003-e1334791799615-150x150.jpg" class="attachment-thumbnail" alt="20111231_003" /></a>

<p>Reilut pari viikonloppua paloi aikaa, ja materiaalit olivat luokkaa 250EUR.</p>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/suojakotelo-lampopumpulle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viito hits Maemo Extras</title>
		<link>http://akiniemi.net/viito-hits-maemo-extras/</link>
		<comments>http://akiniemi.net/viito-hits-maemo-extras/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 20:22:50 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
				<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://blog.akiniemi.net/?p=195</guid>
		<description><![CDATA[Viito is an open source sign language image dictionary application that I&#8217;ve been developing for Maemo5 and the Nokia N900 on my free time. The latest version has now been promoted to Maemo Extras, which means that it gets listed in the application manager by default, allowing users to install it without much extra effort. [...]]]></description>
				<content:encoded><![CDATA[<p>Viito is an open source sign language image dictionary application that I&#8217;ve been developing for Maemo5 and the Nokia N900 on my free time. The latest version has now been promoted to <a href="http://maemo.org/packages/view/viito/">Maemo Extras</a>, which means that it gets listed in the application manager by default, allowing users to install it without much extra effort.</p>
<p>Viito uses image data from <a href="http://www.papunet.net/">Papunet</a> that has over 1800 sign images all licensed under creative commons. The application actually ships with all of them, so that offline operation is possible.</p>
<p>The application including the image data screen scraping utility is licensed under GPLv3, and the code is available as a <a href="http://gitorious.org/viito">git repository</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/viito-hits-maemo-extras/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ostopalvelupäiväkotien alasajo Helsingissä</title>
		<link>http://akiniemi.net/ostopalvelupaivakotien-alasajo-helsingissa/</link>
		<comments>http://akiniemi.net/ostopalvelupaivakotien-alasajo-helsingissa/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 13:04:41 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
		
		<guid isPermaLink="false">http://blog.akiniemi.net/?p=166</guid>
		<description><![CDATA[Ostopalvelupäiväkodeilla tarkoitetaan päiväkoteja, joilta Helsingin kaupunki ostaa kilpailutettuja päivähoidon palveluja. Laskutus ja hakumenettely siis hoituvat kaupungin kautta normaaliin tapaan, mutta päiväkotia pitää yksityinen instanssi. Usein tällaisilla ostopalvelupäiväkodeilla on jokin erityispiirre, kuten erityinen pedagoginen suuntaus. Omat lapseni ovat olleet hoidossa päiväkoti Sohvilassa, joka on Mannerheimin Lastensuojeluliiton ylläpitämä ostopalvelupäiväkoti. Päiväkoti on kerrassaan mainio, muttei sen lisäksi edusta [...]]]></description>
				<content:encoded><![CDATA[<p>Ostopalvelupäiväkodeilla tarkoitetaan päiväkoteja, joilta Helsingin kaupunki ostaa kilpailutettuja päivähoidon palveluja. Laskutus ja hakumenettely siis hoituvat kaupungin kautta normaaliin tapaan, mutta päiväkotia pitää yksityinen instanssi. Usein tällaisilla ostopalvelupäiväkodeilla on jokin erityispiirre, kuten erityinen pedagoginen suuntaus.</p>
<p>Omat lapseni ovat olleet hoidossa <a href="http://www.mll-helsinginyhdistys.fi/sohvindex.htm">päiväkoti Sohvilassa</a>, joka on Mannerheimin Lastensuojeluliiton ylläpitämä ostopalvelupäiväkoti. Päiväkoti on kerrassaan mainio, muttei sen lisäksi edusta mitään tiettyä kasvatusoppia.</p>
<p>Nyt Helsingin kaupunki on vähentämässä ostopalveluperiaatteella toimivia päiväkotipaikkoja lähes puoleen, kuten mm. Irene Gröhn kirjoittaa <a href="http://www.vihreatehdokkaat.fi/irene.grohn/?tag=ostopalvelupaivakoti">blogissaan</a>.</p>
<p>Perusteluna näyttävät olevan kustannussäästöt, eli siirretään lapset julkisen puolen päiväkoteihin joiden oletetaan olevan ostopalvelupäiväkoteja tehokkaammin järjestettyjä. Tai sitten yksinkertaisesti &#8220;kannustetaan&#8221; kokonaan pois julkisen päivähoidon piiristä yksityisen päivähoidon puolelle.</p>
<p>Ensimmäinen peruste on kummallinen. Tammikuussa Helsingin Sanomat uutisoi Helsingin kaupungin päivähoitopaikan keskimääräiseksi hinnaksi noin 60€ / päivä lasta kohden. Sohvilan tarjoama sopimushinta lienee reilusti tämän alle. Mitä säästöä tämä tämmöinen on?</p>
<p>Toinen peruste kuulostaa heti alkuun kovasti tasapäistämiselle. Erityispedagogisten päiväkotien yksityistäminen lisää väistämättä perheiden kustannuksia, mikä taas ajaa pienituloisten lapset niistä pois julkiselle puolelle.</p>
<p>Sitä paitsi yksityisen päivähoidon tuen maksaa Kela, ei kaupunki (poislukien Helsinki-lisä), joten onko tässä taas kyse siitä surullisenkuuluisasta osaoptimoinnista, jossa yksi &#8220;tulosyksikkö&#8221; siirtää kustannuksiaan toisaalle, näennäisesti laskien omia kustannuksiaan, mutta kasvattaen kokonaiskustannuksia, tehottomuutta ja byrokratiaa.</p>
<p>Sama perustelu myös olettaa nykyisten ostopalvelupäiväkotien siirtyvän suoraan yksityisiksi, jos niiden sopimuksia ei jatketa. Erityispedagogisten päiväkotien kohdalla tämä voikin pitää paikkansa, mutta esimerkiksi Sohvilaan se ei päde. MLL:n toimenkuvaan ei kuulu yksityinen päivähoito, joten Sohvila tulee lopettamaan, jos jatkoa ostopalvelusopimukseen ei Helsingiltä tule.</p>
<p>Jo nykyisellään Helsingissä on huutava pula päivähoitopaikoista, yli tuhat lasta on tällä hetkellä vailla päivähoitopaikkaa. Onko nykyhetki siis varmasti fiksuin aika uuden strategian toteuttamiseen?</p>
<p>Miten käy Sohvilan loistavan henkilökunnan, ja minne joutuvat sen lapset?</p>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/ostopalvelupaivakotien-alasajo-helsingissa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Having one&#8217;s cake and eating it too</title>
		<link>http://akiniemi.net/having-ones-cake-and-eating-it-too/</link>
		<comments>http://akiniemi.net/having-ones-cake-and-eating-it-too/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 08:20:35 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
		
		<guid isPermaLink="false">http://blog.akiniemi.net/?p=137</guid>
		<description><![CDATA[Monty is urging us to help keep the Internet free. Wait, what? Let&#8217;s go back a bit. He chose to require copyright assignment from outside contributors to MySQL. He chose to license under GPL, not BSD or similar. He chose to base his business in the ability to dual-license, and sell the software for profit [...]]]></description>
				<content:encoded><![CDATA[<p>Monty is <a href="http://monty-says.blogspot.com/2009/12/help-keep-internet-free.html">urging</a> us to help keep the Internet free. Wait, what? Let&#8217;s go back a bit. He chose to require copyright assignment from outside contributors to MySQL. He chose to license under GPL, not BSD or similar. He chose to base his business in the ability to dual-license, and sell the software for profit under a commercial license. And he also got millions of euros for selling that business to Sun.</p>
<p>Now he&#8217;s complaining. Like he wouldn&#8217;t know that a GPL project can always be forked. If forking isn&#8217;t an option here, it&#8217;s mostly because of the decisions he made in the project. I wouldn&#8217;t contribute to a project that requires copyright assignment, unless I was forced to. Perhaps this is the reason there isn&#8217;t a vibrant community of (paid) contributors outside the team at Sun and now MariaDB.</p>
<p>I can&#8217;t see how freedom of the Internet would be at stake here. If anything, this will strengthen freedom of the Internet; if enough people want MySQL, it will fork into a truly free project, like Linux. Linux is and always will be free, because that is how Linus wanted it. He never wanted to sell the software for profit on the side. This was an option Monty decided to withold for himself, and now he&#8217;s having to deal with the consequences.</p>
<p>Choosing to go with the old model of shrink-wrapped software, instead of the new model of software as a service, made MySQL vulnerable to the equally old business tactic of a competitor buying off its competiton. The fact that EC approves is an indication they grog open source perhaps better than they&#8217;re given credit for. It&#8217;s GPL, so the business that went along with the project is surely ruined, but the code is and always will be free. Like the Internet.</p>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/having-ones-cake-and-eating-it-too/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fosdem 2010</title>
		<link>http://akiniemi.net/fosdem-2010/</link>
		<comments>http://akiniemi.net/fosdem-2010/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 12:19:22 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.akiniemi.net/?p=125</guid>
		<description><![CDATA[I was attending Fosdem last weekend in the lovely, spring-like Brussels. Well, more spring-like than Helsinki at least. I gave a talk about the oFono project, and specifically the isimodem driver we&#8217;ve been developing for oFono to integrate with recent Nokia phones, and specifically the N900. Slides are available here. I was a little disappointed [...]]]></description>
				<content:encoded><![CDATA[<p>I was attending <a href="http://www.fosdem.org/2010/">Fosdem</a> last weekend in the lovely, spring-like Brussels. Well, more spring-like than Helsinki at least. I gave a talk about the <a href="http://ofono.org/">oFono</a> project, and specifically the isimodem driver we&#8217;ve been developing for oFono to integrate with recent Nokia phones, and specifically the N900. Slides are available <a href="http://akiniemi.net/wp-content/uploads/2010/02/ofono-nokia.pdf">here</a>.</p>
<p>I was a little disappointed by the number of people who showed up. But it seems my timeslot was perhaps not the most optimal; scheduled for Sunday morning, and getting squeezed between a similar topic in the Openmoko track and Andrew Tanenbaum&#8217;s keynote might&#8217;ve had an effect on attendance.</p>
<p>I was also a bit surprised by the lack of any FSO folks there. It would&#8217;ve been great to exchange ideas around the topic, or answer any questions about oFono in general.</p>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/fosdem-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coding Practices</title>
		<link>http://akiniemi.net/coding-practices/</link>
		<comments>http://akiniemi.net/coding-practices/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 23:48:29 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
		
		<guid isPermaLink="false">http://blog.akiniemi.net/?p=109</guid>
		<description><![CDATA[Linked via /., I came across this article on coding practices. A basic premise of the article is that maintaining C code written by people trying to be clever is a pain. Well, I can relate to that, especially if combined with potent use of trying-to-be-clever macros. The article goes on: I will give you [...]]]></description>
				<content:encoded><![CDATA[<p>Linked via <a href="http://slashdot.org">/.</a>, I came across <a href="http://www.omninerd.com/articles/Coding_Practices">this article</a> on coding practices. A basic premise of the article is that maintaining C code written by people <em>trying</em> to be clever is a pain. Well, I can relate to that, especially if combined with potent use of trying-to-be-clever macros. The article goes on:</p>
<blockquote><p>
I will give you an example of a clever solution that is currently executing in my system, the CRAP:</p>
<pre>
for(ss = s->ss; ss; ss = ss->ss);
</pre>
<p>Ah. So elegant. It gets the jobs done and does so fairly quickly. One problem though…</p>
<p>What the heck:</p>
<p>Does the statement accomplish?<br />
Does s stand for?<br />
Does ss stand for?</p>
<p>For those of you that are interested, the line traverses a linked-list of sources and sub-sources to process the values inside. But it took a good deal of research to figure that out, because there were no comments and the variable names, well, suck.
</p></blockquote>
<p>Um, no. That is actually a standard way to find the end of a linked list for insertion. A line so elegant can only be ruined by putting comments on it, and well, if the variable names were a lot longer it would be <em>two lines</em> already.</p>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/coding-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Use Maemo APIs from Qt</title>
		<link>http://akiniemi.net/how-to-use-maemo-apis-from-qt/</link>
		<comments>http://akiniemi.net/how-to-use-maemo-apis-from-qt/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 20:56:17 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
		
		<guid isPermaLink="false">http://blog.akiniemi.net/?p=88</guid>
		<description><![CDATA[At work, I write code for Nokia&#8217;s Maemo devices. I work on pretty low-level stuff involving the cellular modem and GSM. To balance this out, I started working on a hobby project with what little spare time I have. It&#8217;s a location-aware Qt application for Maemo 5 and the Nokia N900 device. I won&#8217;t delve [...]]]></description>
				<content:encoded><![CDATA[<p>At work, I write code for Nokia&#8217;s Maemo devices. I work on pretty low-level stuff involving the cellular modem and GSM. To balance this out, I started working on a hobby project with what little spare time I have. It&#8217;s a location-aware Qt application for Maemo 5 and the Nokia N900 device. I won&#8217;t delve deeper into details here yet. But if and when it gets into usable state, I&#8217;ll surely make a proper announcement.</p>
<p>Anyway, since the application is going to need to use the Global Positioning System (GPS), first thing I needed to look at was the platform&#8217;s <a href="http://maemo.org/api_refs/5.0/5.0-final/liblocation/">location API</a>. This library uses GLib, which got me wondering exactly what hoops I needed to jump through to get it working from Qt. After all, QApplication uses QEventLoop internally, which last time I checked, was not GMainLoop.</p>
<p>There is <a href="http://wiki.forum.nokia.com/index.php/Qt_for_Maemo_Developers_Guide">this guide</a>, which even includes a very promising chapter on the very subject that unfortunately ends up explaining how to use liblocation from a <strong>GTK+</strong> application. Uh.</p>
<p>But, it seems Qt is by default built with GLib support on Unix systems, so there it is. No jumping through hoops required &#8212; it just works.</p>
<p>Here&#8217;s the constructor to my GpsDevice class:</p>
<p><code><br />
GpsDevice::GpsDevice(QObject *parent)<br />
    : QObject(parent)<br />
{<br />
    g_type_init();</p>
<p>    m_control = location_gpsd_control_get_default();<br />
    g_object_set(G_OBJECT(m_control),<br />
		 "preferred-method", LOCATION_METHOD_AGNSS,<br />
		 "preferred-interval", LOCATION_INTERVAL_5S,<br />
		 NULL);</p>
<p>    m_device = static_cast<LocationGPSDevice*>(<br />
	g_object_new(LOCATION_TYPE_GPS_DEVICE, NULL));</p>
<p>    g_signal_connect(G_OBJECT(m_control), "error-verbose",<br />
		     G_CALLBACK(&#038;error), static_cast<void*>(this));<br />
    g_signal_connect(G_OBJECT(m_control), "gpsd-running",<br />
		     G_CALLBACK(&#038;started), static_cast<void*>(this));<br />
    g_signal_connect(G_OBJECT(m_control), "gpsd-stopped",<br />
		     G_CALLBACK(&#038;stopped), static_cast<void*>(this));<br />
    g_signal_connect(G_OBJECT(m_device), "changed",<br />
		     G_CALLBACK(&#038;changed), static_cast<void*>(this));<br />
    g_signal_connect(G_OBJECT(m_device), "connected",<br />
		     G_CALLBACK(&#038;connected), static_cast<void*>(this));<br />
    g_signal_connect(G_OBJECT(m_device), "disconnected",<br />
		     G_CALLBACK(&#038;disconnected), static_cast<void*>(this));<br />
}<br />
</code></p>
<p>(Note that the callbacks in g_signal_connect() are static member functions.)</p>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/how-to-use-maemo-apis-from-qt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Productivity and Meeting Practices</title>
		<link>http://akiniemi.net/on-productivity-and-meeting-practices/</link>
		<comments>http://akiniemi.net/on-productivity-and-meeting-practices/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 15:06:53 +0000</pubDate>
		<dc:creator>Aki Niemi</dc:creator>
		
		<guid isPermaLink="false">http://blog.akiniemi.net/?p=84</guid>
		<description><![CDATA[Personal productivity and time management practices, or more specifically the lack thereof, have been a constant concern of mine. I&#8217;ve read a few books, and taken some of the tools and practices they suggest into use more or less successfully. Perhaps I am able to manage my time and productivity better these days. Still, I [...]]]></description>
				<content:encoded><![CDATA[<div>
<p>Personal productivity and time management practices, or more specifically the lack thereof, have been a constant concern of mine. I&#8217;ve read<a href="http://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280" mce_href="http://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280"> a few</a> <a href="http://www.amazon.com/Now-Habit-Overcoming-Procrastination-Guilt-Free/dp/0874775043" mce_href="http://www.amazon.com/Now-Habit-Overcoming-Procrastination-Guilt-Free/dp/0874775043">books</a>, and taken some of the tools and practices they suggest into use more or less successfully. Perhaps I am able to manage my time and productivity better these days. Still, I suspect that like me, many people spend a disproportionate amount of their work time in meetings, status updates, seminars, conference calls and various other types of scheduled discussions. In other words, spend their time talking about it instead of doing it.</p>
<p>This has to stop. From now on, I will radically reduce the time I spend in meeting rooms. I will only go to a meeting if the following criteria are met:</p>
<ul>
<li>There is an agenda published well in advance</li>
<li>I will clearly benefit from attending the meeting</li>
<li>My presence is critical for the meeting to be successful</li>
<li>Preference to meetings that are short</li>
</ul>
<p>Of course, when scheduling meetings myself, I will (try my best to) adhere to the same criteria. In return, when I do go to a meeting, I will:</p>
<ul>
<li>Be prepared; material read, issues thought out, and opinions ready to be voiced</li>
<li>Not read my email or work on other tasks</li>
<li>Expect everyone else to do the same</li>
</ul>
<p>I recommend we all make this change. Judging from how hard it is to book a <i>necessary</i> meeting these days, I think we desperately need to.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://akiniemi.net/on-productivity-and-meeting-practices/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
