<?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>workbench @ haefelinger.it</title>
	<atom:link href="http://workbench.haefelinger.it/feed" rel="self" type="application/rss+xml" />
	<link>http://workbench.haefelinger.it</link>
	<description>Notes, thouhts and other stuff on software development</description>
	<lastBuildDate>Thu, 28 Jul 2011 20:25:40 +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>Truly mind boggling ..</title>
		<link>http://workbench.haefelinger.it/archives/184</link>
		<comments>http://workbench.haefelinger.it/archives/184#comments</comments>
		<pubDate>Thu, 28 Jul 2011 19:55:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=184</guid>
		<description><![CDATA[Inspired by listening to a Podcast about Lisp and since there is quite some hype now around functional programming, I started again to read some Lisp classics, especially The Seasoned Schemer, a truly marvelous book. 
Now, every Lisp dialect I know contains at least three fundamental procedures, namely cons, car and cdr. And so does [...]]]></description>
			<content:encoded><![CDATA[<p>Inspired by listening to a <a href="http://www.heise.de/developer/artikel/Episode-28-Bedeutung-Einsatzszenarien-und-Perspektive-von-Lisp-1194789.html">Podcast about Lisp</a> and since there is quite some hype now around functional programming, I started again to read some Lisp classics, especially <em>The Seasoned Schemer</em>, a truly marvelous book. </p>
<p>Now, every Lisp dialect I know contains at least three fundamental procedures, namely <code>cons</code>, <code>car</code> and <code>cdr</code>. And so does <a href="http://en.wikipedia.org/wiki/Scheme_(programming_language)">Scheme</a>, a main Lisp dialect. In the spirit of <em>The Seasoned Schemer</em>, we can describe what <code>cons</code>, <code>car</code> and <code>cdr</code> do, namely</p>
<pre>
(car (cons 1 2))
=> 1
(cdr (cons 1 2))
=> 2
</pre>
<p>So far there is nothing mind boggling, admitted. Assume now that there is no car, cdr and no cons. All we have is <code>lambda</code> and <code>define</code> where <code>lambda</code> allows us to express a anonymous procedure and where <code>define</code> allows us to give something a name. Just charged with this, can we still implement <code>cons</code>, <code>car</code> and <code>cdr</code>?</p>
<p>The boggling thing is, yes we can. Here we go:</p>
<pre>
(define cons (lambda (a b) (lambda (m) (m a b))))
(define car  (lambda (z)    (z (lambda (x y) x))))
(define cdr  (lambda (z)    (z (lambda (x y) y))))
</pre>
<p>Let&#8217;s see whether this works as expected:</p>
<pre>
;; declare a variable z to contain a tuple (1,2)
(define z (cons 1 2))
;; try car and cdr
(car z)
=> 1
(cdr z)
=> 2
</pre>
<p>It works. It&#8217;s mind boggling, isn&#8217;t it?</p>
<p>So how does it work anyway? The result of <code>(cons ..)</code> is just a procedure which happens to remember the arguments passed. That procedure is a value like any other. However, that procedure value can also be called with one argument which is expected to be a procedure again. Let&#8217;s assume that we have a procedure foo somewhere, then we can do something like ((cons 1 2) foo) and we end up in (foo 1 2), as by the definition of cons above.</p>
<p>So if we want to express car, then foo must be (lambda (x y) x) while in the case of cdr, foo becomes (lambda (x y) y). All what is left is to define car as procedure with one argument and calling that argument with foo, i.e. </p>
<pre>
(car z) =>
(car (cons 1 2)) =>
((cons 1 2) (lambda (x y) x)) =>
(lambda (1 2) 1) =>
1
</pre>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/184/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wireshark &amp; Snow Leopard</title>
		<link>http://workbench.haefelinger.it/archives/181</link>
		<comments>http://workbench.haefelinger.it/archives/181#comments</comments>
		<pubDate>Wed, 07 Apr 2010 07:02:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[macosx]]></category>
		<category><![CDATA[wireshark]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=181</guid>
		<description><![CDATA[Wireshark failed to start after having upgraded to Snow Leopard, the latest incarnation of Mac OS X.
This is a well known bug. To make Wireshark run again, try to delete your local X11 font cache, i.e. 

$ rm -rf $HOME/.fontconfig

That should do it.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Wireshark">Wireshark</a> failed to start after having upgraded to Snow Leopard, the latest incarnation of Mac OS X.</p>
<p><a href="https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3969">This is a well known bug</a>. To make Wireshark run again, try to delete your local X11 font cache, i.e. </p>
<pre lang="bash">
$ rm -rf $HOME/.fontconfig
</pre>
<p>That should do it.</p>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/181/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding A Plesk Event Handler</title>
		<link>http://workbench.haefelinger.it/archives/177</link>
		<comments>http://workbench.haefelinger.it/archives/177#comments</comments>
		<pubDate>Thu, 25 Feb 2010 15:46:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[plesk]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=177</guid>
		<description><![CDATA[Plesk allows you to have a customized event handler. This is a rather useful feature cause it allows you to customize the way Plesk behaves. Take the meanwhile famous vhost_ssl.conf bug. Although documented in the manual, Plesk will not recognize an additional configuration file for an SSL/TLS port in a subdomain. Solutions have been proposed [...]]]></description>
			<content:encoded><![CDATA[<p>Plesk allows you to have a customized event handler. This is a rather useful feature cause it allows you to customize the way Plesk behaves. Take the meanwhile famous <code>vhost_ssl.conf </code>bug. Although documented in the manual, Plesk will not recognize an additional configuration file for an SSL/TLS port in a subdomain. Solutions have been proposed to manually change vhost.conf. That&#8217;s a forbidden fruit however, cause all it needs is a <code>websrvmng --reconfigure-all</code> to eliminate your changes. But as mentioned, just install a event handler which is triggered when a subdomain is created or updated. Such an event handler can be just a plain shell script.</p>
<p>However, when I tried to install such an event handler beast via <code>Plesk | Server | Event Handler | Add New Event Handler</code> I ended up in an error message like <code>Error: Some fields are empty or contain an improper value</code> for which add did not have any explanation. Much, very much later, I discovered that I had copied the path of my script to be executed via copy-n-paste into that Plesk command field. That copy contained whitespace at the end of the command, i.e. something like</p>
<pre>
/path/to/handler.sh\n
</pre>
<p>which is enough to make Please grumpy. What&#8217;s more, it&#8217;s all about whitespace (blanks, tabs, newline etc) at the end of a command while whitespace within the command is accept without any rumble:</p>
<pre>
echo > /dev/null
</pre>
<p>That works fine. </p>
<p><strong>Summary: </strong></p>
<blockquote><p>When entering an event handler command, make sure that there is no whitespace at the end of the command.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/177/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcement  &#8211; Flaka 1.01 Released</title>
		<link>http://workbench.haefelinger.it/archives/170</link>
		<comments>http://workbench.haefelinger.it/archives/170#comments</comments>
		<pubDate>Wed, 24 Feb 2010 14:13:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[flaka]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=170</guid>
		<description><![CDATA[February 24th, 2010 &#8211; The Flaka project is pleased to announce the
release of Flaka 1.01, the first release of Flaka.
Flaka is an extension for Ant. A main project goal of Flaka is the
simplification of writing a build script. 
Flaka provides:
1. an expression language (Java Unified Expression Language)
2. well known programming elements (for, when, switch, choose, [...]]]></description>
			<content:encoded><![CDATA[<p><em>February 24th, 2010</em> &#8211; <strong>The <a href="http://workbench.haefelinger.it/flaka">Flaka project</a> is pleased to announce the<br />
release of Flaka 1.01, the first release of Flaka.</strong></p>
<p>Flaka is an extension for Ant. A main project goal of Flaka is the<br />
simplification of writing a build script. </p>
<p>Flaka provides:<br />
1. an expression language (Java Unified Expression Language)<br />
2. well known programming elements (for, when, switch, choose, ..)<br />
3. exception handling<br />
4. additional types, tasks and macros </p>
<p>A small teaser script to demonstrate some of those features:</p>
<pre>
&lt;project xmlns:c="antlib:it.haefelinger.flaka" name="Flaka" >
  &lt;c:logo>
    Hello #{ project.name ? project.name : ''}!
  &lt;/c:logo>
  &lt;c:for var=" f " in=" ''.tofile.list ">
    &lt;c:when test=" f.isfile ">
      &lt;c:echo>
        ;; report basename and modification time
        file #{f.name} last modified: #{ f.mtime }
      &lt;/c:echo>
    &lt;/c:when>
  &lt;/c:for>
&lt;/project>
</pre>
<p>Flaka&#8217;s Google Project Page is<br />
<a href="http://code.google.com/p/flaka">http://code.google.com/p/flaka</a></p>
<p>Manual<br />
<a href="http://flaka.googlecode.com/files/flaka.pdf">http://flaka.googlecode.com/files/flaka.pdf</a><br />
(* Part I of this manual contains a broad overview of<br />
features Flaka has been charged with *)</p>
<p>Jar (ready to be used &#8211; no additional dependencies required)<br />
<a href="http://flaka.googlecode.com/files/ant-flaka-1.01.jar">http://flaka.googlecode.com/files/ant-flaka-1.01.jar</a></p>
<p>Development Package (rebuild from scratch)<br />
<a href="http://flaka.googlecode.com/files/flaka-1.01.zip">http://flaka.googlecode.com/files/flaka-1.01.zip</a></p>
<p>Issues should be reported to:<br />
<a href="http://code.google.com/p/flaka/issues/list">http://code.google.com/p/flaka/issues/list</a></p>
<p>More information on Flaka at<br />
<a href="http://code.google.com/p/flaka ">http://code.google.com/p/flaka </a> ; and<br />
<a href="http://workbench.haefelinger.it/flaka">http://workbench.haefelinger.it/flaka</a></p>
<p>Regards,<br />
Wolfgang Häfelinger</p>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/170/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MacPorts, MySQL, PHP5 and that socket thing ..</title>
		<link>http://workbench.haefelinger.it/archives/162</link>
		<comments>http://workbench.haefelinger.it/archives/162#comments</comments>
		<pubDate>Sat, 13 Feb 2010 20:36:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[macosx]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=162</guid>
		<description><![CDATA[I&#8217;m using MacPorts to have a variety of Open-Source software on my computer. Amongst them MySQL and Apache&#8217;s web server with PHP. In addition I&#8217;m also running Wordpress, a popular blog software, and  Mediawiki, the software behind Wikipedia. Both applications are written in PHP and can be configured to use MySQL as database. 
I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m using MacPorts to have a variety of Open-Source software on my computer. Amongst them MySQL and Apache&#8217;s web server with PHP. In addition I&#8217;m also running Wordpress, a popular blog software, and  Mediawiki, the software behind Wikipedia. Both applications are written in PHP and can be configured to use MySQL as database. </p>
<p>I install those two web applications myself rather than using MacPorts to do so. The installation is basically nothing more than unzipping the distribution package and to modify the configuration files to make sure they connect to my MySQL database on my <em>localhost</em>. However, while installing Wordpress went smooth, I run into <em>database connection failures</em> when installing Mediawiki. It took me some time to figure out what is going on here.</p>
<p>If you have weird connection problems using PHP and MySQL then try one or both of the following solutions:</p>
<ul>
<li><strong>Solution</strong>: Use <code>127.0.0.1</code> instead of <code>localhost</code> as host of your MySQL database server. This has a rather surprising effect, see below.
</li>
<li><strong>Solution</strong>: Change your PHP&#8217;s configuration file, which is  <code>/opt/local/etc/php5/php.ini</code>, to contain the following two lines:
<ol>
<li>Tell PHP about the Unix domain socket to use
<pre>
   mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
</pre>
</li>
<li> In addtion make sure that PHP&#8217;s save mode is off (notice that this feature has been deprecated and removed in PHP 6), otherwise your previous modification will be gracefully ignored:
<pre>
    safe_mode = Off
</pre>
</li>
</ol>
<p>Notice that in addition you need to <strong>restart your Apache web server</strong> so that your changes are taken into account. You can do that with <code>apachectl restart</code>.
</li>
</ul>
<h4>Background Information</h4>
<p>Neither Mediawiki nor Wordpress (nor most other PHP based web application accessing MySQL) implement the gory details how to connect to a database. Usually they just delegate this to <code>mysql_connect();</code>, a API function provided by PHP.</p>
<p>PHP in turn uses the functionality of a (shared) library provided by MySQL, i.e. the MySQL driver. MySQL allows you to connect to the database via <strong>two routes</strong>:</p>
<ol>
<li>via <strong>Internet sockets</strong> (TCP/IP); and via</li>
<li><strong>UNIX domain sockets</strong></li>
</ol>
<p>So, how does one choose between this two routes? The answer is rather surprising. MySQL decided to give <em>localhost</em> a new meaning. If you specify <code>localhost</code>, then the UNIX domain socket route is chosen. If you say <code>127.0.0.1</code> instead, then you connect via an Internet socket. While this is probably the most natural thing for those MySQL folks, it&#8217;s a rather confusing fact for all other humans. It is rather carved deep in our brain for years now that  <code>127.0.0.1</code> and <code>localhost</code> is the same thing.</p>
<p>After I have changed both Mediawiki and Wordpress to use <code>localhost</code> I had for the first time a situation where both web applications behaved in the very same way. <em>They both did not work</em>. Then, when I changed to <code>127.0.0.1</code>, both worked fine. Btw, notice that <code>localhost</code> is the default <em>hostname</em> used by Mediawiki while  <code>127.0.0.1</code> is the default <em>host</em> suggested by Wordpress.</p>
<p>Using <code>127.0.0.1</code> is usually fine, however I <strong>do want</strong> to use the UNIX socket and I was wondering what went wrong.</p>
<p>The problem is that MacPorts MySQL port patches the original MySQL sources to use socket <code>/opt/local/var/run/mysql5/mysqld.sock</code> instead <code>/tmp/mysql.sock</code>. This change is not particular well documented. One would assume that this kind of change goes into an appropriate <code>my.conf</code> configuration file. That&#8217;s actually not the case. Even worse, MacPorts MySQL port does not even ship with such a configuration file. </p>
<p>Changing the default socket location is one thing, not telling us and the PHP5 maintainer this is another sin. So, while MySQL happily uses that weird socket location, PHP5 still expects <code>/tmp/mysql.sock</code>. In other words, PHP and MySQL are not working out of the box when using MacPorts. At least not when relying on Unix domain sockets. It does work when using Internet domain sockets cause that default port, being 3306, has not changed. Btw, the MacPorts maintainer of PHP and MySQL is one and the same person. Sounds familiar? Yes, I also have been thinking about <em>Dr. Jekyll and Mr. Hyde</em>. No serious. I assume that there is a serious reason why this does not work out of the box as we all wish. I just don&#8217;t get it.</p>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/162/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plesk</title>
		<link>http://workbench.haefelinger.it/archives/156</link>
		<comments>http://workbench.haefelinger.it/archives/156#comments</comments>
		<pubDate>Fri, 12 Feb 2010 11:17:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache httpd]]></category>
		<category><![CDATA[plesk]]></category>
		<category><![CDATA[apache_httpd]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=156</guid>
		<description><![CDATA[Plesk is kind of freaky creature. Working with it can be a frustrating experience. Not when working with the graphical web interface. Used in that way, it&#8217;s easy to create/modify/remove sub-domains and other important tasks. However, the guys from Paralles do not expect apache to server something else than static pages. How else can it [...]]]></description>
			<content:encoded><![CDATA[<p>Plesk is kind of freaky creature. Working with it can be a frustrating experience. Not when working with the graphical web interface. Used in that way, it&#8217;s easy to create/modify/remove sub-domains and other important tasks. However, the guys from Paralles do not expect apache to server something else than static pages. How else can it be explained, that touching a vhost.conf file is something that is described in appendix A, A<em>dvanced Features</em>, in the Plesk manual?</p>
<p>So just assume that you have create a new subdomain and you want to make your CSS files available via <code>/css</code> instead of going via some hardwired domain URL. So all you want to have is an alias like</p>
<pre>
Alias /css "/path/to/my/css/folder"
</pre>
<p>Ok, but where to enter? When you look at the folder structure and files created by Plesk it is by no means clear what to do. But hey, what are manuals good for anyway? What you discover is that Plesk created a folder like</p>
<pre>
  /path/to/<strong>domain</strong>/subdomains/<strong>subdomain</strong>/conf
</pre>
<p>for your <em>subdomain</em>. The folder is empty. <strong>It would be really great if Plesk would in addition create a README file in that folder.</strong> That file would then state something like this:<br />
<i><br />
To configure your subdomain, add herein a file name vhost.conf. Put any Apache configurations in this file you like but be aware that this file is being included in a virtual host definition.</p>
<p>Once you have have added vhost.conf, please reconfigure this subdomain so that your file is taken into account. You do this by</p>
<pre>
 $ /usr/local/psa/admin/sbin/websrvmng --reconfigure-all
</pre>
<p>You need to do this only once, because this command does nothing more than insert a Include statement in /path/to/<strong>domain</strong>/conf/http.include. But refrain from do it manually because websrvmng will rewrite that file from scratch on the next run.</p>
<p>Oh, and btw notice that regardless of what our manual says you can only have a vhost.conf in a subdomain&#8217;s conf folder. Any vhost_ssl.conf therein is not taken into account.
</pre>
<p>Good luck and have a nice day.<br />
</i><br />
Unfortunately, that README file is missing.  Unfortunately.</p>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/156/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git-svn article</title>
		<link>http://workbench.haefelinger.it/archives/152</link>
		<comments>http://workbench.haefelinger.it/archives/152#comments</comments>
		<pubDate>Fri, 05 Feb 2010 19:40:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[git-svn]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=152</guid>
		<description><![CDATA[Working with git-svn without upstream (= subversion) branches is kind of no-brainer. It starts to be a different story when branches are involved. I wrote a rather small article about some experiences and experiments taken with git-svn. Please download this article for reading by following the link(s): PDF. HTML.
]]></description>
			<content:encoded><![CDATA[<p>Working with <code>git-svn</code> without upstream (= subversion) branches is kind of no-brainer. It starts to be a different story when branches are involved. I wrote a rather small article about some experiences and experiments taken with <code>git-svn</code>. Please download this article for reading by following the link(s): <a href="http://download.haefelinger.it/articles/gitsvn/latest/git-svn.pdf">PDF</a>. HTML.</p>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/152/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XeTeX: &#8220;Failed to convert input string to UTF16&#8243;</title>
		<link>http://workbench.haefelinger.it/archives/148</link>
		<comments>http://workbench.haefelinger.it/archives/148#comments</comments>
		<pubDate>Fri, 05 Feb 2010 13:56:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[tex]]></category>
		<category><![CDATA[xetex]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=148</guid>
		<description><![CDATA[XeTeX allows me to hack away directly in Unicode. But what&#8217;s even more cool is that I can just use the fonts installed on my system without diving into some of TeX most darkest corners. However, when I compiled a larger document with xelatex, I faced some strange warnings like

This is XeTeX, Version 3.1415926-2.2-0.9995.2 (TeX [...]]]></description>
			<content:encoded><![CDATA[<p>XeTeX allows me to hack away directly in Unicode. But what&#8217;s even more cool is that I can just use the fonts installed on my system without diving into some of TeX most darkest corners. However, when I compiled a larger document with <code>xelatex</code>, I faced some strange warnings like</p>
<pre>
This is XeTeX, Version 3.1415926-2.2-0.9995.2 (TeX Live 2009)
entering extended mode
[..]
** WARNING ** Failed to convert input string to UTF16...
</pre>
<p>and I had no explanation where this might come from. After a <em>divide-and-conquer</em> debugging session, it turned out that my input was just fine. It was rather a setting that caused this warning:</p>
<pre>
\hypersetup{
     ..
     unicode=true          %  causes UTF-16 warning
}
</pre>
<p>After having removed that line, a<strong>ll UTF-16 warnings are gone</strong>. </p>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/148/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iSync Plugin</title>
		<link>http://workbench.haefelinger.it/archives/137</link>
		<comments>http://workbench.haefelinger.it/archives/137#comments</comments>
		<pubDate>Tue, 02 Feb 2010 10:25:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=137</guid>
		<description><![CDATA[Uploaded an iSync plugin for the Nokia 2720 (fold) mobile phone. When plugged in, it will become easy to synchronize addresses, events etc. between the mobile phone and your Mac. Just enable Bluetooth on your Mac and on your phone and make sure that they are paired. Then, start-up iSync and add a device. It [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://download.haefelinger.it/isync-nokia-2720/latest/">Uploaded</a> an iSync plugin for the Nokia 2720 (fold) mobile phone. When plugged in, it will become easy to synchronize addresses, events etc. between the mobile phone and your Mac. Just enable Bluetooth on your Mac and on your phone and make sure that they are paired. Then, start-up iSync and add a device. It should find automatically your mobile. Otherwise it will report that your mobile is not supported. Once the device is added, just press the big round button to start syncing.<br />
 <div class="wp-caption aligncenter" style="width: 433px"><img alt="iSync screenshot with device Nokia 2720 added." src="http://download.haefelinger.it/isync-nokia-2720/latest/isync-nokia-screenshot.png" title="iSync screenshot" width="423" height="132" /><p class="wp-caption-text">iSync screenshot with device Nokia 2720 added.</p></div></p>
<p>The easiest way to install this plugin is by using the <a href="http://download.haefelinger.it/isync-nokia-2720/latest/nokia-2720a-2.dmg">nokia-2720a-2.dmg</a> installer package. When being used, the plugin will be installed in folder <code>/Library/PhonePlugins/</code>. To support other installation locations, other package formats have been <a href="http://download.haefelinger.it/isync-nokia-2720/latest/">uploaded</a> as well. To support a <em>private</em> installation, create folder <code>~/Library/PhonePlugins</code> then download an untar <a href="http://download.haefelinger.it/isync-nokia-2720/latest/nokia-2720a-2.phoneplugin.tgz">package nokia-2720a-2.phoneplugin.tgz</a> within this folder. Eventually restart iSync and try adding your device again.</p>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/137/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About Reseting CSS Properties</title>
		<link>http://workbench.haefelinger.it/archives/128</link>
		<comments>http://workbench.haefelinger.it/archives/128#comments</comments>
		<pubDate>Mon, 30 Nov 2009 10:26:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[webdesign]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://workbench.haefelinger.it/?p=128</guid>
		<description><![CDATA[Designing a layout using HTML/CSS is not a job for the faint hearted. Quit often there is a clash with built-in properties which are not consistent defined in all browsers. This led to the approach of using a style-sheet which resets CSS properties. The style-sheet populated by Eric Meyer, a rather well known CSS styling [...]]]></description>
			<content:encoded><![CDATA[<p>Designing a layout using HTML/CSS is not a job for the faint hearted. Quit often there is a clash with built-in properties which are not consistent defined in all browsers. This led to the approach of using a style-sheet which <em>resets</em> CSS properties. The style-sheet populated by <a href="http://meyerweb.com/">Eric Meyer</a>, a rather well known CSS styling guru, is for example given <a href="http://meyerweb.com/eric/tools/css/reset/">here</a>.</p>
<p>Eventually I would like to say that it did not work out for me. All too often I found myself trying to set the default values I have just discarded in my <code>reset.css</code> style-sheet. Ignoring inconsistencies for the moment, the I would like to state that usually all default properties are rather wisely chosen and contain exactly what you want when <strong>writing</strong> an article, a posting whatever.</p>
<p>Inconsistencies start to matter when <strong>designing</strong> a website. Then browser inconsistencies can have disastrous effects (like two <code>divs</code> are not side-by-side floated cause they don&#8217;t fit in the given width by perhaps just one pixel). However it&#8217;s just a small part of the website which needs <em>precision</em> rendering and not the whole website.</p>
<p>So, instead of setting the padding of <strong>all</strong> <code>divs</code> to be </p>
<pre>
div { padding: 1px 0; }  /* avoid margin collapsing */
</pre>
<p>I propose to reset only where it matters:</p>
<pre>
#header, [..], #footer, #header div, [..], #footer div, #content-main {
  padding: 1px 0; /* avoid margin collapsing */
}
</pre>
<p>Please notice that divs are <em>reset</em> in all grid elements except within #content-main (supposed to hold your page its informational content). Therein, default values are just fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://workbench.haefelinger.it/archives/128/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

