<?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>AGYNAMIX &#187; english</title>
	<atom:link href="http://www.agynamix.de/blog/category/english/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agynamix.de</link>
	<description>Passionate Software</description>
	<lastBuildDate>Wed, 01 Sep 2010 11:56:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Click2Dial with your Snom Phone and Mac Address Book</title>
		<link>http://www.agynamix.de/blog/click2dial-with-your-snom-phone-and-mac-address-book/</link>
		<comments>http://www.agynamix.de/blog/click2dial-with-your-snom-phone-and-mac-address-book/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 11:52:56 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Telefonie]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[FritzBox Snom phone]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=733</guid>
		<description><![CDATA[A while back my old trusty FritzBox (PBX/router/fax/whatever) went south which actually was a good thing. Shopping for a new model I noticed that the newer versions of it (from 7170 onwards) support IP phones like the Snom IP phones I had lying around.
When I had separate office rooms I used an Asterisk (Trixbox, in [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>A while back my old trusty FritzBox (PBX/router/fax/whatever) went south which actually was a good thing. Shopping for a new model I noticed that the newer versions of it (from 7170 onwards) support IP phones like the Snom IP phones I had lying around.</p>
<p>When I had separate office rooms I used an Asterisk (Trixbox, in fact) pbx and Snom phones with it. After a switched solely to FritzBox these Snom&#8217;s lied dormant- until now.</p>
<p>One thing I liked about the Asterisk solution was a quick way to dial a phone number from an address book. Back then I used Windows machines with Outlook and the free Asterisk Outlook Tapi plugin that was available.</p>
<p>Now the Fritzbox does not support click2dial for IP phone (at least I have not found this feature) but the Snom phone supports command URLs.</p>
<p>So the URL:</p>
<pre>http://snom-user:snom-pw@snom-ip-address/command.htm?number=123456</pre>
<p>will dial &#8220;123456&#8243; from your phone.</p>
<p><strong>Important Note:</strong> To make this work you must disable &#8220;Hidden Features&#8221; in the Snom QoS/Security settings (I use firmware version 8 with my Snom 360). If these are enabled then basically these action URLs don&#8217;t work.</p>
<p>Now you can test the above URL from any web browser and test you got this end working.</p>
<p>The other thing is the connection with Apple Addressbook.</p>
<p>For this I have copied an AppleScript from <a href="http://hints.macworld.com/article.php?story=20040317010729892" target="_blank">here</a> and adapted to my needs:</p>
<pre>
<div class="codesnip-container" >
<div class="applescript codesnip" style="font-family:monospace;"><span class="coMULTI">(*
&nbsp;Automatic SNOM Dialer v0.1
&nbsp;Torsten Uhlmann, tuhlmann@agynamix.de
&nbsp;based on Automatic Vonage Dialer by Aaron Freimark, abf@mac.com, March 16, 2004

&nbsp;Put this script into your &quot;Address Book Plugins&quot; folder in your ~/Library folder.
&nbsp;Only works in the US with this version

&nbsp;*** YOU MUST Modify the first three lines below with your info ***
*)</span>

<span class="kw3">property</span> mySnomLogin : <span class="st0">&quot;username&quot;</span>
<span class="kw3">property</span> mySnomPassword : <span class="st0">&quot;password&quot;</span>
<span class="kw3">property</span> mySnomPhoneAddress : <span class="st0">&quot;ip-address&quot;</span>

using terms <span class="kw3">from</span> <span class="kw1">application</span> <span class="st0">&quot;Address Book&quot;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">on</span> action <span class="kw3">property</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">return</span> <span class="st0">&quot;phone&quot;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">end</span> action <span class="kw3">property</span>
&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">on</span> action title for pers <span class="kw3">with</span> fone
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">return</span> <span class="st0">&quot;Dial with SNOM&quot;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">end</span> action title
&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">on</span> should enable action for pers <span class="kw3">with</span> fone
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">if</span> label <span class="kw3">of</span> fone <span class="kw2">contains</span> <span class="st0">&quot;fax&quot;</span> <span class="kw3">then</span> <span class="kw3">return</span> <span class="kw1">false</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">return</span> <span class="kw1">true</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">end</span> should enable action
&nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">on</span> perform action for pers <span class="kw3">with</span> fone
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">set</span> numToDial <span class="kw3">to</span> <span class="br0">&#40;</span>value <span class="kw3">of</span> fone<span class="br0">&#41;</span> <span class="kw2">as</span> <span class="kw1">string</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">--Uncomment the following two lines to confirm the number</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">--display dialog &quot;So you want me to call?&quot; default answer numToDial buttons {&quot;OK&quot;}</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">--set numToDial to text returned of the result</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">--Erase everything that's not a digit from the phone number</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">set</span> cleanedNumber <span class="kw3">to</span> CleanTheNumber<span class="br0">&#40;</span>numToDial<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">set</span> theURL <span class="kw3">to</span> <span class="st0">&quot;http://&quot;</span> <span class="sy0">&amp;</span> mySnomLogin <span class="sy0">&amp;</span> <span class="st0">&quot;:&quot;</span> <span class="sy0">&amp;</span> mySnomPassword <span class="sy0">&amp;</span> <span class="st0">&quot;@&quot;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">set</span> theURL <span class="kw3">to</span> theURL <span class="sy0">&amp;</span> mySnomPhoneAddress <span class="sy0">&amp;</span> <span class="st0">&quot;/command.htm?number=&quot;</span> <span class="sy0">&amp;</span> cleanedNumber
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">-- Use curl to hit the URL and dial the number &nbsp;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">set</span> errorCode <span class="kw3">to</span> <span class="kw1">do shell script</span> <span class="st0">&quot;curl <span class="es0">\&quot;</span>&quot;</span> <span class="sy0">&amp;</span> theURL <span class="sy0">&amp;</span> <span class="st0">&quot;<span class="es0">\&quot;</span>&quot;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">beep</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display dialog</span> <span class="st0">&quot;Info: Dialing &quot;</span> <span class="sy0">&amp;</span> numToDial <span class="kw1">buttons</span> <span class="br0">&#123;</span><span class="st0">&quot;OK&quot;</span><span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">--If there was an error, return a message.</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">if</span> <span class="br0">&#40;</span>characters 1 <span class="kw2">thru</span> 3 <span class="kw3">of</span> errorCode<span class="br0">&#41;</span> <span class="kw2">as</span> <span class="kw1">string</span> <span class="kw3">is</span> <span class="kw2">not</span> <span class="kw2">equal</span> <span class="kw3">to</span> <span class="st0">&quot;000&quot;</span> <span class="kw3">then</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">display dialog</span> <span class="st0">&quot;Error: &quot;</span> <span class="sy0">&amp;</span> errorCode <span class="kw1">buttons</span> <span class="br0">&#123;</span><span class="st0">&quot;OK&quot;</span><span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">end</span> <span class="kw3">if</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">end</span> perform action
&nbsp; &nbsp; &nbsp; &nbsp; 
<span class="kw3">end</span> using terms <span class="kw3">from</span>

<span class="kw3">on</span> CleanTheNumber<span class="br0">&#40;</span>numToDial<span class="br0">&#41;</span> <span class="co1">-- remove punctuation from a string, leaving just the number</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">set</span> theDigits <span class="kw3">to</span> <span class="br0">&#123;</span><span class="st0">&quot;0&quot;</span>, <span class="st0">&quot;1&quot;</span>, <span class="st0">&quot;2&quot;</span>, <span class="st0">&quot;3&quot;</span>, <span class="st0">&quot;4&quot;</span>, <span class="st0">&quot;5&quot;</span>, <span class="st0">&quot;6&quot;</span>, <span class="st0">&quot;7&quot;</span>, <span class="st0">&quot;8&quot;</span>, <span class="st0">&quot;9&quot;</span><span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">set</span> cleanedNumber <span class="kw3">to</span> <span class="st0">&quot;&quot;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">repeat</span> <span class="kw3">with</span> i <span class="kw3">from</span> 1 <span class="kw3">to</span> length <span class="kw3">of</span> numToDial
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">set</span> j <span class="kw3">to</span> <span class="br0">&#40;</span>character i <span class="kw3">of</span> numToDial<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">if</span> j <span class="kw3">is</span> <span class="kw3">in</span> theDigits <span class="kw3">then</span> <span class="kw3">set</span> cleanedNumber <span class="kw3">to</span> cleanedNumber <span class="sy0">&amp;</span> j
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">end</span> <span class="kw3">repeat</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">return</span> cleanedNumber
<span class="kw3">end</span> CleanTheNumber</div>
</div>
</pre>
<p>Open the AppleScript Editor and copy and paste the above script. Save the script into &#8220;Library/Address Book Plug-Ins&#8221; in your home directory. After you restart the address book application and left click on the text next to a phone number there should be a line in the appearing menu that reads &#8220;Dial with SNOM&#8221;.</p>
<p>Now click there and let the dial begin&#8230;</p>
<p>Enjoy,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/click2dial-with-your-snom-phone-and-mac-address-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synchronize your media library with iTunes</title>
		<link>http://www.agynamix.de/blog/synchronize-your-media-library-with-itunes/</link>
		<comments>http://www.agynamix.de/blog/synchronize-your-media-library-with-itunes/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 18:12:28 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[media]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=717</guid>
		<description><![CDATA[This article will show you how you can synchronize your media library (movies, tv shows and iTunes shows at the moment) with iTunes.
Background:
To understand my solution I&#8217;d like to share with you how my media setup works:
I use eyeTV (great program btw) to record movies and tv shows. I then use Toast to cut out [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>This article will show you how you can synchronize your media library (movies, tv shows and iTunes shows at the moment) with iTunes.</p>
<h3>Background:</h3>
<p>To understand my solution I&#8217;d like to share with you how my media setup works:</p>
<p>I use eyeTV (great program btw) to record movies and tv shows. I then use Toast to cut out commercials and convert the file into Apple TV format. I then copy the media files unto a NAS (Drobo in my case) into a predefined directory structure (see below).</p>
<p>To watch shows through Apple TV I first have to import them into my Mac Mini (the same that records the shows). I then have the Mac Mini connected to the Apple TV and let it stream media into the living room. So for that purpose the Apple TV is just an overly expensive iTunes connector that just works&#8230;</p>
<h3>How does it work:</h3>
<p>In order to have an automated process (synchronize your current media library with the iTunes library) I have written a small piece of software that does just that. iTunesMediaImport is a Java based cross platform software that is freely available at <a href="http://code.google.com/p/itunesmediaimport/">http://code.google.com/p/itunesmediaimport/</a></p>
<p>When it runs it parses a defined directory structure, dissects the file and directory name and creates a proper iTunes entry. iTunesMediaImport is started from a command line terminal.</p>
<h3>Directory Structure:</h3>
<p>The important thing is that the media archive directory structure is what iTunesMediaImport expects. It knows 3 different kind of media types: iTunes shows, movies you recorded yourself and self recorded TV shows.</p>
<h4>iTunes Shows:</h4>
<p>For iTunes shows you point the variable &#8220;itunesShowsPath.x&#8221; (x is a unique number) straight to the &#8220;TV shows&#8221; folder. The content of that folder should be the folders of your iTunes shows.</p>
<h4>Movies:</h4>
<p>For movies point &#8220;moviePath.x&#8221; to a folder that contains genre folders. Each genre folder contains the movie files that you file under that genre.</p>
<p>So in my case I point the variable (from etc/mediaimport.properties) to: &#8220;/Volumes/Drobo/Mediathek/Movies&#8221;. This folder contains genre folders like &#8220;Adventure&#8221;, &#8220;Action&#8221;, &#8220;Comedy&#8221;. You can have as many and name them as you see fit. When the movie is imported into iTunes it will be filed under a genre category with that name. Then the genre folder contains your movie files. The file name of the movie will be used as it&#8217;s name in iTunes.</p>
<h4>TV Shows:</h4>
<p>TV shows are handled much like movies except there is another directory layer, the season folder.</p>
<p>In mediaimport.properties you find a key &#8220;tvSeriesPath.x&#8221; that points to a directory that forms the root of my tv shows archive, &#8220;/Volumes/Drobo/Mediathek/TV Series&#8221; in my case.</p>
<p>Then this folder contains the names of my tv shows, like &#8220;Bones&#8221;, &#8220;Stargate&#8221; or whatever your poison is. Now under that folder you need to define another folder named &#8220;S&lt;season number&gt;&#8221;, so &#8220;Stargate/S3/&#8221; would be the 3rd season of Stargate.</p>
<p>Under the season folder  you file the tv shows that belong to that season, for instance: &#8220;Stargate 11 &#8211; Tokra.m4v&#8221;. iTunesMediaImport will parse the file name backwards and stop at the first dash (&#8216;-&#8217;) it finds. If it finds a number after the dash (looking towards the beginning of the filename) that number will become the show number in iTunes. The part after the dash until the end of the file name (except the .m4v extension) will become the name of the show.</p>
<p>&#8212;</p>
<p>iTunesMediaImport will keep a log of media files it has added into iTunes in order to avoid processing them over and over again. It will also delete shows from iTunes that have been deleted or renamed in your archive.</p>
<p>I invite you to give it a try, if you want you are welcome to contribute to it on Google Code. There&#8217;s also a forum for it <a href="http://helpdesk.agynamix.de/index.php?pg=forums.topics&amp;id=6">here</a>.</p>
<p>Have fun!</p>
<h4>References:</h4>
<ul>
<li>iTunesMediaImport on Google Code: <a href="http://code.google.com/p/itunesmediaimport/">http://code.google.com/p/itunesmediaimport/</a></li>
<li>iTunesMediaImport forum: <a href="http://helpdesk.agynamix.de/index.php?pg=forums.topics&amp;id=6">http://helpdesk.agynamix.de/index.php?pg=forums.topics&amp;id=6</a></li>
<li>My website: <a href="http://www.agynamix.de">http://www.agynamix.de</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/synchronize-your-media-library-with-itunes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java Tip: How to find the location of a class being executed</title>
		<link>http://www.agynamix.de/blog/find-location-of-a-class/</link>
		<comments>http://www.agynamix.de/blog/find-location-of-a-class/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 13:51:25 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=223</guid>
		<description><![CDATA[Today I wanted to find the location of a class file to make sure the class is really called from a specific jar file (old project with historically grown piles of archaeologically valuable code).
Turns out this is pretty easy. For instance within the class you log the result of the following statement:
URI uri = this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI()
This [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Today I wanted to find the location of a class file to make sure the class is really called from a specific jar file (old project with historically grown piles of archaeologically valuable code).</p>
<p>Turns out this is pretty easy. For instance within the class you log the result of the following statement:</p>
<pre>URI uri = this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI()</pre>
<p>This will give you the exact place from witch the class was loaded.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/find-location-of-a-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Helpdesk works again</title>
		<link>http://www.agynamix.de/blog/helpdesk-works-again/</link>
		<comments>http://www.agynamix.de/blog/helpdesk-works-again/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 16:40:56 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=221</guid>
		<description><![CDATA[After a day of bug hunting and help from the great guys and gals at Userscape we were able to track down the problem to a wrong &#8216;include_path&#8217; setting in the PHP preferences.
I have absolutely no clue why this setting was changed during a PHP security update or if it has been there all along. [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>After a day of bug hunting and help from the great guys and gals at <a href="http://www.userscape.com">Userscape</a> we were able to track down the problem to a wrong &#8216;include_path&#8217; setting in the PHP preferences.</p>
<p>I have absolutely no clue why this setting was changed during a PHP security update or if it has been there all along. Fact is the problem occured only after the update, and only in this one application. The value of &#8216;include_path&#8217; was set to &#8216;.&#8217; in a global confixx file &#8216;confixx_mhost.conf&#8217;. After commenting out the property the whole thing suddenly worked again.</p>
<p>So go ahead and use the <a href="http://helpdesk.agynamix.de">helpdesk</a>.</p>
<p>Have a great day,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/helpdesk-works-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Tip: Find the call path (stack trace) of a method</title>
		<link>http://www.agynamix.de/blog/method-call-path/</link>
		<comments>http://www.agynamix.de/blog/method-call-path/#comments</comments>
		<pubDate>Wed, 13 May 2009 13:18:30 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=215</guid>
		<description><![CDATA[Here is a little tip that can save you some time and trouble every now and then.
Sometimes when hunting down bugs it is necessary to find out the path a method is called from in order to determine the root of a problem.
Here&#8217;s how you do this quiet easily. In there method that you observe [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Here is a little tip that can save you some time and trouble every now and then.</p>
<p>Sometimes when hunting down bugs it is necessary to find out the path a method is called from in order to determine the root of a problem.</p>
<p>Here&#8217;s how you do this quiet easily. In there method that you observe add the following:</p>
<pre>System.out.println("I'm here:");
Exception e = new Exception();
e.printStackTrace();</pre>
<p>If you have a logger in place which you should you could write it this way:</p>
<pre>log.isDebugEnabled() {
   log.debug("Call of Method X", new Exception());
}</pre>
<p>The logger will only process the expensive part of creating the exception<br />
and retrieving the stack trace if it will be written somewhere.</p>
<p>Remember, exceptions are just Java classes with some built in behavior. You can create and use them and also subclass and extend them. Sometimes it is useful to create custom exceptions that carry additional meaningful information that your code needs in order to resolve the problematic situation that caused the exception.</p>
<p>But who keeps you from creating an exception and not throwing it- just use some of its powers&#8230;</p>
<p style="text-align: left;">–</p>
<address style="text-align: left;">My name is Torsten Uhlmann, I’m founder of <a href="http://www.agynamix.de/">AGYNAMIX</a>, a tiny (sooo tiiiny its just me) software company specializing in Java software consulting for larger corporations.</address>
<address style="text-align: left;">I also develop <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.simidude.com');" href="http://www.simidude.com/">Simidude</a>, an easy to use cross platform network clipboard and Drag &amp; Drop tool which you might happen to find useful.</address>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/method-call-path/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why my Mac&#8217;s key chain always got locked</title>
		<link>http://www.agynamix.de/blog/mac-key-chain-locked/</link>
		<comments>http://www.agynamix.de/blog/mac-key-chain-locked/#comments</comments>
		<pubDate>Tue, 12 May 2009 18:50:12 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=213</guid>
		<description><![CDATA[During the last couple of weeksI recognized an annoying problem with my Mac: Every now and then the standard key chain got locked and I had to enter my password over and over so that depending application could run.
The Backup application would not work because it required the key chain password to be entered.
As a [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>During the last couple of weeksI recognized an annoying problem with my Mac: Every now and then the standard key chain got locked and I had to enter my password over and over so that depending application could run.</p>
<p>The Backup application would not work because it required the key chain password to be entered.</p>
<p>As a possible solution to that problem the apple hotline suggested to run the disk utility application and check and fix potential file systems problems. But of course that wouldn&#8217;t work- would be way too easy&#8230;</p>
<p>After a lot of frustration I decided to reinstall my Mac. I&#8217;m used to that from my Windows machines, so no big deal <img src='http://www.agynamix.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I reinstalled Leopard and restored the user directory from Time Capsule (which worked like a charm). I was careful not to restore existing applications so that I would not take the original problem back.</p>
<p>Now everything worked fine- until I installed <a href="http://www.sshkeychain.org/">Sshkeychain</a>! <a href="http://www.sshkeychain.org/">Sshkeychain</a> is a great utility application that manages your ssh keys for you so that you can use them with ssh or <a href="http://cyberduck.ch/">Cyberduck</a> etc. without entering the keys password again.</p>
<p>Apparently Sshkeychain has a preference setting that secures the Mac&#8217;s key chain after some idle time in order to keep your keys secure.</p>
<p>After unchecking this option the key chain never got locked by itself.</p>
<p>I hope this little hint is useful to someone. If so please leave a comment!</p>
<p>Have a great day!</p>
<p style="text-align: left;">–</p>
<address style="text-align: left;">My name is Torsten Uhlmann, I’m founder of <a href="http://www.agynamix.de/">AGYNAMIX</a>, a tiny (sooo tiiiny its just me) software company specializing in Java software consulting for larger corporations.</address>
<address style="text-align: left;">I also develop <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.simidude.com');" href="http://www.simidude.com/">Simidude</a>, an easy to use cross platform network clipboard and Drag &amp; Drop tool which you might happen to find useful.</address>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/mac-key-chain-locked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A simple and free MP3 Tag Editor</title>
		<link>http://www.agynamix.de/blog/simple-and-free-mp3-tag-editor/</link>
		<comments>http://www.agynamix.de/blog/simple-and-free-mp3-tag-editor/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 17:49:27 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=202</guid>
		<description><![CDATA[I had some code laying around on my hard disk and thought it might be a good idea to clean it up and release it- so maybe this one is of help for others.
I once had a need for a simple MP3 tag editor that I could throw a podcast file upon and have an [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I had some code laying around on my hard disk and thought it might be a good idea to clean it up and release it- so maybe this one is of help for others.</p>
<p>I once had a need for a simple MP3 tag editor that I could throw a podcast file upon and have an easy way to change it&#8217;s essential tags.</p>
<p>It&#8217;s a pretty easy tool, it comes with an easy to use installer. Just install, open it, choose a file, edit the tags, save the file and done. Nothing fancy, just useful <img src='http://www.agynamix.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Here&#8217;s a screenshot of the thing:</p>
<p><a href="http://v2.agynamix.de/wp-content/uploads/2009/03/taginspector.jpg"><img class="alignnone size-medium wp-image-203" title="TagInspector Screenshot" src="http://blog.agynamix.de/wp-content/uploads/2009/03/taginspector-300x241.jpg" alt="" width="300" height="241" /></a></p>
<p>Please note that TagInspector only runs on Windows and requires the .Net framework. I did this as a learning project to do something practically with C#- before I put the books back in the shelf.</p>
<p>Ah, right, here is the <a href="http://cms.agynamix.de/downloads/cat_view-2.html">download URL</a>. While you&#8217;re there you might want to check for other cool software, both free and commercial that I do offer&#8230;</p>
<p>Have a great day,</p>
<p>Torsten.</p>
<p style="text-align: left;">–</p>
<address style="text-align: left;">My name is Torsten Uhlmann, I’m founder of <a href="http://www.agynamix.de/">AGYNAMIX</a>, a tiny (sooo tiiiny its just me) software company specializing in Java software consulting for larger corporations.</address>
<address style="text-align: left;">I also develop <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.simidude.com');" href="http://www.simidude.com/">Simidude</a>, a cross platform network clipboard and Drag&amp;Drop tool which you might happen to find useful.</address>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simple-and-free-mp3-tag-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac Security- Another Way to Lock Your Mac Screen</title>
		<link>http://www.agynamix.de/blog/lock-our-mac-screen/</link>
		<comments>http://www.agynamix.de/blog/lock-our-mac-screen/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 21:18:08 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=195</guid>
		<description><![CDATA[When using your Mac in a busy environment it might be important to shield it against unauthorized access. If you leave your desk to head for that donut of yours or to dispose of the many coffee you drank you may not want to leave your machine unattended.
There are two simple settings that will prevend [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>When using your Mac in a busy environment it might be important to shield it against unauthorized access. If you leave your desk to head for that donut of yours or to dispose of the many coffee you drank you may not want to leave your machine unattended.</p>
<p>There are two simple settings that will prevend any unauthorized access to your Mac:</p>
<h2>1- Require a password when your Mac starts up</h2>
<p>When the Mac starts it usually shows your desktop right away. This is convinient but also very insecure- especially if you leave your box unattended. Do the following to make OS X behave more appropriate:</p>
<ul>
<li>Start your settings dialog and open &#8220;user settings&#8221;<a href="http://v2.agynamix.de/wp-content/uploads/2009/03/benutzer.jpg"><img class="alignnone size-full wp-image-197" title="benutzer" src="http://v2.agynamix.de/wp-content/uploads/2009/03/benutzer.jpg" alt="" width="499" height="398" /></a></li>
<li>Click on &#8220;Login Settings&#8221; (you may need to unlock that screen by clicking on the lock in the left corner of that screen&#8221;</li>
<li>Choose &#8220;Automatic Login deactivated&#8221;<a href="http://v2.agynamix.de/wp-content/uploads/2009/03/benutzer-auto-login.jpg"><img class="alignnone size-full wp-image-196" title="benutzer-auto-login" src="http://v2.agynamix.de/wp-content/uploads/2009/03/benutzer-auto-login.jpg" alt="" width="499" height="397" /></a></li>
<li>Lock the screen and close.</li>
</ul>
<h2>2- Lock your screen when you&#8217;re away</h2>
<p>I found two possible ways to lock the screen of my Mac. There first one is to enable &#8220;quickly change user&#8221;. You can set this up on the same screen as &#8220;Automatic Login deactivated&#8221;. You can set it up to display a small user icon in the menu bar. When you click on it you get the option to change to the login window which effectively asks for your password before it would let you see your desktop again. Unfortunately this one also separates UMTS connections and possibly other things.</p>
<p>Another way is to go through your keychain manager:</p>
<ul>
<li>Open the keychain manager<a href="http://v2.agynamix.de/wp-content/uploads/2009/03/dienstprogramme.jpg"><img class="alignnone size-full wp-image-198" title="dienstprogramme" src="http://v2.agynamix.de/wp-content/uploads/2009/03/dienstprogramme.jpg" alt="" width="500" height="328" /></a></li>
<li>Choose settings and enable &#8220;Show status in menu bar&#8221;<a href="http://v2.agynamix.de/wp-content/uploads/2009/03/einstellungen.jpg"><img class="alignnone size-full wp-image-199" title="einstellungen" src="http://v2.agynamix.de/wp-content/uploads/2009/03/einstellungen.jpg" alt="" width="500" height="285" /></a></li>
<li>This will show you a little lock symbol in the menu bar. Clicking it gives you the option to lock your screen. You need to enter your password to get back to your desktop. I like this option better- it looks more appealing and doesn&#8217;t seem to separate any connections.<a href="http://v2.agynamix.de/wp-content/uploads/2009/03/lock_screen.jpg"><img class="alignnone size-full wp-image-200" title="lock_screen" src="http://v2.agynamix.de/wp-content/uploads/2009/03/lock_screen.jpg" alt="" width="500" height="176" /></a></li>
</ul>
<p>Do you know any other security tips? Let me and others know be commenting here!</p>
<p>Have a great day!</p>
<p style="text-align: left;">–</p>
<address style="text-align: left;">My name is Torsten Uhlmann, I’m founder of <a href="http://www.agynamix.de/">AGYNAMIX</a>, a tiny (sooo tiiiny its just me) software company specializing in Java software consulting for larger corporations.</address>
<address style="text-align: left;">I also develop <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.simidude.com');" href="http://www.simidude.com/">Simidude</a>, a cross platform network clipboard and Drag&amp;Drop tool which you might happen to find useful.</address>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/lock-our-mac-screen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How you can add GPS information to your digital photos</title>
		<link>http://www.agynamix.de/blog/add-gps-information-to-your-photos/</link>
		<comments>http://www.agynamix.de/blog/add-gps-information-to-your-photos/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 14:13:52 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[photography]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=190</guid>
		<description><![CDATA[One of the great waves of the last years is geotagging, meaning you keep track of the locations you have been with the means of a GPS tracker and than be able to create a map that shows the waypoint of your last trip. Of course geotagging is more but for the course of this [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>One of the great waves of the last years is geotagging, meaning you keep track of the locations you have been with the means of a GPS tracker and than be able to create a map that shows the waypoint of your last trip. Of course geotagging is more but for the course of this article it generically means to tag something with GPS information.</p>
<p style="text-align: center;"><a href="http://v2.agynamix.de/wp-content/uploads/2009/03/gps_tagged_photo.jpg"><img class="size-medium wp-image-191 aligncenter" src="http://blog.agynamix.de/wp-content/uploads/2009/03/gps_tagged_photo-300x299.jpg" alt="" width="300" height="299" /></a></p>
<p>Lately I thought of a way to tag my digital photos with GPS information. Recent SLR cameras may come with a build in GPS but my Canon 400D is just 2 years old and I don&#8217;t wont to buy a new one just because of this.</p>
<p>A few days ago I figured out a pretty convenient way to record the location of where I am and later put this information into my photos. This procedure works under the assumption that both your GPS logger and your digital camera use nearly the same clock settings.</p>
<p><strong>Theory:</strong></p>
<p>The GPS logger records our present location every, say, 30 seconds. At home when you upload your photos to your camera you need a software that will look up the time code in your photo and then use that time code to look up a recording of a GPS location that was made to a close point in time. If no recording is found (say one minute before and after the time code of the photo) then no location information is added.</p>
<p><strong>Let&#8217;s get to work:</strong></p>
<p>I found the following components best to work with:</p>
<ul>
<li>I use my Nokia E71 handy with integrated GPS chip as the logger. Whenever I shoot photos I start the logger (see below) and let it run in the background. You may use another GPS handy or even a specialized GPS logger. The system is pretty flexible and does work with a great number of components.</li>
<li>As a GPS logging software on my E71 I use <a href="http://linuxtechs.net/kruch/tb/forum/index.php">TrekBuddy</a>. TrekBuddy is a free Java based tracking software. It does a lot more things like showing your present location on a map but I just use it to record my GPS location. The setup of the software is described on the Website.<br />
<strong>Update:</strong> It is important that you enable Tracklog logging. To do this go to <em>Settings-&gt;Location</em> and set Tracklog to &#8220;always&#8221;. Below that you can change the interval a log entry is written. I have changed mine to 30s.<br />
After running the software it will create a folder TrekBuddy/tracks-gpx either on your phones card or internal memory, that depends on your device. That directory contains GPX files, one for each run of the software. Download these files to your computer.</li>
<li>A camera. Of course. You can use any brand you want, as long as it writes a time tag into your photos- which to my knowledge all cameras do. I use JPG to archive my photos. You can also use the RAW format. The software I use to merge GPS location into my photos supports some RAW formats (see below).</li>
<li>A software to merge GPS location information into your photos. For this I have found <a href="http://code.google.com/p/gpicsync/">GPicSync</a>. GPicSync is a free software that takes a GPX file and a folder with to be tagged images and merges the two together. Please see <a href="http://code.google.com/p/gpicsync/wiki/RawFormats">this site</a> if your RAW format is supported.<br />
Now, what if you have multiple GPX files to tag your photos with (for instance, one for each day): The only way I have found to handle this is to synchronize that image folder with each GPX file subsequentially. If a time stamp does not match between image and GPX entry then the image is not changed.</li>
<li>After that you can import your photos into your photo software. I use iPhoto 2009 which shows me the location of the photo when I click on the little &#8220;i&#8221;.</li>
</ul>
<p>I have found that procedure to work and be pretty unobtrusive. Switching on the GPS logger on my handy is pretty easy and can run in background. Then the only additional steps are to download the GPX files from my handy (I do this through Bluetooth) and synchronize my photos via GPicSync.</p>
<p>I can also no longer just upload my photos with iPhoto. Instead I use Image Capture which comes with my Mac to upload the camera&#8217;s photos into a temp folder. After the sync I import them into iPhoto.</p>
<p>I don&#8217;t know about you but I really like knowing where I shot a photo even after a long period of time.</p>
<p>What do you think about the process?</p>
<p>We are now open to take comments!</p>
<p style="text-align: left;">–</p>
<address style="text-align: left;">My name is Torsten Uhlmann, I’m founder of <a href="http://www.agynamix.de/">AGYNAMIX</a>, a tiny (sooo tiiiny its just me) software company specializing in Java software consulting for larger corporations.</address>
<address style="text-align: left;">I also develop <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.simidude.com');" href="http://www.simidude.com/">Simidude</a>, a cross platform network clipboard and Drag&amp;Drop tool which you might happen to find useful.</address>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/add-gps-information-to-your-photos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Simidude Review</title>
		<link>http://www.agynamix.de/blog/first-simidude-review/</link>
		<comments>http://www.agynamix.de/blog/first-simidude-review/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 09:25:45 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[Simidude]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=180</guid>
		<description><![CDATA[A few days ago my new software Simidude received its first review.
The german blogger tAXMAN Tom was running a post about network clipboards- actually the perfect situation Simidude is made for.
I wrote a comment to this post and invited Tom to give Simidude a try which he did.Shortly after that his blog conceived a new [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>A few days ago my new software Simidude received its first review.</p>
<p>The german blogger tAXMAN Tom was running a post about network clipboards- actually the perfect situation Simidude is made for.</p>
<p>I wrote a comment to this post and invited Tom to give Simidude a try which he did.Shortly after that his blog conceived a <a title="Simidude Review" href="http://www.taxmantom.de/simidude">new post about Simidude</a> in rather enthusiastic words.</p>
<p>The bottom line of his post: &#8220;For me Simidude is exactly what I&#8217;ve been looking for&#8221; (translated from german).</p>
<p><img src="http://v2.agynamix.de/wp-content/uploads/2009/02/plants.jpg" alt="" width="200" height="311" /></p>
<p>If you are a blogger I would like to offer you a free license of Simidude. Just write me an email with a link to your blog- I will unconditionally send you a license back. If you do use Simidude please consider writing a review in your blog&#8230;</p>
<p>On a personal matter: Tomorrow night my family and I will start into one week of hysterically longed for holiday. I will read my emails but my response time might be longer than an hour. I though do try to read me email every day&#8230;</p>
<p>So you to have a great week!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/first-simidude-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use your Novatel Ovation MC950D with Linux</title>
		<link>http://www.agynamix.de/blog/use-your-novatel-ovation-mc950d-with-linux/</link>
		<comments>http://www.agynamix.de/blog/use-your-novatel-ovation-mc950d-with-linux/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 16:38:31 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=163</guid>
		<description><![CDATA[A while back I bought myself a Vodafone UMTS flat rate together with one of thise nifty UMTS USB sticks. Mine is a Novatel Ovation MC950D.

For Windows, there isn&#8217;t much to bother. The stick comes with the Mobile Connect Lite software installed in the memory part. These kinds of USB devices act as a memory [...]]]></description>
			<content:encoded><![CDATA[<p></p><p style="text-align: left;">A while back I bought myself a Vodafone <a href="http://www.moobicent.de/">UMTS flat rate</a> together with one of thise nifty UMTS USB sticks. Mine is a Novatel Ovation MC950D.</p>
<p style="text-align: left;"><img class="alignright" src="http://v2.agynamix.de/wp-content/uploads/2009/01/thalheim_im_winter.jpg" alt="" width="225" height="300" align="right" /></p>
<p style="text-align: left;">For Windows, there isn&#8217;t much to bother. The stick comes with the Mobile Connect Lite software installed in the memory part. These kinds of USB devices act as a memory stick when not activated otherwise or as an UMTS modem. So the first time you connect the stick it will connect as a memory stick and show you a directory with the setup files for the Mobile Connect drivers. Install them and the next time (you might need to reboot) you connect the stick it will reconnect as an UMTS modem.</p>
<p style="text-align: left;">That&#8217;s the way it works on Windows XP. On my Vista machine, it doesn&#8217;t automatically reconnect. I have to start the &#8220;LiteAuto.exe&#8221; application fom the stick manually. After that it works as expected.</p>
<p style="text-align: left;">Now for my travels I have bought this little beautiful MSI Wind Netbook. It comes preinstalled with Windows XP. Being me I created a dual boot setup with Windows XP in one partition and Ubuntu 8.10 in the other. BTW, <a href="http://wiki.msiwind.net/index.php/Ubuntu_8.04_Tweaks">this site</a> describes some tweaks you should engage in in order to get your MSI Window running fully under Ubuntu. I for instance exchanged the installed WLan card or an &#8221; <a class="external text" title="http://support.intel.com/support/wireless/wlan/pro3945abg/" rel="nofollow" href="http://support.intel.com/support/wireless/wlan/pro3945abg/">Intel PRO/Wireless 3945ABG</a>&#8221; in order to make use of WiFi.</p>
<p style="text-align: left;">Now I also wanted to use my UMTS modem when working with Ubuntu. The first (semi successful)  attempt I made was by following the description in <a href="http://quilombo.wordpress.com/2008/01/21/modem-usb-35g-novatel-ovation-mc950d-in-ubuntulinux/">this blog post</a>.</p>
<p style="text-align: left;">It worked, but I found it dreadfull to call some command line script in order to reconnect the stick as a modem. So I set it up as an exercise but didn&#8217;t really use it much.</p>
<p style="text-align: left;">Now these last days a ran across a site caled <a href="http://www.betavine.net/bvportal/web/linux_drivers">Betavine</a>, a Vodafone research and community site where they publish, among others, UMTS card drivers for Linux.</p>
<p style="text-align: left;">I downloaded the &#8220;<a href="https://forge.betavine.net/frs/download.php/269/vodafone-mobile-connect-card-driver-for-linux-2.0.beta3-ALL-i386-installer.run">Autoinstall for Ubuntu Fedore SuSE</a>&#8221; file, installed it:</p>
<pre style="text-align: left;">sudo .vodafone-mobile-connect-card-driver-for-linux-2.0.beta3-ALL-i386-installer.run</pre>
<p style="text-align: left;">and, after a reboot of my machine it just worked!</p>
<p style="text-align: left;">I inserted the Novatel stick and, after the stick had powered up, it would show a new entry in Ubuntu&#8217;s Network Manager (you access it from the little icon in the upper panel). When you click on the network Manager icon you see a new Network &#8220;Vodafone D2&#8243; (or whatever network you are in), you can click on it and it will connect. Mighty cool.</p>
<p style="text-align: left;">Now I just need to get that stick working with my Mac&#8230;</p>
<p style="text-align: left;">&#8211;</p>
<address style="text-align: left;">My name is Torsten Uhlmann, I&#8217;m founder of <a href="http://www.agynamix.de">AGYNAMIX</a>, a tiny (sooo tiiiny its just me) software company specializing in Java software consulting for larger corporations.</address>
<address style="text-align: left;">I also develop <a href="http://www.simidude.com">Simidude</a>, a cross platform network clipboard and Drag&amp;Drop tool which you might happen to find usefull.</address>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/use-your-novatel-ovation-mc950d-with-linux/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Wordpress 2.6, safe_mode and file uploads</title>
		<link>http://www.agynamix.de/blog/wordpress-26-safe_mode-and-file-uploads/</link>
		<comments>http://www.agynamix.de/blog/wordpress-26-safe_mode-and-file-uploads/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 11:08:17 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=149</guid>
		<description><![CDATA[Since I&#8217;m (most of the time) a responsible internet user I try to keep my web applications up to date.
In this article I describe how you can keep Wordpress up to date with updates directly from the source. Now I&#8217;ve done that for this blog and my new Simidude website. All went well, software got [...]]]></description>
			<content:encoded><![CDATA[<p></p><p style="text-align: left;">Since I&#8217;m (most of the time) a responsible internet user I try to keep my web applications up to date.</p>
<p style="text-align: left;">In <a href="http://blog.agynamix.de/blog/2008/keep-wordpress-up-to-date-with-subversion/">this article</a> I describe how you can keep Wordpress up to date with updates directly from the source. Now I&#8217;ve done that for this blog and my new <a href="http://www.simidude.com">Simidude website</a>. All went well, software got updated and I got a good feeling knowing I did something for peace on the internet.</p>
<p style="text-align: left;">Now these days I wanted to write some new articles including some charming images. Images in posts are great because the just make the post more pleasant.</p>
<p style="text-align: left;">So I cheerfully wrote some text about our <a href="http://www.simidude.com/blog/2008/simidude-screenshots/">new baby boy &#8220;Sim&#8221;</a> whom I like to call Simi dude and I also wanted to include some screenshots about how he looks by now so that, in a few weeks or so, people would see how fast he has grown and become a real boy.</p>
<p style="text-align: left;">Hm, suddenly Wordpress bombards me with the following error message while I was trying to upload a foto:</p>
<blockquote style="text-align: left;"><p>Unable to create directory &#8220;[...]/uploads/2008/11&#8243;. Is its parent directory writeable by server?</p></blockquote>
<p style="text-align: left;">Of course it is writable! And sure enough it worked a few weeks ago. (well actually month- the last time I uploaded an image into this blog was in May. I&#8217;m ashamed.)</p>
<p style="text-align: left;">Since I&#8217;m running a real root server with ssh access I went to the server and toyed with the Unix file permissions. So I tried setting the wp-content directory world-writable (777). No effect, same error message. FYI I changed the settings back- no need to hack the server&#8230;</p>
<p style="text-align: left;">Then I realized the following:</p>
<p><a href="http://v2.agynamix.de/wp-content/uploads/2008/11/linstow_006.jpg"><img class="alignright size-medium wp-image-151" title="linstow_006" src="http://blog.agynamix.de/wp-content/uploads/2008/11/linstow_006-224x300.jpg" alt="" width="224" height="300" align="right"/></a></p>
<p style="text-align: left;">The uploads directory was owned by web4.www-data. web4 is my user account on the machine, www-data is the user and group of the Apache server (standard on Debian based systems).</p>
<p style="text-align: left;">A directory &#8220;2008&#8243; was actually created with the owner &#8220;www-data.www-data&#8221; because it had been created by the Apache server through the PHP script. Just the &#8220;11&#8243; directory could not be created. So I did this by hand, setting ownership to www-data.www-data. Now I rushed over to the upload dialog being pretty sure it would work now. No luck! Still I received an error message (see above) that this directory could not be created.</p>
<p style="text-align: left;">After spending some time with my friend Google and reading helpless posts that sugessted setting the file permissions to 777 and don&#8217;t care about the rest I came across some explanation of PHP safe_mode (did I mention I use safe_mode on)?</p>
<p style="text-align: left;">What matters here is that safe_mode checks if the executed script belongs to the same owner as the directory it writes into. Now my Wordpress installation belongs to web4.www-data so that I could use FTP or SSH to connect as user web4 and actually have write permission.</p>
<p style="text-align: left;">So the script that uploads the image tries to create the directory &#8220;2008&#8243;. That works because the parent directory, &#8220;uploads&#8221;, belong to web4.www-data. But the created directory &#8220;2008&#8243; is now owned by www-data.www-data because it was created by the Apache server. When it tries to create &#8220;11&#8243; inside &#8220;2008&#8243; it fails miserably because &#8220;2008&#8243; is not owned by web4.</p>
<p style="text-align: left;">After creating the directory &#8220;11&#8243; by hand and changing the ownership of &#8220;2008&#8243; and &#8220;11&#8243; to web4.www-data I was able to upload images!</p>
<p style="text-align: left;">Now for a somewhat permanent solution because I don&#8217;t want to go to my server each month and create a new directory by hand:</p>
<p style="text-align: left;">Apparently there is a setting in php.ini which tells the safe_mode to not just look at the owner of a file but also the goup of it. The setting is called:</p>
<blockquote style="text-align: left;"><p><strong>safe_mode_gid = On</strong></p></blockquote>
<p style="text-align: left;">It was Off in my case. After changing it and restarting Apache I could readily create directories and upload images.</p>
<p style="text-align: left;">Now if you can&#8217;t change that setting because you don&#8217;t have root access it might also work if you can change the ownership of your Wordpress php files to www-data.www-data. Because after you&#8217;ve done that the user of the script and of the created directory would match again.</p>
<p style="text-align: left;">Hope this saves some of your time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/wordpress-26-safe_mode-and-file-uploads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initialize SWT Action accelerators in SWT 3.4</title>
		<link>http://www.agynamix.de/blog/initialize-swt-action-accelerators-in-swt-34/</link>
		<comments>http://www.agynamix.de/blog/initialize-swt-action-accelerators-in-swt-34/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 08:10:17 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=139</guid>
		<description><![CDATA[While developing my new application Simidude I ran about a funny problem with JFace&#8217;s MenuManager.
I develop Simidude (an easy to use cross platform clipboard synchronizer and Drag &#38; Drop tool- it&#8217;s exciting, you should look at it  ) using Java 5 and the SWT/JFace libraries from Eclipse. SWT provides Java with a platform specific [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>While developing my new application <a href="http://www.simidude.com">Simidude</a> I ran about a funny problem with JFace&#8217;s MenuManager.</p>
<p>I develop Simidude (an easy to use cross platform clipboard synchronizer and Drag &amp; Drop tool- it&#8217;s exciting, <a href="http://www.simidude.com">you should look at it</a> <img src='http://www.agynamix.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) using Java 5 and the SWT/JFace libraries from <a href="http://www.eclipse.org">Eclipse</a>. SWT provides Java with a platform specific look and feel which makes my application appear native on all supported (Windows, Mac and Linux) platforms.</p>
<p>Because I want the application to be small and carry as little overhead as possible I do not use the Eclipse RCP platform but rather just the GUI libraries.</p>
<p>Now when writing a JFace application you subclass ApplicationWindow for your application&#8217;s main window.</p>
<p>To create a menu bar you overwrite the method &#8220;MenuMnager createMenuManager()&#8221; in which you create your top level menu items like &#8220;File&#8221;, &#8220;Edit&#8221; or &#8220;Help&#8221; as well as the Actions that you plug into them. An Action basically wraps up  the information needed to display a menu entry as well as some code to do something. Actions can be reused to be shown in the menubar as well as in the toolbar.</p>
<p>An Action can hold for instance an image object, a tooltip text or an accelerator definition. To set an accelerator for my &#8220;Quit&#8221; action I&#8217;d do something like this:</p>
<blockquote><p>setAccelerator(SWT.MOD1 + &#8216;Q&#8217;);</p></blockquote>
<p>&#8220;SWT.MOD1&#8243; is replaced with the platform specific modifier like &#8220;CTRL&#8221; on Windows and Linux and &#8220;Command&#8221; (Apple key) on Mac.</p>
<p>Now one would expect that you could actually USE this key combination in a running application. Far from it. I had to click on the menu with the mouse, then do something in the application and then the keys would work. Sounds like an initialization problem.</p>
<p>So I filed a bug with Eclipse. Turned out they had &#8220;optimized&#8221; the menu creation code in Eclipse 3.4 which would actually cause this pain. Btw it works fine if you&#8217;re in an Eclipse plugin or RCP applications. And it also works if you&#8217;re using plain SWT and are not using Actions but creating the menu entries the SWT style. Turns out this is some weird JFace initialization thing.</p>
<p>But the good news is there is a workaround: After creating your menubar you need to <strong>initialize</strong> it. This is my initialization routine which is called in the beginning of the life cycle:</p>
<blockquote><p>public void initializeApplicationGUI()<br />
{<br />
makeActions();<br />
addMenuBar();<br />
addToolBar(SWT.TOP | SWT.FLAT | SWT.HORIZONTAL | SWT.SHADOW_OUT );<br />
addStatusLine();<br />
<strong>create();<br />
getMenuBarManager().updateAll(true);</strong><br />
}</p></blockquote>
<p>If you add the last two lines suddenly your menu flies. I don&#8217;t know how long I digged around for such a stupid bug&#8230;</p>
<p>Anyway I hope I could save some of your time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/initialize-swt-action-accelerators-in-swt-34/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Announce: DobuDish version 1.1.1 released</title>
		<link>http://www.agynamix.de/blog/announce-dobudish-version-111-released/</link>
		<comments>http://www.agynamix.de/blog/announce-dobudish-version-111-released/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 10:19:16 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[dobudish]]></category>
		<category><![CDATA[Docbook]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=138</guid>
		<description><![CDATA[Hi all,
I have just released version 1.1.1 of DobuDish.
Changes to the prior version include bug fixes with the new global hooks as well an improved documentation to include all available hooks with a tiny description.
Please get DobuDish at http://cms.agynamix.de/downloads/cat_view-2.html
Enjoy,
Torsten.
]]></description>
			<content:encoded><![CDATA[<p></p><p>Hi all,</p>
<p>I have just released version 1.1.1 of DobuDish.<br />
Changes to the prior version include bug fixes with the new global hooks as well an improved documentation to include all available hooks with a tiny description.</p>
<p>Please get DobuDish at <a title="http://cms.agynamix.de/downloads/cat_view-2.html" href="http://cms.agynamix.de/downloads/cat_view-2.html" target="_blank">http://cms.agynamix.de/downloads/cat_view-2.html</a></p>
<p>Enjoy,<br />
Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/announce-dobudish-version-111-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announce: Version 1.1.0 of DobuDish released</title>
		<link>http://www.agynamix.de/blog/announce-version-110-of-dobudish-released/</link>
		<comments>http://www.agynamix.de/blog/announce-version-110-of-dobudish-released/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 10:56:49 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[Docbook]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=137</guid>
		<description><![CDATA[Hi all,
today I released version 1.1.0 of DobuDish. The change:
I have added new global-[pre/post] targets to DobuDish as well as an initially empty file &#8220;system/etc/build-user-augments.xml&#8221; which is supposed to hold user defined actions for the global targets. The logic is as follow:

first try to execute a local target
if that does not exist, try to execute [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Hi all,</p>
<p>today I released version 1.1.0 of DobuDish. The change:</p>
<p>I have added new global-[pre/post] targets to DobuDish as well as an initially empty file &#8220;system/etc/build-user-augments.xml&#8221; which is supposed to hold user defined actions for the global targets. The logic is as follow:</p>
<ul>
<li>first try to execute a local target</li>
<li>if that does not exist, try to execute the corresponding global target. That way you can overwrite global actions with local ones. Please note if a local action is found, the corresponding global action is not executed- unless you explicitely call it inside the local action.</li>
</ul>
<p>You can download DobuDish at the <a href="http://cms.agynamix.de/downloads/cat_view-2.html">usual place</a>.</p>
<p>Enjoy,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/announce-version-110-of-dobudish-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announce: Dopus renamed to DobuDish</title>
		<link>http://www.agynamix.de/blog/announce-dopus-renamed-to-dobudish/</link>
		<comments>http://www.agynamix.de/blog/announce-dopus-renamed-to-dobudish/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 19:55:29 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[Docbook]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=136</guid>
		<description><![CDATA[Dear Dopus user,
yesterday I have uploaded a new version of Dopus under its new name, DobuDish.
I have renamed the Docbook Framework to resolve a naming conflict with the original Dopus software.
This release features new Ant hooks called during the creation of a new document.
Now that these things are in order I have decided to release [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Dear Dopus user,</p>
<p>yesterday I have uploaded a new version of Dopus under its new name, DobuDish.</p>
<p>I have renamed the Docbook Framework to resolve a naming conflict with the <a href="http://www.gpsoft.com.au/Intro.html">original Dopus software</a>.</p>
<p>This release features new Ant hooks called during the creation of a new document.</p>
<p>Now that these things are in order I have decided to release this new version as 1.0.0.</p>
<p>As always you can getDobuDish at our <a href="http://cms.agynamix.de/downloads/cat_view-2.html">download side</a>.</p>
<p>Enjoy,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/announce-dopus-renamed-to-dobudish/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keep Wordpress up to date with Subversion</title>
		<link>http://www.agynamix.de/blog/keep-wordpress-up-to-date-with-subversion/</link>
		<comments>http://www.agynamix.de/blog/keep-wordpress-up-to-date-with-subversion/#comments</comments>
		<pubDate>Mon, 12 May 2008 18:11:12 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/blog/keep-wordpress-up-to-date-with-subversion/</guid>
		<description><![CDATA[I use Wordpress as my blogging system.
I&#8217;m very satisfied.
I need to keep it up to date.
Now it&#8217;s daunting to do the whole update ceremony by hand. Wouldn&#8217;t it be nice if there where an automated mechanism?
There is.
The german CT magazine published an article about using Subversion for automated updates. The idea is so simple I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I use Wordpress as my blogging system.</p>
<p>I&#8217;m very satisfied.</p>
<p>I need to keep it up to date.</p>
<p>Now it&#8217;s daunting to do the whole update ceremony by hand. Wouldn&#8217;t it be nice if there where an automated mechanism?</p>
<p>There is.</p>
<p><img src="http://v2.agynamix.de/wp-content/uploads/2008/05/101-0133-img.jpg" alt="101-0133_IMG" width="302" height="231" align="right" />The german <a href="http://www.heise.de/ct/" target="_blank">CT</a> magazine published an article about using Subversion for automated updates. The idea is so simple I&#8217;m embarrassed I didn&#8217;t think of it before!</p>
<p>Wordpress uses Subversion as it&#8217;s source control system. In Subversion you usually create a directory &#8220;branches&#8221; where a directory is created for each release branch. And then there&#8217;s a directory &#8220;tags&#8221; which contains a tag name (like &#8220;2.5.1&#8243; which is the latest release as of this post) for every release.</p>
<p>Now what you can do is check out (svn co) the Wordpress code from the Subversion repository telling it you want to the, say, release tagged with &#8220;2.5.1&#8243;. Subversion will copy the code into a specified directory and will also keep the Subversion metadata (&#8220;.svn&#8221; directories) in place. Now whenever the fine folks at Wordpress release their version &#8220;2.5.2&#8243; you &#8220;switch&#8221; the code over to that tag, Subversion automatically updates your local sources with the latest changes from the repository and you are done.</p>
<p>For all this stuff to work you need the Subversion client installed on your Wordpress host as well as ssh access to your account. To install Subversion on a Debian based system like Ubuntu you just say &#8220;apt-get install subversion&#8221; and it will be installed if not already present.</p>
<p>The Wordpress repository is located at <a href="http://svn.automattic.com/wordpress">http://svn.automattic.com/wordpress</a>. If you want to checkout the &#8220;2.5.1&#8243; release tag you would issues the following command:</p>
<blockquote><p>svn co http://svn.automattic.com/wordpress/tags/2.5.1 blog</p></blockquote>
<p>This would check out the release version &#8220;2.5.1&#8243; into a directory &#8220;blog&#8221; which will be created by Subversion in the current directory. After that you need to adjust the file permissions so that your web server can access the files and directories. The following command is valid for Ubuntu (and probably other Debian-based systems as well):</p>
<blockquote><p>chown -R www-data.www-data blog</p></blockquote>
<p>Then, suppose Wordpress releases version &#8220;2.5.2&#8243; you would issues the following commands from within your &#8220;blog&#8221; directory to update your local copy:</p>
<blockquote><p>svn switch http://svn.automattic.com/wordpress/tags/2.5.2</p></blockquote>
<p>That&#8217;s it.</p>
<p>The folks at <a href="http://www.heise.de">Heise</a> even released a GPL&#8217;ed script which encapsulates the Subversion commands. It even let&#8217;s you add specific language files to your Wordpress installation. I have attached the wptool to this post.</p>
<ul>
<li><a href="http://blog.agynamix.de/wp-content/uploads/2008/05/wptool-10.tgz">wptool-10</a></li>
</ul>
<p>As always I hope I could solve a few pain points in your life as a blogger&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/keep-wordpress-up-to-date-with-subversion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to differentiate in a crowded market</title>
		<link>http://www.agynamix.de/blog/how-to-differentiate-in-a-crowded-market/</link>
		<comments>http://www.agynamix.de/blog/how-to-differentiate-in-a-crowded-market/#comments</comments>
		<pubDate>Sat, 10 May 2008 15:13:40 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=131</guid>
		<description><![CDATA[ Last year in October we went shopping for a construction company for our new home. Currently I have rented office space and I&#8217;d rather have living and working space together.
Since we life in a mountainous area houses are usually build here with brick and mortar. Now I don&#8217;t know how it is in your [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://v2.agynamix.de/wp-content/uploads/2008/05/img-2444.jpg"><img height="312" alt="IMG_2444" src="http://v2.agynamix.de/wp-content/uploads/2008/05/img-2444-thumb.jpg" width="460" /></a> Last year in October we went shopping for a construction company for our new home. Currently I have rented office space and I&#8217;d rather have living and working space together.</p>
<p>Since we life in a <a href="http://maps.google.de/maps?f=q&amp;hl=de&amp;geocode=&amp;q=tannenstr,+09380+thalheim&amp;sll=51.623025,12.27574&amp;sspn=0.010577,0.015621&amp;ie=UTF8&amp;t=h&amp;z=16" target="_blank">mountainous area</a> houses are usually build here with brick and mortar. Now I don&#8217;t know how it is in your area but here there are probably more construction companies per village than&#8230; than&#8230; well, actually I don&#8217;t know. But there are many. You can choose your flavor from a vast variety. Do you want to build with sand stone, bricks, gas concrete- whatever you like there&#8217;s always a dozen companies that tell you that there solution is best. </p>
<p>Sounds familiar? The situation reminded me of the IT landscape. There are so many software shops and experts that try to sell you at their golden hammer.</p>
<p>The thing is it probably doesn&#8217;t matter if you use Java to build a system or Ruby or Python or PHP. Or you use Perl, that way you won&#8217;t need an obfuscator&#8230;</p>
<p>What is most important though is that the people who build your system or house know what they&#8217;re doing. It saves you a lot of trouble if you hire real experts. Not just marketing guys that know how to draw bubbles and present them to you as your nearly finished system (&quot;We just need to generate the code&#8230;&quot;) but people who know of the technical details, who know how to communicate between teams so that the work flow does not get interrupted and, most of all, who you can trust.</p>
<p><a href="http://v2.agynamix.de/wp-content/uploads/2008/05/img-2455.jpg"><img height="202" alt="IMG_2455" src="http://v2.agynamix.de/wp-content/uploads/2008/05/img-2455-thumb.jpg" width="295" align="right" /></a>Trust goes a long way. Now how did we come to choose the architect and construction company for our house? And they haven&#8217;t been the cheapest of all the options we had!</p>
<p>Several reasons: First and probably most important they have an excellent reputation in our area. I spoke to a dozen of home owners and they all recommended <a href="http://www.gerlachbau.de/">that company</a>. That started to build my trust and in the end I believe it was a big weight in their favor.</p>
<p>Second they where (and still are) very friendly and honest about the things they would or would not do. For instance they did not try to sell me every possible energy saving option you can possibly stuff into your house but only what they believed is the best mixture of options. I never had the feeling that they tried to sell me as much as possible but rather they tried to cater my needs.</p>
<p>Third they brought in their own ideas. I had a basic type of building in mind when I started to contact the companies. Some tried to sell me as much as they could, some just took the plans and calculated a price. What <a href="http://www.gerlachbau.de/">Gerlach Bau</a> did was to bring in their own experience and creativity. They really helped us develop a house that would fit better than our initial plans. They told us the things they would do different and really made us consider options we didn&#8217;t know existed.</p>
<p>Another very important thing is the proximity to us. The short distance makes it pretty easy for us to just drop by at their office and talk about things that are not yet clear. Or for them to meet with us at the site. As <a href="http://www.userscape.com/products/helpspot/">Ian</a> has <a href="http://www.userscape.com/blog/index.php/site/comments/talking_to_the_owner/">written in his blog</a> it is so important to have a fast and easy way to talk to the one in charge (the one who really can make decisions).</p>
<p><a href="http://v2.agynamix.de/wp-content/uploads/2008/05/img-1860-2.jpg"><img height="292" alt="IMG_1860-2" src="http://v2.agynamix.de/wp-content/uploads/2008/05/img-1860-2-thumb.jpg" width="385" /></a> Now that the construction is going along I can say I&#8217;m very pleased. They started in mid March (There is a lot of daunting paperwork involved before you are allowed to build a house on your own ground.). Next week we&#8217;ll have the topping out ceremony (that&#8217;s basically when the beams of the roof are in place).</p>
<p>There is a fantastic coordination between the different teams at the construction site. All the material they needed was delivered right on time- nobody had to wait. They call in right on time when things need to be discussed in order to maintain a smooth work flow.</p>
<p>&#160;</p>
<p>Now what can we learn from that?</p>
<p>First they life and thrive in a very crowded market. They are located in an area where many companies try to compete by price (of course if you choose a company that does this you have to life with the result.)</p>
<p>Their greatest bonus is their reputation. of course they need to maintain it with each new customer which in turn builds a better reputation. They respond to our needs and wishes which gives them a great customer service.</p>
<p><a href="http://v2.agynamix.de/wp-content/uploads/2008/05/img-2447.jpg"><img height="274" alt="IMG_2447" src="http://v2.agynamix.de/wp-content/uploads/2008/05/img-2447-thumb.jpg" width="396" /></a> All in all a lot of attitudes that you as a successful software company would want to copy.</p>
<p>Stick to the things you know and build your expertise in your area of interest. Then when customers approach you you have the chance to exceed their expectations by using your honesty and knowledge. Compared with a great customer service you will build a reputation for you and your company that soon will attract new customers.</p>
<p> That is my observation with the recent events that are going on here. What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/how-to-differentiate-in-a-crowded-market/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announce: Dopus 0.9.16 released</title>
		<link>http://www.agynamix.de/blog/announce-dopus-0916-released/</link>
		<comments>http://www.agynamix.de/blog/announce-dopus-0916-released/#comments</comments>
		<pubDate>Thu, 01 May 2008 08:46:34 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[Docbook]]></category>
		<category><![CDATA[Dopus]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=122</guid>
		<description><![CDATA[
Dear Dopus users,
I just release version 0.9.16 of Dopus. This is a bugfix release, with the following enhancements:

Fixed bug with the new document.type mechanism. There was an oversight for documents that contain sub documents of a different document type than the main document. In localbuild.properties you can now add additional entries of the for
document.&#60;file name&#62;.type=article&#124;book&#124;&#8230;
Now [...]]]></description>
			<content:encoded><![CDATA[<p></p><div class="main">
<p>Dear Dopus users,</p>
<p>I just release version 0.9.16 of Dopus. This is a bugfix release, with the following enhancements:</p>
<ul>
<li>Fixed bug with the new document.type mechanism. There was an oversight for documents that contain sub documents of a different document type than the main document. In localbuild.properties you can now add additional entries of the for
<p>document.&lt;file name&gt;.type=article|book|&#8230;</p>
<p>Now when you process your sub document and an entry for this document is found it overwrites the document.type setting.<br />
This also is possible for the master document. So you might set document.type to the default document type and overwrite only those that differ from that one.</li>
</ul>
</div>
<div class="main">
<p>Dopus can be downloaded from the <a href="http://cms.agynamix.de/downloads/cat_view-2.html">usual place</a>.</p>
<p>Enjoy!</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/announce-dopus-0916-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nested properties in Ant</title>
		<link>http://www.agynamix.de/blog/nested-properties-in-ant/</link>
		<comments>http://www.agynamix.de/blog/nested-properties-in-ant/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 18:32:06 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=121</guid>
		<description><![CDATA[Today while scripting my Dopus Ant files I came across a problem with nested properties.
Something of the sort ${document.${input.file}.type}.
Turns out that Ant cannot do this by default. Yet I found a blog entry that explains how it can be done with newer versions of Ant (those that support macros). I adapted the solution a little [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Today while scripting my <a href="http://cms.agynamix.de/downloads/cat_view-2.html">Dopus</a> Ant files I came across a problem with nested properties.</p>
<p>Something of the sort <em>${document.${input.file}.type}</em>.</p>
<p>Turns out that Ant cannot do this by default. Yet I found a <a href="http://blog.joerghoh.de/index.php?/archives/93-Ant-Properties-indirekt-aufloesen.html">blog entry</a> that explains how it can be done with newer versions of Ant (those that support macros). I adapted the solution a little bit with the following result:</p>
<blockquote><p>&lt;!&#8211; Needed to resolve a nested property like ${document.${input.file}.type} &#8211;&gt;     <br />&lt;macrodef name=&quot;resolveProperty&quot;&gt;      <br />&#160;&#160;&#160; &lt;attribute name=&quot;property&quot; /&gt;      <br />&#160;&#160;&#160; &lt;attribute name=&quot;value&quot; /&gt;      <br />&#160;&#160;&#160; &lt;sequential&gt;      <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;tmp1.@{property}&quot; value=&quot;document.@{value}.type&quot; /&gt;      <br />&#160;&#160;&#160;&#160;&#160; &lt;resolveProperty2 property=&quot;@{property}&quot; value=&quot;${tmp1.@{property}}&quot; /&gt;      <br />&#160;&#160;&#160; &lt;/sequential&gt;      <br />&lt;/macrodef&gt; </p>
<p>&lt;macrodef name=&quot;resolveProperty2&quot;&gt;     <br />&#160; &lt;attribute name=&quot;property&quot; /&gt;      <br />&#160; &lt;attribute name=&quot;value&quot; /&gt;      <br />&#160; &lt;sequential&gt;      <br />&#160;&#160;&#160; &lt;property name=&quot;@{property}&quot; value=&quot;${@{value}}&quot; /&gt;      <br />&#160; &lt;/sequential&gt;      <br />&lt;/macrodef&gt; </p>
</blockquote>
<p>Now I can set my property like so:</p>
<blockquote><p>&lt;resolveProperty property=&quot;document.calculated.type&quot; value=&quot;${project.input.file}&quot; /&gt; </p>
</blockquote>
<p>which effectively sets document.calculated.type=${document.${project.input.file}.type}.</p>
<p>Nice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/nested-properties-in-ant/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
