<?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>amazing development &#187; Computer</title>
	<atom:link href="http://amazing-development.com/archives/category/all/computer/feed/" rel="self" type="application/rss+xml" />
	<link>http://amazing-development.com</link>
	<description>ruby, java and the rest</description>
	<lastBuildDate>Thu, 20 May 2010 06:31:13 +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>pgrep or pkill sometimes do not find process</title>
		<link>http://amazing-development.com/archives/2009/10/15/pgrep-or-pkill-do-not-find-process/</link>
		<comments>http://amazing-development.com/archives/2009/10/15/pgrep-or-pkill-do-not-find-process/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 10:07:33 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=415</guid>
		<description><![CDATA[The usual problem: you want to kill a process. $ ps aux &#124; grep randomprocessname psycho 20429 0.0 0.0 11824 1580 pts/7 S+ 12:00 0:00 /bin/bash ./randomprocessname psycho 20528 0.0 0.0 4188 740 pts/17 R+ 12:00 0:00 grep randomprocessname $ pkill -9 randomprocessname WTF? Kill that sucker! $ pkill -9 randomprocessname No typo... Am I [...]]]></description>
			<content:encoded><![CDATA[<p>The usual problem: you want to kill a process.</p>
<p><code>$ ps aux | grep randomprocessname<br />
psycho   20429  0.0  0.0  11824  1580 pts/7    S+   12:00   0:00 /bin/bash ./randomprocessname<br />
psycho   20528  0.0  0.0   4188   740 pts/17   R+   12:00   0:00 grep randomprocessname<br />
$ pkill -9 randomprocessname<br />
<font color="red">WTF? Kill that sucker!</font><br />
$ pkill -9 randomprocessname<br />
<font color="red">No typo... Am I crazy?</font><br />
$ pgrep randomprocessname<br />
<font color="red">What's wrong?</font><br />
$ pgrep randomprocessna<br />
20429<br />
$ pkill -9 randomprocessna</code></p>
<p>For some arcane reason <code>pgrep/pkill</code> matches only the first 15 characters.</p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2009/10/15/pgrep-or-pkill-do-not-find-process/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Android G1 gprs setup for simyo with 1gb data plan</title>
		<link>http://amazing-development.com/archives/2009/03/03/android-g1-gprs-setup-for-simyo-with-1gb-data-plan/</link>
		<comments>http://amazing-development.com/archives/2009/03/03/android-g1-gprs-setup-for-simyo-with-1gb-data-plan/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 08:52:38 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=382</guid>
		<description><![CDATA[Last week I added the 1gb data plan to my Simyo contract to use the SIM with my Christmas G1. I tried a few configurations I found online for simyo but they did not work for me. After some frustration I tried an eplus configuration and this one finally worked for me: Name: does not [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/modenadude/3299053044/"><img class="alignright" src="http://static.amazing-development.com/blog_images/09/g1_black.jpg"/></a>Last week I added the 1gb data plan to my Simyo contract to use the SIM with my Christmas G1. I tried a few configurations I found online for simyo but they did not work for me. After some frustration I tried an eplus configuration and this one finally worked for me:</p>
<p><code><br />
<b>Name:</b> does not matter<br />
<b>APN:</b> internet.eplus.de<br />
<b>Proxy:</b> &lt;empty&gt;<br />
<b>Port:</b> &lt;empty&gt;<br />
<b>Username:</b> eplus<br />
<b>Password:</b> &lt;empty&gt;<br />
<b>Server:</b> &lt;empty&gt;<br />
<b>MMSC:</b> &lt;empty&gt;<br />
<b>MMS proxy:</b> &lt;empty&gt;<br />
<b>MMC:</b> 262<br />
<b>MNC:</b> 03<br />
<b>APN type:</b> &lt;empty&gt;<br />
</code></p>
<p><i>Update:</i></p>
<p>The recommended configuration is:</p>
<p><code><br />
<b>Name:</b> does not matter<br />
<b>APN:</b> internet.eplus.de<br />
<b>Proxy:</b> &lt;empty&gt;<br />
<b>Port:</b> &lt;empty&gt;<br />
<b>Username:</b> <font color="red">simyo</font><br />
<b>Password:</b> <font color="red">simyo</font><br />
<b>Server:</b> &lt;empty&gt;<br />
<b>MMSC:</b> &lt;empty&gt;<br />
<b>MMS proxy:</b> &lt;empty&gt;<br />
<b>MMC:</b> 262<br />
<b>MNC:</b> 03<br />
<b>APN type:</b> &lt;empty&gt;<br />
</code></p>
<p>After the initial success with the eplus configuration, I had some problems with it, too. But I guess these errors were internal eplus network hiccups because they were gone without me changing anything and now both configs work.</p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2009/03/03/android-g1-gprs-setup-for-simyo-with-1gb-data-plan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tab + Firefox on OS X</title>
		<link>http://amazing-development.com/archives/2009/02/26/tab-firefox-on-os-x/</link>
		<comments>http://amazing-development.com/archives/2009/02/26/tab-firefox-on-os-x/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 17:19:30 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=377</guid>
		<description><![CDATA[A few days ago I finally upgraded my (== my employer&#8217;s) Macbook Pro from Tiger to Leopard. Everything worked flawless except for one crazy problem: I could not use to tab key the way I used to in forms. My usual routine of quickly entering username, tab, password, tab, hit return did not work anymore. [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago I finally upgraded my (== my employer&#8217;s) Macbook Pro from Tiger to Leopard. Everything worked flawless except for one crazy problem: I could not use to tab key the way I used to in forms. My usual routine of quickly entering username, tab, password, tab, hit return did not work anymore. I searched through the Firefox settings but couldn&#8217;t find the &#8220;Drive psycho crazy&#8221;-option.</p>
<p><img class="alignright" src="http://static.amazing-development.com/blog_images/09/tab_osx.png"/>But thanks to the omniscient internet I found <a href="http://bjkeefe.blogspot.com/2006/03/yaroct-macfirefox-tab-key-nav.html">a solution</a>. At the bottom of the &#8220;Keyboard &#038; Mouse&#8221; preferences page is a setting which allows you to navigate only between text boxes or between all controls. I don&#8217;t know who came up with the great idea that the default should be &#8220;text boxes and lists only&#8221;, but I guess the mighty Steve knows what he is doing.</p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2009/02/26/tab-firefox-on-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pair Programming killed the Uber-coder&#8230;</title>
		<link>http://amazing-development.com/archives/2009/02/21/pair-programming-killed-the-uber-coder/</link>
		<comments>http://amazing-development.com/archives/2009/02/21/pair-programming-killed-the-uber-coder/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 20:49:22 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=347</guid>
		<description><![CDATA[I stumbled over a great essay on pair-programming (via James Shore). Rod Hilton explains it much better than I could ever do, why you should Pair-Program. But I haven&#8217;t heard about the &#8220;ping-pong pairing&#8221;: When doing Test-Driven Development, one of the things we do is called “ping-pong pairing”. So the other developer will write a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/indi/116404571/"><img class="alignright" src="http://static.amazing-development.com/blog_images/09/keyboard.jpg"/></a>I stumbled over a <a href="http://www.nomachetejuggling.com/2009/02/21/i-love-pair-programming/">great essay on pair-programming</a> (via <a href="http://jamesshore.com/Blog/Whats-Pair-Programming-Really-Like.html">James Shore</a>).</p>
<p>Rod Hilton explains it much better than I could ever do, why you should Pair-Program. But I haven&#8217;t heard about the &#8220;ping-pong pairing&#8221;:</p>
<blockquote><p>When doing Test-Driven Development, one of the things we do is called “ping-pong pairing”. So the other developer will write a test, then make it compile but fail. Then he passes the keyboard to me. I implement the feature just enough to make the test pass, then I write another failing test and pass it back.</p></blockquote>
<p>I have to try this on Monday&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2009/02/21/pair-programming-killed-the-uber-coder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Drop all tables from a mysql database</title>
		<link>http://amazing-development.com/archives/2009/01/31/drop-all-tables-from-a-mysql-database/</link>
		<comments>http://amazing-development.com/archives/2009/01/31/drop-all-tables-from-a-mysql-database/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 19:19:45 +0000</pubDate>
		<dc:creator>schlumpf</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[all]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=335</guid>
		<description><![CDATA[Sometimes you want to reset a database to its virgin state, without actually deleting and re-creating the whole database (perhaps because your user doesn&#8217;t have the right to create a database). There are a lot of links out there that give you a quick answer on how to drop all tables from a database in [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you want to reset a database to its virgin state, without actually deleting and re-creating the whole database (perhaps because your user doesn&#8217;t have the right to create a database). There are a lot of links out there that give you a quick answer on how to drop all tables from a database in a single-line shell script. Some examples:</p>
<ul>
<li><a href="http://www.thingy-ma-jig.co.uk/blog/10-10-2006/mysql-drop-all-tables">http://www.thingy-ma-jig.co.uk/blog/10-10-2006/mysql-drop-all-tables</a></li>
<li><a href="http://www.cyberciti.biz/faq/how-do-i-empty-mysql-database/">http://www.cyberciti.biz/faq/how-do-i-empty-mysql-database/</a></li>
<li><a href="http://knaddison.com/technology/mysql-drop-all-tables-database-using-single-command-line-command">http://knaddison.com/technology/mysql-drop-all-tables-database-using-single-command-line-command</a></li>
</ul>
<p>However this does not work if there are foreign key constraints between the tables (because the tables constraining others need to be deleted first). Here&#8217;s the advanced version that solves this problem: </p>
<pre>
#!/bin/bash
USERNAME=myUser
PASSWORD=myPassword
HOSTNAME=dbHost
DATABASE=mydb
while (true) ; do
    TABLES=`mysql -h $HOSTNAME -u $USERNAME -D $DATABASE --password=$PASSWORD \
                  --batch -e "show tables" | grep -v Tables_in`
    if [ -z $TABLES ] ; then break; fi
    for i in $TABLES ; do
        mysql -h $HOSTNAME -u $USERNAME -D $DATABASE --password=$PASSWORD  -e "drop table $i"
    done
done
</pre>
<p>I agree this is not <em>nice</em> because it&#8217;s a brute force approach &#8211; but hey, it works! And resetting a database is most probably not a performance-critical task anyway. </p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2009/01/31/drop-all-tables-from-a-mysql-database/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Javascript &#8220;close hook&#8221; for browser window</title>
		<link>http://amazing-development.com/archives/2008/11/25/javascript-close-hook-for-browser-window/</link>
		<comments>http://amazing-development.com/archives/2008/11/25/javascript-close-hook-for-browser-window/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 21:38:32 +0000</pubDate>
		<dc:creator>schlumpf</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=333</guid>
		<description><![CDATA[Today I wanted to implement something that would prevent me from accidentally closing the browser window while I was doing stuff in my webapp. I&#8217;m no javascript expert, so I checked some newsgroups and found more and more complex solutions the longer the threads were. Here&#8217;s what works for me: &#60;script type="text/javascript"> window.onbeforeunload = function(){ [...]]]></description>
			<content:encoded><![CDATA[<p>Today I wanted to implement something that would prevent me from accidentally closing the browser window while I was doing stuff in my webapp. I&#8217;m no javascript expert, so I checked some newsgroups and found more and more complex solutions the longer the threads were. <span id="more-333"></span></p>
<p>Here&#8217;s what works for me: </p>
<pre>
&lt;script type="text/javascript">
  window.onbeforeunload = function(){
    return "Did you save your stuff?"
  }
&lt;/script>
</pre>
<p>I have no idea why this behaves as it does, it must be one of those &#8220;very interesting ideas&#8221; Frank mentioned about javascript. </p>
<p>What it does is this: When the user presses the browser&#8217;s &#8220;x&#8221; to close the window, this dialog box is shown:<br />
<center><img src="http://ujap.de/external/javascript-close-hook.png" width="497" height="175" alt="confirm dialog box" style="border: 1pt solid black"/></center></p>
<p>If the user presses Cancel, the box disappears and the browser window remains open, and if she presses Okay, the browser window closes (who&#8217;d have guessed). So far, so good. Unfortunately the message is displayed even if the user clicks on a link or submits a form (to do something within the webapp) . </p>
<p>So how do I fix this? The newsgroups said that I could add a condition to check if I really want to warn the user about closing, like this: </p>
<pre>
&lt;script type="text/javascript">
  var hook=true;
  window.onbeforeunload = function() {
    if (hook) {
      return "Did you save your stuff?"
    }
    // no return value obviously means no dialog box.
  }
  function unhook() {
     hook=false;
  }
&lt;/script>
</pre>
<p>The default is to use the hook, and I can use the <code>unhook()</code> function to disable the hook. How does this help? How do I know when I want the hook disabled? Frank knew the solution, and it&#8217;s really very simple: I want to disable the hook whenever the user clicks on one of my own links or buttons within the webapp.  This can be done by adding an <code>onClick</code> event to each link or button like this: </p>
<pre>
&lt;a href="..." onClick="unhook()">Some link within my app&lt;/a>
</pre>
<p>At first it looks a bit cumbersome to change all the links and buttons, but in a webapp, most of the links will be written by some application code anyway so it&#8217;s not much trouble to change them all at once. </p>
<p>It&#8217;s a bit strange because what I&#8217;m doing here is programming some general behaviour (the hook) and then exclude all the common use-cases (internal links, by calling unhook()) because I can&#8217;t make javascript react to the few exceptions (browser close button) directly. </p>
<p>The final page looks something like this: </p>
<pre>
&lt;html>
  &lt;head>
    &lt;script type="text/javascript">
      var hook = true;
      window.onbeforeunload = function() {
        if (hook) {
          return "Did you save your stuff?"
        }
      }
      function unhook() {
        hook=false;
      }
    &lt;/script>
  &lt;/head>
  &lt;body>
    &lt;!-- this will ask for confirmation: -->
    &lt;a href="http://google.com">external link&lt;/a>

    &lt;!-- this will go without asking: -->
    &lt;a href="anotherPage.html" onClick="unhook()">internal link, un-hooked&lt;/a>
  &lt;/body>
&lt;/html>
</pre>
<p>Closing or re-loading the window will display the confirm box, too.<br />
<script type="text/javascript">
    var hook = true;
    window.onbeforeunload = function(){
    if (hook) {
        return "Hope you like it."
    }
    }
    function unhook() {
    hook=false;
    }
</script><br />
Use the following links to check that it works:<br />
<a href="http://google.com">Don&#8217;t leave for Google</a> before you <a href="#respond" onClick="unhook()">leave a comment</a>.<br />
You shouldn&#8217;t be able to close this page without warning, either. </p>
<p>There&#8217;s one small problem left: if you click on the &#8220;leave a comment&#8221; link, the page will not be re-loaded because it&#8217;s just a page-internal link, and after that, the hook variable will be false and you won&#8217;t be asked for confirmation if you click on the google link again. But thankfully I don&#8217;t have these page-internal links in my webapp&#8230; </p>
<p><strong>Addendum:</strong> <a href="http://blog.formatvorlage.de/" target="_blank">Claus Augusti</a> directed my attention to two official documentation sites about the <tt>onbeforeunload</tt> event. Thanks you! The documentation in the <a href="https://developer.mozilla.org/En/DOM/Window.onbeforeunload" target="_blank">Mozilla Developer Center</a> explains that one should not just return a string, but should assign a value to the <tt>returnValue</tt> property of the <tt>onbeforeunload</tt> event (browser-dependent), like this: </p>
<pre>
window.onbeforeunload = function (e) {
  var e = e || window.event;
  if (e) {   // For IE and Firefox
    e.returnValue = 'Any string';
  }
  return 'Any string';   // For Safari
};
</pre>
<p>This is contradictory to the example given in <a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx">Microsoft&#8217;s documentation</a> (returning a string is sufficient), and contrary to my experience with Firefox, but at least it helps to understand why this works at all. </p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2008/11/25/javascript-close-hook-for-browser-window/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Chumby goes i18n &#8211; soon available outside US?</title>
		<link>http://amazing-development.com/archives/2008/06/02/chumby-goes-i18n-soon-available-outside-us/</link>
		<comments>http://amazing-development.com/archives/2008/06/02/chumby-goes-i18n-soon-available-outside-us/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 16:52:30 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=323</guid>
		<description><![CDATA[I just stumbled over a this ad for someone to do the internationalization for (probably) chumby.com. I hope this means that they will start selling the chumby outside the US soon Title: Ruby On Rails I18N Developer Skills: I18N, Ruby on Rails, mySQL &#8230; Job description: &#8230; Chumby Industries is looking for a Ruby On [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/chrys/1417766186/"><img class="alignright" src="http://static.amazing-development.com/blog_images/i18n.jpg"/></a><br />
I just stumbled over a <a href="http://seeker.dice.com/jobsearch/servlet/JobSearch?op=101&#038;dockey=xml/0/5/050b4c618eb4054c49cc0ff296a4fe3a@endecaindex&#038;c=1&#038;source=21">this  ad</a> for someone to do the internationalization for (probably) <a href="http://chumby.com">chumby.com</a>. I hope this means that they will start selling the chumby outside the US soon <img src='http://amazing-development.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<blockquote><p>
Title: Ruby On Rails I18N Developer<br />
Skills: I18N, Ruby on Rails, mySQL<br />
<i>&#8230;</i><br />
Job description:<br />
<i>&#8230;</i><br />
    Chumby Industries is looking for a Ruby On Rails/I18N Contractor to deliver results for the internationalization (I18N) effort on the server.<br />
    This candidate would be responsible for externalizing all the text strings (both static and dynamically generated) that the website uses so that Chumby could later change the language of the site based on location.</p>
<p>    Skills required:<br />
    Previous I18N efforts on browser-based platforms<br />
    Strong web-based development experience<br />
    Ruby on Rails experience<br />
    mySQL database experience<br />
    Familiarity of layout issues involved with I18N
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2008/06/02/chumby-goes-i18n-soon-available-outside-us/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chumbytime</title>
		<link>http://amazing-development.com/archives/2008/05/16/chumbytime/</link>
		<comments>http://amazing-development.com/archives/2008/05/16/chumbytime/#comments</comments>
		<pubDate>Fri, 16 May 2008 16:50:07 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=322</guid>
		<description><![CDATA[Two days I got my chumby. Chumby Industries tries really hard to keep foreigners from buying one of their nice toys: they only accept US credit cards and shipping only to a US address. But I&#8217;m lucky, one of my colleagues from Mountain View ordered one for me. My experience so far was great. Step [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/mikelutz/2210100213/"><img alt="mikelutz chumby pic from flickr" class="alignright" src="http://static.amazing-development.com/blog_images/chumby.jpg"/></a>Two days I got my chumby. Chumby Industries tries really hard to keep foreigners from buying one of their nice toys: they only accept US credit cards and shipping only to a US address. But I&#8217;m lucky, one of my colleagues from Mountain View ordered one for me.</p>
<p>My experience so far was great.</p>
<p><b>Step one: configure WiFi</b><br />
It detected my local network without a problem. I had to enter the password and was ready to go.</p>
<p><b>Step two: activate chumby</b><br />
Create an account at <a href="http://chumby.com">chumby.com</a> and click on &#8220;activate chumby&#8221;. It shows a 4&#215;4 matrix of dots you have to copy to your chumby to connect you account with your device. This is a nice idea. It&#8217;s very simple, easy to use but effective. And surprisingly that&#8217;s it.</p>
<p><b>Step three: add widgets</b><br />
Just one click. Sometimes the widgets need a some configuration but everything is explained right there.</p>
<p><b>Minor annoyances</b></p>
<ul>
<li>only two brightness settings: high &amp; low</li>
<li>you have to press pretty hard on the touchscreen</li>
</ul>
<p><b>Plans:</b><br />
Find a German power supply (should be easy) and start coding a widget <img src='http://amazing-development.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2008/05/16/chumbytime/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Girl&#8217;s day in the office</title>
		<link>http://amazing-development.com/archives/2008/04/25/girls-day-in-the-office/</link>
		<comments>http://amazing-development.com/archives/2008/04/25/girls-day-in-the-office/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 09:20:02 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=318</guid>
		<description><![CDATA[Yesterday was Girl&#8217;s day and our office hosted a few girls from schools in and around Munich. We used Kara to teach them a little bit about programming. You can create finite state machines to control a bug which runs around and tries to solve different problems. The girls did much better than I expected [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Google had a special doodle for the Girl's day" class="alignright" src="http://static.amazing-development.com/blog_images/girlsday08.gif"/><br />
Yesterday was <a href="http://www.girls-day.de/">Girl&#8217;s day</a> and our office hosted a few girls from schools in and around Munich.<span id="more-318"></span></p>
<p>We used <a href="http://www.swisseduc.ch/compscience/karatojava/">Kara</a> to teach them a little bit about programming. You can create finite state machines to control a bug which runs around and tries to solve different problems. The girls did much better than I expected and finished all the exercises we thought would be enough for a whole day before lunch. </p>
<p><img alt="Kara screenshot" class="alignright" src="http://static.amazing-development.com/blog_images/kara-worldeditor.gif"/></p>
<p><img alt="Kara for Ruby Logo" class="alignleft" src="http://static.amazing-development.com/blog_images/rubykara-small.png"/></p>
<p>Without much preparation I decided to teach them a little about &#8220;real&#8221; programming and Ruby because there is <a href="http://www.swisseduc.ch/informatik/karatojava/">a Ruby version of Kara</a> which lets you write Ruby code to control the bug.</p>
<p>The experiment was very successful. The girls solved all the problems again, this time in Ruby and from their feedback they really enjoyed it. </p>
<p>A couple of years ago I taught a programming course for kids at the Volkshochschule in Karlsruhe. At that time I used Perl (it was a loooong time ago and I didn&#8217;t know Ruby then) but if I ever do this again I will use RubyKara. </p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2008/04/25/girls-day-in-the-office/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Darling, I shrinked the menu</title>
		<link>http://amazing-development.com/archives/2008/03/30/darling-i-shrinked-the-menu/</link>
		<comments>http://amazing-development.com/archives/2008/03/30/darling-i-shrinked-the-menu/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 14:54:18 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://amazing-development.com/?p=315</guid>
		<description><![CDATA[Yesterday I installed version 2.5 of WordPress (which is great!) but the menu in the admin interface uses up a lot of screen estate. That&#8217;s why I just patched wp-admin.css to save some of this precious space in the admin interface. Just follow the above link and replace your version found in wp-admin/ if you [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I installed <a href="http://wordpress.org/development/2008/03/wordpress-25-brecker/">version 2.5 of WordPress (which is great!)</a> but the menu in the admin interface uses up a lot of screen estate. That&#8217;s why I just patched <a href="http://amazing-development.com/wp-admin/wp-admin.css">wp-admin.css</a> to save some of this precious space in the admin interface. Just follow the above link and replace your version found in wp-admin/ if you think the menu is too big.<span id="more-315"></span></p>
<p>The changes are really simple. Here are the diffs:</p>
<pre>
&#45;&#45;&#45; wordpress/wp&#45;admin/wp&#45;admin.css 2008&#45;03&#45;29 08&#58;21&#58;12.000000000 +0100
+++ ../amazing&#45;development.com/wp&#45;admin/wp&#45;admin.css        2008&#45;03&#45;30 16&#58;47&#58;22.000000000 +0200
@@ &#45;573,8 +573,8 @@

 #wphead #viewsite {
        position&#58; absolute;
&#45;   margin&#45;top&#58; 12px;
&#45;   margin&#45;left&#58; 10px;
+       margin&#45;top&#58; 3px;
+       margin&#45;left&#58; 3px;
 }
 #wphead #viewsite a {
        font&#58; 12px &quot;Lucida Grande&quot;, &quot;Lucida Sans Unicode&quot;, Tahoma, Verdana, sans&#45;serif;
@@ &#45;590,8 +590,8 @@
 }

 #wphead h1 {
&#45;   font&#58; normal 36px Georgia, &quot;Times New Roman&quot;, Times, serif;
&#45;   padding&#58; 11px 170px 16px 12px;
+       font&#58; normal 18px Georgia, &quot;Times New Roman&quot;, Times, serif;
+       padding&#58; 11px 170px 20px 13px;
        margin&#58; 0;
        margin&#45;right&#58; 15%;
 }
@@ &#45;635,9 +635,9 @@
 }

 #adminmenu a {
&#45;   font&#45;size&#58; 16px;
+       font&#45;size&#58; 12px;
        padding&#58; 5px 7px;
&#45;   line&#45;height&#58; 30px;
+       line&#45;height&#58; 20px;
 }

 #adminmenu a.current, #sidemenu a.current {
@@ &#45;770,7 +770,7 @@
 }

 #submenu li {
&#45;   font&#45;size&#58; 14px;
+       font&#45;size&#58; 10px;
 }

 #minisub { /* for empty submenus */
@@ &#45;961,6 +961,14 @@
        text&#45;decoration&#58; underline;
 }

+#wpbody h2 {
+  font&#45;size&#58; 12pt;
+}
+
+#titlediv h3 {
+  display&#58; none;
+}
+
 #poststuff h2 {
        margin&#45;top&#58; 20px;
        font&#45;size&#58; 1.5em;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2008/03/30/darling-i-shrinked-the-menu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>One Laptop Per Child Germany</title>
		<link>http://amazing-development.com/archives/2008/03/06/one-laptop-per-child-germany/</link>
		<comments>http://amazing-development.com/archives/2008/03/06/one-laptop-per-child-germany/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 20:50:20 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://amazing-development.com/archives/2008/03/06/one-laptop-per-child-germany/</guid>
		<description><![CDATA[I just stumbled over an announcement about OLPC Germany. Last Tuesday was my first chance to play with an OLPC laptop. Everything but the keyboard feels incredibly solid and well made. The only thing I didn&#8217;t like was the user interface. I found it quite non-intuitive but perhaps this gets better if I spend a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://static.amazing-development.com/blog_images/olpc-deutschland.png"/>I just stumbled over <a href="http://www.heise.de/newsticker/meldung/104668">an announcement</a> about <a href="http://olpc-deutschland.de/">OLPC Germany</a>. Last Tuesday was my first chance to play with an OLPC laptop. Everything but the keyboard feels incredibly solid and well made. The only thing I didn&#8217;t like was the user interface. I found it quite non-intuitive but perhaps this gets better if I spend a little more time with it. And if not: I can always <a href="http://www.olpcnews.com/software/operating_system/how_to_ubuntu_on_xo_laptop.html">put Ubuntu on it</a>.</p>
<p>One thing is for sure: as soon as these laptops become available in Germany, I will buy one.</p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2008/03/06/one-laptop-per-child-germany/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Should I buy a TS-409 Pro Turbo NAS?</title>
		<link>http://amazing-development.com/archives/2008/02/15/should-i-buy-a-ts-409-pro-turbo-nas/</link>
		<comments>http://amazing-development.com/archives/2008/02/15/should-i-buy-a-ts-409-pro-turbo-nas/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 10:04:37 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://amazing-development.com/archives/2008/02/15/should-i-buy-a-ts-409-pro-turbo-nas/</guid>
		<description><![CDATA[I was thinking about buying a NAS (network attached storage) server for some time and looked at different products. My requirements are low power consuption, RAID support, and disk encryption. My current favorite is the TS-409 Pro Turbo NAS. It has: low power consuption (ok, sleep mode: 18.8W; in operation: 44.6W) RAID support (way more [...]]]></description>
			<content:encoded><![CDATA[<p>I was thinking about buying a NAS (network attached storage) server for some time and looked at different products. My requirements are low power consuption, RAID support, and disk encryption.</p>
<p>My current favorite is the <a href="http://www.qnap.com/pro_detail_feature.asp?p_id=85">TS-409 Pro Turbo NAS</a>. It has:</p>
<ul>
<li>low power consuption (ok, sleep mode: 18.8W; in operation: 44.6W)</li>
<li>RAID support (way more features than I would ever need: Single disk, RAID 0 (Disk Stripping), RAID 1 (Disk Mirroring), RAID 5, RAID 5+ Hot spare, RAID 6, and JBOD (Linear Disk Volume))</li>
<li>no encryption</li>
</ul>
<p>But I couldn&#8217;t find any other NAS server with a good price (less than 500€) and this combination of features so I guess I have to live without encrypted disks. If you have any experience with this box or know about another box which has all these features, please leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2008/02/15/should-i-buy-a-ts-409-pro-turbo-nas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best apple feature EVER!</title>
		<link>http://amazing-development.com/archives/2007/10/06/best-apple-feature-ever/</link>
		<comments>http://amazing-development.com/archives/2007/10/06/best-apple-feature-ever/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 12:04:06 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://amazing-development.com/archives/2007/10/06/best-apple-feature-ever/</guid>
		<description><![CDATA[According to an article by wired Apple added a special feature to their sexy metallic keyboards: accidental touches won&#8217;t activate caps lock. It&#8217;s the first step in a process to remove this useless and annoying key from all keyboards. I&#8217;ve remove my caps-lock key from a couple of keyboards already. But I did not know [...]]]></description>
			<content:encoded><![CDATA[<p>According to an <a href="http://blog.wired.com/gadgets/2007/10/apple-keyboard-.html">article by wired</a> Apple added a special feature to their sexy metallic keyboards: accidental touches won&#8217;t activate caps lock. It&#8217;s the first step in a process to remove this useless and annoying key from all keyboards.</p>
<p>I&#8217;ve remove my caps-lock key from a couple of keyboards already. But I did not know that a campaign called <a href="http://anticapslock.com/">anticAPSLOCK</a> existed which tries to ban caps-lock from future keyboards. Nice idea!</p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2007/10/06/best-apple-feature-ever/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bloglines beta rocks</title>
		<link>http://amazing-development.com/archives/2007/08/30/bloglines-beta-rocks/</link>
		<comments>http://amazing-development.com/archives/2007/08/30/bloglines-beta-rocks/#comments</comments>
		<pubDate>Thu, 30 Aug 2007 07:24:01 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://amazing-development.com/archives/2007/08/30/bloglines-beta-rocks/</guid>
		<description><![CDATA[Thanks to Sonja I found out, that bloglines launched the new beta for their feed reader under beta.bloglines.com. It looks very similar to the old app with a lot of added AJAX. But they fixed at least one major annoyance: if you open a feed with a lot of unread messages only the ones you [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to <a href="http://daily.delusions.de/archives/2007/08/29/bloglines-beta/">Sonja</a> I found out, that bloglines launched the new beta for their feed reader under <a href="http://beta.bloglines.com/">beta.bloglines.com</a>. </p>
<p>It looks very similar to the old app with a lot of added AJAX. But they fixed at least one major annoyance: if you open a feed with a lot of unread messages only the ones you have actually seen are marked as read. Nice, very nice&#8230; And bonus points for calling it &#8220;βloglines&#8221; <img src='http://amazing-development.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><i>Update 6.9.2007:</i><br />
As far as I could tell βloglines has all the original features but one: the &#8220;keep new&#8221; checkbox. I use this very feature quite often to mark important posts and was thinking about switching back to the old version but my <a href="http://www.bloglines.com/forums/read.php?25,3806">prayers</a> were answered today:</p>
<blockquote><p><b>What happened to &#8220;Keep As New&#8221;?</b><br />
We have renamed &#8220;Keep As New&#8221; to &#8220;Pinned&#8221;. It can be toggled by clicking on the pin icon in the lower left of an article (or using the &#8220;n&#8221; hotkey). Your previous &#8220;Keep As New&#8221; articles should all be transparently available in the Beta as &#8220;Pinned&#8221; articles.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2007/08/30/bloglines-beta-rocks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>innovative image resizing algorithm</title>
		<link>http://amazing-development.com/archives/2007/08/28/innovative-image-resizing-algorithm/</link>
		<comments>http://amazing-development.com/archives/2007/08/28/innovative-image-resizing-algorithm/#comments</comments>
		<pubDate>Tue, 28 Aug 2007 18:48:02 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://amazing-development.com/archives/2007/08/28/innovative-image-resizing-algorithm/</guid>
		<description><![CDATA[The video demonstrates a new way of resizing images invented by Dr. Ariel Shamir and Dr. Shai Avidan. More information can be found here. I tried to download the paper mentioned in the video, but with 1.18K/s the 20M would take 5h and I don&#8217;t want to wait that long. I guess others are downloading [...]]]></description>
			<content:encoded><![CDATA[<p><object style="float:right; padding-left: 2em;" width="425" height="350"><param name="movie" value="http://www.youtube.com/v/qadw0BRKeMk"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/qadw0BRKeMk" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>The video demonstrates a new way of resizing images invented by Dr. Ariel Shamir and Dr. Shai Avidan.</p>
<p>More information can be found <a href="http://www.faculty.idc.ac.il/arik/">here</a>. I tried to <a href="http://www.faculty.idc.ac.il/arik/imret.pdf">download the paper</a> mentioned in the video, but with 1.18K/s the 20M would take 5h and I don&#8217;t want to wait that long. </p>
<p>I guess others are downloading the paper, too <img src='http://amazing-development.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2007/08/28/innovative-image-resizing-algorithm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to automatically add a bcc in Gmail</title>
		<link>http://amazing-development.com/archives/2007/08/28/add-bcc-in-gmail/</link>
		<comments>http://amazing-development.com/archives/2007/08/28/add-bcc-in-gmail/#comments</comments>
		<pubDate>Tue, 28 Aug 2007 08:59:45 +0000</pubDate>
		<dc:creator>Frank Spychalski</dc:creator>
				<category><![CDATA[Computer]]></category>

		<guid isPermaLink="false">http://amazing-development.com/archives/2007/08/28/add-bcc-in-gmail/</guid>
		<description><![CDATA[Am I the first person who would like to add a bcc to all outgoing mails in GMail? I just spent some time searching through the settings and looking for a Greasemonkey scripts or firefox plugins which might do the trick. But I found nothing. Not a single tool. Update 17.9.07: Thanks to &#8220;themaniac&#8221; I [...]]]></description>
			<content:encoded><![CDATA[<p>Am I the first person who would like to add a <tt>bcc</tt> to all outgoing mails in GMail? I just spent some time searching through the settings and looking for a Greasemonkey scripts or firefox plugins which might do the trick. But I found nothing. Not a single tool.</p>
<p><i>Update 17.9.07:</i><br />
Thanks to &#8220;themaniac&#8221; I installed <a href="http://userscripts.org/scripts/show/2255">this</a> <a href="https://addons.mozilla.org/de/firefox/addon/748">Greasemonkey</a> script which works perfectly. I was a little bit vexed because I couldn&#8217;t find a way to configure the address where the bcc should be sent to. The simple solution: a popup asks for the address the first time a mail is sent <img src='http://amazing-development.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>There is no <tt>bcc</tt> header but the address I use to receive the bcc&#8217;ed mails appears in the <tt>received</tt> header, so I added these lines to my sieve script to move these mails into the Sent folder.</p>
<pre>
# bcc&apos;ed mail from gmail
if address &#58;contains &quot;Received&quot; &quot;<i>xxx@yyy.de</i>&quot; {
  fileinto &quot;INBOX.Sent&quot;;
  stop;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://amazing-development.com/archives/2007/08/28/add-bcc-in-gmail/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
