<?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>/devel</title>
	<atom:link href="http://markos.gaivo.net/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://markos.gaivo.net/blog</link>
	<description></description>
	<lastBuildDate>Fri, 25 Jun 2010 09:35:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Review of expense tracker Toshl</title>
		<link>http://markos.gaivo.net/blog/?p=604</link>
		<comments>http://markos.gaivo.net/blog/?p=604#comments</comments>
		<pubDate>Fri, 25 Jun 2010 09:35:44 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[Catchall]]></category>
		<category><![CDATA[expense tracking]]></category>
		<category><![CDATA[ThirdFrameStudios]]></category>
		<category><![CDATA[Toshl]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=604</guid>
		<description><![CDATA[Three months ago I received an invitation to try and review Toshl, a mobile expense tracker developed by ThirdFrameStudios. I also received code to get  Pro account free for first year to help me test it, which saved me a modest amount of 20 euros. It is also not a secret that I know people [...]]]></description>
			<content:encoded><![CDATA[<p>Three months ago I received an invitation to try and review <a class="zem_slink" title="Toshl" rel="homepage" href="http://toshl.com">Toshl</a>, a mobile expense tracker developed by <a class="zem_slink" title="ThirdFrameStudios" rel="homepage" href="http://www.3fs.si">ThirdFrameStudios</a>. I also received code to get  Pro account free for first year to help me test it, which saved me a modest amount of 20 euros. It is also not a secret that I know people working at 3fs and admire their work.</p>
<p>As influences go, that&#8217;s it. I received neither threats to pets I don&#8217;t have or contributions to a bank account I do have. Also a complete absence of nudges means that this post took longer than planned and that all opinions are mine. Too make them less ignorant I decided at start to give Toshl a proper test and use it for couple of months before passing judgment.</p>
<p>Toshl, as mentioned, is a tool for keeping track of expenses. You are obviously sensible enough to know why this is wise, if you are still reading this, so I won&#8217;t bother explaining. It comes as a free application for <a class="zem_slink" title="Android" rel="homepage" href="http://code.google.com/android/">Android</a> devices and <a class="zem_slink" title="Maemo" rel="homepage" href="http://www.maemo.org/">Maemo</a> based N900. I heard rumors of an <a class="zem_slink" title="iPhone 3G" rel="homepage" href="http://www.apple.com/iphone">iPhone</a> version, but Symbian or <a class="zem_slink" title="BlackBerry" rel="homepage" href="http://www.blackberry.com/">BlackBerry</a> owners are out of luck (for now). Using web based companion and synchronization is free too, but you have to pay for Pro account if you want to add expenses through website or need a more flexible export of your data.</p>
<p>I tested Nokia N900 version of Toshl and liked it. I don&#8217;t want to go into details since they quickly become boring and there is no better test than your own (remember, it&#8217;s free). I was impressed how well it handles <a class="zem_slink" title="Decimal separator" rel="wikipedia" href="http://en.wikipedia.org/wiki/Decimal_separator">decimal separator</a> for me, since I sin by using both comma and point.</p>
<p>Entering expenses is easy and quick, especially if you have entered similar recently, since you can reuse tags just by clicking on suggested. You also see already entered expenses sorted by time or tags. There is still room for improvement (like adapting tags suggestions based on first entered), but not much to fault.</p>
<p>I believe Toshl&#8217;s goal is to be as simple and fun tracker of everyday expenses as possible. You can do basic add and removal of expenses, export inserted data, categorize each entry with tags and see few different reports. That&#8217;s it. There is no integration with banks, currency conversions,  or even a notion of income. Reports are basic and I am not a fan of those included.</p>
<p>I usually used more than one tag on each expense and had difficulty wrapping my head around graphs where same expense could be shown multiple times. I failed at judging how much impact do some expenses have overall without at least some tweaking of graphs. I am certain that Tufte would call it chartjunk, but their implementation certainly is fun to play with.</p>
<p>And that&#8217;s where Toshl&#8217;s main strength is. A fun way of doing something that most people find incredibly tedious. You might overgrow it one day and switch, but it will help you develop a necessary habit of recording your expenses.</p>
<p>Being simple and fun doesn&#8217;t mean powerless. Tags free you to your own categorization and multiple export options give you an opportunity to massage that data further in tools of your choice. It might not be as trivial as clicking on a graph is, but doing it in Excel is not much harder.</p>
<p>I will not continue to use it because I am that sort of person who gets off on <a class="zem_slink" title="Double-entry bookkeeping system" rel="wikipedia" href="http://en.wikipedia.org/wiki/Double-entry_bookkeeping_system">double-entry bookkeeping</a>. I&#8217;ve been using <a class="zem_slink" title="GnuCash" rel="homepage" href="http://www.gnucash.org/">GnuCash</a> for years and there is no easy way to sync data with it (probably shouldn&#8217;t be either) and few reasons to input every expense twice. I do recommend anyone who isn&#8217;t tracking yet or is not satisfied with his current approach to give Toshl a try.</p>
<p>And if you are happy with free version, then buy a Pro account. It costs little, gives you features as polished as rest of service and it help secure your apps future.</p>
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.intomobile.com/2010/04/04/toshl-expense-tracking-app-is-web-connected-and-i-love-it-for-that.html">Toshl expense tracking app is web connected and I love it for that!</a> (intomobile.com)</li>
<li class="zemanta-article-ul-li"><a href="http://techblissonline.com/personal-finance-software-free-download-gnucash/">Personal finance software &#8211; Free download the ultimate Gnucash</a> (techblissonline.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=44d2c12e-bb01-4a24-82ab-5db6e9ce7664" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=604</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sign-up, Facebook Connect and ownership</title>
		<link>http://markos.gaivo.net/blog/?p=598</link>
		<comments>http://markos.gaivo.net/blog/?p=598#comments</comments>
		<pubDate>Tue, 08 Jun 2010 19:35:52 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[General development]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Facebook Connect]]></category>
		<category><![CDATA[Joshua Porter]]></category>
		<category><![CDATA[relationship]]></category>
		<category><![CDATA[sign-up]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=598</guid>
		<description><![CDATA[Joshua Porter&#8217;s workshop at recent UX London conference was great and a must see if you can, but there is something that&#8217;s been bugging me since. In discussion about difficulties of getting people to sign-up for service, Joshua mentioned how some companies see connecting with Facebook Connect as Facebook &#8220;owning&#8221; their users.
They are right, but [...]]]></description>
			<content:encoded><![CDATA[<p><a class="zem_slink" title="Joshua Porter" rel="blog" href="http://bokardo.com">Joshua Porter&#8217;s</a> workshop at recent UX London conference was great and a must see if you can, but there is something that&#8217;s been bugging me since. In discussion about difficulties of getting people to sign-up for service, Joshua mentioned how some companies see connecting with <a class="zem_slink" title="Facebook Connect" rel="homepage" href="http://developers.facebook.com/connect.php">Facebook Connect</a> as Facebook &#8220;owning&#8221; their users.</p>
<p>They are right, but it doesn&#8217;t matter much. Relying on Facebook for authentication certainly makes Facebook sort of a gatekeeper. This does not matter because it can and should be a transitional phase in an evolving relationship.</p>
<p>My view is based on assumption that company wants to build a long lasting relationship with a customer. This may not be true, but then there really is no point in having a sign-up at all. Avoid friction of one, make a trade and move on.</p>
<p>I think most user lifecycle strategies look like trying to get laid by the end of evening while hoping to start a long-term relationship. It might work, but how likely?</p>
<p>There are two things relationships need. Continuing benefit to parties involved and mutual trust. And trust is built through actions over time.</p>
<p>Traditional UX life cycle can be seen as:</p>
<blockquote><p>Awareness -&gt; Sign-up -&gt; First-time use -&gt; Engagement -&gt; Referral</p></blockquote>
<p>Each step has to offer more benefits to person taking it as it requires more trust. Moving sign-up after first-time use changes dynamic by making service prove itself before asking same of its user.</p>
<p>Using Facebook Connect (or <a class="zem_slink" title="OAuth" rel="homepage" href="http://oauth.net">OAuth</a>, <a class="zem_slink" title="OpenID Foundation" rel="homepage" href="http://openid.net">OpenID</a>&#8230;) is just going further in mimicking natural relationship building. It&#8217;s asking of a smaller commitment at a fragile stage of relationship. You can ask for a bigger commitment with your own authentication later on, when you have already proven your worth and gain enough trust. You could even offer something available only to &#8220;full&#8221; members to make such commitment more enticing.</p>
<p>If you are building years long relationship like I have with Amazon, does it really matter if you get me to fully sign-up after third month instead of first?</p>
<p>Hence sign-up should be thought of as a gradual process taken over time instead of one-time obstacle.</p>
<p>All this is just speculation at this point, but I hope to test it on two projects this year. If I do, I&#8217;ll let you know how it went.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/ef945133-8712-4aa1-9413-aa52f5f6c2c5/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=ef945133-8712-4aa1-9413-aa52f5f6c2c5" alt="Reblog this post [with Zemanta]" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=598</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EuroPython submission deadline is around the corner</title>
		<link>http://markos.gaivo.net/blog/?p=596</link>
		<comments>http://markos.gaivo.net/blog/?p=596#comments</comments>
		<pubDate>Mon, 26 Apr 2010 19:28:41 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[promotion]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=596</guid>
		<description><![CDATA[April is about to end and with it also the deadline to submit your EuroPython talk. I thought about submitting a proposal, but realized it would be nuts to do so with my current workload.
It would also be nuts not to go and if you are a European (or not) Python developer you owe it [...]]]></description>
			<content:encoded><![CDATA[<p>April is about to end and with it also the deadline to <a href="http://www.europython.eu/talks/cfp/">submit your EuroPython talk</a>. I thought about submitting a proposal, but realized it would be nuts to do so with my current workload.</p>
<p>It would also be nuts not to go and if you are a European (or not) Python developer you owe it to yourself to come.</p>
<p>I go to a few conferences every year and each has its own personality. It is sometimes hard to point at what makes them (feel) different, but they just are. I like many, but only EuroPython, which I regretfully had to miss last year, feels like home.</p>
<p>That&#8217;s why I decided to volunteer this year. It&#8217;s a way to give a little bit back, like cleaning dishes when you visit mom.</p>
<p>So do submit your talk and come. It won&#8217;t be the same without you.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/3f88ab5e-3d0f-410e-957f-6828cee4d640/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=3f88ab5e-3d0f-410e-957f-6828cee4d640" alt="Reblog this post [with Zemanta]" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=596</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using canvas and Javascript to blur images</title>
		<link>http://markos.gaivo.net/blog/?p=591</link>
		<comments>http://markos.gaivo.net/blog/?p=591#comments</comments>
		<pubDate>Thu, 01 Apr 2010 09:59:34 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[image]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=591</guid>
		<description><![CDATA[I admire the look and feel of Mike Matas&#8217; new website. It is really well thought through. I was also intrigued by how he did it, especially after getting a pop-up on my first visit advising me to use a more modern browser than a recent version of Firefox.
There is no point in speculating why [...]]]></description>
			<content:encoded><![CDATA[<p>I admire the look and feel of <a href="http://www.mikematas.com/">Mike Matas&#8217; new website</a>. It is really well thought through. I was also intrigued by how he did it, especially after getting a pop-up on my first visit advising me to use a more modern browser than a recent version of Firefox.</p>
<p>There is no point in speculating why some of its features don&#8217;t work in more browsers. But I was surprised to see that blurred images are served that way and don&#8217;t get blurred in browser. I am playing with an idea of implementing a gallery inspired by Mike&#8217;s work, but I would like to reduce manual labor needed for maintaining it.</p>
<p>So I wrote a function that blurs an image on canvas. You can <a title="Javascript blur demo page" href="http://markos.gaivo.net/examples/canvas_blur/">see it in action</a> or copy its code, if you find it useful.</p>
<p>The algorithm used is described in <a title="Link to PDF version of paper" href="http://web.archive.org/web/20060718054020/http://www.acm.uiuc.edu/siggraph/workshops/wjarosz_convolution_2001.pdf">2001 paper</a> by Wojciech Jarosz. Page contains two implementations, second trading algorithm purity for in my opinion nicer code. Increase number of passes or run it few times over an image, if you need a blurrier result.  Please ask, if you need help with its use.</p>
<p>I also measured its speed to see if it fits my needs. That brought a new surprise. Firefox 3.5.8  on my Linux powered VAIO with 1.2GHz processor blurs image twice as fast as same browser on a Mac with a 2.8Ghz processor. Numbers between runs may vary slightly, but never much. No idea why this is happening, since all functions do is some basic math over items in array that should be well optimized everywhere.</p>
<p>I am sure somebody can optimize it further, but I find it good enough for my use. Image isn&#8217;t very blurred after one pass, but one pass over a small image is also a good way to measure how fast a particular computer-browser combination is. On fast combinations I might go for multiple passes over images in view, but fall back to a single pass or no pass on slower systems.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/4b7c629c-fdbe-4190-ade4-e240b1b3755a/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=4b7c629c-fdbe-4190-ade4-e240b1b3755a" alt="Reblog this post [with Zemanta]" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=591</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>My prototypes on YouTube</title>
		<link>http://markos.gaivo.net/blog/?p=588</link>
		<comments>http://markos.gaivo.net/blog/?p=588#comments</comments>
		<pubDate>Fri, 26 Mar 2010 11:22:17 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[interactions]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[prototypes]]></category>
		<category><![CDATA[Zemanta]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=588</guid>
		<description><![CDATA[I am not much of a YouTube user, but I have recently started to upload some of my work there. You might find them interesting if you are into interactions prototypes for products that may never be (especially if you are a Zemanta user).
I want to stress that while we use prototypes to learn what [...]]]></description>
			<content:encoded><![CDATA[<p>I am not much of a <a title="My YouTube channel" href="http://www.youtube.com/user/msamastur">YouTube user</a>, but I have recently started to upload some of my work <a title="my demos on youtube" href="http://www.youtube.com/user/msamastur">there</a>. You might find them interesting if you are into interactions prototypes for products that may never be (especially if you are a <a class="zem_slink" title="Zemanta" rel="homepage" href="http://www.zemanta.com">Zemanta</a> user).</p>
<p>I want to stress that while we use prototypes to learn what to implement and how, there is no guarantee that any particular feature shown will be actually included in our products. We do make an effort of listening to our users so please tell us what you think.</p>
<p>This is also a good time to mention that I don&#8217;t lead front-end team at Zemanta anymore. My new title is Chief Product Officer which is a fancy way of saying that it is my task to care about our products and our users more deeply than anybody else.</p>
<h6 class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.zemanta.com/blog/zemanta-hackday-spring-2010/">Zemanta Hackday Spring 2010</a> (zemanta.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/4c4d711e-ab3a-4cf8-80df-8db0aab43dc3/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=4c4d711e-ab3a-4cf8-80df-8db0aab43dc3" alt="Reblog this post [with Zemanta]" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=588</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>N900 applications I miss</title>
		<link>http://markos.gaivo.net/blog/?p=579</link>
		<comments>http://markos.gaivo.net/blog/?p=579#comments</comments>
		<pubDate>Tue, 09 Mar 2010 12:24:23 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[Catchall]]></category>
		<category><![CDATA[General development]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[N900]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Nokia N900]]></category>
		<category><![CDATA[webplatform]]></category>
		<category><![CDATA[Wikipedia]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=579</guid>
		<description><![CDATA[I love using N900, but there are applications or features I miss. This post is a reminder to me on what I might do if I find more time. Since list is too long for me to do everything (unless I suddenly win lottery), feel free to pick an idea you like and run with [...]]]></description>
			<content:encoded><![CDATA[<p>I love using <a class="zem_slink" title="N900" rel="homepage" href="http://maemo.nokia.com/n900/">N900</a>, but there are applications or features I miss. This post is a reminder to me on what I might do if I find more time. Since list is too long for me to do everything (unless I suddenly win lottery), feel free to pick an idea you like and run with it. Just let me know afterwards where I can see results of your work or participate in development.</p>
<p><strong>Offline Wikipedia.</strong> When I am not behind a computer or reading, I like to be outdoors and even though cheap always available Internet was supposed to be here any day now, I regularly find myself information hungry in places with a very slow or no Internet connection. N900 with SD card could pretty much store everything I wanted and building an app that process and display information from <a title="Wikipedia dumps starting page" href="http://download.wikimedia.org/">Wikipedia dumps</a> doesn&#8217;t look like a too difficult task.</p>
<p><strong>Better dictionary for Maemo. </strong>QStarDict port<strong> </strong> is great and it has become one of my favorite applications. However its user interface suffers from being a direct port of a desktop version one and could be improved with one that wastes less space and is orientation aware. Reading dictionary is one of few things I wish I could do in portrait mode.</p>
<p><strong>Web platform for Maemo.</strong> Wouldn&#8217;t it be great if you could build Maemo applications with web technologies? <a title="Link to QtWebKit documentation" href="http://qt.nokia.com/doc/4.6/qtwebkit.html">QtWebKit</a> is a great place to start and I am certain I could expose new functionality through <em>addToJavascriptWindowObject</em> of <a title="Link to QWebFrame documentation" href="http://qt.nokia.com/doc/4.6/qwebframe.html">QWebFrame</a> class. Beside exposing this stuff I would also like to create tools and interfaces for developers and users alike with which they can easily package a web application as a standalone Maemo application or in case of users, turn a website into an application (I know you can add a bookmark to a website but it is not quite the same thing).</p>
<p><strong><a title="Caffeine for Mac" href="http://lightheadsw.com/caffeine/">Caffeine</a> for N900.</strong> I would like to pick <em>&#8220;Switch profile to silent for &lt;x time&gt;&#8221;</em> and know N900 will turn back normal profile when that time period expires. I always forget to turn ringing back on after I leave cinema.</p>
<p><strong>Monitor unknown calls.</strong> I don&#8217;t want to pollute my address book with every phone number under the sun, but I would appreciate if I could get a hint if I ever talked or called the number in question. Bonus points for using public phone books to fetch name for given number and parsing number for clues (which country or part of it is call coming from).</p>
<p>This is not a complete list of things I want, but rest are mostly feature requests (except email client which currently really kind of sucks). For example I wish calendar had support for <a class="zem_slink" title="CalDAV" rel="wikipedia" href="http://en.wikipedia.org/wiki/CalDAV">CalDAV</a> or PDF viewer for screen rotate, search and fit to width.</p>
<p>I am aware that Maemo should be called MeeGo now, but a habit of years can&#8217;t be changed in few weeks. I searched for above applications and didn&#8217;t find them, but if you know of any I missed, then please let me know.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/8a3f246d-6a49-416b-b38b-3c79f3c30764/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=8a3f246d-6a49-416b-b38b-3c79f3c30764" alt="Reblog this post [with Zemanta]" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=579</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Appeal for a better support of authors widgets</title>
		<link>http://markos.gaivo.net/blog/?p=572</link>
		<comments>http://markos.gaivo.net/blog/?p=572#comments</comments>
		<pubDate>Wed, 03 Mar 2010 17:06:14 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[General development]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[platforms]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=572</guid>
		<description><![CDATA[Goal of Zemanta widget has always been to present contextually relevant information to text being written and to enable writers to add that information easily in places of their choice. We want to do this in as unobtrusive manner as possible, which means that act of writing should not be impeded by us and that [...]]]></description>
			<content:encoded><![CDATA[<p>Goal of <a class="zem_slink" title="Zemanta" rel="homepage" href="http://www.zemanta.com">Zemanta</a> widget has always been to present contextually relevant information to text being written and to enable writers to add that information easily in places of their choice. We want to do this in as unobtrusive manner as possible, which means that act of writing should not be impeded by us and that published text should only have as little markup added as it is necessary to add items picked by user  (images, links&#8230;).</p>
<p>Zemanta widget in various incarnations today works in all major browsers (<a class="zem_slink" title="Firefox" rel="homepage" href="http://www.mozilla.com/en-US/firefox/">Firefox</a>, <a class="zem_slink" title="Internet Explorer" rel="wikipedia" href="http://en.wikipedia.org/wiki/Internet_Explorer">Internet Explorer</a>, <a class="zem_slink" title="Google Chrome" rel="homepage" href="http://www.google.com/chrome">Chrome</a>, <a class="zem_slink" title="Safari" rel="homepage" href="http://www.apple.com/safari">Safari</a> and <a class="zem_slink" title="Opera Software" rel="homepage" href="http://www.opera.com">Opera</a>) and on all major blogging platforms. This wide support is presenting ever bigger challenge to us  and to anyone who wants to follow our path.</p>
<p>Most blogging platforms today support enhancement of blogs with widgets. I think it is time for them to add support for widgets on content creation side and go beyond current one-interface-fits-all state of affairs.</p>
<p>Open platform would enable tool makers like us to build specialized tools that might cater to specific niches and empower writers to customize their workflow to their needs .</p>
<p>Such platforms should at minimum have a common shared feature set, but I hope for at least partially shared  <a class="zem_slink" title="Application programming interface" rel="wikipedia" href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a>.</p>
<p><strong>Current state</strong></p>
<p>Some platforms like <a class="zem_slink" title="WordPress" rel="homepage" href="http://wordpress.org">WordPress</a> already have a plug-ins API which can be used to customize parts of creation process. However it is usually very low level, highly platform specific and available only to self-hosted users.</p>
<p>Creators of rich text editors have also recognized a need to let outside developers extend writing experience. Most major editors have an API that admittedly we might not be using enough. But this is not true of all editors so we end up with common development problems like not enough feature overlap and missing,  undocumented or poorly documented interfaces.</p>
<p>There is a lot of activity, but the end result is still a very fragmented landscape that in my opinion limits developers creativity. You either add wanted functionality to your favorite platform or if you are more ambitious, you end up seeking the right balance between ironing out  platform peculiarities and building features users actually care about.</p>
<p>And since blogging environment that most people use lets them little control over it, we develop browser extensions that are really just a patch for this problem. The only reason why we bloat browsers (a little bit) with an extension that most of the time does nothing is because we have to. Extensions are great, but they also present a risk and in this case one that should not be necessary.</p>
<p><strong>My vision of future</strong></p>
<p>What I would like to do as a developer can best be explained with examples translated from code to English (well, approximation of it anyhow).</p>
<p>I would like to write: “Take image at this address, upload it to writer’s image repository and return me its new address.”</p>
<p>I would like to write: “When DOM node is added to text (or removed from it), run this function.”</p>
<p>I would like to write: “Before text is published, run it through this filter function and save its result.”</p>
<p>I would like to write: “Store this information and let me retrieve when I need it.”</p>
<p>I would like our users to add our widget with only a few clicks. Maybe a click on our side to trigger installation and a confirmation on blogging platform with a list of permissions sought (like <a class="zem_slink" title="OAuth" rel="homepage" href="http://oauth.net">OAuth</a>).</p>
<p>When user interface needs to be shown, I would want it to be well integrated. So if elements of interface can be rearranged, hidden or otherwise handled, then our widget would behave as expected.</p>
<p><strong>In conclusion</strong></p>
<p>Creating and supporting a tool like Zemanta is difficult. Front end development is challenging enough when you are against few browsers on your platform, but it is far worse when you try to deliver the same high level of experience on multiple platforms none of which you actually control.</p>
<p>You keep hitting at browser quirks and unexpected platform changes and ironically it keeps getting worse as other people’s code gets better. For example, wrapping your Javascript code in anonymous namespace is good practice, but it often removes hooks on which you relied and you need to come up with a new solution.</p>
<p>My work often feels like war of attrition, which is odd because there is no enemy. We work to complement blogging platforms, not replace them.</p>
<p>Surely it is time we do better.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/eee141d5-950f-450e-b42e-71fd1adf6365/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=eee141d5-950f-450e-b42e-71fd1adf6365" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script "><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=572</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A month with Nokia N900</title>
		<link>http://markos.gaivo.net/blog/?p=563</link>
		<comments>http://markos.gaivo.net/blog/?p=563#comments</comments>
		<pubDate>Fri, 05 Feb 2010 09:36:33 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[Catchall]]></category>
		<category><![CDATA[General development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[IPod Touch]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Nokia N900]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=563</guid>
		<description><![CDATA[Title says it. A month is enough time to get a better understanding of the device and to get asked repeatedly about my impressions. Many have wrote theirs, so I doubt I will be telling anything really new. Before I go on, a short disclaimer, since my writings on this blog stay around longer than [...]]]></description>
			<content:encoded><![CDATA[<p>Title says it. A month is enough time to get a better understanding of the device and to get asked repeatedly about my impressions. Many have wrote theirs, so I doubt I will be telling anything really new. Before I go on, a short disclaimer, since my writings on this blog stay around longer than might be sensible.</p>
<p>I wrote this post at the start of February 2010. I believe everything I write about technology to be hopelessly out of date after 6 months, but I expect this article will be obsolete even sooner. So by the time you got around reading this, most of my gripes might not even be true anymore.</p>
<p><a class="zem_slink" title="Nokia N900" rel="wikipedia" href="http://en.wikipedia.org/wiki/Nokia_N900">Nokia N900</a> is an uncut diamond. A wonderful thing made by talented designers that has quite a few rough edges, not all of them in device. I wouldn&#8217;t recommend it to most people, but to some of you it might become your favorite computer. It goes with me almost anywhere.</p>
<p>If you want a rock solid phone, then this device is not for you. I was unlucky to be in minority of people who experienced constant reboots. By constant I mean few times every hour.  My <a class="zem_slink" title="Nokia" rel="homepage" href="http://nokia.com">Nokia</a> also lacked a 2GB partition, which meant I was constantly running out of space in which to install applications. Both of this problems have since been fixed. I still have a problem with <a class="zem_slink" title="GSM" rel="wikipedia" href="http://en.wikipedia.org/wiki/GSM">GSM</a> connection occasionally completely dying, which I can fix only by manual reboot. I&#8217;m personally not bothered since I don&#8217;t use it as phone.</p>
<p>On the other hand updates to software are regular, with one major firmware update already, that fixed some of my problems (reboot). Annoyances of today might literally be gone by tomorrow and thus my disclaimer.</p>
<p>I know how much effort goes in good software and don&#8217;t want to be too negative, but email really does suck for IMAP users. Not only doesn&#8217;t it cache headers, so if you have a slow connection and a big Inbox, get used to waiting. You also can&#8217;t set sent mail, drafts or trash folders which makes it useless to me for anything but reading email. Even worse, it creates its own folders (like <a class="zem_slink" title="IPod Touch" rel="wikipedia" href="http://en.wikipedia.org/wiki/IPod_Touch">iPod touch</a>) to make a mess in your account. I am all for simplicity and avoiding needless configuration options, but it could at least get a list of folders and compare Levenshtein&#8217;s distance to common names (Sent, Sent mail&#8230;).</p>
<p>Gecko (Mozilla) based browser though is great, in my opinion much better than iPod&#8217;s and I completely switched my mobile browsing to N900. I am biased since unlike many I never was fond of constant zooming in and out (with pinching). My opinion might have been different if my eye-sight was poorer and I needed to zoom more.</p>
<p>If you are a Linux user or appreciate freedom, then it&#8217;s difficult to find a better mobile device. N900 is a Linux machine which happens to also be a phone and you have complete access to everything. There is a store (Ovi) and app manager, but you can install and run anything willing to run without permission from anybody. Terminal is loaded by default together with tools needed to prod into the system and root is one package installation away.</p>
<p>I dislike fixed space of iPod. N900 is only slightly better. You can expand it with SD cards, but you have to open battery cover. It looks so fragile that I don&#8217;t intend to actually do this unless absolutely necessary. Speaking of storage, as a programmer I can understand why applications can use only 2GB of it, but as user it simply looks daft.</p>
<p>Pair of contact and conversations applications is absolutely brilliant. Instant messaging, Skype and SMS are superbly integrated and they also feed contact application with information about your buddies found on those networks.  Install Hermes and you can update it with data from Twitter and Facebook.</p>
<p>Screen has higher resolution than iPod&#8217;s, but physically same (small) size, which means I&#8217;ll keep reading PDFs on my 770. Since it&#8217;s resistive instead of capacitive, it needs more pressure than iPod&#8217;s, but works better at -12 degrees centigrade (<a title="French Alps - photo taken by N900" href="http://www.flickr.com/photos/markos/4268784785/">this picture</a> was taken with my gloves on).</p>
<p>Maemo has a very active and generally supportive community, but some members can also be <a href="https://bugs.maemo.org/show_bug.cgi?id=6334#c19">needlessly unfriendly</a>. Just because you know where everything is and have seen certain faux pas 100 times before, it doesn&#8217;t mean either is true for a new N900 owner with a problem.</p>
<p>N900 RUNS PYTHON, which was my main reason for preferring it over an <a class="zem_slink" title="Android" rel="homepage" href="http://code.google.com/android/">Android</a> phone. Documentation is a bit all over the place, not always current and I still haven&#8217;t found information about how to control built in cameras, but I am an optimist that this will be sorted out soon and that documentation will improve as well.</p>
<p>I compared N900 with diamond, but maybe a better comparison would be a sports car. If you want a polished, sedated experience then N900 is certainly not for you (yet). But if you are a tinkerer who doesn&#8217;t mind rough edges in exchange for freedom to make it do almost anything, then you should give it a spin.</p>
<p>There is so much more that could be said, but big picture wouldn&#8217;t change much. I haven&#8217;t talked much about UI since I simply couldn&#8217;t do it justice in few sentences. On the whole it works fine and multitasking is really great even though I think iPhone/iPad&#8217;s switch-to-where-you-were model is in my experience rarely a problem and wouldn&#8217;t be surprised if it was here to stay.</p>
<p>If there is anything about it you would like to know, then please ask and I&#8217;ll try to respond to it promptly.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/975ad83f-5fe4-4116-9522-d28c345d36b9/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=975ad83f-5fe4-4116-9522-d28c345d36b9" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script paragraph-reblog"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=563</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Dreaming about arithmetic mean</title>
		<link>http://markos.gaivo.net/blog/?p=549</link>
		<comments>http://markos.gaivo.net/blog/?p=549#comments</comments>
		<pubDate>Sun, 24 Jan 2010 10:44:03 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[General development]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[Arithmetic mean]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=549</guid>
		<description><![CDATA[I had a crazy dream, where I was back at University, but this time studying computer science. We were writing a function to calculate an arithmetic mean of an array of numbers. A task obviously too simple for college course, but with dreams you get what you are given.
Discussion started with this function:

function average(arr) {
var [...]]]></description>
			<content:encoded><![CDATA[<p>I had a crazy dream, where I was back at University, but this time studying computer science. We were writing a function to calculate an <a class="zem_slink" href="http://en.wikipedia.org/wiki/Arithmetic_mean" title="Arithmetic mean" rel="wikipedia">arithmetic mean</a> of an array of numbers. A task obviously too simple for college course, but with dreams you get what you are given.</p>
<p>Discussion started with this function:</p>
<ol class="code">
<li><code>function average(arr) {</code></li>
<li class="tab1"><code>var i, sum = 0;</code></li>
<li class="tab1"><code>for(i=0;i&#60;arr.length;i++) {</code></li>
<li class="tab2"><code>sum += arr[i];</code></li>
<li class="tab1"><code>}</code></li>
<li class="tab1"><code>return sum/i;</code></li>
<li><code>}</code></li>
<li>&#160;</li>
<li class="download">Download this code: <a href="http://markos.gaivo.net/blog/code/dreamjs.txt" title="Download the above code as a text file">/code/dreamjs.txt</a></li>
</ol>
<p>Dream me, who by the way is significantly more bitchy than I ever am, wasn&#8217;t pleased and thought he could save few bytes by storing counter and sum inside of the array:</p>
<ol class="code">
<li><code>function average(arr) {</code></li>
<li class="tab1 cmnt"><code>// Store counter in array[0] and sum in array[1]</code></li>
<li class="tab1"><code>if (arr.length &#60; 3) {</code></li>
<li class="tab2"><code>return arr.length == 2 ? arr[0]+arr[1] : arr[0];</code></li>
<li class="tab1"><code>} else {</code></li>
<li class="tab2"><code>arr[1] = arr[0]+arr[1];</code></li>
<li class="tab2"><code>arr[0] = 2;</code></li>
<li class="tab2"><code>for(;arr[0]&#60;arr.length;arr[0]++) {</code></li>
<li class="tab3"><code>arr[1] += arr[arr[0]];</code></li>
<li class="tab2"><code>}</code></li>
<li class="tab1"><code>}</code></li>
<li class="tab1"><code>return arr[1]/arr[0];</code></li>
<li><code>}</code></li>
<li>&#160;</li>
<li class="download">Download this code: <a href="http://markos.gaivo.net/blog/code/dreamjs2.txt" title="Download the above code as a text file">/code/dreamjs2.txt</a></li>
</ol>
<p>This looked ugly, but what bothered him (me?) was more that it also had a bug. Integer in <a class="zem_slink" href="http://en.wikipedia.org/wiki/JavaScript" title="JavaScript" rel="wikipedia">Javascript</a> is limited to 2<sup>53</sup>, which is a lot, but sum can still <a class="zem_slink" href="http://en.wikipedia.org/wiki/Arithmetic_overflow" title="Arithmetic overflow" rel="wikipedia">overflow</a> or underflow it. Since mean can never be smaller than smallest or bigger than biggest number in a list, I could fix it by writing:</p>
<ol class="code">
<li><code>function average(arr) {</code></li>
<li class="tab1"><code>var n = arr.length, sum=0;</code></li>
<li class="tab1"><code>while (arr.length) {</code></li>
<li class="tab2"><code>sum += arr.pop()/n;</code></li>
<li class="tab1"><code>}</code></li>
<li class="tab1"><code>return sum;</code></li>
<li><code>}</code></li>
<li>&#160;</li>
<li class="download">Download this code: <a href="http://markos.gaivo.net/blog/code/dreamjs3.txt" title="Download the above code as a text file">/code/dreamjs3.txt</a></li>
</ol>
<p>End of dream. Everything edited for sanity and brevity.</p>
<p>I don&#8217;t have much to say about second program except that I would never write something so ugly just to save 16 bytes in a function like this. I wouldn&#8217;t even use Javascript if memory was that important.</p>
<p>I am more intrigued by third program. Bug in second is definitely there, even though few of us operate with numbers big enough to encounter it.</p>
<p>It&#8217;s interesting, because if I was awake, I would probably never think of it. I used to worry about bugs like this all the time, when I was coding in C. It was an unavoidable consequence of the language.</p>
<p>I guess what I am getting at is that it is nice to code in a high-level language and for the most part not think about implementation details like this, but only as long as you actually know them so your brain gets triggered when they matter. Speaking of details, I bet those divisions can cause rounding errors.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/7ab2d445-07ff-4ec6-bed9-f29a2797d7a3/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=7ab2d445-07ff-4ec6-bed9-f29a2797d7a3" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script paragraph-reblog"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=549</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Books I read in 2009</title>
		<link>http://markos.gaivo.net/blog/?p=540</link>
		<comments>http://markos.gaivo.net/blog/?p=540#comments</comments>
		<pubDate>Sun, 03 Jan 2010 19:18:26 +0000</pubDate>
		<dc:creator>markos</dc:creator>
				<category><![CDATA[Catchall]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://markos.gaivo.net/blog/?p=540</guid>
		<description><![CDATA[Last year I read Aaron Swartz&#8217;s review of books and thought it was a great idea that I should copy. I don&#8217;t know why exactly. Maybe to better track how much I actually read. Or using a goal to promote more reading when I felt I haven&#8217;t read enough. Maybe it was just to learn [...]]]></description>
			<content:encoded><![CDATA[<p>Last year I read <a title="Last year's review" href="http://www.aaronsw.com/weblog/2008books">Aaron Swartz&#8217;s review</a> of books and thought it was a great idea that I should copy. I don&#8217;t know why exactly. Maybe to better track how much I actually read. Or using a goal to promote more reading when I felt I haven&#8217;t read enough. Maybe it was just to learn what topics drew me particular year.</p>
<p>Who knows? Probably all of these reasons played a role.</p>
<p>My private goal was to read a book every fortnight, so about 26 in total. I read 37, some of which admittedly very light in content or girth.</p>
<p>Time to present the books, listed in chronological order. I linked those I liked and set in bold those I recommend. Unlinked were either bad or intended for someone I can&#8217;t relate to.</p>
<p>DISCLAIMER: Most links point to Amazon and include my affiliate ID meaning if you buy them after following these links, I get few cents that might eventually lead to purchase of another book.</p>
<ol>
<li><a href="http://oreilly.com/catalog/9780596101534/">Mind Performance Hacks</a> by Ron Hale-Evans. Surprised to see how many of them I discovered independently through years.</li>
<li><strong><a href="http://www.amazon.com/gp/product/1594200629?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1594200629">The Cold War</a> by John Lewis Gaddis</strong>. Fantastic short history of cold war.</li>
<li>The Non-Designer&#8217;s Design Book by Robin Williams</li>
<li>The Non-Designer&#8217;s Type Book by Robin Williams. Like previous one probably useful only if you know absolutely nothing about design.</li>
<li><a href="http://www.amazon.com/gp/product/1856694771?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1856694771">Business Cards 2 More Ways of Saying Hello</a> by Michael Dorrian, Liz Farrelly. Worth a look before you make your own.</li>
<li><a href="http://www.amazon.com/gp/product/0143114948?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0143114948">Here Comes Everybody</a> by Clay Shirky. Astute and interesting, but might be redundant if you already follow Clay&#8217;s writing.</li>
<li><a href="http://www.amazon.com/gp/product/0393317552?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0393317552">Guns, Germs and Steel</a> by Jared Diamond.</li>
<li>Sticky Graphics: Create Memorable Graphic Design Using Mnemonics and Visual Hooks by Jessica Glaser, Carolyn Knight. WTF?</li>
<li><a href="http://www.amazon.com/gp/product/0670038717?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0670038717">Thursday Next: First Among Sequels</a> by Jasper Fforde. Fantasy series for book lovers. Enjoyed more if you&#8217;ve read a lot.</li>
<li><a href="http://www.amazon.com/gp/product/0596516258?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0596516258">Designing Web Interfaces</a> by Bill Scott, Theresa Neil. Components of modern web applications. A book that should be on the shelf of every web interaction designer.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0307454894?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0307454894">Reader</a> by Bernhard Schlink</strong>. Excellent book, haven&#8217;t seen the movie.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0226739414?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0226739414">The Wall Jumper</a> by Peter Schneider</strong>. Timeless portrait of German separation.</li>
<li><a href="http://www.amazon.com/gp/product/0321384016?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321384016">Everyware: The Dawning Age of Ubiquitous Computing</a> by Adam Greenfield. Really late to the party with this one, but still a good and fairly unbiased treatise on intelligent tools and environments and problems related to them.</li>
<li><a href="http://www.hermanmiller.com/AlwaysBuilding/">Always Building: The Programmable Environment</a> by Jim Long, Jennifer Magnolfi, Lois Maassen. Optimistic thinking and examples of adaptable environments by people from Herman Miller.</li>
<li><a href="http://www.amazon.com/gp/product/0596517742?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0596517742">Javascript: The Good Parts</a> by Douglas Crockford. Concise but informative description of good parts of Javascript useful for most programmers.</li>
<li><a href="http://www.amazon.com/gp/product/0060934719?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0060934719">Stardust</a> by Neil Gaiman.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0812550706?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0812550706">Ender&#8217;s Game</a> by Orson Scott Card</strong>. As good as people say.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0061092177?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0061092177">Small Gods</a> by Terry Pratchett</strong>. In my opinion still the best book by Terry.</li>
<li><a href="http://www.amazon.com/gp/product/1932111972?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1932111972">A Theory of Fun for Game Design</a> by Raph Koster. Worth reading if you want to know what makes games fun and what to expect in future.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0091914353?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0091914353">Aid and Other Dirty Business: How Good Intentions Have Failed the World&#8217;s Poor</a> by Giles Bolton</strong>. Excellent when looking at facts of aid &#8220;business&#8221; (first 4/5 of the book). Weak when it comes to solutions with seemingly unlimited faith in globalism and power of a consumer.</li>
<li><a href="http://www.amazon.com/gp/product/0345460626?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0345460626">The Caryatids</a> by Bruce Sterling. Interesting and occasionally excellent, but a bit of a let down compared to some of his other work.</li>
<li><a href="http://www.amazon.com/gp/product/0123740371?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0123740371">Sketching User Experiences: Getting the Design Right and the Right Design</a> by Bill Buxton. Excellent book about sketching and its role in design. A must read for practitioners.</li>
<li><a href="http://www.amazon.com/gp/product/0192854534?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0192854534">The Buddha: A Very Short Introduction</a> by Michael Carrithers. Buddism seen through life of the Buddha.</li>
<li><a href="http://www.amazon.com/gp/product/0192853791?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0192853791">Archaeology: A Very Short Introduction</a> by Paul Bahn. Fun.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0976470705?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0976470705">The Four Steps to Epiphany</a> by Steven Gary Blank</strong>. I can&#8217;t recommend this book highly enough to anyone starting a new venture. Absolutely a must read.</li>
<li><a href="http://www.amazon.com/gp/product/0199205590?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0199205590">The First World War: A Very Short Introduction</a> by Michael Howard. Short, but good.</li>
<li><a href="http://www.amazon.com/Everyman-Philip-Roth/dp/061873516X">Everyman</a> by Philip Roth. Facing old age and death, a book I liked more than my wife.</li>
<li><a href="http://www.amazon.com/gp/product/0192806467?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0192806467">Contemporary Art: A Very Short Introduction</a> by Julian Stallabrass. How contemporary art (world) functions and less what it is.</li>
<li><a href="http://www.amazon.com/gp/product/0192853902?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0192853902">Judaism: A Very Short Introduction</a> by Norman Solomon.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0811215474?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0811215474">By Night in Chile</a> by Roberto Bolano</strong>. Discovered by method of pulling random books from shelves in book store. Absolutely superb.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0471295639?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471295639">Against the Gods: The Remarkable Story of Risk</a> by Peter L. Bernstein</strong>. A book about history of risk management made only more relevant by last financial crisis. Fun and very informative.</li>
<li><a href="http://www.amazon.com/gp/product/0670058122?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0670058122">Forget Kathmandu: An Elegy for Democracy</a> by Manjushree Thapa. Modern history of Nepal told through personal experience. Recommended if you are interested in Nepal.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0140435050?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0140435050">The Life and Opinions of Tristram Shandy, Gentleman</a> by Lawrence Sterne</strong>. Hard to believe that 250 years old novel can feel so modern.</li>
<li><strong><a href="http://www.amazon.com/gp/product/0061161705?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0061161705">Unseen Academicals</a> by Terry Pratchett</strong>. I might be biased, but I would put it among his best novels.</li>
<li><a href="http://www.rosenfeldmedia.com/books/prototyping/">Prototyping: A Practitioner&#8217;s Guide</a> by Todd Zaki Warfel. I never got around writing review of this book. Definitely worth a read for practitioners.</li>
<li><a href="http://www.amazon.com/gp/product/0596155514?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0596155514">Getting Started with Arduino</a> by Massimo Banzi. Aimed at designers, but learned few new things anyway.</li>
<li><a href="http://www.amazon.com/gp/product/0679603360?ie=UTF8&amp;tag=devel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0679603360">The City: A Global History</a> by Joel Kotkin. Sort of a short introduction to history of cities with everything good and bad that format entails. Excellent starting point for those interested in its subject.</li>
</ol>
<p>I wish I read as much as Aaron (<a href="http://www.aaronsw.com/weblog/books2009">latest review</a>), who seems to devour about hundred books per year, but I don&#8217;t think I&#8217;ll ever manage that. My goal for this year is going to be about same, 25 books before bells toll midnight on 31st of December. It still is an ambitious goal, since these days I seem to have a penchant for buying tomes at least 600 page thick and want to read more of other people&#8217;s code.</p>
]]></content:encoded>
			<wfw:commentRss>http://markos.gaivo.net/blog/?feed=rss2&amp;p=540</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
