<?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>Simple thoughts</title>
	<atom:link href="http://x-ian.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://x-ian.net</link>
	<description>#{programming} &#124;&#124; #{mountains}</description>
	<lastBuildDate>Fri, 20 Apr 2012 13:04:55 +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>Rooting stock Kindle Fire 6.3 for Dummies</title>
		<link>http://x-ian.net/2012/04/20/rooting-stock-kindle-fire-6-3-for-dummies/</link>
		<comments>http://x-ian.net/2012/04/20/rooting-stock-kindle-fire-6-3-for-dummies/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 13:04:55 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=309</guid>
		<description><![CDATA[So, it turned out that I eventually couldn&#8217;t leave my hands off the Kindle Fire. Of course I can claim that I need this toy to be evaluated for my job. But after buying it with my German credit card I found out that it is heavily locked into the Amazon hemisphere. Too bad that [...]]]></description>
			<content:encoded><![CDATA[<p>So, it turned out that I eventually couldn&#8217;t leave my hands off the <a href="http://en.wikipedia.org/wiki/Kindle_Fire">Kindle Fire</a>. Of course I can claim that I need this toy to be evaluated for <a href="http://www.pih.org/">my job</a>. But after buying it with my German credit card I found out that it is heavily locked into the Amazon hemisphere. Too bad that they accept my German credit card to buy the device, but not to get any content or apps from the Amazon App Store. So there is of course the natural motivation to free this from all this stuff. This is f&#8217;ed up &#8211; you Mofos.</p>
<p>Unfortunately it seems that the rooting exercise is a pretty big mess. During my first night I thought I already totally bricked my Fire. However after tons of &#8216;research&#8217; (fancy word for reading too many articles which only contain part of the truth) I finally got the <a href="http://forum.xda-developers.com/showthread.php?t=1552547&amp;page=1">real summary</a>. This and a fresh new Windows system finally brought my Fire back to life. And if this doesn&#8217;t help, a physical USB Factory cable like this <a href="http://www.ebay.com/itm/2-5-ft-Micro-USB-Factory-Cable-Fastboot-mode-Motorola-Xoom-Droid-Razr-Atrix-/251034201342?pt=PDA_Accessories&amp;hash=item3a72cdecfe">one</a> should almost always do the trick.</p>
<p>Now I can explore the unlocked Android world and it might even be that I eventually really use this as a low-cost, high-quality remote data collection tool for my job. If not, I have at least one more blog post&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2012/04/20/rooting-stock-kindle-fire-6-3-for-dummies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pfSense: Self-registration for Captive Portal</title>
		<link>http://x-ian.net/2012/02/14/pfsense-self-registration-for-captive-portal/</link>
		<comments>http://x-ian.net/2012/02/14/pfsense-self-registration-for-captive-portal/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 08:20:17 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=301</guid>
		<description><![CDATA[Managing your users is good. But the work that comes with creating user accounts upfront is tedious and boring. At one point we got lost in trying to hook up each system manually to our WiFi. So we decided to outsource this to our users so that they have to register their devices by themselves.
Luckily [...]]]></description>
			<content:encoded><![CDATA[<p>Managing your users is good. But the work that comes with creating user accounts upfront is tedious and boring. At one point we got lost in trying to hook up each system manually to our WiFi. So we decided to outsource this to our users so that they have to register their devices by themselves.</p>
<p>Luckily pfSense proves to be extremely flexible, so with a custom portal page and some additional scripts we are able to get the important information we need. We ask the user to provide</p>
<ul>
<li>User</li>
<li>Email address (to get in touch with the user) and</li>
<li>Accept our Acceptable use policy.</li>
</ul>
<p>From there the system automatically detects</p>
<ul>
<li>MAC address (for device identification)</li>
<li>Initial IP during registration (the subnet from where the users connects tells us roughly from which geographical area the devices is connected to)</li>
<li>Date of registration</li>
<li>Hostname</li>
</ul>
<p>Every time a new devices is connected to the network, the system redirects the very first HTTP request to our custom portal page. After entering the required fields and hitting &#8216;Register&#8217; the system automatically detects MAC address and system hostname and creates a new user in our FreeRADIUS installation. If successful, the user is granted access to the network. If the system connects again, it uses RADIUS MAC authentication to see whther the user is already registered. If yes, then access is permitted. If not, the user is redirected to the portal page again.</p>
<p>(Note: Using solely the MAC address makes the system vulnerable to spoofing attacks. However our users typically don&#8217;t have this knowledge. At least not yet.)</p>
<p>During this self-signup, the user is only granted access with restricted traffic limits (we make use of pfSense&#8217; WISPr-Bandwidth-Max-Down and WISPr-Bandwidth-Max-Up capability with low initial values). From there the admins can promote the system to higher traffic caps if found eligible.</p>
<p>The whole configuration/deployment process is a little bit more complex. If someone wants to dive deep into it, make sure to check out our <a href="https://github.com/x-ian/pfSensePortal">project page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2012/02/14/pfsense-self-registration-for-captive-portal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pfSense: Shows &#8216;Users last connected&#8217; to Captive Portal</title>
		<link>http://x-ian.net/2012/02/07/pfsense-shows-users-last-connected-to-captive-portal/</link>
		<comments>http://x-ian.net/2012/02/07/pfsense-shows-users-last-connected-to-captive-portal/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 08:13:49 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=298</guid>
		<description><![CDATA[Using pfSense with the built-in FreeRADIUS can give you quite a lot of information; they are just not always visible through the Web UI. 
For instance if Radius logging is turned on you can keep track of all Captive Portal sessions by accessing the log files. This is particular useful when the users have the [...]]]></description>
			<content:encoded><![CDATA[<p>Using pfSense with the built-in FreeRADIUS can give you quite a lot of information; they are just not always visible through the Web UI. </p>
<p>For instance if Radius logging is turned on you can keep track of all Captive Portal sessions by accessing the log files. This is particular useful when the users have the ability to create their own accounts on the fly through a custom portal page based on their MAC addresses. But you might want to clean old and unused accounts once in a while.</p>
<p>In order to spot accounts that have been inactive for some time, you need to know who connected when for the last time. With shell access, simply copy and invoke this <a href="https://github.com/x-ian/pfSensePortal/blob/master/create_user_last_seen_csv.sh">script</a>. This compiles a CSV list of all users ever registered with their MAC addresses together with the last time they have been connected through the Captive Portal. Import the CSV into Excel, filter and sort by the last connected column to see which accounts are ready for removal.</p>
<p>The result looks like this:</p>
<pre class="brush: plain;">
MAC;TYPE;NAME;EMAIL;HOSTNAME;INITIAL_IP;REGISTERED;LAST_SEEN
904ce5a76256;apzu;Public_IT;abc@pih.org;APZU-30;2011-09-15;20120128
904ce5a76249;apzu;Public_IT;abc@pih.org;APZU-33;2011-09-16;20111019
001217dfc379;priv;user1;abc@pih.org;APZU-DFA08FCD6D;2011-09-16;20120128
001a7367b7ff;priv;user2abc@pih.org;;2011-09-18;20120127
</pre>
<p>(Note that part of the above dump has some custom information as it is tight to they way we use pfSense with a self-register capability for new users. But it should be straight forward to customize this.)</p>
<p>It would be simple to do this automatically (e.g. delete every account not connected in the last 3 months), but as I have some VIP users that I don&#8217;t want to clear, I just do this once in a while manually. Additionally it could be run as a cronjob every now and then and I guess you could automatically publish it through a web page or mail it to someone. Let me know if you did this, then I can steal it from you ,)</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2012/02/07/pfsense-shows-users-last-connected-to-captive-portal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pfSense: Sending emails through gmail</title>
		<link>http://x-ian.net/2012/02/01/pfsense-sending-emails-through-gmail/</link>
		<comments>http://x-ian.net/2012/02/01/pfsense-sending-emails-through-gmail/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 08:10:16 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=295</guid>
		<description><![CDATA[It seems troublesome to send email especially through gmail accounts from *nix systems. Using pfSense as our Captive Portal box running on top of FreeBSD is no exception. So that&#8217;s what we did to get pfSense sending us emails through shell scripts.
I&#8217;ve tried a couple of things, but eventually sticked to a perl module (including [...]]]></description>
			<content:encoded><![CDATA[<p>It seems troublesome to send email especially through gmail accounts from *nix systems. Using pfSense as our Captive Portal box running on top of FreeBSD is no exception. So that&#8217;s what we did to get pfSense sending us emails through shell scripts.</p>
<p>I&#8217;ve tried a couple of things, but eventually sticked to a perl module (including the BSD packages mailx and msmtp), but they all didn&#8217;t work in one way or another. I came pretty far, but at the end figured out that TLS/SSL support is not build-in. And compiling the packages on the pfSense box seemed not advisable. After all it is a firewall.</p>
<p>To install it, simply invoke this from the shell:</p>
<pre class="brush: bash;">
pkg_add -r p5-Net-SMTP-TLS
</pre>
<p>In case you have a sligthly outdated pfSense installation like I do and this command fails, you might need to tune the package repository a little bit. </p>
<pre class="brush: bash;">
setenv PACKAGESITE ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/i386/8.1-RELEASE/packages/Latest/
</pre>
<p>Afterwards use this <a href="https://github.com/x-ian/pfSensePortal/blob/master/send_gmail.perl">script</a> as an example on how to send mails through the perl module.</p>
<p>Don&#8217;t forget to put your gmail password in a file called send_gmail_config.txt (just the password, nothing else) and well protect it.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2012/02/01/pfsense-sending-emails-through-gmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell perls</title>
		<link>http://x-ian.net/2012/01/29/shell-perls/</link>
		<comments>http://x-ian.net/2012/01/29/shell-perls/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 06:50:00 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=167</guid>
		<description><![CDATA[As I always forget them, I just put them down right now right here (they were sitting for too long in my Drafts folder). And I might update them as I go.

Replace multiple chars

sed &#34;s/=ABC=//g&#34;

Grep for multiple words
I know, I know. This shouldn&#8217;t be here, but I kept on forgetting it&#8230;

egrep &#34;FULL&#124;bytes&#124;speedup&#34; snapback.log

Calculate size of [...]]]></description>
			<content:encoded><![CDATA[<p>As I always forget them, I just put them down right now right here (they were sitting for too long in my Drafts folder). And I might update them as I go.</p>
<p><span id="more-167"></span></p>
<p><strong>Replace multiple chars</strong></p>
<pre class="brush: bash;">
sed &quot;s/=ABC=//g&quot;
</pre>
<p><strong>Grep for multiple words</strong></p>
<p>I know, I know. This shouldn&#8217;t be here, but I kept on forgetting it&#8230;</p>
<pre class="brush: bash;">
egrep &quot;FULL|bytes|speedup&quot; snapback.log
</pre>
<p><strong>Calculate size of directories</strong></p>
<pre class="brush: bash;">
du --max-depth=1 -h .
</pre>
<p><strong>Not sure what I did with this, but it seems pretty important&#8230;</strong></p>
<pre class="brush: bash;">
NUMBER=$[ ( $RANDOM % 100 )  + 1 ]
cat servers | while read line; do ./collect_authorized_keys.sh $line done; done
awk -F&quot;:&quot; '{ print $1 }' /etc/passwd
cat tt | while read line; do export NUMBER=$[$NUMBER + $line]; echo $NUMBER total size &amp;gt; s1; done;
</pre>
<p><strong>Replacing newlines</strong></p>
<p>My first thought about replacing newlines in files would have been sed, but it is <a href="http://funarg.nfshost.com/r2/notes/sed-return-comma.html">not</a>. tr is the way to go:</p>
<pre class="brush: bash;">
cat file | tr '\n' ','
</pre>
<p>To not only replace line endings, but also text before or after them, give this a try:</p>
<pre class="brush: bash;">
sed -n '1h;2,$H;${g;s/\n/,/g;p}' &lt;file&gt;
</pre>
<p><strong>Simulate system load</strong></p>
<pre class="brush: bash;">
dd if=/dev/zero bs=100M | gzip | gzip -d | gzip | gzip -d | gzip | gzip -d &gt; /dev/null &amp;amp;
</pre>
<p><strong>Howto kill all child processes of a (bash) process</strong></p>
<p>Killing a single process is easy; killing multiple processes also. But only if you know all of the PIDs. If you need to kill a process including all children (sub-processes), try this one:</p>
<pre class="brush: bash;">
ps -o pid= --ppid $PID_TO_KILL | xargs kill
</pre>
<p>(Note that there are a <a href="http://www.unix.com/unix-dummies-questions-answers/5245-script-kill-all-child-process-given-pid.html">gazillion</a> <a href="http://www.linuxforums.org/forum/redhat-fedora-linux-help/115955-how-kill-process-after-specific-time.html">solutions</a> out there, but they all seem to be a bit over-complicated. Or I&#8217;m missing something..)</p>
<p><strong>Check if a process is running</strong></p>
<pre class="brush: bash;">
kill -0 pid 2&gt;/dev/null
echo $?
</pre>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2012/01/29/shell-perls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pfSense: Lessons learned</title>
		<link>http://x-ian.net/2012/01/29/pfsense-lessons-learned/</link>
		<comments>http://x-ian.net/2012/01/29/pfsense-lessons-learned/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 06:36:23 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=284</guid>
		<description><![CDATA[In my current role as the &#8216;IT guy&#8217; for Partners In Health I&#8217;m also managing the whole IT including our networks in Malawi (note: It is only a rumor that &#8216;IT guy&#8217; translates to everything that has a power plug&#8230;). We not only provide Internet access to our employees, but also for the government including [...]]]></description>
			<content:encoded><![CDATA[<p>In my current role as the &#8216;IT guy&#8217; for <a href="http://www.pih.org/">Partners In Health</a> I&#8217;m also managing the whole IT including our networks in <a href="http://www.pih.org/pages/malawi/">Malawi</a> (note: It is only a rumor that &#8216;IT guy&#8217; translates to everything that has a power plug&#8230;). We not only provide Internet access to our employees, but also for the government including the local Ministry of Health. As our project has grown a lot in the last few years, so did the numbers of computers that are connected to the network.</p>
<p>Currently we are have connect 20+ access points and with this roughly ~100 devices are connected to the network every day (designed partially on top of <a href="http://x-ian.net/2011/04/18/wifi-performance-faq/">this</a>). And all of them squeeze through our tiny satellite link. We came a long way with adding network management tools and traffic shaping to manage the scarce bandwidth better, but at the end we also depend on the fairness of the users: If someone (or his/her system) is misbehaving, it impacts everyone else. With this it is crucial to know who is using the network and how: Welcome to the world of <a href="http://pfsense.org/">pfSense</a>.</p>
<p>Throughout the upcoming months some of the important lessons learned and findings are shared here. This will include topics like</p>
<ul>
<li>Deployment</li>
<li>Email notifications</li>
<li>Traffic limits</li>
<li>Accounting</li>
<li>Bandwidth Management / Traffic shaping</li>
<li>Captive Portal self registration with custom portal page</li>
<li>Basic HTTP filtering based on time of the day</li>
<li>Monitoring</li>
</ul>
<p>With all this I guess we may run one of the biggest (if not _the_ biggest) freely available public hotspot in Malawi. I like my work in the low-resource settings&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2012/01/29/pfsense-lessons-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calculate MySQL database size</title>
		<link>http://x-ian.net/2011/07/08/calculate-mysql-database-size/</link>
		<comments>http://x-ian.net/2011/07/08/calculate-mysql-database-size/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 16:00:23 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=279</guid>
		<description><![CDATA[Not sure anymore where I found this, but this is a nice script to see which MySQL tables take how much space.

SELECT NOW(), VERSION();
# Per Schema Queries
SET @schema = IFNULL(@schema,DATABASE());
# One Line Schema Summary
SELECT table_schema,
 SUM(data_length+index_length)/1024/1024 AS total_mb,
 SUM(data_length)/1024/1024 AS data_mb,
 SUM(index_length)/1024/1024 AS index_mb,
 COUNT(*) AS tables,
 CURDATE() AS today
FROM information_schema.tables
WHERE table_schema=@schema
GROUP BY table_schema;
# Schema [...]]]></description>
			<content:encoded><![CDATA[<p>Not sure anymore where I found this, but this is a nice script to see which MySQL tables take how much space.</p>
<pre class="brush: sql;">
SELECT NOW(), VERSION();
# Per Schema Queries
SET @schema = IFNULL(@schema,DATABASE());
# One Line Schema Summary
SELECT table_schema,
 SUM(data_length+index_length)/1024/1024 AS total_mb,
 SUM(data_length)/1024/1024 AS data_mb,
 SUM(index_length)/1024/1024 AS index_mb,
 COUNT(*) AS tables,
 CURDATE() AS today
FROM information_schema.tables
WHERE table_schema=@schema
GROUP BY table_schema;
# Schema Engine/Collation Summary
SELECT table_schema,engine,table_collation,
 COUNT(*) AS tables
FROM information_schema.tables
WHERE table_schema=@schema
GROUP BY table_schema,engine,table_collation;
# Schema Table Usage
SELECT table_schema,table_name,engine,row_format, table_rows, avg_row_length,
 (data_length+index_length)/1024/1024 as total_mb,
 (data_length)/1024/1024 as data_mb,
 (index_length)/1024/1024 as index_mb,
 CURDATE() AS today
FROM information_schema.tables
WHERE table_schema=@schema
ORDER BY 7 DESC;
# Schema Table BLOB/TEXT Usage
select table_schema,table_name,column_name,data_type
from information_schema.columns
where table_schema= @schema
and ( data_type LIKE '%TEXT' OR data_type like '%BLOB');
set @schema = NULL;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2011/07/08/calculate-mysql-database-size/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WiFi Performance FAQ</title>
		<link>http://x-ian.net/2011/04/18/wifi-performance-faq/</link>
		<comments>http://x-ian.net/2011/04/18/wifi-performance-faq/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 19:25:32 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=271</guid>
		<description><![CDATA[I&#8217;m by no means an expert in WiFi network planning and installation, but over the past year I have collected some knowledge and best guesses on how things work in terms of performance. Here is an open call for everyone to correct my views and not so obvious elements that impact the speed of your [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m by no means an expert in WiFi network planning and installation, but over the past year I have collected some knowledge and best guesses on how things work in terms of performance. Here is an open call for everyone to correct my views and not so obvious elements that impact the speed of your wireless network.</p>
<p><span id="more-271"></span></p>
<p><strong>Which 802.x standards are relevant?</strong><br />
- 11a on 5 GHz; almost unused<br />
- 11b on 2.4 GHz; nominal up to 11 Mbit/s, effectively max 600 Kbyte/sec<br />
- 11g on 2.4 GHz; up to 54 Mbit/s, effectively max 3 Mbyte/sec<br />
- 11n on 2.4 GHz and 5 GHz; some devices only follow the draft spec and not the final one (impact?)</p>
<p><strong>Which standards has the best coverage/signal range?</strong><br />
Unclear. In general 5 GHz signals have a reduced signal range due to its higher frequency, but as 11n sends with higher power, the standard claims that the range is extended compared to 11b/11g.</p>
<p><strong>What are sources for Non-WiFi interference?</strong><br />
Technically everything in the license-free 2.4 GHz and 5 GHz frequency bands like Bluetooth, Microwaves, Babyphones, Wireless Video Transmission adapters, Amateur radio, Walkie-Talkies.</p>
<p><strong>Is WiFi using a shared medium?</strong><br />
Yes, kind of similar to a BNC or &#8220;hub-ed&#8221; ethernet every participant needs to share the same medium. Therefore the more traffic is seen on the medium or the more clients are using it, the more likely are collisions and therefore re-transmissions. Minimizing shared access to this shared medium is one element of improving WiFi network performance. In other words wireless is a shared medium, meaning that all clients and neighboring APs compete for the same limited bandwidth, in addition, each client’s speed varies depending on the protocol it is running (802.11 a/b/g/n) and the signal strength, interference and noise it is experiencing.</p>
<p><strong>Which channels for 11b/11g are available?</strong><br />
In the US 1 &#8211; 11; in Europe 1 &#8211; 13; in Japan 1 &#8211; 14 (14 only for 11b, note that channel 14 is not linear therefore channel 10 and 14 are completely non-overlapping). The availability of different channels will depend on the device and maybe the country setting. So channels 12+ are not guaranteed to be fully functional. However it might be worthwhile to configure backbone links to this unusual channels (even though it might be against local law). This leaves 4 channels (instead of the typical 1, 6, 11), namely 1, 6, 10, and 14 as (almost) non-overlapping channels.</p>
<p><strong>Airtime consumption / utilization</strong><br />
A wireless frame transmitted to or from a client connected at a low data rate may utilize 10 milliseconds of airtime, whereas it may take only 100 microseconds for a client connected at a high data rate. Even though the high speed client could have sent 100 frames in the time the slow client takes to send one frame, the fast client still has to compete fairly for the airtime on a frame by frame basis, so it spends most of its time sitting idly waiting for the slow client to finish so it can have another chance to transmit. Unfortunately this means that a single low speed client can slow down all of the other clients on the WLAN.</p>
<p><strong>What is the impact of client connected with poor signal strength?</strong><br />
As explained with the airtime consumption slow clients consume more airtime to transfer a given amount of data, leaving less airtime for other clients, decreasing network capacity and significantly degrading the performance of all clients on the network.</p>
<p><strong>What is the Basic Rate?</strong><br />
Depending on client device and signal strength the AP and client are handshaking about the maximum available performance. The farther away a client is from the AP (read the weaker the signal), the lower is the Basic Rate. 802.11g supports rates of 6, 9, 12, 18, 24, 36, 48, 54 in addition to the 802.11b rates of 1, 2, 5.5 and 11Mbps. These can be seen e.g. with inSSIDer. A client can fall back to lowest basic rate to save energy or to increase link stability.</p>
<p><strong>Will one client with a low basic rate slow down other clients?</strong><br />
Depends. If the client is not busy than there shouldn&#8217;t be a big impact. But if the far away client is busy transmitting and receiving many connection drops and re-transmissions, the whole shared medium air should be congested. Additionally the latency should be higher, so that errors are detected later. In these cases even closer clients with a high Basic rate should suffer.</p>
<p><strong>What is the maximum number of concurrent connected clients to one AP?</strong><br />
Numbers seem to vary quite a bit. There are some Enterprise-devices which limit the number of connected clients to 10. Consumer APs seem to be more open, but the performance will suffer as all of them are talking on the same channel. Looks like above 20 is unreasonable.</p>
<p><strong>What happens if clients with different 802.11 standards are mixed on one AP?</strong><br />
If 11b clients are connected to a 11b/11g AP point or 11g clients to a 11g/11n AP it will decrease the performance. Statements vary from &#8220;just a little bit for everyone&#8221; to &#8220;bigger performance penalty&#8221; due to the compatibility mode that one AP is using for these mixed cases. It seems like if possible the mixed mode should be avoided, e.g. if still legacy 1b clients are present (most likely the case in our environments), than a dedicated AP 11b only could overcome this.</p>
<p><strong>What is the best alignment of external antennas for indoor APs?</strong><br />
Sometimes APs have up to 3 external antennas that can be aligned in different angles. Facing them in all three room axes is best to increase signal strength and to reduce interference. If there are less than 3 (up to none) antennas, then they will be molded inside of the case. Knowing its position might help with mounting or placing such an AP.</p>
<p><strong>Can one Wifi client bring down an AP?</strong><br />
To a good degree: yes. If the client is misbehaving (accidentally though wrong configs or drivers or purposely e.g. by trying to break into encryption) it can flood the shared medium air with packets. This way there will be many collision with other clients and therefore packet losses and re-transmissions. This way one client can monopolize the whole network segment.</p>
<p><strong>What impact has a client-to-client communication?</strong><br />
As every communication goes through the AP, the sending client first needs to send the data, which is then repeated by the AP for the receiving client. Therefore the same message goes over the air twice and leaving only half of the available throughput.</p>
<p><strong>Hiding SSIDs</strong><br />
Hiding SSIDs will not improve security as special WiFi clients (I refer to them as promiscuous WiFi stacks, but I&#8217;m not sure whether this is technical true) are still able to sniff transmissions within hidden SSID and extract the SSID from there. But hiding SSIDs might get rid of the beacon announcements at the basic rate. Additionally if this is used for backbone links they don&#8217;t indicate the availability of an AP to ordinary users if there is no for them. On the other side a hidden SSID will not be detected by survey tools like inSSIDer and therefore make the channel planning less obvious: If your neighbor doesn&#8217;t see your SSID and channel, he might be not aware of a collision.</p>
<p><strong>How to test real-world WiFi speed?</strong><br />
iperf daemon running on a server and iperf client on a wireless client measures the &#8220;real-world&#8221; IP performance.</p>
<p><strong>Mixing encryption</strong><br />
Some AP offer multiple encryption methods (like WPA2/AES and WPA2/TKIP). Even though it is supposed to work seamlessly there seem to be sometimes performance problems in the wild; especially with 11n networks. So the rule of thumb should be to not allow mixed encryption. As TKIP needs to be seen as almost broken anyways, switching to WPA2/TKIP for at least 11g networks is a good advice.</p>
<p><strong>Which features offer &#8220;enterprisey&#8221; components?</strong><br />
- Centrally managed through a WiFi controller<br />
- VoIP support through QoS<br />
- Roaming between multiple AP (internal roaming); helpful especially for mobile VoIP phones<br />
- Load Balancing<br />
- Ability to run AP with reduced power. This can be used to place the APs a lot closer together (higher density) while still avoiding radio interference among access points, resulting in more consistent coverage</p>
<p><strong>What is Client Isolation (sometimes called AP isolation)?</strong><br />
When activated an AP is blocking all client-to-client communication in his wireless network segment (is done on layer 2 through MAC addresses). Even though it seems common understanding that this doesn&#8217;t have any impact on performance, it might not be the whole truth. Client-to-client communication is always happening with half of the max speed as it always goes through the AP: First the client needs to send out his message, the AP picks it up and re-distributes it in the wireless segment. Thus the same message goes over the air twice. Now for general broadcasts and Windows shares this might happen more often than expected and for this case AP isolation should block and therefore eliminate unnecessary traffic resulting in higher performance. Unsure: Will this help against tools like Firesheep in unprotected networks?</p>
<p><strong>Which tools are available to troubleshoot WiFi problems?</strong><br />
- inSSIDer<br />
- GPS device<br />
- Others: NetStumpler, EarthStumpler, KnsGem, Kismet<br />
- External scanners (necessary if Non-WiFi interference should be detected)</p>
<p><strong>What are Wireless repeaters or Wireless Distribution systems (WDS)?</strong><br />
Although the details vary both technologies can be used to increase the coverage of a WiFi area. In a nutshell they pick up a WiFi signal from another AP and re-distributes it into its area. Usually they operate (they have to?) with the same settings for channel and encryption and could also offer a roaming capability. The drawback is that it reduces the maximum speed significantly as the signal will be re-send as many times as there are repeaters or WDS with the same settings (must be so, but I could only find reference to reduce the speed once by 50%). So they can be used to easily extend the coverage, but need to be carefully chosen to not introduce more bottlenecks.</p>
<p><strong>Are multicasts in WiFi settings different than in wired settings?</strong><br />
From a high point of view, no. But as an AP needs to make sure that every connected client is able to receive the multicast (same for broadcasts?), it will send out multicast packets with the lowest basic rate configured for the AP. And here the airtime consumption is (much) higher (leaving lesser room for other packets) and the available maximum throughput is capped at the basic rate (making HD video broadcasting impossible).</p>
<p><strong>What is a &#8220;hidden node&#8221;?</strong><br />
Two Wireless clients can be connected from the opposite ends of the coverage area to an AP point. Both see the AP, but are not able to see each other. This is one of the reasons why every traffic always goes through the AP.</p>
<p><strong>What impact has the Beacon interval?</strong><br />
Every AP announces its presence and configurational details in the interval of the beacon. Typically every minute a broadcast is send with the lowest basic rate so that clients can pick up the details. For static backbone link there is no need to constantly announces their details so increasing the interval will reduce the number of broadcast. Unsure if turning out the SSID broadcast also eliminates the beacon at all.</p>
<p><strong>What is the ACK Timeout (Sensitivity Range)?</strong><br />
(todo)</p>
<p><strong>Conclusions</strong><br />
Keep WiFi signal locally wherever possible<br />
Don&#8217;t give client access to wireless backbone links; separate backbone from enduser connections</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2011/04/18/wifi-performance-faq/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Do-it-yourself WiFi Catcher</title>
		<link>http://x-ian.net/2010/08/01/do-it-yourself-wifi-catcher/</link>
		<comments>http://x-ian.net/2010/08/01/do-it-yourself-wifi-catcher/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 06:08:19 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=269</guid>
		<description><![CDATA[Ever had to track down a client devices in an area covered by many (unmanaged) WiFi Access Points?
If tools like kismet/kismac are not working for you to track computers (e.g. because of unsupported hardware, crashes, bad wifi antenna on your laptop, then just build it yourself. 
All you need is a flashable consumer-level wifi access [...]]]></description>
			<content:encoded><![CDATA[<p>Ever had to track down a client devices in an area covered by many (unmanaged) WiFi Access Points?</p>
<p>If tools like kismet/kismac are not working for you to track computers (e.g. because of unsupported hardware, crashes, bad wifi antenna on your laptop, then just build it yourself. </p>
<p>All you need is a flashable consumer-level wifi access point (like a Linksys WRT54) and flash it with <a href="http://www.dd-wrt.com">dd-wrt</a>. This can put the router in monitor mode and together with the addon <a href="http://wiviz.natetrue.com/">wi-viz</a> you get an overview over all wireless activity. </p>
<p>And in case you want it mobile, simply put a bunch of batteries, e.g. 8 AA batteries with 1.5V each in a row and connect it to the router. Finally connect your laptop with an Ethernet cable, stuff everything in a little bag and walk around. If you know the MAC address of the devices your are looking for (laptop, handheld,&#8230;) just see very you have the strongest signal and walk in that direction. And voilà, you are able to geographically localize every WiFi device. Regardless of it&#8217;s connection to a specific access point. Welcome wiFi Catcher. Welcome Jack Bauer.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2010/08/01/do-it-yourself-wifi-catcher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mehr Höhenmeter gehen nicht</title>
		<link>http://x-ian.net/2009/12/30/mehr-hohenmeter-gehen-nicht/</link>
		<comments>http://x-ian.net/2009/12/30/mehr-hohenmeter-gehen-nicht/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 20:05:24 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=262</guid>
		<description><![CDATA[Zumindest nicht für mich. In einem Tag von Meereshöhe auf den El Teide (mit 3718m) zu laufen, ist nicht besonders zur Nachahmung empfohlen. Aber auch irgendwie cool und wahrscheinlich auf lange Zeit mein persönlicher Guinessbuch-Eintrag.
]]></description>
			<content:encoded><![CDATA[<p>Zumindest nicht für mich. In einem Tag von Meereshöhe auf den <a href="http://de.wikipedia.org/wiki/Teide">El Teide</a> (mit 3718m) zu laufen, ist nicht besonders zur Nachahmung empfohlen. Aber auch irgendwie cool und wahrscheinlich auf lange Zeit mein persönlicher Guinessbuch-Eintrag.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/12/30/mehr-hohenmeter-gehen-nicht/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>SSH tunnel Quickie</title>
		<link>http://x-ian.net/2009/10/13/ssh-tunnel-quickie/</link>
		<comments>http://x-ian.net/2009/10/13/ssh-tunnel-quickie/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 18:10:06 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=248</guid>
		<description><![CDATA[Sometimes I prefer to have a private (read secure and non-observable) web connection &#8211; being a developer and admin makes you a bit more paranoid&#8230;
So how can you establish a connection that besides from being non-observable may also bypass potential content filters or firewall rules? Of course with a simple SSH tunnel:

ssh -D 8080 -f [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes I prefer to have a private (read secure and non-observable) web connection &#8211; being a developer and admin makes you a bit more paranoid&#8230;</p>
<p>So how can you establish a connection that besides from being non-observable <em>may</em> also bypass potential content filters or firewall rules? Of course with a simple SSH tunnel:<br />
<code><br />
ssh -D 8080 -f -C -q -N user@server<br />
</code></p>
<p>Now simply configure your browser to use the SOCKS proxy running on your localhost at port 8080 and off you go.</p>
<p>The drawback is, that you need a Unix server outside to connect to. But who has not such a system <a href="http://www.firstprinciplesmanagement.com">somewhere</a>? And even if not by now, maybe just go in the <a href="http://aws.amazon.com/ec2/">clouds</a>.</p>
<p>And for those unlucky guys running Windows and PuTTY: even you could do <a href="http://vectrosecurity.com/content/view/67/26">that</a>.</p>
<p>Update: It seems like SSH can even be misused to tunnel Remote Desktop connections. This might do the trick:</p>
<p>sudo ssh -D 8180 -p 8999 &lt;SSH user&gt;@&lt;public external IP&gt;  -L 127.0.0.1:3333:&lt;internal IP of target RDP system&gt;:3389</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/10/13/ssh-tunnel-quickie/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Amerikanisches MacBook mit deutschen Umlauten</title>
		<link>http://x-ian.net/2009/09/13/amerikanisches-macbook-mit-deutschen-umlauten/</link>
		<comments>http://x-ian.net/2009/09/13/amerikanisches-macbook-mit-deutschen-umlauten/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 17:29:13 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=244</guid>
		<description><![CDATA[Wie bringe ich einem amerikanischen Mac mit englischer Tastatur unsere heiß-geliebten deutschen Umlaute bei?
Darüber ist schon (zu?) viel geschrieben worden, also darf ich jetzt auch mal ran. Ich erspare mir hier eine ausführliche Auflistung möglicher Gründe, warum man als Kraut ein solches Gerät überhaupt hat (Software-Entwickler, Firmenangestellter, @, Ausnutzung von Währungsvorteilen).
Universell kann die Tastenkombinationen ⌥-u [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Wie bringe ich einem amerikanischen Mac mit englischer Tastatur unsere heiß-geliebten deutschen Umlaute bei?</p></blockquote>
<p>Darüber ist schon (zu?) viel geschrieben worden, also darf ich jetzt auch mal ran. Ich erspare mir hier eine ausführliche Auflistung möglicher Gründe, warum man als Kraut ein solches Gerät überhaupt hat (<a href="http://www.macuser.de/forum/f10/englische-tastatur-deutsche-195146/">Software-Entwickler</a>, <a href="http://www.firstprinciplesmanagement.com/">Firmenangestellter</a>, <a href="http://maetsch.de/klammeraffe/">@</a>, <a href="http://www.spiegel.de/wirtschaft/0,1518,626290,00.html">Ausnutzung von Währungsvorteilen</a>).</p>
<p>Universell kann die Tastenkombinationen <em>⌥-u</em> (option-u) gefolgt von dem jeweiligen Umlautbuchstaben benutzt werden, um landes-spezifische Umlaute einzugeben. Ein <em>⌥-u U</em> erzeugt also ein <em>Ü</em>. Ferner bringt ein <em>⌥-s</em> das <em>ß</em> hervor. </p>
<p>Mir ist das aber noch zuviel Getippe. Mit <a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&#038;item_id=ukelele">Ukulele</a> habe ich mir die Tasten a, o, u, A, O, U in Verbindung mit der option Taste so umbelegt, dass Umlaute ohne Umweg über option-u direkt mittels <em>⌥-a, -o, -u, -A, -O, -U</em> eingeben werden können. </p>
<p>Und weil so schön einfach ist, kommt das <em>€</em> gleich noch auf <em>⌥-e</em> </p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/09/13/amerikanisches-macbook-mit-deutschen-umlauten/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Stop a long running shell/bash process after timeout</title>
		<link>http://x-ian.net/2009/09/10/stop-a-long-running-shellbash-process-after-a-timeout/</link>
		<comments>http://x-ian.net/2009/09/10/stop-a-long-running-shellbash-process-after-a-timeout/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 13:01:46 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=238</guid>
		<description><![CDATA[Sometimes a process should just run for a maximum amount of time. A nightly long network transfer, a backup, or a statistical report shouldn&#8217;t accidentally run until next business hours. A watchdog timer which kills a process once a certain time has passed by is needed.
As usual in Shell programming multiple ways are possible, all [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes a process should just run for a maximum amount of time. A nightly long network transfer, a backup, or a statistical report shouldn&#8217;t accidentally run until next business hours. A watchdog timer which kills a process once a certain time has passed by is needed.<br />
As usual in Shell programming multiple ways are possible, all of them have certain drawbacks. The simplest one would be just to call the long running process in the background and <a href="http://www.linuxforums.org/forum/redhat-fedora-linux-help/115955-how-kill-process-after-specific-time.html">capture its PID</a>. But then it is not that easy to capture the <a href="http://blog.apokalyptik.com/2008/12/05/bash-collecting-the-return-value-of-backgrounded-processes">return</a> <a href="http://jeremy.zawodny.com/blog/archives/010717.html">value</a> of it. Here is my shot with an additional <em>at</em> job:</p>
<pre class="brush: bash;">
#!/bin/sh
MY_PID=$$
TIMEOUT=1 # in minutes

# Install at job as watchdog to remove long running process
WATCHDOG_CMDFILE=/tmp/`basename $0`-$MY_PID
echo &amp;amp;quot;# watchdogfile script&amp;amp;quot; &amp;amp;gt; $WATCHDOG_CMDFILE
echo &amp;amp;quot;kill -0 `echo $MY_PID` 2&amp;amp;gt;/dev/null&amp;amp;quot; &amp;amp;gt;&amp;amp;gt; $WATCHDOG_CMDFILE
echo &amp;amp;quot;if [ $? -eq 0 ]; then&amp;amp;quot; &amp;amp;gt;&amp;amp;gt; $WATCHDOG_CMDFILE
echo &amp;amp;quot;  ps -o pid= --ppid `echo $MY_PID` | xargs kill&amp;amp;quot; &amp;amp;gt;&amp;amp;gt; $WATCHDOG_CMDFILE
echo &amp;amp;quot;  echo &amp;amp;quot;long running process aborted because it ran too long&amp;amp;quot;&amp;amp;quot; &amp;amp;gt;&amp;amp;gt; $WATCHDOG_CMDFILE
echo &amp;amp;quot;fi&amp;amp;quot; &amp;amp;gt;&amp;amp;gt; $WATCHDOG_CMDFILE
echo &amp;amp;quot;rm -f `echo $WATCHDOG_CMDFILE`&amp;amp;quot; &amp;amp;gt;&amp;amp;gt; $WATCHDOG_CMDFILE
at -f $WATCHDOG_CMDFILE now + $TIMEOUT min

# Start my very sophisticated long running task
sleep 3600 # 1 hour
RET=$?

# do whatever you normally do after the long running process finishes
echo $RET
</pre>
<p>(Note that <em>at</em> sends out emails with the stdout/stderr. If you have another notification method to indicate an aborted job, ensure that nothing is printed to std &#038; stderr.)</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/09/10/stop-a-long-running-shellbash-process-after-a-timeout/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Summit-Sammlung: Mt. Humphreys</title>
		<link>http://x-ian.net/2009/08/24/summit-sammlung-mt-humphreys/</link>
		<comments>http://x-ian.net/2009/08/24/summit-sammlung-mt-humphreys/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 22:29:22 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=213</guid>
		<description><![CDATA[Okok, anspruchsvoll ist er ja nicht, der Mt. Humphreys von den San Francisco Peaks in Arizona. Die 1000-irgendwas Hm lassen sich mit etwas Muehe in knapp 2 Stunden bewaeltigen. Aber dann hat man auf 3850 m einen ganz gewaltigen Rundumblick; Grand Canyon eingeschlossen&#8230;
Warmduscher koennten auch ein wenig abkuerzen, indem die lokale Sesselbahn den Weg auf [...]]]></description>
			<content:encoded><![CDATA[<p>Okok, anspruchsvoll ist er ja nicht, der <a href="http://de.wikipedia.org/wiki/Humphreys_Peak">Mt. Humphreys</a> von den San Francisco Peaks in Arizona. Die 1000-irgendwas Hm lassen sich mit etwas Muehe in knapp 2 Stunden bewaeltigen. Aber dann hat man auf 3850 m einen ganz gewaltigen Rundumblick; Grand Canyon eingeschlossen&#8230;</p>
<p>Warmduscher koennten auch ein wenig abkuerzen, indem die lokale Sesselbahn den Weg auf den hoechten Gipfel von Arizona vereinfacht.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/08/24/summit-sammlung-mt-humphreys/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Enough birthday stuff</title>
		<link>http://x-ian.net/2009/06/28/enough-birthday-stuff/</link>
		<comments>http://x-ian.net/2009/06/28/enough-birthday-stuff/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 18:53:20 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=204</guid>
		<description><![CDATA[Finally I solved all my struggles with my birthdays calendar at once. I just changed my OS&#8230; No more homegrown VBA macros to get what I want from Outlook.
Although I have to admin that even iCal and Addressbook from MacOS are not capable to manage more than 1 birthday per contact out of the box. [...]]]></description>
			<content:encoded><![CDATA[<p>Finally I solved all my struggles with my birthdays calendar at once. I just changed my OS&#8230; No more <a href="http://x-ian.net/2009/05/30/outlook-iphone-birthday-synchronisation/">homegrown VBA macros</a> to get what I want from Outlook.</p>
<p>Although I have to admin that even iCal and Addressbook from MacOS are not capable to manage more than 1 birthday per contact out of the box. But <a href="http://www.zencat.de/files/category-birthdayscanner-x.html">Birthday Scanner X</a> comes to the rescue. And it&#8217;s free.</p>
<p>If you&#8217;re still interested in my Outlook macros and have problems, let me know. I will be mercy&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/06/28/enough-birthday-stuff/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ERb’in &#8220;ActionMailer fixtures&#8221; Up</title>
		<link>http://x-ian.net/2009/06/16/erb%e2%80%99in-actionmailer-fixtures-up/</link>
		<comments>http://x-ian.net/2009/06/16/erb%e2%80%99in-actionmailer-fixtures-up/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 05:00:30 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>
		<category><![CDATA[Ruby || Rails]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=197</guid>
		<description><![CDATA[I don&#8217;t know if my slightly outdated Rails 2.2.2 is the problem. But unlike in the fixtures for normal unit tests, I can&#8217;t use ERb for my ActionMailers templates.
Add this method to your ActionMailer::TestCase to let ERb pre-process your fixtures:

  def read_fixture(action)
    a = super
    template = ERB.new(a.join)
 [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know if my slightly outdated Rails 2.2.2 is the problem. But unlike in the fixtures for normal unit tests, I can&#8217;t use ERb for my ActionMailers templates.</p>
<p>Add this method to your ActionMailer::TestCase to let ERb pre-process your fixtures:</p>
<pre class="brush: ruby;">
  def read_fixture(action)
    a = super
    template = ERB.new(a.join)
    template.result(binding)
  end
</pre>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/06/16/erb%e2%80%99in-actionmailer-fixtures-up/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Outlook-iPhone birthday synchronisation</title>
		<link>http://x-ian.net/2009/05/30/outlook-iphone-birthday-synchronisation/</link>
		<comments>http://x-ian.net/2009/05/30/outlook-iphone-birthday-synchronisation/#comments</comments>
		<pubDate>Sat, 30 May 2009 18:59:46 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=94</guid>
		<description><![CDATA[
Not satisfied with the way Outlook (2003) handles birthdays and anniversaries?
Want to have multiple birthdays just for one contact entry (maybe because you have one contact for a family, but want to track the birthdays of the countless kids)?
Do you need to control the reminders for the birthdays?
Wish you had the classical Palm solution (Feiertage) [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>Not satisfied with the way Outlook (2003) handles birthdays and anniversaries?</li>
<li>Want to have multiple birthdays just for one contact entry (maybe because you have one contact for a family, but want to track the birthdays of the countless kids)?</li>
<li>Do you need to control the reminders for the birthdays?</li>
<li>Wish you had the classical Palm solution (<a href="http://www.nhueck.de/">Feiertage</a>) for your iPhone or iPod touch?</li>
</ul>
<p>Yippee! <a href="http://github.com/x-ian/outlook-birthdays-done-right/tree/master">Macro time</a> &#8211; (<a href="http://x-ian.net/2009/05/01/swap-lastname-with-firstname-in-outlook/">again</a>)!</p>
<p><strong>LegeGeburtstageUndJahrestageImKalendarAn</strong></p>
<p>Add multiple birthdays to the notes of your contact and create proper recurrent events. Basically enter for every birthday you want to track for this contact in a new line with the format GEB Name: 24.12.2000 (Note the European style date format day.month.year and the prefix GEB (german abbreviation for Geburtstag = birthday)). Simply add all of your birthdays or anniversaries to your contacts, run the macro, and of you go. For more details see the linked docu.</p>
<p><strong>LoescheGeburtstageUndJahresTageImKalendar()</strong></p>
<p>Remove all (automatically) created recurrent events (e.g. for cleanup purpose)</p>
<p>And if your Outlook asks you for every single modification for allowance, use <a href="http://www.mapilab.com/outlook/security/">Advanced Security for Outlook</a> to suppress those questions.</p>
<p><span id="more-94"></span><br />
If you are interested: This is all my knowledge about the way Outlook 2003 handles it&#8217;s standard birthday field:</p>
<ol>
<li>While saving the current contact Outlook automatically creates a new yearly recurrent event for birthdays and anniversaries.</li>
<li>Sometimes this series is created, even if an existing entry is simply modified. E.g. if you change parts of name, then Outlook seems to consider this a new entry and creates a new recurrent event. Of course without removing the old event&#8230;</li>
<li>Even just change an existing birthday or anniversary and Outlook doubles the event as the old one is not removed.</li>
<li>You can see the list of all associated events of a contact in the tab activities. (Therefore somehow the calendar entries are linked with the contact.</li>
<li>There is (sometimes?) a dedicated and predefined calendar view for yearly events.</li>
<li>Besides those small caveats the major drawback is that there is no easy and reliable way to have more birthday entries per contact (not taken into account that you could misuse the concept and iterativly overwrite the birthdays and rename the contact to create multiple recurrent events).</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/05/30/outlook-iphone-birthday-synchronisation/feed/</wfw:commentRss>
		<slash:comments>145</slash:comments>
		</item>
		<item>
		<title>No remote root logins (even with SSH)</title>
		<link>http://x-ian.net/2009/05/19/no-remote-root-logins-even-with-ssh/</link>
		<comments>http://x-ian.net/2009/05/19/no-remote-root-logins-even-with-ssh/#comments</comments>
		<pubDate>Tue, 19 May 2009 21:51:33 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=169</guid>
		<description><![CDATA[OK. Not really &#8220;Programming stuff&#8221; anymore. But still important:
Don&#8217;t allow remote root logins at all, even with SSH
Why not? Because:

User name of root is known, therefore the account is vulnerable for brute-force attacks
Working as root should be an explicit switch and not the default policy. Just like being aware of switching hats.
Bad for auditing, if [...]]]></description>
			<content:encoded><![CDATA[<p>OK. Not really &#8220;Programming stuff&#8221; anymore. But still important:</p>
<blockquote><p>Don&#8217;t allow remote root logins at all, even with SSH</p></blockquote>
<p>Why not? Because:</p>
<ul>
<li>User name of root is known, therefore the account is vulnerable for brute-force attacks</li>
<li>Working as root should be an explicit switch and not the default policy. Just like being aware of switching hats.</li>
<li>Bad for auditing, if multiple users have root access.</li>
</ul>
<p>But now you say: &#8220;I don&#8217;t care as I use SSH for logins&#8221;.</p>
<ul>
<li>Depending on the auth method, password is still transfered over the wire.</li>
<li>But using public key auth instead of passwords might be even worse. Still you have to trust all(!) clients that the private key is stored safely. Read:</li>
</ul>
<ul>
<li>&#8220;Good enough&#8221; passphrase.</li>
<li>There is no way to tell from the public key (which is the only thing known by the server), if the private key has a passphrase at all.</li>
<li>Trust the client system (that it is not compromised)</li>
<li>Auto lock of the client system must be enabled after a few minutes of inactivity.</li>
<li>Sensible use of background daemons like ssh-agent or Pageant(Putty for Windows) on client systems necessary. What if the users start the keyring app, enters his passphrase and never shuts down his system. And now imagine a laptop running out-in-the-wild without any local password protection having an open private key in its memory!</li>
</ul>
<p>What to do? Dunno. Maybe:</p>
<ul>
<li>Use &#8220;ordinary&#8221; user accounts</li>
<li>SSH with either public key or passwd auth (depending on your decisions reg the previous points)</li>
<li>Enforce sudo (better) or su (less better) to gain temporarily root privileges</li>
</ul>
<p>Anything else???</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/05/19/no-remote-root-logins-even-with-ssh/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Resume rsync transfer after SSH connection crash</title>
		<link>http://x-ian.net/2009/05/15/resume-rsync-transfer-after-ssh-connection-crash/</link>
		<comments>http://x-ian.net/2009/05/15/resume-rsync-transfer-after-ssh-connection-crash/#comments</comments>
		<pubDate>Fri, 15 May 2009 00:35:22 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=151</guid>
		<description><![CDATA[Are you using SSH for your secure maintenance of your servers? &#8211; Sure.
Do you copy files with SCP between hosts? &#8211; Most likely.
Is there a need to transfer big files over slow and unreliable network connections (*)? &#8211; Could be.
Can SCP resume a download after the connection crashed? &#8211; No.
So why not simply use rsync [...]]]></description>
			<content:encoded><![CDATA[<p>Are you using SSH for your secure maintenance of your servers? &#8211; <em>Sure.</em></p>
<p>Do you copy files with SCP between hosts? &#8211; <em>Most likely.</em></p>
<p>Is there a need to transfer big files over slow and unreliable network connections (*)? &#8211; <em>Could be.</em></p>
<p>Can SCP resume a download after the connection crashed? &#8211; <strong><em>No.</em></strong></p>
<p>So why not simply use rsync over SSH for your file transfer. A minor drawback is, that unless you set up a rsync daemon (not appropriate for my case) you have to call rsync manually. Sadly rsync doesn&#8217;t offer something like &#8220;automatic retry in case of a connection failure&#8221;. (**)</p>
<p>Good for us, because now it&#8217;s tool time again; a single bash script does the trick:</p>
<pre class="brush: bash;">
#!/bin/sh
# reliable file transfer

# try rsync for x times
I=0
MAX_RESTARTS=5
LAST_EXIT_CODE=1
while [ $I -le $MAX_RESTARTS ]
do
  I=$(( $I + 1 ))
  echo $I. start of rsync
  rsync -av --partial --progress -e &quot;ssh&quot; x-ian@x-ian.net:~/MY_BIG_FILE .
  LAST_EXIT_CODE=$?
  if [ $LAST_EXIT_CODE -eq 0 ]; then
    break
  fi
done

# check if successful
if [ $LAST_EXIT_CODE -ne 0 ]; then
  echo rsync failed for $I times. giving up.
else
  echo rsync successful after $I times.
fi
</pre>
<p>Ah, just a sidenote as I always forget the syntax: If you need to remote execute a command via SSH with variables from your local shell, take this:</p>
<pre class="brush: bash;">
CMD=&quot;test -e M_BIG_FILE || cp MY_BIG_FILE `hostname -s`-MY_BIG_FILE&quot;
ssh x-ian@x-ian.net $CMD
</pre>
<p>&#8212;</p>
<p>(*) If you only have an unstable satelitte link, even 150 MB are way too big.<br />
(**) Make sure that you actually test over the network; using rsync with source and destination files on the same system deactivates the delta-calculation algorithm.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/05/15/resume-rsync-transfer-after-ssh-connection-crash/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Testing Webapps with multiple browsers</title>
		<link>http://x-ian.net/2009/05/13/testing-webapps-with-multiple-browsers/</link>
		<comments>http://x-ian.net/2009/05/13/testing-webapps-with-multiple-browsers/#comments</comments>
		<pubDate>Wed, 13 May 2009 21:04:42 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>
		<category><![CDATA[Ruby || Rails]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=87</guid>
		<description><![CDATA[Developing web applications can be fun and hard almost at the same time.
But when it comes down to testing, it can be a &#8230;.
Sure every developer has his favorite environment and develops against it. But his special browser is just a part of the big picture and there are way to many different browsers and [...]]]></description>
			<content:encoded><![CDATA[<p>Developing web applications can be fun and hard almost at the same time.</p>
<p>But when it comes down to testing, it can be a <a href="http://www.thefreedictionary.com/pain+in+the+ass">&#8230;</a>.</p>
<p>Sure every developer has his <a href="http://x-ian.net/2009/05/11/develop-with-firefox/">favorite environment</a> and develops against it. But his special browser is just a part of the big picture and there are way to many different browsers and versions out there in the wild. Of course you know them all:</p>
<ul>
<li>Internet Explorer [ <a href="http://iedeathmarch.org/">6</a> | 7 | 8 with <a href="http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx">Compatibility View</a> | 8 ]</li>
<li>FireFox [2 | 3 ]</li>
<li>Safari [ 3 | 4 ]</li>
<li>Chrome</li>
<li>Opera</li>
</ul>
<p>And those are only the traditional desktop browsers for MacOS, Win and Linux. (Personally I assume, that one browser behaves almost the same on different OS when it comes to the programming model. But this is not necessarily true for layout issues). Note that this list totally ignores the growing mobile market. I don&#8217;t know yet how to deal with them&#8230;</p>
<p>It will get even ridiculous if you could only install one version of a browser at the same time. Yes, IE &#8211; most credits go to you! There are some <a href="http://tredosoft.com/Multiple_IE">hacks</a> out there to install the Internet Explorer in different versions on one system.</p>
<p>In the past I&#8217;ve simply virtualized my system and got one image for every single browser. Worked, but it always felt like &#8220;<a href="http://en.wikipedia.org/wiki/Who_breaks_a_butterfly_upon_a_wheel%3F">shooting cannons to sparrows</a>&#8220;. There is quite some overhead involved to install and actually fire up the VM image.</p>
<p>Why not simply virtualize the browser? That&#8217;s exactly what <a href="http://www.xenocode.com/Browsers/">Xenocode</a> is doing. Download, run and test. Nice. The seamlessly network integration even make those things like <a href="http://x-ian.net/2009/04/23/network-http-speed-simulator/">local proxy servers</a> work.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/05/13/testing-webapps-with-multiple-browsers/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Develop with Firefox</title>
		<link>http://x-ian.net/2009/05/11/develop-with-firefox/</link>
		<comments>http://x-ian.net/2009/05/11/develop-with-firefox/#comments</comments>
		<pubDate>Mon, 11 May 2009 02:02:48 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=144</guid>
		<description><![CDATA[What is your favorite environment to develop new web applications?
Currently I think there is no way around good ol&#8217; Firefox. Not because of the browser, but more because of all those addons. It took me some time to find my configuration. Here it is:

Firebug
YSlow
Colorzilla
Html Validator
SwitchProxy Tool
Web Developer

But too bad, I&#8217;m too lazy to describe them [...]]]></description>
			<content:encoded><![CDATA[<p>What is your favorite environment to develop new <a href="http://www.firstprinciplesmanagement.com/">web applications</a>?</p>
<p>Currently I think there is no way around good ol&#8217; <a href="http://www.mozilla.com/firefox/">Firefox</a>. Not because of the browser, but more because of all those addons. It took me some time to find <em>my</em> configuration. Here it is:</p>
<ul>
<li><a href="http://getfirebug.com/">Firebug</a></li>
<li><a href="http://developer.yahoo.com/yslow/">YSlow</a></li>
<li><a href="http://www.colorzilla.com/firefox/">Colorzilla</a></li>
<li><a href="https://addons.mozilla.org/de/firefox/addon/249">Html Validator</a></li>
<li><a href="https://addons.mozilla.org/firefox/addon/125">SwitchProxy Tool</a></li>
<li><a href="https://addons.mozilla.org/addon/60">Web Developer</a></li>
</ul>
<p>But too bad, I&#8217;m too lazy to describe them all. Anyway you have to get comfortable with your own list. What&#8217;s on it?</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/05/11/develop-with-firefox/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Swap Lastname with Firstname in Outlook</title>
		<link>http://x-ian.net/2009/05/01/swap-lastname-with-firstname-in-outlook/</link>
		<comments>http://x-ian.net/2009/05/01/swap-lastname-with-firstname-in-outlook/#comments</comments>
		<pubDate>Fri, 01 May 2009 20:26:20 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=80</guid>
		<description><![CDATA[Even my [ of course way too old, grandpa-style, ugly, quite unsexy, and nothing close to a nerd gadget ] mobile phone Nokia 6230 offers a PC sync. OK. They were supposed to offer this even in the last millennium. But ever since then I was struggling with it. Not even with a real day-to-day [...]]]></description>
			<content:encoded><![CDATA[<p>Even my [ of course way too old, grandpa-style, ugly, quite unsexy, and nothing close to a nerd gadget ] mobile phone Nokia 6230 offers a PC sync. OK. They were supposed to offer this even in the last millennium. But ever since then I was struggling with it. Not even with a real day-to-day sync but just with a one-time copy operation of my contacts from my PC to the phone. Surely, if I only had/have a Mac. But life is never easy and you should always challenge yourself&#8230;</p>
<p>But why on earth is Nokia only offering one entry for a combined name field. In digits: 1, in letters again: ONE. But even more why on earth am at least I not able to put my Outlook contacts in the &#8220;Lastname Firstname&#8221; order to the phone. The PC Suite seems just to know it better and doesn&#8217;t let me. Therefore an alphabetic sort on the phone just shows of all the firstnames first. Crap and I need another solution.</p>
<p>So as I&#8217;m a developer I was refusing to simply look for already working solutions or even spend money. I had to do it the do-it-yourself way (for sure hundreds must have done this before).</p>
<p>So here is a small <a href="http://github.com/x-ian/outlook-swapnames/tree/master">Outlook macro</a> which takes all of your entries in the address book and places them in a new outlook address book called NokiaAddressBook. There it simply swaps lastname with firstname and I get my &#8220;Lastname Firstname&#8221; style. Stupid ugly, but also stupid simple.</p>
<p>Too bad my Nokia broke recently and now I switched to a Sony Ericsson.</p>
<p>PS1: This solution was heavily <a href="http://www.telefon-treff.de/showthread.php?s=&amp;threadid=131735&amp;ighlight=outlook+AND+sortieren">influenced</a>. Thanks!<br />
PS2: If you do the sync, close the Nokia Phone browser as it seems to block to connection of the PC Suite to your phone.<br />
PS3: The Nokia Phone Browser supports an import/export of vCards. But (not surprisingly) Outlook does not. Another but: The standard windows address reads vCards. So import vCards first to the Windows addressbook and from there to Outlook&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/05/01/swap-lastname-with-firstname-in-outlook/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Network (HTTP) speed simulator</title>
		<link>http://x-ian.net/2009/04/23/network-http-speed-simulator/</link>
		<comments>http://x-ian.net/2009/04/23/network-http-speed-simulator/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 14:17:08 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=74</guid>
		<description><![CDATA[If you&#8217;re seriously developing a webapp, sooner than later one of your clients will come with some Internet Explorer 6 related complains. Still in 2009, the year of the IE Death march. So what to do if they say: With IE6 is takes 3x longer to load the page than with _any other browser_?
But even [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re seriously developing a webapp, sooner than later one of your clients will come with some Internet Explorer 6 related complains. Still in 2009, the year of the <a href="http://iedeathmarch.org/">IE Death</a> march. So what to do if they say: With IE6 is takes 3x longer to load the page than with _any other browser_?</p>
<p>But even if it is not the IE6, you still might wonder how your app behaves with different connection speeds. There are some (windows) applications out there, which try to simulate different network connections. There must be others, but I&#8217;ve found <a href="http://www.netlimiter.com/">Netlimiter</a> and <a href="http://www.ngcoders.com/downloads/internet-speed-simulator-proxy-throttler">Speed Simulator</a> as out-of-the-box solutions. But Netlimiter is not free and Speed Simulator seems to have some problems with certain requests (AJAX, forwards, &#8230; who knows).</p>
<p>When it comes to HTTP-related things, why not using <a href="http://www.squid-cache.org/">Squid</a> as the de-facto standard for Proxy Servers?</p>
<p>Installing Squid is not as difficult as it may sound, even under <a href="http://squid.acmeconsulting.it/">Windows</a>. Just make sure that the <a href="http://wiki.squid-cache.org/Features/DelayPools?highlight=(faqlisted.yes)">Delayed Pools</a> Feature is enabled.</p>
<p>For your personal development you can leave all of the default configs in the squid.conf, except those:</p>
<ol>
<li># allow all requests<br />
acl all src 0.0.0.0/0.0.0.0<br />
http_access allow all<br />
icp_access allow all</li>
</ol>
<ol>
<li># delayed pools<br />
delay_pools 1<br />
delay_class 1 1<br />
delay_access 1 allow all<br />
delay_parameters 1 4000/4000<br />
# 64000 = 64 kbytes = 512 kbits<br />
#  8000 =  8 kbytes =  64 kbits<br />
#  4000 =  4 kbytes =  32 kbits</li>
</ol>
<p>To change the connection speed, simply tweak the values for delay_parameters e.g. to 64000/64000.</p>
<p>And if your are using Firefox as one of your development browsers, simply install the <a href="https://addons.mozilla.org/firefox/addon/125">SwitchProxy</a> Addon. This allows you to quickly switch between preconfigured proxy settings on-the-fly.</p>
<p>[And if you really what to go "pro", set-up multiple instances of Squid with different connection speeds, provide their services under different ports, and create different proxy configs for SwitchProxy. Then you don't even have to modify the squid.conf every time you want to switch the speed.]</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/04/23/network-http-speed-simulator/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>Everyone can start a business</title>
		<link>http://x-ian.net/2009/04/21/everyone-can-start-a-business/</link>
		<comments>http://x-ian.net/2009/04/21/everyone-can-start-a-business/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 07:24:44 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=58</guid>
		<description><![CDATA[Even his brother. So why not me?
Granted. I&#8217;m not the only head behind firstprinciplesmanagement.com, it is still in beta, and under construction at best,  but hey:
You have to start somewhere.
So if this flies off, then you might find more (personal) posts here.
Oh, and yes: Just another side built on Ruby on Rails.
]]></description>
			<content:encoded><![CDATA[<p>Even his <a href="https://twitter.com/al3x/status/1050814372">brother</a>. So why not me?</p>
<p>Granted. I&#8217;m not the only head behind <a href="http://www.firstprinciplesmanagement.com">firstprinciplesmanagement.com</a>, it is still in beta, and under construction at best,  but hey:</p>
<blockquote><p>You have to start somewhere.</p></blockquote>
<p>So if this flies off, then you might find more (personal) posts here.</p>
<p>Oh, and yes: Just another side built on <a href="http://rubyonrails.org/">Ruby on Rails</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/04/21/everyone-can-start-a-business/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Großer Daumen im Schneeschuh-Stil</title>
		<link>http://x-ian.net/2009/04/19/groser-daumen-im-schneeschuh-stil/</link>
		<comments>http://x-ian.net/2009/04/19/groser-daumen-im-schneeschuh-stil/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 19:44:35 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.firstprinciplesmanagement.de/?p=14</guid>
		<description><![CDATA[OK, heute war keiner so blöd, mit Schneeschuhen zu stapfen.
Alle waren mit Tourenski auf den Großen Daumen unterwegs. Alle?
Nein! Nicht alle.
Bloss einer kam auf die Idee, nur mit Schneeschuhen die 2280 m zu erklimmen. Dafür habe ich immerhin &#8220;by fair means&#8221; die 15 km Anfahrt mit dem Radel und den Schneeschuhen auf dem Rücken zurücklegt.
]]></description>
			<content:encoded><![CDATA[<p>OK, heute war keiner so blöd, mit Schneeschuhen zu stapfen.</p>
<p>Alle waren mit Tourenski auf den <a href="http://de.wikipedia.org/wiki/Gro%C3%9Fer_Daumen">Großen Daumen</a> unterwegs. Alle?</p>
<p>Nein! Nicht alle.</p>
<p>Bloss einer kam auf die Idee, nur mit Schneeschuhen die 2280 m zu erklimmen. Dafür habe ich immerhin &#8220;by fair means&#8221; die 15 km Anfahrt mit dem Radel und den Schneeschuhen auf dem Rücken zurücklegt.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/04/19/groser-daumen-im-schneeschuh-stil/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kategorie Tourenbuch</title>
		<link>http://x-ian.net/2009/04/19/kategorie-tourenbuch/</link>
		<comments>http://x-ian.net/2009/04/19/kategorie-tourenbuch/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 19:43:12 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.firstprinciplesmanagement.de/?p=12</guid>
		<description><![CDATA[Was kommt eigentlich in ein Tourenbuch?

Muss eine Tour anstrengend sein?
Gefährlich?
Möglichst viele Höhenmeter?
Als bestimmte Sportart ausgeführt?

Also, ich weiss ich nicht und das ist wohl auch egal. Ich sammel einfach alles, was mir (vor allem in den Bergen) Spass gemacht hat. Hauptsächlich weil mein Gedächtnis zu lückenhaft ist, um mir dies alles zu merken.
]]></description>
			<content:encoded><![CDATA[<p>Was kommt eigentlich in ein Tourenbuch?</p>
<ul>
<li>Muss eine Tour anstrengend sein?</li>
<li>Gefährlich?</li>
<li>Möglichst viele Höhenmeter?</li>
<li>Als bestimmte Sportart ausgeführt?</li>
</ul>
<p>Also, ich weiss ich nicht und das ist wohl auch egal. Ich sammel einfach alles, was mir (vor allem in den Bergen) Spass gemacht hat. Hauptsächlich weil mein Gedächtnis zu lückenhaft ist, um mir dies alles zu merken.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/04/19/kategorie-tourenbuch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>It&#8217;s about to start</title>
		<link>http://x-ian.net/2009/04/18/its-about-to-start/</link>
		<comments>http://x-ian.net/2009/04/18/its-about-to-start/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 19:08:13 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://x-ian.firstprinciplesmanagement.de/?p=3</guid>
		<description><![CDATA[A new blog for my simple thoughts; regarding my work and (some parts of) my private activities. Let&#8217;s see if and how it grows.
Oh, and yes. Even though this is the very first post, I will add some entries with older dates. Just for me to not forget them. I know that I will fake [...]]]></description>
			<content:encoded><![CDATA[<p>A new blog for my simple thoughts; regarding my work and (some parts of) my private activities. Let&#8217;s see if and how it grows.</p>
<p>Oh, and yes. Even though this is the very first post, I will add some entries with older dates. Just for me to not forget them. I know that I will fake the history, but hey, who cares?</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/04/18/its-about-to-start/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Immer mal wieder &#8220;Großer Feldberg&#8221;</title>
		<link>http://x-ian.net/2009/02/24/immer-mal-wieder-groser-feldberg/</link>
		<comments>http://x-ian.net/2009/02/24/immer-mal-wieder-groser-feldberg/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 21:10:48 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=28</guid>
		<description><![CDATA[Dem Großen Feldberg gebürt als der &#8220;Summit&#8221; meiner ehemaligen Hausberge hier ein eigener Abschnitt.
Im Sommer wie im Winter; zu Fuss, mit dem Rad oder auch im Auto ist man oben um runter zu gucken. U.a. auch weil hier wichtige Dinge entschieden und verarbeitet wurden.
]]></description>
			<content:encoded><![CDATA[<p>Dem <a href="http://de.wikipedia.org/wiki/Gro%C3%9Fer_Feldberg">Großen Feldberg</a> gebürt als der &#8220;<a href="http://de.wikipedia.org/wiki/Seven_Summits">Summit</a>&#8221; meiner ehemaligen Hausberge hier ein eigener Abschnitt.</p>
<p>Im Sommer wie im Winter; zu Fuss, mit dem Rad oder auch im Auto ist man oben um runter zu gucken. U.a. auch weil hier wichtige Dinge entschieden und verarbeitet wurden.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2009/02/24/immer-mal-wieder-groser-feldberg/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Schnell noch aufs Füssener Jöchle</title>
		<link>http://x-ian.net/2008/09/14/schnell-noch-aufs-fussener-jochle/</link>
		<comments>http://x-ian.net/2008/09/14/schnell-noch-aufs-fussener-jochle/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 21:17:08 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=32</guid>
		<description><![CDATA[Erster, aber wohl nicht letzter Berglauf (befürchte ich zumindest).
Es bleibt mir aber die Hoffnung, dass es im Alter besser wird. Denn gemessen an meiner Konkurrenz, die ich vom Start weg eigentlich nur von hinten gesehen habe, hätte ich sonst wohl keine Perspektive. Auf jeden Fall hatte mein direkter Konkurrent nicht nur 52 Sekunden, sondern viel [...]]]></description>
			<content:encoded><![CDATA[<p>Erster, aber wohl nicht letzter <a href="http://www.tannheimertal.at/hillclimb/">Berglauf </a>(befürchte ich zumindest).</p>
<p>Es bleibt mir aber die Hoffnung, dass es im Alter besser wird. Denn gemessen an meiner Konkurrenz, die ich vom Start weg eigentlich nur von hinten gesehen habe, hätte ich sonst wohl keine Perspektive. Auf jeden Fall hatte mein direkter Konkurrent nicht nur 52 Sekunden, sondern viel mehr gut 40 Jahre Vorsprung&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2008/09/14/schnell-noch-aufs-fussener-jochle/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Hoher Ifen</title>
		<link>http://x-ian.net/2008/06/22/hoher-ifen/</link>
		<comments>http://x-ian.net/2008/06/22/hoher-ifen/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 21:19:13 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=34</guid>
		<description><![CDATA[Mal wieder eine kombinierte Bergtour: Hoch Wandern auf der einen Seite, Runter Pseudo-Skifahren nur in seinen Bergschuhen auf der anderen Seite.
Nett war&#8217;s am Hohen Ifen. Nur warum muss ich immer auf &#8220;Bichln&#8221; sein, wenn was wichtiges im Leben passiert?
]]></description>
			<content:encoded><![CDATA[<p>Mal wieder eine kombinierte Bergtour: Hoch Wandern auf der einen Seite, Runter Pseudo-Skifahren nur in seinen Bergschuhen auf der anderen Seite.</p>
<p>Nett war&#8217;s am <a href="http://de.wikipedia.org/wiki/Hoher_Ifen">Hohen Ifen</a>. Nur warum muss ich immer auf &#8220;Bichln&#8221; sein, wenn was wichtiges im Leben passiert?</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2008/06/22/hoher-ifen/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Happy birthday jmove.org</title>
		<link>http://x-ian.net/2008/03/29/happy-birthday-jmoveorg/</link>
		<comments>http://x-ian.net/2008/03/29/happy-birthday-jmoveorg/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 09:18:11 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=63</guid>
		<description><![CDATA[Even though I feel at bit embarrassed to point to jmove.org because of my (current) effords, I&#8217;m one of the co-founders. It was finally released as version 1.0!
jmove eases the understanding         and valuation of the design and architecture of complex        [...]]]></description>
			<content:encoded><![CDATA[<p>Even though I feel at bit embarrassed to point to <a href="http://www.jmove.org/">jmove.org</a> because of my (current) effords, I&#8217;m one of the co-founders. It was finally released as version 1.0!</p>
<blockquote><p>jmove eases the understanding         and valuation of the design and architecture of complex         software written in java. It provides dependency analysis,         metrics, design rule checking and impact analysis. Define         your desired architecture model and check consistency with         the implementation.</p></blockquote>
<p>The complete thing (framework, UI) is implemented in Java and therefore has Java programs in it&#8217;s focus. If you want to measure and improve the quality of your Java-based software, give it is still worth giving it a try.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2008/03/29/happy-birthday-jmoveorg/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Hindelanger Klettersteig, (free tripple)</title>
		<link>http://x-ian.net/2007/06/17/hindelanger-klettersteig-free-tripple/</link>
		<comments>http://x-ian.net/2007/06/17/hindelanger-klettersteig-free-tripple/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 21:26:37 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=39</guid>
		<description><![CDATA[Schon so oft habe ich auf das Ende vom Klettersteig geguckt, aber erst jetzt war er wirklich komplett dran. Die Strategie war als erster am Einstieg zu sein, nur Handgepäck dabei zu haben und allen anderen Fersengeld zu geben.
Hat geklappt, aber wenn die Tour nicht als konventioneller Rundweg ausgelegt wird, dann hat gibt&#8217;s noch einen [...]]]></description>
			<content:encoded><![CDATA[<p>Schon so oft habe ich auf das Ende vom <a href="http://de.wikipedia.org/wiki/Hindelanger_Klettersteig">Klettersteig </a>geguckt, aber erst jetzt war er wirklich komplett dran. Die Strategie war als erster am Einstieg zu sein, nur Handgepäck dabei zu haben und allen anderen Fersengeld zu geben.</p>
<p>Hat geklappt, aber wenn die Tour nicht als konventioneller Rundweg ausgelegt wird, dann hat gibt&#8217;s noch einen elendig langen Abstieg; heftiger Muskelkater zumindest bei einer von uns Dreien inklusive.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2007/06/17/hindelanger-klettersteig-free-tripple/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Val de Mesdì in den Dolomiten</title>
		<link>http://x-ian.net/2007/03/03/val-de-mesdi-in-den-dolomiten/</link>
		<comments>http://x-ian.net/2007/03/03/val-de-mesdi-in-den-dolomiten/#comments</comments>
		<pubDate>Sat, 03 Mar 2007 21:25:34 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=37</guid>
		<description><![CDATA[Mal eine Skitour durchs Mittagstal bei Wolkenstein unternommen; (mal wieder) als kleines Geschenk ausgelegt.
Der &#8220;Grand Canyon&#8221; der Dolomiten macht wirklich was her. Erstmal rauf auf den Sellastock, dann Ski geschultert und eine stunde maschiert. Anschließend einen cool-steilen Einstieg ins Tal und dann &#8220;cruisen&#8221;.
Nett.
]]></description>
			<content:encoded><![CDATA[<p>Mal eine Skitour durchs Mittagstal bei Wolkenstein unternommen; (mal wieder) als kleines Geschenk ausgelegt.</p>
<p>Der &#8220;Grand Canyon&#8221; der Dolomiten macht wirklich was her. Erstmal rauf auf den Sellastock, dann Ski geschultert und eine stunde maschiert. Anschließend einen cool-steilen Einstieg ins Tal und dann &#8220;cruisen&#8221;.</p>
<p>Nett.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2007/03/03/val-de-mesdi-in-den-dolomiten/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Skitour rund die Jungfrau</title>
		<link>http://x-ian.net/2006/05/28/skitour-rund-die-jungfrau/</link>
		<comments>http://x-ian.net/2006/05/28/skitour-rund-die-jungfrau/#comments</comments>
		<pubDate>Sun, 28 May 2006 03:25:35 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=114</guid>
		<description><![CDATA[4-Tages Rundtour vom und zum Jungfraujoch. Mit Abstechern auf das Gross Wannenhorn (3905m) und zum Fiescher-Sattel (3973m). Ohne Worte und nur was für Masochisten.
]]></description>
			<content:encoded><![CDATA[<p>4-Tages Rundtour vom und zum <a href="http://de.wikipedia.org/wiki/Jungfraujoch">Jungfraujoch</a>. Mit Abstechern auf das <a href="http://de.wikipedia.org/wiki/Wannenhorn">Gross Wannenhorn</a> (3905m) und zum Fiescher-Sattel (3973m). Ohne Worte und nur was für Masochisten.</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2006/05/28/skitour-rund-die-jungfrau/feed/</wfw:commentRss>
		<slash:comments>77</slash:comments>
		</item>
		<item>
		<title>Zweisam nebenan auf der Spitze</title>
		<link>http://x-ian.net/2004/11/22/zweisam-nebenan-auf-der-spitze/</link>
		<comments>http://x-ian.net/2004/11/22/zweisam-nebenan-auf-der-spitze/#comments</comments>
		<pubDate>Mon, 22 Nov 2004 03:16:58 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=111</guid>
		<description><![CDATA[Fast wie die richtigen Bergsteiger. Und auch noch ganz nah dran am Patagonischen Inlandeis. Cool, anstregend, einmalig (?).
Der Cerro Solo mit Gipfel (~2100m).
]]></description>
			<content:encoded><![CDATA[<p>Fast wie die richtigen <a href="http://de.wikipedia.org/wiki/Cerro_Torre">Berg</a>steiger. Und auch noch ganz nah dran am <a href="http://images.google.com/images?q=patagonisches inlandeis">Patagonischen Inlandeis</a>. Cool, anstregend, einmalig (?).</p>
<p>Der Cerro Solo mit Gipfel (~2100m).</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2004/11/22/zweisam-nebenan-auf-der-spitze/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Vulcano Villarica</title>
		<link>http://x-ian.net/2004/10/30/vulcano-villarica/</link>
		<comments>http://x-ian.net/2004/10/30/vulcano-villarica/#comments</comments>
		<pubDate>Sat, 30 Oct 2004 03:37:06 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.net/?p=116</guid>
		<description><![CDATA[Einmal im Leben wollte ich auf auf so&#8217;nem Vulkan stehen. Der Villarica (2847 m) versprach (zu) einfach zu werden, und so musste flugs ein Snowboard mit hochgeschleppt werden. Zu dumm, dass eine so Wind-ausgesetzte Spitze eigentlich kein Boarden erlaubt. Also das Brett brav wieder runter geschleppt.
Egal. Immerhin mal Schwefel gerochen!
]]></description>
			<content:encoded><![CDATA[<p>Einmal im Leben wollte ich auf auf so&#8217;nem Vulkan stehen. Der <a href="http://de.wikipedia.org/wiki/Villarrica_(Vulkan)">Villarica</a> (2847 m) versprach (zu) einfach zu werden, und so musste flugs ein Snowboard mit hochgeschleppt werden. Zu dumm, dass eine so Wind-ausgesetzte Spitze eigentlich kein Boarden erlaubt. Also das Brett brav wieder runter geschleppt.</p>
<p>Egal. Immerhin mal Schwefel gerochen!</p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2004/10/30/vulcano-villarica/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mi montaña más alta &#8211; Huayna Potosi</title>
		<link>http://x-ian.net/2004/10/19/mi-montana-mas-alta-huayna-potosi/</link>
		<comments>http://x-ian.net/2004/10/19/mi-montana-mas-alta-huayna-potosi/#comments</comments>
		<pubDate>Tue, 19 Oct 2004 19:11:38 +0000</pubDate>
		<dc:creator>x-ian</dc:creator>
				<category><![CDATA[Tourenbuch]]></category>

		<guid isPermaLink="false">http://x-ian.firstprinciplesmanagement.de/?p=6</guid>
		<description><![CDATA[Mein bisheriger Rekord: der Huayna Potosi.
Aber keine Sorge, die 6088m ü. NN (oder was auch immer das amtliche Maß in Bolivien ist) waren nur als Trecking-Berg ausgeschrieben&#8230;


]]></description>
			<content:encoded><![CDATA[<p>Mein bisheriger Rekord: der <a href="http://de.wikipedia.org/wiki/Huayna_Potosi">Huayna Potosi</a>.</p>
<p>Aber keine Sorge, die 6088m <a href="http://de.wikipedia.org/wiki/Normalnull">ü. NN</a> (oder was auch immer das amtliche Maß in Bolivien ist) waren nur als Trecking-Berg ausgeschrieben&#8230;</p>
<p><a href="http://de.wikipedia.org/wiki/Huayna_Potos%C3%AD"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://x-ian.net/2004/10/19/mi-montana-mas-alta-huayna-potosi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

