<?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>HCoder.org &#187; opera</title>
	<atom:link href="http://hcoder.org/tag/opera/feed/" rel="self" type="application/rss+xml" />
	<link>http://hcoder.org</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 17 Jul 2010 21:17:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Faster than the fastest</title>
		<link>http://hcoder.org/2010/07/05/faster-than-the-fastest/</link>
		<comments>http://hcoder.org/2010/07/05/faster-than-the-fastest/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 21:08:48 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[hitler]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[meme]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[opera link]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=395</guid>
		<description><![CDATA[These are interesting times in the browser world: not only there are more browsers than ever, but now even Internet Explorer is starting to become competitive again, so in a year or two it might not even be safe to assume that every other browser is better. Go figure. So anyway, recently Opera released 10.60, [...]]]></description>
			<content:encoded><![CDATA[<p>These are interesting times in the browser world: not only there are more browsers than ever, but now even Internet Explorer is starting to become competitive again, so in a year or two it might not even be safe to assume that every other browser is better. Go figure.</p>
<p>So anyway, recently Opera released 10.60, which is awesome news because finally Linux has a modern stable release, because of the amount of new eye candy in the UI, the new supported web standards (like Geolocation or WebM video, yay!) and&#8230; because of the amazing speed (&#8220;<a href="http://www.youtube.com/watch?v=zaT7thTxyq8">much faster than a potato</a>&#8220;).</p>
<p>On Saturday, DailyTech published an <a href="http://www.dailytech.com/Opera+106+The+Worlds+Fastest+Stable+Browser+Tested+vs+IE+9/article18909.htm">article comparing the speed of several browsers</a>, Opera 10.60 included. Obviously the conclusion was that Opera is the fastest (I wouldn&#8217;t link to <em>that</em> article from <em>this</em> post if it wasn&#8217;t the case, would I? :-P), and shortly after reading that, I came across this hilarious video that sort of follows up on that:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/hUiq__WrO6w&amp;hl=es_ES&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/hUiq__WrO6w&amp;hl=es_ES&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>I mean, the video even mentions <a href="http://www.opera.com/link/">Opera Link</a>, I <em>have</em> to like it :-P (although yeah, the claim is not correct, Chrome does have something similar). My favourite quotes are:</p>
<ul>
<li>&#8220;You promised innovation, but look at Opera!&#8221;</li>
<li>&#8220;Maybe Opera is hiring&#8221;</li>
</ul>
<p>And the second reminded me that yes, <a href="http://www.opera.com/company/jobs/opening/184/">we are hiring</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2010/07/05/faster-than-the-fastest/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My first smartphone</title>
		<link>http://hcoder.org/2010/05/23/my-first-smartphone/</link>
		<comments>http://hcoder.org/2010/05/23/my-first-smartphone/#comments</comments>
		<pubDate>Sun, 23 May 2010 15:01:51 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Freedom]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[hero]]></category>
		<category><![CDATA[htc]]></category>
		<category><![CDATA[mini]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[smartphone]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=361</guid>
		<description><![CDATA[I&#8217;m not really a &#8220;fancy phone&#8221; guy. Actually, some years ago I used to hate mobile phones. Luckily, things have changed, and to make a long story short, I bought a (second hand) HTC Hero after thinking of buying an Android phone for months. My first impression is fairly good: even though it&#8217;s the first [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not really a &#8220;fancy phone&#8221; guy. Actually, some years ago <a href="http://hcoder.org/2008/01/23/mobile-phones/">I used to hate mobile phones</a>. Luckily, things have changed, and to make a long story short, I bought a (second hand) HTC Hero after <a href="http://hcoder.org/2009/09/13/proprietary-vs-open-a-new-hope/">thinking of buying an Android phone</a> for months.</p>
<p>My first impression is fairly good: even though it&#8217;s the first decent Android phone and quite old now, I find it very nice to use and quite customisable (which is great, considering all the applications and widgets available for the platform). And even when using an old version of Android (1.5) I don&#8217;t find it slow. At least not enough to be irritating.</p>
<p>However, there are several annoyances and things I found out that I figured I&#8217;d share:</p>
<ul>
<li>It doesn&#8217;t automatically import SMS from the SIM card, let alone use the SIM card as the SMS storage. I find that really silly, but to be honest it doesn&#8217;t bother me <em>that</em> much. You can of course import your backed-up SMS using some utilities (I haven&#8217;t bothered).</li>
<li>It took me a good deal of effort to import my contacts from the old phone. I tried some app called vCardIO, which sounded awesome but it didn&#8217;t work for me. The final solution was using a utility called &#8220;<a href="http://www.dusystems.com/importContacts.html">Import Contacts</a>&#8221; that doesn&#8217;t seem to be in the Android Market (?). I had exported my contacts using <a href="http://wammu.eu/">gammu/wammu</a>, but I had just in case removed the X-GAMMU-* lines from it. I don&#8217;t know if it had anything to do.</li>
<li>I found the default mail application to be kind of sucky, so I looked around and found <a href="http://code.google.com/p/k9mail/">K-9 Mail</a>. I&#8217;m quite happy with it.</li>
<li>The default browser is some sort of bad joke, but luckily there&#8217;s <a href="http://www.opera.com/mobile/">Opera Mini</a>. Opera Mini 5 totally rocks, especially with <a href="http://www.opera.com/link/">Opera Link</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2010/05/23/my-first-smartphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Link&#246;ping trip</title>
		<link>http://hcoder.org/2009/09/13/linkoping-trip/</link>
		<comments>http://hcoder.org/2009/09/13/linkoping-trip/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 21:43:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[automated]]></category>
		<category><![CDATA[linköping]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[sweden]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[trips]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I spent the whole last week (or this week; after all it&#8217;s Sunday&#8230; and Sunday is obviously the last day of the week, not the first, right?) in Linköping, Sweden. The idea was repeating some Debian course I gave here in Oslo, giving two more talks about automated testing since I was there anyway, and [...]]]></description>
			<content:encoded><![CDATA[<p>I spent the whole last week (or <em>this</em> week; after all it&#8217;s Sunday&#8230; and Sunday is obviously the <em>last</em> day of the week, not the <em>first</em>, right?) in <a href="http://en.wikipedia.org/wiki/Linköping">Linköping</a>, Sweden. The idea was repeating some Debian course I gave here in Oslo, giving two more talks about automated testing since I was there anyway, and attend two more talks. It was lots of fun, partly thanks to my &#8220;host&#8221; (thanks Gerald!), and surprisingly I found a bunch of things that seemed plain weird to me&#8230; or at least quite different from Oslo.</p>
<p>The talks themselves went pretty good I think, although I&#8217;d have preferred more people attending. I guess it was normal that there were less people than I&#8217;m used to, since the Linköping office is much smaller. But anyway. The Debian course went quite well and some people got started packaging stuff almost right away. The other talks were an introduction to automated testing (advocacy and arguments for it, advice, basic examples and small rant about a different kind of QA), which went ok, and an entry-level talk about unit testing in Python (thanks Ask and Batiste for the information and reviewing the slides!), which went very well. I&#8217;ll try to get the slides for all the talks available somewhere.</p>
<p>About the city itself, it&#8217;s a charming little part of Sweden where:</p>
<ul>
<li>Restaurants have <strong>insanely</strong> different prices for food whether it&#8217;s for lunch or dinner. Typical prices for lunch are 80 <span class="caps">SEK</span> (around 8 <span class="caps">EUR</span>) and typical prices for dinner are around 250 <span class="caps">SEK</span> <em>just the main course</em>!</li>
<li>Restaurants usually serve some Swedish dish for lunch&#8230; and I mean every restaurant, meaning all the Greek, Vietnamese, etc. Considering &#8220;real&#8221; Swedish restaurants are very expensive, you usually go to those foreign cuisine ones when you actually want to eat Swedish food.</li>
<li>Restaurants typically have some salad (that you have to take yourself) while you wait for the food&#8230; and some coffee, tea and cookies (that obviously you have to take yourself) for the end.</li>
<li>Related to this, restaurants are usually very self-service. I thought service in Norway sucked, but boy was I wrong, at least there is <em>some</em> service. And: there were typically long but pretty-fast-moving queues, and there was this one place where you didn&#8217;t even get the food on the table after ordering at the bar; instead, you were given some gadget with some wireless receiver, and when your food was ready it&#8217;d beep so you knew you had to go to some special place and fetch your food. Is it really cheaper maintaining some gadgets than hiring a waiter? I guess so.</li>
<li>The restrictions on the amount of alcohol that can be bought outside the special Government booze stores are even harder than in Norway. You can only buy booze with up to 3.5% alcohol outside &#8220;<a href="http://en.wikipedia.org/wiki/Systembolaget">Systembolaget</a>&#8221;. Now <em>that</em> is sad. And I was complaining about Norway&#8217;s 5%.</li>
<li>Partly because of that (I assume/hope) the Swedish &#8220;cider&#8221; you get in Sweden is even sweeter and worse and the <em>Swedish</em> cider you get in Norway.</li>
<li>We went to this nice student pub&#8230; which was literally <em>for</em> students. They actually <em>checked</em> your student id, but each student could bring <em>one</em> non-student along. Once you were &#8220;identified&#8221; as a non-student-coming-with-a-student, you&#8217;d get a stamp on your hand so you wouldn&#8217;t have to bring along the student when you ordered again. Also, the place was so very slow it was <em>almost</em> funny. One of the good sides was that they had what I thought it was the only decent Swedish cider&#8230; but after checking just now, it seems it&#8217;s actually American. Bummer. And the name of it was funny too: &#8220;Hardcore Cider&#8221;.</li>
<li>Right before leaving the office on Friday there was a small gathering in the canteen (the &#8220;Friday Beer&#8221;), where they had a Dreamcast with one of the most awesome games I&#8217;ve seen in a long while: <a href="http://en.wikipedia.org/wiki/Typing_of_the_Dead">The Typing of the Dead</a>, a version of <a href="http://en.wikipedia.org/wiki/The_House_of_the_Dead_2">The House of the Dead 2</a> in which you kill the zombies by typing words that appear on the screen, instead of aiming and shooting with a gun:</li>
</ul>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/sNfQ_B6_xy8&#038;hl=es&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/sNfQ_B6_xy8&#038;hl=es&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/09/13/linkoping-trip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More work on widgets</title>
		<link>http://hcoder.org/2009/06/30/more-work-on-widgets/</link>
		<comments>http://hcoder.org/2009/06/30/more-work-on-widgets/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 22:11:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[continuous]]></category>
		<category><![CDATA[cruisecontrol.rb]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[kiva]]></category>
		<category><![CDATA[loanmeter]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[As I had mentioned, I had been working on Opera widgets. Some time ago I had seen a great Javascript plotting library for jQuery called flot, and I really wanted to try it out in some &#8220;real world&#8221; project. As I was working on the World Loanmeter widget, which incidentally uses jQuery too, it was [...]]]></description>
			<content:encoded><![CDATA[<p>As I had mentioned, I had been working on Opera widgets. Some time ago I had seen a great Javascript plotting library for jQuery called <a href="http://code.google.com/p/flot/">flot</a>, and I really wanted to try it out in some &#8220;real world&#8221; project. As I was working on the <a href="http://widgets.opera.com/widget/12102/">World Loanmeter widget</a>, which incidentally uses jQuery too, it was very easy to figure out some way to use flot for something useful: I decided to add some simple graphs to the widget.</p>
<p>The initial idea of the loanmeter widget was to show where in the world Kiva was offering loans. However, as I used the widget myself, I realised that the location in the world was less important for me, and I was more interested in knowing <em>what</em> the person was going to use the money for. So, I added some options to filter by &#8220;sector&#8221; and I figured that having some graphs comparing how much money was requested and already funded, for each sector, would be a very quick and visual way to get the information I wanted. I started playing with flot, and I have to say that except for a couple of relatively minor problems, it was quite easy to use. I don&#8217;t have screenshots showing the graphs, but feel free to <a href="http://widgets.opera.com/widget/12102/">try the widget itself</a> and have a look (hint: you have two buttons at the bottom right corner to switch between &#8220;map view&#8221; and &#8220;graph view&#8221;).</p>
<p>The other widget I have been working on is a monitor widget for projects in <a href="http://cruisecontrolrb.thoughtworks.com/">CruiseControl.rb</a> (a really simple and neat continuous integration server we use at Opera). More than one year ago, my colleague <a href="http://my.opera.com/nicomen">Nico</a> had written a very quick &amp; dirty widget for monitoring the result of the test runs of the <a href="http://my.opera.com">My Opera</a> <a href="http://my.opera.com/operaqa/blog/2008/09/19/testing-my-opera">functional testsuite</a>. There were a couple of things I wanted to change, and I also wanted to monitor other projects, so I figured that I&#8217;d rewrite the widget to have a more maintainable codebase and then make it generic, so you could configure which CC.rb installation and which project to monitor. I&#8217;m moderately happy with the result of the refactoring, and happy enough with the final result. I know it has several issues, and I expect that once anyone outside our team starts using it, there will be things to improve and fix :-) If you use CruiseControl.rb, give it a try!</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/06/30/more-work-on-widgets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opera Unite: another milestone</title>
		<link>http://hcoder.org/2009/06/20/opera-unite-another-milestone/</link>
		<comments>http://hcoder.org/2009/06/20/opera-unite-another-milestone/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 23:17:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Freedom]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[unite]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[So we finally managed to get some public release of Opera Unite out of the door. That was a really good thing, first because it&#8217;s a very cool idea and we had to let others play with it and make it evolve, and second because it was painful keeping a secret for so long ;-) [...]]]></description>
			<content:encoded><![CDATA[<p>So we finally managed to get some public release of <a href="http://unite.opera.com/">Opera Unite</a> out of the door. That was a really good thing, first because it&#8217;s a very cool idea and we had to let others play with it and make it evolve, and second because it was painful keeping a secret for so long ;-)</p>
<p>In case you have been hiding under a rock these days and you don&#8217;t know what I&#8217;m talking about: Opera Unite is the latest crazy idea from <a href="http://opera.com">Opera Software</a>. Basically, embedding a web server inside the web browser, so that people can be more than spectators on the web, share their data without having to upload to third party services, and generally change the way they interact with the web. The cool thing is that the system is not limited to sharing files or whatever, you can actually program your own Opera Unite <em>services</em> to do pretty much <em>anything</em> you want (<a href="http://dev.opera.com/articles/view/opera-unite-developer-primer/">check</a> <a href="http://dev.opera.com/articles/view/markuper-unite-template-library/">the</a> <a href="http://dev.opera.com/articles/view/an-introduction-to-opera-unite/">documentation</a> in <a href="http://dev.opera.com">Dev Opera</a> if you&#8217;re a developer). However, do note that this is just a <a href="http://labs.opera.com">Labs</a> release, that is, just a preview of relatively immature software. For a more complete introduction, go to the Labs <a href="http://labs.opera.com/news/2009/06/16/">blog post introducing Opera Unite</a>.</p>
<p>Opera created quite a bit of hype before the release, which seemed to work pretty well. In particular, the teasing in the <em><span class="caps">HTML</span> comments</em> of the preview <span class="caps">URL</span> (<a href="http://opera.com/freedom">http://opera.com/freedom</a>), which were being <em>updated</em> every day by adding some more words, was brilliant. There has been a lot of press coverage of Opera Unite this week, and even some Russian fella created the website <a href="http://unitehowto.com/">unitehowto.com</a> <strong>the same day</strong> Unite was released, and he wrote (collected?) a bunch of information, articles and tutorials about Opera Unite.</p>
<p>I have to say that, although there has been some quite challenging times while developing Opera Unite (it&#8217;s a quite ambitious project that involves several departments with massively different backgrounds and values, what did you expect?), I&#8217;m quite happy with the result and I think we have made, in general, a good job. As I said, this is just a very rough version, and there&#8217;s a lot of work left to do, but I&#8217;m sure it will improve a lot before we release the final version. That said, I&#8217;m sure that the most exciting things about Unite will, without doubt, start happening once people start writing interesting services, changing the way we see Opera Unite and the way we see the web. I&#8217;m so eager to see what people are going to build with this&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/06/20/opera-unite-another-milestone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Birthday Opera!</title>
		<link>http://hcoder.org/2009/04/28/happy-birthday-opera/</link>
		<comments>http://hcoder.org/2009/04/28/happy-birthday-opera/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 08:43:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[15]]></category>
		<category><![CDATA[birthday]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[years]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Today Opera turns 15! To celebrate it, there is a lot of stuff going on, like a list of Opera’s most popular innovations. I have to note here that I&#8217;m very proud of being part of Opera Link, which is consistently mentioned in the list of innovations. Happy Birthday Opera!]]></description>
			<content:encoded><![CDATA[<p>Today <a href="http://my.opera.com/community/blog/happy-15th-birthday-opera-desktop">Opera turns 15</a>! To celebrate it, there is a <a href="http://my.opera.com/community/customize/skins/info/?id=1628">lot</a> of <a href="http://www.opera.com/portal/15/reasons/">stuff</a> <a href="http://www.opera.com/docs/history/">going</a> <a href="http://people.opera.com/howcome/2009/unlikely-places/">on</a>, like a list of <a href="http://www.opera.com/portal/15/years/">Opera’s most popular innovations</a>.</p>
<p>I have to note here that I&#8217;m very proud of being part of <a href="http://www.opera.com/link/">Opera Link</a>, which is consistently mentioned in the list of innovations.</p>
<p>Happy Birthday Opera!</p>
<p><img src="http://hcoder.org/files/468x60opera15.gif" /></p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/04/28/happy-birthday-opera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recent pet projects + Git + Github</title>
		<link>http://hcoder.org/2009/04/06/recent-pet-projects-git-github/</link>
		<comments>http://hcoder.org/2009/04/06/recent-pet-projects-git-github/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 22:21:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[darcs]]></category>
		<category><![CDATA[demisus]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[kiva]]></category>
		<category><![CDATA[loanmeter]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[sudoku]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I had mentioned that I was learning Javascript to write a Kiva Opera widget. Some time ago I released the first version of my World Loanmeter widget, and I have uploaded two more since. Not much has happened between the first and the third release from the user POV, but a couple of things were [...]]]></description>
			<content:encoded><![CDATA[<p>I had mentioned that I was <a href="http://hcoder.org/2009/02/26/kiva-api-javascript-git-and-my-first-widget-oh-my">learning Javascript to write a Kiva Opera widget</a>. Some time ago I released the first version of my <a href="http://widgets.opera.com/widget/12102/">World Loanmeter</a> widget, and I have uploaded two more since. Not much has happened between the first and the third release from the user <span class="caps">POV</span>, but a couple of things were interesting when developing it:</p>
<ul>
<li>I learned <a href="http://docs.jquery.com/QUnit">QUnit</a>, which I used to write <a href="http://github.com/emanchado/world-loanmeter/blob/31d34707728a1f7d5813a57de4d3b8caf10750ce/test/unittest.html">some really useful unit tests</a>. It&#8217;s quite nice to be able to write Javascript unit tests easily.</li>
<li>I made some <a href="http://github.com/emanchado/world-loanmeter/commit/425a4a854bc074c825b6f15546235958977da1d5">heavy refactoring</a> (see above) which made me learn some more Javascript <em>and</em> made the code much more flexible, so now the widget is not limited to a single Kiva <span class="caps">API</span> page of results, but to as many pages as needed to fetch whatever number of loans the user wants. Not to mention that the data source need not be a <span class="caps">URL</span>.</li>
<li>Now the widget actually has some configuration. Namely, the number of loans to show in the map. It also stores it persistently using the <a href="http://dev.opera.com/articles/view/opera-widgets-preference-store/">preference store</a>, which is quite nice.</li>
</ul>
<p>As I said, I used Git for it. I don&#8217;t &#8220;hate&#8221; it anymore, but I still find some things annoying, like the horrible, confusing names some options have (I&#8217;m thinking about &#8220;git checkout <file>&#8221; to revert the local changes, or &#8220;git diff &#8212;cached&#8221; to see the contents of the index/staging area; seriously guys, W-T-F?). I used to be skeptical about the &#8220;git add&#8221; for changes and then &#8220;git commit&#8221;, but I actually find it quite nice: it&#8217;s easier to plan a commit that way, and if you don&#8217;t want to plan it, you can always just &#8220;git commit <file>&#8221; directly. Also &#8220;git add -p&#8221; is really nice to commit just <em>parts</em> of a file (at last, someone copies some of the good stuff <a href="http://darcs.net/">Darcs</a> had had for ages!). Apart from Git itself, it&#8217;s cool that there is <a href="http://github.com">GitHub</a>, so it&#8217;s easy to share your repositories without having to <code>rsync</code> to some web server or similar&#8230; not to mention that your project is much more visible that way.</p>
<p>But the World Loanmeter wasn&#8217;t the only pet project I was working on these past weeks: I also wrote a simple sudoku solver, <a href="http://wiki.github.com/emanchado/demisus">demisus</a>, in Ruby. The reason? Writing a prototype of a sudoku solver in a language I&#8217;m fluent with, to play with the design and get something interesting and easy to maintain&#8230; to rewrite it in Haskell. I have been trying to learn some functional language for some years now, but I never find a &#8220;project&#8221; that is interesting enough to write some &#8220;real world program&#8221; in the language and I end up not learning anything. After starting reading <a href="http://book.realworldhaskell.org/">Real World Haskell</a>, I really felt like trying to learn the language once and for all, and I figured that a sudoku solver was easy enough to write, something I know enough about, and something math-y enough to be reasonably easy to implement in Haskell.</p>
<p>So, if you&#8217;re interested in any of them, you can have a look in Github and even contribute ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/04/06/recent-pet-projects-git-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kiva API, Javascript, Git and my first widget, oh my!</title>
		<link>http://hcoder.org/2009/02/26/kiva-api-javascript-git-and-my-first-widget-oh-my/</link>
		<comments>http://hcoder.org/2009/02/26/kiva-api-javascript-git-and-my-first-widget-oh-my/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 19:48:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Freedom]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[kiva]]></category>
		<category><![CDATA[microloans]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[About two weeks ago I wrote about Kiva, a cool website that allows people to make microloans. Almost one month ago they had started a developer site, including an easy to use API to access the data (loans, borrowers, lenders, etc). I couldn&#8217;t resist the temptation to have a look at the documentation and start [...]]]></description>
			<content:encoded><![CDATA[<p>About two weeks ago I wrote about <a href="http://www.kiva.org">Kiva</a>, a cool website that allows people to make microloans. Almost one month ago they had started a <a href="http://build.kiva.org">developer site</a>, including an easy to use <span class="caps">API</span> to access the data (loans, borrowers, lenders, etc).</p>
<p>I couldn&#8217;t resist the temptation to have a look at the documentation and start thinking about some application to use it. Soon after I started reading I came up with the idea of writing an <a href="http://widgets.opera.com">Opera widget</a>. There were a couple of reasons for that:</p>
<ol>
<li>I had never written a widget, so it sounded like a good excuse to learn how to write them.</li>
<li>Widgets use Javascript, and that felt like a natural fit (as the <span class="caps">API</span> returns <a href="http://en.wikipedia.org/wiki/Json"><span class="caps">JSON</span></a>).</li>
<li>I didn&#8217;t really know that much Javascript (just enough to write a couple of event handlers), and that seemed a good opportunity to start learning the language &#8220;properly&#8221;.</li>
<li>A widget in <a href="http://widgets.opera.com">http://widgets.opera.com</a> had more possibilities of actually being used than a random pet project of mine lying in some obscure repository of some obscure version control system (well, actually I ended up using Git for it, so it&#8217;s not that obscure in some sense; but you get the point).</li>
</ol>
<p>So I started by learning a bit of Javascript. After asking around, the best thing I found to learn quickly was a very <a href="http://video.yahoo.com/watch/111593/1710507">good</a> <a href="http://video.yahoo.com/watch/111594/1710553">series</a> <a href="http://video.yahoo.com/watch/111595/1710607">of</a> <a href="http://video.yahoo.com/watch/111596/1710658">videos</a> by <a href="http://en.wikipedia.org/wiki/Douglas_Crockford">Douglas Crockford</a> hosted in Yahoo! Video.</p>
<p>Then, I had a look at the excellent articles in <a href="http://dev.opera.com">Dev Opera</a> about <a href="http://dev.opera.com/articles/view/creating-your-first-opera-widget/">creating widgets</a> and started creating one. As I had the idea of creating something that would show loans around the world, I started looking for <span class="caps">HTML</span> and Javascript for building maps, and found a very good article in <a href="http://www.alistapart.com/">A List Apart</a> about <a href="http://www.alistapart.com/articles/cssmaps">accessible maps</a>. The sad part is, once I understood how everything worked I destroyed the whole accessibility of the solution, but it was for a widget anyway (you have excellent support for <span class="caps">CSS</span> and Javascript in Opera, no need to have a fallback to show textual data in a widget) and my code ended up much much simpler and easier to maintain.</p>
<p>Finally, for Git, I had a look at the screencasts hosted in <a href="http://www.gitcasts.com/">GitCasts</a>. I already new some basic Git things, but I think I started to feel more comfortable with it after watching a couple of those videos. Still, too many references to the obscure objects and <span class="caps">SHA</span> names and whatever, but clear enough to understand your way around it.</p>
<p>In short, I have to say that creating the widget was easy enough, and it was lots of fun to write it. I had some frustrations debugging it, but things worked fairly well in general. When I finished it, I uploaded to widgets.opera.com and after a couple of days it was already approved and public for everyone.</p>
<p>So, if you want to give it a shot, just go to <a href="http://widgets.opera.com/author/zoso/">my widgets page</a> and download the <a href="http://widgets.opera.com/widget/12102/">World Loanmeter</a>! Enjoy it! :-D</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2009/02/26/kiva-api-javascript-git-and-my-first-widget-oh-my/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Opera Widgets redux</title>
		<link>http://hcoder.org/2008/12/14/opera-widgets-redux/</link>
		<comments>http://hcoder.org/2008/12/14/opera-widgets-redux/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 22:25:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[lolcat]]></category>
		<category><![CDATA[ninja]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I never liked Opera Widgets too much. I tried them a couple of years ago, but I never saw the point. I even tried the games, but they performed so ridiculously poorly that I just gave up. What did I need them for? Around one year ago, however, I found the first useful widget, a [...]]]></description>
			<content:encoded><![CDATA[<p>I never liked Opera Widgets too much. I tried them a couple of years ago, but I never saw the point. I even tried the games, but they performed so ridiculously poorly that I just gave up. What did I need them for?</p>
<p>Around one year ago, however, I found the first useful widget, a kind of simple &#8220;monitor&#8221; for the Continuous Integration server run for some project. It was really simple and actually useful (basically, a big window that is either green or red). Shortly after, someone pointed me at a &#8220;random <a href="http://icanhascheezburger.com/">lolcat</a>&#8221; widget (best widget ever, I say; unfortunately is not public), so I started to wonder if I was wrong and widgets were maybe useful after all.</p>
<p>Since then, I have found another widget that I find very handy, the <a href="http://widgets.opera.com/widget/7206/">Twitter widget</a>, and I even realised that the performance problems were something of the past, so I could consider trying a couple of games. And, alas, it turns out that there are at least two games worth trying: <a href="http://widgets.opera.com/widget/10982/">Bubbles</a> and my favourite, <a href="http://widgets.opera.com/widget/11271/">Ninja Ropes Extreme</a>.</p>
<p>So give them a try, you might be surprised :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2008/12/14/opera-widgets-redux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opera Mini 4.2 (beta)</title>
		<link>http://hcoder.org/2008/11/16/opera-mini-42-beta/</link>
		<comments>http://hcoder.org/2008/11/16/opera-mini-42-beta/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 11:41:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[4.2]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[boardgamegeek]]></category>
		<category><![CDATA[boarg]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[mini]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[operamini]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I have to say I&#8217;m impressed with Opera Mini. It&#8217;s a very good product that not only is innovative, but also is damn hard to get working decently in a plethora of ill-designed, ill-implemented, crashing-and-burning-at-any-error, incompatible phones. But somehow these guys bring the Internet to everyone that has a mobile phone that supports Java (a [...]]]></description>
			<content:encoded><![CDATA[<p>I have to say I&#8217;m impressed with <a href="http://www.operamini.com/">Opera Mini</a>. It&#8217;s a very good product that not only is innovative, but also is <strong>damn hard</strong> to get working decently in a plethora of ill-designed, ill-implemented, crashing-and-burning-at-any-error, incompatible phones. But somehow these guys bring the Internet to everyone that has a mobile phone that supports Java (a pretty low requirement these days)&#8230; and that lives in a country where mobile phone operators don&#8217;t charge your ass for connecting to the Internet of course (and then again, Opera Mini heavily compresses the pages so you only download a fraction of the original).</p>
<p>And the experience, taking into account the limited interface, is pretty good. And they add <a href="http://www.operamini.com/beta/">features and improvements</a> in every release (namely, they brought back &#8220;skins&#8221;, added notes to the list of supported <a href="http://www.opera.com/products/link">Link</a> data types, and probably other things I haven&#8217;t noticed). What else can I say?</p>
<p>The other day I wanted to go and buy some board game. I had gone to <a href="http://www.boardgamegeek.com/">BoardGameGeek</a> (awesome website <span class="caps">BTW</span>) and had made a list of the games that looked interesting. So I go to the shop, and of course most of them weren&#8217;t there&#8230; but there was some <em>other</em> game that looked interesting but I hadn&#8217;t seen before: <a href="http://www.boardgamegeek.com/game/124">Primordial Soup</a>. Having Opera Mini in my phone, I could very easily check the rating and some basic information for that game, which helped me decide if I should buy it. Not only that, but thanks to Link I had the list of games I wanted to buy in my bookmarks (I had added them from my Desktop computer), so I could even <em>compare</em> the ratings for that game and the ones I wanted to buy to start with. How awesome is that?</p>
<p>Go Opera Mini team!</p>
]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2008/11/16/opera-mini-42-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
