<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://victortrac.com"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>three stacks of high society</title>
 <link>http://victortrac.com</link>
 <description></description>
 <language>en</language>
<item>
 <title>EC2 Ephemeral Disks vs EBS Volumes in RAID</title>
 <link>http://victortrac.com/EC2_Ephemeral_Disks_vs_EBS_Volumes</link>
 <description>&lt;h1&gt;EC2 Disk Overview&lt;/h1&gt;
&lt;p&gt;Amazon&#039;s EC2 service is really neat, but its disk subsystem has some peculiarities that are not initially obvious.  Up until very recently, root directories (&#039;/&#039;) at EC2 were limited to 10Gb, a limit defined by the maximum size of an Amazon Machine Image (AMI), essentially a template of an EC2 instance.  In order to use more disk space, Amazon provides ephemeral disks that one can format and mount anywhere on the file system.  However, in order to get persistent storage, one has to use network-attached EBS volumes, a sort of limitless in capacity but bound in I/O wonder of Amazon architecture.  There are clear performance implications in choosing how to configure an EC2 instance&#039;s disk subsystem, so I recently benchmarked some various ephemeral and EBS RAID configurations.&lt;br /&gt;
&lt;h4&gt;Ephemeral disks&lt;/h4&gt;
&lt;/p&gt;&lt;p&gt;Pros:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Free (included in cost of EC2 instance)&lt;/li&gt;
&lt;li&gt;Stable, predictable performance on par with a standard physical hard disk&lt;/li&gt;
&lt;li&gt;Abundant storage (up to 1.7TB on a c1.xlarge)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ephemeral - if the instance shuts down, all data is lost&lt;/li&gt;
&lt;li&gt;Average random seek performance (6-7ms seek times per spindle)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;EBS Volumes&lt;/h4&gt;
&lt;p&gt;Pros:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Highly available&quot; - AWS claims to provide redundancy and a lower failure rate than physical disks&lt;/li&gt;
&lt;li&gt;Portable - an EBS volume can be connected to any instance in a single availability zone&lt;/li&gt;
&lt;li&gt;Backups - can easily create snapshots&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extremely variable performance - seek times can range from .5ms to 10ms+&lt;/li&gt;
&lt;li&gt;Maximum throughput of 1Gbit/s&lt;/li&gt;
&lt;li&gt;Costs associated with storage and I/O&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Testing&lt;/h1&gt;
&lt;p&gt;For this testing, c1.xlarge instances were used due to their high CPU performance, memory capacity, &quot;I/O Performance: High&quot; (according to Amazon), and 4 available 450GB ephemeral disks.&lt;/p&gt;
&lt;p&gt;I created 5 c1.xlarge instances with 5 configurations: 4xEphemeral RAID0 local disk, single EBS,  2xEBS RAID0, 4xEBS RAID0, 8xEBS RAID0.  All instances were created in the us-east-1b Availability Zone and all EBS volumes attached were newly created specifically for this test.  Testing was done using bonnie++ on fast mode (-f flag, skips per-char tests).&lt;/p&gt;
&lt;p&gt;mdraid was used to create RAID0 arrays with a chunk size of 256k, for example:&lt;/p&gt;
&lt;pre&gt;mdadm --create --verbose /dev/md0 --level=0 -c256 --raid-devices=2 /dev/sdi1 /dev/sdi2 
&lt;/pre&gt;&lt;p&gt;blockdev is used to set the read-ahead buffer to 64k:&lt;/p&gt;
&lt;pre&gt;blockdev --setra 65536 /dev/md0
&lt;/pre&gt;&lt;p&gt;XFS is used as the filesystem:&lt;/p&gt;
&lt;pre&gt;mkfs.xfs -f /dev/md0 
&lt;/pre&gt;&lt;p&gt;Finally the RAID array is mounted with noatime at /mnt/md0:&lt;/p&gt;
&lt;pre&gt;mkdir -p /mnt/md0 &amp;amp;&amp;amp; mount -o noatime /dev/md0 /mnt/md0
&lt;/pre&gt;&lt;p&gt;I logged the results of Sequential Writes, Sequential Reads, and Random Seeks.  bonnie++ was run 6 times on each instance.&lt;/p&gt;
&lt;h3&gt;bonnie++ results&lt;/h3&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;50%&quot; style=&quot;border: none;&quot;&gt;
&lt;h4&gt;bonnie++ averages&lt;/h4&gt;
&lt;div&gt;
&lt;table class=&quot;data&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt; Instance &lt;/th&gt;
&lt;th&gt; Write &lt;/th&gt;
&lt;th&gt; Read &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4xEphemeral RAID0 &lt;/td&gt;
&lt;td&gt; 231680 &lt;/td&gt;
&lt;td&gt; 176739 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 1xEBS &lt;/td&gt;
&lt;td&gt; 37827 &lt;/td&gt;
&lt;td&gt; 48991 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 2xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 80578 &lt;/td&gt;
&lt;td&gt; 75966 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 4xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 98836 &lt;/td&gt;
&lt;td&gt; 89752 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 8xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 69921 &lt;/td&gt;
&lt;td&gt; 93175 &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;50%&quot; style=&quot;border: none;&quot;&gt;
&lt;h4&gt;Sequential Throughput&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/system/files/images/sequential_throughput.png&quot; width=&quot;300&quot; height=&quot;300&quot; /&gt; &lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Four ephemeral disks in a RAID0 configuration has extremely high throughput and an acceptable random seek performance. The ephemeral array results are almost a 4x scale of the same test of my desktop&#039;s 7200RPM desktop drive, which is what one would expect out of a RAID0 array of physical hard disks.&lt;/p&gt;
&lt;p&gt;The EBS results are a little less predictable.  A single EBS does not have the throughput of a single ephemeral drive.  The 2xEBS RAID0 shows almost twice the throughput of the single EBS volume, while the 4xEBS RAID0 and 8xEBS RAID0 instances do not scale much higher than the 2xEBS RAID0 instance for throughput.  Since EBS volumes are access via network, this indicates that EBS volume throughput is limited by the gigabit interface.&lt;/p&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;50%&quot;&gt;
&lt;h4&gt;Random Seek Times&lt;/h4&gt;
&lt;div&gt;
&lt;table class=&quot;data&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt; Instance &lt;/th&gt;
&lt;th&gt; Total Ran. Seek/s &lt;/th&gt;
&lt;th&gt; Per Volume &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 4xEphemeral RAID0 &lt;/td&gt;
&lt;td&gt; 658 &lt;/td&gt;
&lt;td&gt; 165 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 1xEBS &lt;/td&gt;
&lt;td&gt; 250 &lt;/td&gt;
&lt;td&gt; 250 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 2xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 396 &lt;/td&gt;
&lt;td&gt; 198 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 4xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 5138 &lt;/td&gt;
&lt;td&gt; 1285 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 8xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 2554 &lt;/td&gt;
&lt;td&gt; 319 &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;50%&quot;&gt;
&lt;h4&gt;Random Seeks&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;/system/files/images/random_seeks.png&quot; width=&quot;300&quot; height=&quot;300&quot; /&gt; &lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The ephemeral array does about 165 random seeks per second, which is comparable to a desktop hard disk.  &lt;/p&gt;
&lt;p&gt;EBS random seek performance, however, is not easily predictable.  The volumes that make up the 4xEBS RAID0 instance clearly are higher performing than those of the other instances.  Is EBS performance more of a property of the EBS volumes or the instance? &lt;/p&gt;
&lt;p&gt;Another interesting result I noticed (but didn&#039;t include in these graphs) is the deviation of performance from one run to another. The standard deviation between the runs was much smaller for the ephemeral drives than for the EBS volumes.&lt;/p&gt;
&lt;h4&gt;Swapping EBS volumes to identify bottleneck&lt;/h4&gt;
&lt;p&gt;I attached the two EBS volumes from the poorly performing 2xEBS RAID0 instance to the fast 4xEBS RAID0 instance and re-ran the tests.  If the performance of the two EBS volumes improves when attached to the 4xEBS RAID0 instance, then perhaps we can attribute the difference to the instances, but if the performance is the same, then we can blame the EBS volumes themselves.&lt;/p&gt;
&lt;p&gt;Results:&lt;/p&gt;
&lt;div&gt;
&lt;table class=&quot;data&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt; Configuration &lt;/th&gt;
&lt;th&gt; Seq W/s &lt;/th&gt;
&lt;th&gt; Seq R/s &lt;/th&gt;
&lt;th&gt; Ran. Seeks &lt;/th&gt;
&lt;th&gt; Seeks/EBS &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 2xEBS Volumes on 4xEBS Instance &lt;/td&gt;
&lt;td&gt; 110146 &lt;/td&gt;
&lt;td&gt; 91555 &lt;/td&gt;
&lt;td&gt; 795.6 &lt;/td&gt;
&lt;td&gt; 397.8 &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;The I/O channel is more or less saturated, but we still see the same poor random seek performance that the 2xEBS RAID0 instance exhibited with these two same EBS volumes.  This leads me to believe that the seek times are inherent to the individual EBS volumes themselves.&lt;/p&gt;
&lt;p&gt;To confirm, I mounted the high performance volumes from the 4xEBS RAID0 instance and the poorly performing volumes from the 2xEBS RAID0 instance to the 8xEBS RAID0 instance.  I wanted to test if we can &quot;export&quot; the high the performance from the 4xEBS RAID0 instance to the 8xEBS RAID0 instance.  I then repeated the bonnie++ tests.&lt;/p&gt;
&lt;p&gt;Results:&lt;/p&gt;
&lt;div&gt;
&lt;table class=&quot;data&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt; Configuration &lt;/th&gt;
&lt;th&gt; Seq W/s &lt;/th&gt;
&lt;th&gt; Seq R/s &lt;/th&gt;
&lt;th&gt; Ran. Seeks &lt;/th&gt;
&lt;th&gt; Seeks/EBS &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 8xEBS RAID0 (benchmark for instance) &lt;/td&gt;
&lt;td&gt; 39238 &lt;/td&gt;
&lt;td&gt; 90403 &lt;/td&gt;
&lt;td&gt; 1629 &lt;/td&gt;
&lt;td&gt; 204 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 2xEBS Volumes on 8xEBS Instance &lt;/td&gt;
&lt;td&gt; 108108 &lt;/td&gt;
&lt;td&gt; 94189 &lt;/td&gt;
&lt;td&gt; 735.3 &lt;/td&gt;
&lt;td&gt; 368 &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 4xEBS Volumes on 8xEBS Instance &lt;/td&gt;
&lt;td&gt; 125459 &lt;/td&gt;
&lt;td&gt; 93972 &lt;/td&gt;
&lt;td&gt; 9285 &lt;/td&gt;
&lt;td&gt; 2321 &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Once again, the 2xEBS volumes are still poorly performing and the previously fast 4xEBS volumes are still fast (they were even faster than before).  At this point, the evidence is pretty clear that the performance of the EBS volumes are inherent to the volume itself, since they exhibit the same level of performance regardless of the EC2 instance that mounts them.  &lt;/p&gt;
&lt;h4&gt;Instantaneous EBS performance over time&lt;/h4&gt;
&lt;p&gt;I wanted to test if EBS performance varies over time, so I created a new c1.xlarge instance, in another EC2 availability zone.  This new c1.xlarge instance had 4 new EBS volumes, configured as a 2xEBS RAID0 array (two EBS volumes unused) and a 4xEBS RAID0 array (all four used).  I ran bonnie++ over two weeks.&lt;/p&gt;
&lt;p&gt;Results:&lt;/p&gt;
&lt;div&gt;
&lt;table class=&quot;data&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt; Configuration &lt;/th&gt;
&lt;th&gt; Seq W/s &lt;/th&gt;
&lt;th&gt; Seq R/s &lt;/th&gt;
&lt;th&gt; Ran. Seeks &lt;/th&gt;
&lt;th&gt; Seeks/EBS &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 2xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 107513 &lt;/td&gt;
&lt;td&gt; 92681 &lt;/td&gt;
&lt;td&gt; 2642 &lt;/td&gt;
&lt;td&gt; 1321 &lt;/td&gt;
&lt;td&gt;       (week 1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 4xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 112326 &lt;/td&gt;
&lt;td&gt; 94844 &lt;/td&gt;
&lt;td&gt; 7829 &lt;/td&gt;
&lt;td&gt; 1957 &lt;/td&gt;
&lt;td&gt;       (week 1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 2xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 35799 &lt;/td&gt;
&lt;td&gt; 68619 &lt;/td&gt;
&lt;td&gt; 215 &lt;/td&gt;
&lt;td&gt; 108 &lt;/td&gt;
&lt;td&gt;          (week 2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; 4xEBS RAID0 &lt;/td&gt;
&lt;td&gt; 88012 &lt;/td&gt;
&lt;td&gt; 92863 &lt;/td&gt;
&lt;td&gt; 623 &lt;/td&gt;
&lt;td&gt; 156 &lt;/td&gt;
&lt;td&gt;   (week 2)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;The same instance using the 4 same EBS volumes show a huge discrepancy in performance from week to week. During the first week, the 4 EBS volumes perform admirably.  During the second week however, performance drops dramatically and the 4xEBS RAID0 volumes don&#039;t even seem to saturate the gigabit channel.  This doesn&#039;t bode well for EBS performance predictability.  &lt;/p&gt;
&lt;p&gt;During the second week, I ran &#039;iostat -x -m 240&#039; while I ran bonnie++ to see if I could identify the poor performance. &lt;/p&gt;
&lt;p&gt;2xEBS RAID0:&lt;/p&gt;
&lt;pre&gt;avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.47   11.99    0.02   87.51
 
Device:         rrqm/s   wrqm/s   r/s   w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
md0               0.00     0.00  0.00 615.20     0.00    25.42    84.63     0.00    0.00   0.00   0.00
sdi1              0.00     0.06  0.00 307.41     0.00    12.71    84.67   148.55  483.20   3.25 100.02
sdi2              0.00     0.04  0.00 307.60     0.00    12.71    84.61    10.49   34.10   1.19  36.67
sdi3              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdi4              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
&lt;/pre&gt;&lt;p&gt;Notice the particularly poor &#039;await&#039; time of /dev/sdi1, one of the two members of the /dev/md0 RAID0 array.  Because of how poorly /dev/sdi1 was performing, the entire /dev/md0 array exhibited poor performance.  During a read request, the file file system sends a request to the /dev/md0 device, and mdadm determines that it needs to split the request into two separate requests, one that goes to /dev/sdi1 and /dev/sdi2.  If one of the two members of the array is poorly performing, as in this situation, it becomes a bottleneck for the entire array.  (As an aside, a few hours after seeing these poor numbers, I re-ran bonnie++ on these 4 EBS volumes, and they were once again fast.)&lt;/p&gt;
&lt;h1&gt;Conclusions&lt;/h1&gt;
&lt;p&gt;These tests show a tremendous variability in EBS performance, not just between one EBS volume and another but also within a single EBS, from one point in time to another.  Like CPU time on a shared server, an EBS volume&#039;s performance is dependent on how busy the entire EC2 ecosystem is.  However, AWS guarantees a certain number of CPU cycles and amount of RAM in an EC2 instance; it&#039;s not clear that AWS provides a similar guarantee for EBS performance.  &lt;/p&gt;
&lt;p&gt;There are a few key takeways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;EBS volumes, even several in RAID0, have a throughput limit of 1 gigabit/second on an EC2 instance. Two EBS volumes in RAID0 have the ability to almost max out an instance&#039;s EBS I/O channel&lt;/li&gt;
&lt;li&gt;EBS volumes can have random seek times ranging from .5x to 10x+ that of an ephemeral disk&lt;/li&gt;
&lt;li&gt;Ephemeral disks in RAID0 are very fast&lt;/li&gt;
&lt;li&gt;It is advisable to use both a mixture of ephemeral and EBS RAID arrays, depending on the situation&lt;/li&gt;
&lt;li&gt;4 or 8 EBS volumes in RAID0 seem to be enough to smooth out the peaks and valleys of individual EBS volumes&#039; seek times&lt;/li&gt;
&lt;li&gt;Increasing mdadm RAID0 chunk size to 256k and setting &#039;blockdev --setra 65536&#039; seems to help sustain I/O throughput even when seek times are bad. Mounting EBS arrays with &#039;-o noatime&#039; should also theoretically  help with poor seek performance.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You should also really read &lt;a href=&quot;http://stu.mp/2009/12/disk-io-and-throughput-benchmarks-on-amazons-ec2.html&quot;&gt;Joe Stump&#039;s good writeup&lt;/a&gt; and Heroku&#039;s &lt;a href=&quot;http://orion.heroku.com/past/2009/7/29/io_performance_on_ebs/&quot;&gt;Getting Good IO from Amazon&#039;s EBS&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://victortrac.com/EC2_Ephemeral_Disks_vs_EBS_Volumes#comments</comments>
 <category domain="http://victortrac.com/tags/amazon">amazon</category>
 <category domain="http://victortrac.com/taxonomy/term/122">ebs</category>
 <category domain="http://victortrac.com/taxonomy/term/121">ec2</category>
 <category domain="http://victortrac.com/taxonomy/term/123">raid</category>
 <category domain="http://victortrac.com/taxonomy/term/124">testing</category>
 <pubDate>Sat, 02 Jan 2010 06:55:33 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">84 at http://victortrac.com</guid>
</item>
<item>
 <title>From CET to CDT</title>
 <link>http://victortrac.com/node/82</link>
 <description>&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/victortrac/2681865542/&quot; title=&quot;View from Bismarckstrasse by victor trac, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3033/2681865542_fbbcb648ab.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;View from Bismarckstrasse&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Memory is really strange.  On the one hand, I&#039;m amazed at how fast the last three years of my life has gone by.  I remember walking into my hotel room on the day I landed in Stuttgart, a full month before Rebecca would come, and putting down my bags and really wondering what I had gotten myself into.  I had decided to take a job in a city I had visited only during my interviews, in a country I had only spent a few days in as a tourist, and here I am sitting down in my hotel room, in need of a shower, exhausted from jet-lag, only then grasping that I had committed myself and Rebecca to living in Stuttgart for at least three years.  At that moment I could only hope that we had made the right choice to come.  It turned out to be one of the best decisions of our lives.&lt;/p&gt;
&lt;p&gt;Remembering specific events, though, and time doesn&#039;t seem to move so quickly.  I think about my first weekend in Germany, when a colleague invited me to an Onion Festival in the medieval town of Esslingen, and it seems appropriately placed about three years ago.  Then I remember when our friend Laurel visited, our first visitor, I think, and how we went out to a besenwirtschaft (a uniquely south-west Germany gem, in which vineyard-owning families sell their own wine out of their living rooms) and got extremely intoxicated with a super friendly German couple.  We ended up getting invited to their home for a few more bottles of wine, and Rebecca got sick in their bathroom just as our taxi pulled up.  I remember all of the festivals - the Hamburg Fischmarkt, Karnival, the Weindorf, and of course the Bierfests (Germans love to find a reason, any reason, to have a festival).  I remember all our visitors - our families and lots of friends from home - who took advantage of us living in Stuttgart and allowed us to share our newly found love of Germany with them.  I think fondly of all the trips we took - the Turin Winter Olympics, Sardinia, the Lake District, Poland, and so many more.  The more memories I conjure up and place into a mental timeline, the more it seems like it really has been three, full, years since I stepped into my room at the Millennium Hotel, and I&#039;m both at once happy for the experience and sad that I can no longer call Stuttgart home, even if it means I no longer have to walk up &lt;a href=&quot;http://www.flickr.com/photos/victortrac/2681042367/in/set-72157594498433717/&quot;&gt;6 flights of stairs&lt;/a&gt; to be home.&lt;/p&gt;
&lt;p&gt;We hope to go 2 for 2 on picking cities randomly and moving without any prior connection, and so far Austin has really been a great place.  Many great things about German culture are embraced in Austin - love for the outdoors and festivals being the two most obvious.  There are even biergartens, and the town of &lt;a href=&quot;http://en.wikipedia.org/wiki/Fredericksburg,_Texas&quot;&gt;Fredricksburg&lt;/a&gt;, located in the center of Texas wine country (another huge similarity to Stuttgart!), was founded by Germans, and I think the German influence on the local culture shows.  There&#039;s even a local waterpark called the Schlitterbahn.  &lt;/p&gt;
&lt;p&gt;I think we&#039;re off to a good start.&lt;/p&gt;
</description>
 <comments>http://victortrac.com/node/82#comments</comments>
 <category domain="http://victortrac.com/taxonomy/term/118">austin</category>
 <category domain="http://victortrac.com/tags/germany">germany</category>
 <category domain="http://victortrac.com/tags/life">life</category>
 <pubDate>Tue, 29 Jul 2008 05:47:00 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">82 at http://victortrac.com</guid>
</item>
<item>
 <title>FOSDEM over; Crisis averted</title>
 <link>http://victortrac.com/node/79</link>
 <description>&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/victortrac/2302069768/&quot; title=&quot;lots of beer on tap by victor trac, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2081/2302069768_f9e5e89292.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;lots of beer on tap&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I &lt;a href=&quot;http://www.dopplr.com/traveller/victor&quot;&gt;went to Brussels&lt;/a&gt; last weekend for &lt;a href=&quot;http://fosdem.org&quot;&gt;FOSDEM 2008&lt;/a&gt;, which was held at &lt;a href=&quot;http://www.ulb.ac.be/&quot;&gt;ULB Campus Solbosh&lt;/a&gt;.  The free event was a good way to check in with the overall Open Source community and to see all of the interesting things people outside my normal circles are working on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Friday Night Beer Event&lt;/strong&gt;&lt;br /&gt;
Things got off to an memorable start on Friday night.  I timed my arrival so that I could attend the Friday night &quot;Pink Elephant&quot; beer event held at the &lt;a href=&quot;http://deliriumcafe.be&quot;&gt;Delirium Cafe&lt;/a&gt;.  I met up with a colleague, and we had a few good beers while chatting with other FOSDEM attendees.  Lots of people had their gadgets out for others to play with.  I got to play with a EeePC and a Nokia 810 while my iPhone was passed around.  I even picked up the presence of a OLPC OX-1 over wifi, but was never actually able to find it.&lt;/p&gt;
&lt;p&gt;After a few hours of drinking beer and talking about software, we met up with a few more friends to go to dinner at an underwhelming yet wistfully overpriced restaurant in the middle of the tourist trap.  I had another beer or two over dinner, and so when we left the restaurant, I was a little toasted. &lt;/p&gt;
&lt;p&gt;For some reason (playing with my phone?) I was straggling behind as we walked out when these two guys sidled up to me and started dancing, &lt;del&gt;singing&lt;/del&gt; yelling, and doing some weird line dance kick between my legs.  In my drunken state, I was a bit confused but thought they were just drunk too and danced along.  After a few moments of this silliness, they walked off.  I luckily had a moment of clarity and thought it best to check my pockets. &lt;em&gt;Wait, my wallet is missing.  Yup, it really is still missing.&lt;/em&gt; The two guys hadn&#039;t taken more than 20 steps down the street, so I ran up to the nearest one, forcefully grabbed his shoulder, and demanded, &quot;Give me back my wallet.&quot;  He looked a bit surprised and immediately pointed to his accomplice.  I turned to him and without a word, he reached into his coat pocket and handed over my wallet.  I took it from his hands, and strangely enough, we just parted ways.  The entire episode lasted probably 30 seconds or so, and my friends, who were only a few steps ahead, missed it all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Talks&lt;/strong&gt;&lt;br /&gt;
The next morning I was a bit slow getting up and got to FOSDEM about an hour late, missing the opening keynote (it didn&#039;t help that I stayed up for a few more hours playing poker with the hotel staffer and his friends, but that&#039;s another blog post).  I pretty much spent Saturday in the Janson auditorium listening to the big talks - &quot;How a large scale opensource project works&quot; with &lt;a href=&quot;http://www.flickr.com/photos/victortrac/2302262846/&quot;&gt;Robert Watson&lt;/a&gt;, &quot;Perl 6&quot; with &lt;a href=&quot;http://www.flickr.com/photos/victortrac/2302263120/&quot;&gt;Patrick Michaud&lt;/a&gt;, and &quot;Unicoding with PHP 6&quot; with &lt;a href=&quot;http://www.flickr.com/photos/victortrac/2301469107/&quot;&gt;Andrei Zmievski&lt;/a&gt;.  I also squeezed in some quick 15-minute &quot;lightning&quot; talks about smaller open source projects like &lt;a href=&quot;http://www.alfresco.com&quot;&gt;Alfresco&lt;/a&gt;, &lt;a href=&quot;http://openafs.org&quot;&gt;OpenAFS&lt;/a&gt;, and &lt;a href=&quot;http://www.squeak.org/&quot;&gt;Squeak&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was even slower getting up on Sunday morning* and missed the Drupal opening talks by &lt;a href=&quot;http://buytaert.net/&quot;&gt;Dries&lt;/a&gt;.  I did catch &lt;a href=&quot;http://krisbuytaert.com&quot;&gt;Kris Buytaert&#039;s&lt;/a&gt; &quot;Drupal and MySQL High Availability&quot;, which was quite good.  In addition, I took the opportunity to see a talk on &lt;a href=&quot;http://cakephp.org&quot;&gt;CakePHP&lt;/a&gt; and Mozilla&#039;s upcoming &lt;a href=&quot;http://labs.mozilla.com/2007/10/prism/&quot;&gt;Prism&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thoughts&lt;/strong&gt;&lt;br /&gt;
My colleagues in attendance weren&#039;t too enthusiastic about this year&#039;s FOSDEM.  Their main complaint was that it has become a little too commercialized with seemingly marketing-oriented talks, rather than more in-depth code talks.  While I can understand this sentiment, I think the problem is mainly with their expectations of FOSDEM.  FOSDEM should be a venue for projects to open up to people outside of their core community.  A code-driven, detailed talk about the intricacies of the Form API in Drupal 6, for example, would only be digestible by experienced members of the Drupal community, most of whom would be familiar with the FAPI in the first place.  Higher-level talks allow small projects, such as Squeak and CakePHP, to attract people like me who have a passing interest and may even be pulled in enough to try the stuff out.  &lt;/p&gt;
&lt;p&gt;Some of the speakers were certainly better than others.  FOSDEM (and Open Source in general) is a pretty international affair, and because the conference was conducted in English, there were varying levels of English public speaking abilities.  Overall, however, I thought the speakers were quite good and spoke to the subject matters well.  My only complaint is that FOSDEM seems to be outgrowing its britches.  There were lots in attendance, and at times, it was a little bit difficult walking through the masses to get to the talks in time.  That probably speaks to the growing popularity of OSS, which is always a good thing.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/victortrac/sets/72157604017357857/&quot;&gt;More photos from FOSDEM 2008&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;*I discovered the &lt;a href=&quot;http://www.grandcasinobrussels.be&quot;&gt;Grand Casino Brussels&lt;/a&gt; on Saturday night and was there until almost 4 in the morning waiting on a seat at the Hold &#039;em table.  Generally casinos in Europe are quite stuck up about dress code and appearances (to the point of making you rent an evening jacket), but I found Brussels casino to be very welcoming.  You still won&#039;t find flip-flops and t-shirts like you would at some places in Vegas, but at least you can walk in reasonably dressed.  Anyway, at 11PM I was #3 in line for a seat and  only got to #1 by 3:30am before I had had enough and just left.  They had two tables of €5/€10 NL Texas Hold&#039;em, but apparently they sometimes also have €10/€20 limit as well.&lt;/p&gt;
</description>
 <comments>http://victortrac.com/node/79#comments</comments>
 <category domain="http://victortrac.com/tags/drupal">drupal</category>
 <category domain="http://victortrac.com/tags/events">events</category>
 <category domain="http://victortrac.com/tags/life">life</category>
 <category domain="http://victortrac.com/tags/linux">linux</category>
 <category domain="http://victortrac.com/taxonomy/term/116">oss</category>
 <pubDate>Sun, 02 Mar 2008 14:03:18 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">79 at http://victortrac.com</guid>
</item>
<item>
 <title>Local root exploit in Linux kernel 2.6.17 to 2.6.24.1</title>
 <link>http://victortrac.com/node/78</link>
 <description>&lt;p&gt;Pretty scary stuff, even if you trust all of your users:&lt;/p&gt;
&lt;pre&gt;
victor@mercury ~ $ ./exploit
-----------------------------------
 Linux vmsplice Local Root Exploit
 By qaaz
-----------------------------------
[+] mmap: 0x100000000000 .. 0x100000001000
[+] page: 0x100000000000
[+] page: 0x100000000038
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4038
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0x2ac3dee3c000 .. 0x2ac3dee6e000
[+] root
mercury ~ # whoami
root
&lt;/pre&gt;&lt;p&gt;What&#039;s really amazing is that news of this vulnerability didn&#039;t really hit the mainstream web until today, but yet on Friday there was already &lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff_plain;h=8811930dc74a503415b35c4a79d14fb0b408a361;hp=66191dc622f5ff0a541524c4e96fdacfacfda206&quot;&gt;a  kernel patch&lt;/a&gt;.  There&#039;s even an &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=464953#14&quot;&gt;in-memory hotfix&lt;/a&gt; that you can use (I tried that too - it works) if you prefer to wait until an official kernel makes it downstream.  Open source is amazing.
&lt;/p&gt;&lt;p&gt;Had this been proprietary software, no one would have known about it except for the all the people exploiting it. Servers all over the world would get owned, and the software company wouldn&#039;t even discover it for a few more weeks.  Or worse, they would know about it, but would hope to keep it hush-hush until the next Patch Tuesday.&lt;/p&gt;
</description>
 <comments>http://victortrac.com/node/78#comments</comments>
 <category domain="http://victortrac.com/taxonomy/term/115">exploit</category>
 <category domain="http://victortrac.com/taxonomy/term/114">hacks</category>
 <category domain="http://victortrac.com/tags/linux">linux</category>
 <pubDate>Mon, 11 Feb 2008 00:27:19 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">78 at http://victortrac.com</guid>
</item>
<item>
 <title>Migrating to Google Apps (and getting everything working)</title>
 <link>http://victortrac.com/migrating-to-Google-Apps</link>
 <description>&lt;p&gt;For the last few years I&#039;ve been using Gmail exclusively and have been forwarding emails to @victortrac.com to my Gmail account.  Google&#039;s spam filters are the best I&#039;ve ever seen, and the interface is elegant and fast, and combined with loads of storage and IMAP access, Gmail is nearly the perfect email application.  The XMPP integration is just icing on the cake.  &lt;/p&gt;
&lt;p&gt;Because of these features, I voluntarily gave up having a customized email address on my personal domain to take advantage of Google&#039;s infrastructure and technology.  The decision was fairly easy - I was deluged in spam and GMail&#039;s web client was better than any other thin or thick client available.  By forwarding my domain&#039;s email to my Gmail account, I was letting Google&#039;s wonderful anti-spam technology work its magic.  This allowed me to retain some use of my previous email address, but as I started to use XMPP (aka Jabber or as Google calls it - Google Talk) I became more and more dependent on my Gmail identity.  Sure, I had other Jabber IDs, but it was just too convenient having a unified email address and Jabber ID provided by Gmail.  &lt;/p&gt;
&lt;p&gt;However, let&#039;s say that in five years Google shuts down or, more likely, another company comes along and provides a better service or product.  By this time your Gmail identity has evolved into a unified presence, communications, and identification address where anyone can reach you at any time &lt;strong&gt;and&lt;/strong&gt; is also your OpenID login to the majority of sites on the internet.  If you&#039;ve spent 10 years building this identity around a Gmail address, you&#039;re not in a great position to easily transition. By using Google Apps on a domain that you own and control, you&#039;ve at least separated the address from the services and would be able to move around as you want.  It&#039;s like being able to live all over the world, moving to where the grass is always greener, yet still always having a constant mailing address.&lt;/p&gt;
&lt;h3&gt;Getting it all to work&lt;/h3&gt;
&lt;p&gt;So today I registered and migrated victortrac.com to Google Apps, allowing me to use all of Google&#039;s great software on my personalized address.  The registration process is really quick and simple, and the actual migration part is just a handful of DNS changes depending on what services you want to switch over to Google.  For me it is just email and chat, and Google&#039;s documentation made it clear which MX servers I need to point my domain to.&lt;/p&gt;
&lt;p&gt;For XMPP, however, the documentation isn&#039;t very complete.  According to &lt;a href=&quot;http://www.google.com/support/a/bin/answer.py?answer=60227&amp;amp;hl=en&quot;&gt;this page&lt;/a&gt;, you need to add the following SRV records to your DNS server (replace gmail.com with your own domain):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
_xmpp-server._tcp.gmail.com. IN SRV 5 0 5269 xmpp-server.l.google.com.&lt;br /&gt;
_xmpp-server._tcp.gmail.com. IN SRV 20 0 5269 xmpp-server1.l.google.com.&lt;br /&gt;
_xmpp-server._tcp.gmail.com. IN SRV 20 0 5269 xmpp-server2.l.google.com.&lt;br /&gt;
_xmpp-server._tcp.gmail.com. IN SRV 20 0 5269 xmpp-server3.l.google.com.&lt;br /&gt;
_xmpp-server._tcp.gmail.com. IN SRV 20 0 5269 xmpp-server4.l.google.com.&lt;br /&gt;
_jabber._tcp.gmail.com. IN SRV 5 0 5269 xmpp-server.l.google.com.&lt;br /&gt;
_jabber._tcp.gmail.com. IN SRV 20 0 5269 xmpp-server1.l.google.com.&lt;br /&gt;
_jabber._tcp.gmail.com. IN SRV 20 0 5269 xmpp-server2.l.google.com.&lt;br /&gt;
_jabber._tcp.gmail.com. IN SRV 20 0 5269 xmpp-server3.l.google.com.&lt;br /&gt;
_jabber._tcp.gmail.com. IN SRV 20 0 5269 xmpp-server4.l.google.com.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The _xmpp-server._tcp and _jabber._tcp SRV records tell the requesting server to look at Google&#039;s XMPP servers when there&#039;s an XMPP request.  There are two minor problems here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Both _xmpp-server._tcp and _jabber._tcp records serve the same purpose (_jabber._tcp &lt;a href=&quot;http://mailman.jabber.org/pipermail/jadmin/2007-January/098908.html&quot;&gt;was even deprecated&lt;/a&gt; earlier this year)&lt;/li&gt;
&lt;li&gt;There&#039;s no _xmpp-client._tcp record
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;This means that Google&#039;s example only really adds s2s functionality to the thin client built into Gmail or Google&#039;s GTalk thick client, which contradicts &lt;a href=&quot;http://www.google.com/support/a/bin/answer.py?answer=49147&quot;&gt;this help page&lt;/a&gt; for configuring &lt;a href=&quot;http://pidgin.im&quot;&gt;Pidgin&lt;/a&gt; to work with your Google Apps domain (there&#039;s &lt;a href=&quot;http://groups.google.com/group/google-talk-open/browse_thread/thread/ce68c1f1c5ca542b/0c5ab626bf18ddab&quot;&gt;a whole thread&lt;/a&gt; on Google groups about people following Google&#039;s directions exactly but not being able to connect properly with Pidgin).&lt;/p&gt;
&lt;p&gt;In order to get a third party client to connect to Google&#039;s XMPP servers, you&#039;ll have to manually configure a &quot;Connect to server&quot; to go directly to talk.google.com.  The better solution, however, is to add another set of SRV records (again, replace gmail.com with your own domain):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
_xmpp-client._tcp.gmail.com. IN SRV 5 0 5222 xmpp-server.l.google.com.&lt;br /&gt;
_xmpp-client._tcp.gmail.com. IN SRV 20 0 5222 xmpp-server1.l.google.com.&lt;br /&gt;
_xmpp-client._tcp.gmail.com. IN SRV 20 0 5222 xmpp-server2.l.google.com.&lt;br /&gt;
_xmpp-client._tcp.gmail.com. IN SRV 20 0 5222 xmpp-server3.l.google.com.&lt;br /&gt;
_xmpp-client._tcp.gmail.com. IN SRV 20 0 5222 xmpp-server4.l.google.com.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;With these additional records, when XMPP clients try to log into your domain.com, your DNS server responds down the list and tells it to check on port 5222 on one of Google&#039;s servers.&lt;/p&gt;
&lt;h3&gt;OpenID next?&lt;/h3&gt;
&lt;p&gt;I&#039;m only a few hours into my migration over to Google Apps, but I think it&#039;ll be a good fit for me.  Now if only Google would roll out OpenID.... :)&lt;/p&gt;
</description>
 <comments>http://victortrac.com/migrating-to-Google-Apps#comments</comments>
 <category domain="http://victortrac.com/taxonomy/term/113">email</category>
 <category domain="http://victortrac.com/tags/google">Google</category>
 <category domain="http://victortrac.com/taxonomy/term/112">xmpp</category>
 <pubDate>Sat, 12 Jan 2008 20:00:11 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">77 at http://victortrac.com</guid>
</item>
<item>
 <title>Where&#039;s the &quot;Undo&quot; on Google Reader?</title>
 <link>http://victortrac.com/node/75</link>
 <description>&lt;p&gt;There&#039;s been a bunch of press lately about Google Reader&#039;s new features, most notably the &quot;Friends&#039; shared items&quot; section and Profiles.  A handful of people were instantly complaining about the lack of privacy and control, but  I don&#039;t really see Google&#039;s implementation as a problem.  It seems pretty simple to go to &quot;Manage friends&quot; and hide the contacts you don&#039;t want looking at your shared items, but this really kind of defeats the purpose of using your shared items to begin with.  If anything, I think Google&#039;s decision to automatically include your GTalk contacts just makes it that much likelier that I&#039;ll read and see my contacts&#039; shared items.  I wouldn&#039;t spend the time to go through my contacts to subscribe, but having them there automatically is great.  It&#039;s giving me the benefits of filtered reading list through a social network I wouldn&#039;t have bothered to use otherwise.&lt;/p&gt;
&lt;p&gt;However, I can see this causing some annoyance in the form of repeated posts.  If a lot of my contacts are subscribed to the same stuff I&#039;m subscribed to and decide to share it, I&#039;ll see it twice - once on my own feeds and again when I go through their shared items.  This has been annoying me on my Techmeme feed enough to want to consider unsubscribing from techmeme, and so I can see this becoming a bigger problem as I get more contacts who read the same stuff I read. &lt;/p&gt;
&lt;p&gt;Whenever Google gets around to fixing the duplicate feed problem (and I really hope they do soon), they should also add an &quot;Undo&quot; button in Google Reader.  In GMail, anytime you archive, delete, flag as spam, or otherwise move an email from one view to another, GMail gives you the option to undo the operation.  This is great because Archive, Report as Spam, and Delete are all right next to each other and easily mis-clicked.  Even if Undo wasn&#039;t an option, it would still be possible to manually reverse the change.  &lt;/p&gt;
&lt;p&gt;What really annoys me with Google Reader is that there is no undo option when you click on &quot;Mark all as read.&quot;  &quot;Refresh&quot; is stupidly directly next to &quot;Mark all as read,&quot; so I regularly end up clicking on the wrong button.  The best you can do is switch over to the &quot;All items&quot; view and hope that you could skim through to see what you might have missed.  Maybe I should take this as a blessing so that I can get through my feeds faster.&lt;/p&gt;
&lt;p&gt;I&#039;m a bit baffled why the smart guys at Google haven&#039;t fixed these problems.  Surely I&#039;m not the only Google Reader annoyed by duplicate posts and the inability to undo a &quot;Mark all as read&quot; mis-click.&lt;/p&gt;
</description>
 <comments>http://victortrac.com/node/75#comments</comments>
 <category domain="http://victortrac.com/tags/google">Google</category>
 <category domain="http://victortrac.com/taxonomy/term/111">UI</category>
 <category domain="http://victortrac.com/tags/web">web</category>
 <pubDate>Tue, 18 Dec 2007 23:12:52 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">75 at http://victortrac.com</guid>
</item>
<item>
 <title>Technology is Applied Magic</title>
 <link>http://victortrac.com/node/74</link>
 <description>&lt;p&gt;A few hours ago, Rebecca and I were walking through the &lt;a href=&quot;http://en.wikipedia.org/wiki/Stuttgart_S-Bahn&quot;&gt;Schwabstrasse&lt;/a&gt; S-bahn stop in Stuttgart, and as we reached the escalator to go up, we felt a cold wind coming down from the street level.&amp;nbsp; I was wearing only a short-sleeve polo shirt and a pair of light pants, and so we stopped to put on warmer clothing.&amp;nbsp; Only a few hours earlier, we were having &lt;a href=&quot;http://en.wikipedia.org/wiki/Paella&quot;&gt;paella&lt;/a&gt; on a warm Malvarrossa beach in &lt;a href=&quot;http://en.wikipedia.org/wiki/Valencia_%28city_in_Spain%29&quot;&gt;Valencia, Spain&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As we were putting on our jackets and gloves, Rebecca made a comment that reminded me of one of &lt;a href=&quot;http://en.wikipedia.org/wiki/Clarke%27s_three_laws&quot;&gt;Arthur C. Clarke&#039;s three laws&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Any sufficiently advanced technology is indistinguishable from magic.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;She observed that we had not been outside since stepping out of our friends&#039; car and into the Valencia airport, and had we instead taken the Valencia metro to get to the airport, we would have been able to step underground in downtown Valencia and then return above ground in downtown Stuttgart, having not been outside and exposed to any sort of weather or natural light the entire distance across three countries.  We were completely comfortable in the clothing we wore in the warm Valencian weather up until the point of reaching the Stuttgart street level, and that to me is amazing.&lt;/p&gt;
&lt;p&gt;So I was pleasantly surprised as I came across this image while catching up on some of my RSS feeds:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://victortrac.com/image/view/73/_original&quot; rel=&quot;lightbox&quot;&quot;&gt;&lt;img src=&quot;http://victortrac.com/system/files/images/ecardtransitmaps.preview.jpg&quot; style=&quot;&quot; title=&quot;Transit Map of the World’s Transit Systems&quot; alt=&quot;Transit Map of the World’s Transit Systems&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&#039;s a great little drawing, based on the London Tube map, that shows all of the worlds metropolitan mass transit systems either currently in existence or in the works.&lt;/p&gt;
&lt;p&gt;The culmination of our technology, ranging from efficient metro systems to air travel to client control systems, is indistinguishable from magic for nearly everyone who&#039;s lived before the 20th century (and even for certain people living in the 21st century, for that matter).&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Image via &lt;a href=&quot;http://strangemaps.wordpress.com/2007/12/03/212-transit-map-of-the-worlds-transit-systems/&quot; target=&quot;_new&quot;&gt;strange maps&lt;/a&gt;.&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
</description>
 <comments>http://victortrac.com/node/74#comments</comments>
 <category domain="http://victortrac.com/tags/life">life</category>
 <category domain="http://victortrac.com/taxonomy/term/108">maps</category>
 <category domain="http://victortrac.com/taxonomy/term/110">spain</category>
 <category domain="http://victortrac.com/tags/travel">travel</category>
 <category domain="http://victortrac.com/taxonomy/term/109">valencia</category>
 <pubDate>Sun, 09 Dec 2007 02:18:30 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">74 at http://victortrac.com</guid>
</item>
<item>
 <title>de.php.net has an invalid DNS entry</title>
 <link>http://victortrac.com/node/72</link>
 <description>&lt;p&gt;For a few days now, I&#039;ve been unable to reach &lt;a href=&quot;http://de.php.net&quot; title=&quot;http://de.php.net&quot;&gt;http://de.php.net&lt;/a&gt;, not because the site has been down but because of incorrect DNS configuration by de.php.net&#039;s Germany host. When you request a PHP manual page, PHP.net does this trick of geo-locating your IP and redirects you to your closet PHP.net mirror.  &lt;/p&gt;
&lt;p&gt;If you take a look, de.php.net is actually a CNAME record for php3.globe.de, which is in turn authoritative at ns1.dns-service.net.  The problem is ns1.dns-service.net doesn&#039;t have a record for php3.globe.de:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Searching for de.php.net A record at k.root-servers.net [193.0.14.129]: Got referral to d.gtld-servers.net. (zone: net.) [took 48 ms]&lt;br /&gt;
Searching for de.php.net A record at d.gtld-servers.net. [192.31.80.30]: Got referral to ns1.easydns.com. (zone: php.net.) [took 42 ms]&lt;br /&gt;
Searching for de.php.net A record at ns1.easydns.com. [216.220.40.243]: Got CNAME of php3.globe.de. and referral to m.root-servers.net [took 76 ms]&lt;br /&gt;
Searching for php3.globe.de A record at c.root-servers.net [192.33.4.12]: Got referral to C.DE.NET. (zone: de.) [took 36 ms]&lt;br /&gt;
Searching for php3.globe.de A record at C.DE.NET. [208.48.81.43]: Got referral to ns1.dns-service.net. (zone: globe.de.) [took 46 ms]&lt;br /&gt;
Searching for php3.globe.de A record at ns1.dns-service.net. [212.124.35.10]: Reports that no A records exist. [took 133 ms] Response: No A records exist for php3.globe.de, and php3.globe.de does not exist. [Neg TTL=86400 seconds] Details: ns1.dns-service.net. (an authoritative nameserver for globe.de.) says that there are no A records for php3.globe.de, and that the hostname php3.globe.de does not exist. The E-mail address in charge of the globe.de. zone is: &lt;a href=&quot;mailto:guardian@globe.de&quot;&gt;guardian@globe.de&lt;/a&gt;. NOTE: One or more CNAMEs were encountered. de.php.net is really php3.globe.de. &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Normally when the master nameserver is non-functional, DNS queries should fail-over to slave nameservers and pages are served normally.  However, in this case the master nameserver is fully functional - it just doesn&#039;t have a record for php3.globe.de.  What&#039;s funny is that the secondary nameservers for globe.de, ns2.dns-service.net and ns3.dns-service.net, have the correct A record for php3.globe.de, which means that the servers&#039; zone serial numbers are off and master-&gt;slave propagation isn&#039;t happening correctly.&lt;/p&gt;
&lt;p&gt;I&#039;ve easily solved my problem by just adding the correct entry into my local machine&#039;s hosts file, but I shouldn&#039;t have to do this (nor does this fix the problem for everyone else in Germany).  This just goes to show that DNS can be complicated and even the pros mess up every once and a while.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: It seems to be working today.  It took three days after I posted before someone at Globe.de noticed the problem and added the correct DNS entry.&lt;/p&gt;
</description>
 <comments>http://victortrac.com/node/72#comments</comments>
 <category domain="http://victortrac.com/taxonomy/term/105">dns</category>
 <category domain="http://victortrac.com/taxonomy/term/104">php</category>
 <category domain="http://victortrac.com/taxonomy/term/106">sysadmin</category>
 <pubDate>Sun, 02 Dec 2007 20:02:53 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">72 at http://victortrac.com</guid>
</item>
<item>
 <title>Upgrading a 1.0.2 iPhone to 1.1.1 Painlessly on Windows</title>
 <link>http://victortrac.com/upgrading_1-0-2_iphone_to_1-1-1_on_windows</link>
 <description>&lt;p&gt;I&#039;ve been mulling over upgrading my iPhone&#039;s firmware to 1.1.1 for the last few weeks but have been put off by the complexity of it.  All the tools and steps had been outlined so it was merely just running through the steps, but there were a ton of them, and it seemed like more of a pain in the ass than it was worth.  Well, the hacker community has come through again with a easy solution, and now the 1.0.2-&gt;1.1.1 process is pretty painless.&lt;br /&gt;
If you have an unlocked 1.0.2 iPhone and used AnySIM 1.0x to do it, you must &quot;virginize&quot; your iPhone before you can upgrade to 1.1.1.  Apparently AnySIM 1.0x had a bug that damaged the seczone of your baseband firmware, causing the 1.1.1 upgrade to brick your iPhone.  With the new release of the &lt;a href=&quot;http://code.google.com/p/iphone-elite/wiki/RevirginizingTool&quot; target=&quot;_new&quot;&gt;iphone-elite RevirginizingTool&lt;/a&gt;, here&#039;s how you do it on a Windows machine:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure iTunes is configured to sync your contacts to something (e.g. Windows Address Book) and your photos are backed up (I lost the photos on my iPhone).
&lt;/li&gt;&lt;li&gt;Virginize your iPhone back to 1.0.2 OS and baseband using &lt;a href=&quot;http://code.google.com/p/iphone-elite/wiki/RevirginizingTool&quot; target=&quot;_new&quot;&gt;RevirginizingTool&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Use iTunes to upgrade to 1.1.1
&lt;/li&gt;&lt;li&gt;Jailbreak 1.1.1 using &lt;a href=&quot;http://www.hackint0sh.org/forum/showthread.php?t=12867&quot; target=&quot;_new&quot;&gt;CARNAVAL&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Use AppTapp (installed by CARNAVAL) to install BSD Subsystem and OpenSSH
&lt;/li&gt;&lt;li&gt;SCP AnySIM 1.1 to your iPhone
&lt;/li&gt;&lt;li&gt;Run AnySIM
&lt;/li&gt;&lt;li&gt;GREAT SUCCESS!!!
&lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Assumptions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;You have an unlocked 1.0.2 phone that used AnySIM 1.0x
&lt;/li&gt;&lt;li&gt;You have BSD Subsystem and OpenSSH packages installed (install with Installer.app aka AppTapp)
&lt;/li&gt;&lt;li&gt;You have a strong WIFI signal
&lt;/li&gt;&lt;li&gt;If you have a virgin phone, just use iTunes to upgrade to 1.1.1 and then skip to step 4
&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Detailed Procedure&lt;/h2&gt;
&lt;h3&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Run a full sync on iTunes to back up all of your settings.  This will take care of your address book and most of your various settings.  Copy off any photos you want to your computer.&lt;/p&gt;
&lt;h3&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Download &lt;a href=&quot;http://sharebee.com/31994895&quot; target=&quot;_new&quot;&gt;this&lt;/a&gt;.  This is the latest release from the iphone elite team packaged with a script that will automatically virginize your iphone by backing up your seczone and flashing the baseband to its factory 1.0.2 state.  Now SCP (try WinSCP) this file to your iPhone using login &quot;root&quot; and the default password of &quot;alpine&quot;. SSH into your iPhone using root/alpine, and then make sure the file is in your iPhone&#039;s root directory, since the default home (really /private/var) is a partition mounted with noexec.  Move the file from root user&#039;s home to the file system /:&lt;/p&gt;
&lt;pre&gt;mv ~/virginiser.tar.gz /&lt;/pre&gt;&lt;p&gt;Then change dir to /, then run this command (all on one line, or you can run each command between the &amp;amp;&amp; separately):&lt;/p&gt;
&lt;pre&gt;tar -xzvf Virginiser.tar.gz &amp;&amp; ./Virginiser/virginise.sh &amp;&amp; mv Virginiser/seczone.backup .&lt;/pre&gt;&lt;p&gt;This untars the archive, runs the automated script, and then copies a backup of your seczone to the filesystem /.  SCP this seczone.backup file to your computer.  Hold down the power button, slide to confirm, and then reboot your iphone.  Now you should have a 1.0.2 iphone locked but still jailbroken.&lt;/p&gt;
&lt;p&gt;At this point I recommend using iTunes to restore your iphone to 1.0.2 factory fresh.  I had some problems with CARNAVAL installing its version of BSD Subsystem and OpenSSH over my previous installations using AppTapp.  After the iTunes restore, it&#039;ll reboot to exactly how a 1.0.2 iphone comes out of the sealed box - needing activation and SIM-locked.&lt;/p&gt;
&lt;p&gt;BTW, this step is basically an attempt to automate the manual steps &lt;a href=&quot;http://code.google.com/p/iphone-elite/wiki/RevirginizingTool&quot; target=&quot;_new&quot;&gt;shown here&lt;/a&gt;, so if you have trouble or need more detail, just read that page.&lt;/p&gt;
&lt;h3&gt;Step 3&lt;/h3&gt;
&lt;p&gt;Use iTunes to upgrade to 1.1.1.  You should now have a factory fresh equivalent of a 1.1.1 iphone.&lt;/p&gt;
&lt;h3&gt;Step 4&lt;/h3&gt;
&lt;p&gt;Download &lt;a href=&quot;http://www.hackint0sh.org/forum/showthread.php?t=12867&quot; target=&quot;_new&quot;&gt;CARNAVAL&lt;/a&gt; and unzip.  Connect your iPhone to your computer using the USB cable.  Make sure you kill iTunes.exe and iTunesHelper.exe in your Windows Task Manager.  Run the file &quot;(CLICK HERE) by brasuco.bat&quot;, which will walk you through the process.  FOLLOW THE INSTRUCTIONS CAREFULLY.  During one of the steps, you are asked to create a URL link to &lt;a href=&quot;http://jailbreak.toc2rta.com&quot; title=&quot;http://jailbreak.toc2rta.com&quot;&gt;http://jailbreak.toc2rta.com&lt;/a&gt; - if that URL doesn&#039;t take you back to the activation screen as expected, no worries, just tell clear it and type into the Safari URL bar this address instead: &lt;a href=&quot;http://jailbreak.kengz.com&quot; title=&quot;http://jailbreak.kengz.com&quot;&gt;http://jailbreak.kengz.com&lt;/a&gt;.  Visiting this will download the exploited TIFF, essentially rooting your iPhone.&lt;br /&gt;
After you&#039;ve followed all CARNAVAL instructions and learned about Brazil, you should be greeted with a fully jailbroken and activated iPhone.  &lt;/p&gt;
&lt;h3&gt;Step 5&lt;/h3&gt;
&lt;p&gt;CARNAVAL installed AppTapp, which shows up as Installer on your iphone&#039;s home screen.  Use that to install BSD subsystem and OpenSSH.  Now go to your iphone&#039;s WIFI settings to find your iphone&#039;s IP address.  You should now be able to SSH/SCP into your iphone using root/alpine.&lt;/p&gt;
&lt;h3&gt;Step 6&lt;/h3&gt;
&lt;p&gt;Download &lt;a href=&quot;http://conceitedsoftware.com/iphone/anySIM-1.1.zip&quot; target=&quot;_new&quot;&gt;AnySIM 1.1&lt;/a&gt;.  Unzip AnySIM-1.1.zip, which will give you a anySIM.app directory.  SCP this directory (not just the files) into your iPhone&#039;s /Applications directory.  Then chmod all the files inside your iphone&#039;s /Applications/anySIM.app/ directory to +x (0755 will work).  Once this is done, reboot your iphone to find the AnySIM icon on your iphone home menu.&lt;/p&gt;
&lt;h3&gt;Step 7&lt;/h3&gt;
&lt;p&gt;Run AnySIM, slide to confirm, and go get a cookie.&lt;/p&gt;
&lt;h3&gt;Step 8&lt;/h3&gt;
&lt;p&gt;You now have a fully jailbroken, activated, and SIM-unlocked iphone.  You also have Installer.app, a aptitude like application that lets you install a ton of really cool third party applications over the air, complete with notifications of application updates.  &lt;/p&gt;
&lt;h2&gt;Good Luck&lt;/h2&gt;
&lt;p&gt;The entire process only takes about 30 minutes.  I&#039;ve been running 1.1.1 for a few days and haven&#039;t noticed any problems.  I really dig the increased speaker volume and the &lt;i&gt;space, space&lt;/i&gt; to add a period and a space when using the keyboard.  Good luck, and leave a comment this works for you (or if you have any questions or suggestions).&lt;/p&gt;
</description>
 <comments>http://victortrac.com/upgrading_1-0-2_iphone_to_1-1-1_on_windows#comments</comments>
 <category domain="http://victortrac.com/tags/apple">apple</category>
 <category domain="http://victortrac.com/taxonomy/term/103">hack</category>
 <category domain="http://victortrac.com/tags/howto">howto</category>
 <category domain="http://victortrac.com/taxonomy/term/102">iphone</category>
 <pubDate>Thu, 25 Oct 2007 21:59:01 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">70 at http://victortrac.com</guid>
</item>
<item>
 <title>iPhone owned</title>
 <link>http://victortrac.com/iphone-owned</link>
 <description>&lt;p&gt;This is the first time I&#039;ve been back in the States since the iPhone was released, and after getting  a chance to play with one yesterday, I decided I had to go out and buy one today.  The problem is that AT&amp;amp;T-locked JesusPhone doesn&#039;t work in Germany without a little bit of hackery, and Apple&#039;s just-released-last-week 1.1.1 firmware is reported all over the internet to &lt;a href=&quot;http://www.macrumors.com/2007/09/30/iphone-1-1-1-aftermath/&quot;&gt;brick hacked iPhones&lt;/a&gt;.  Would an AT&amp;amp;T store in &lt;a href=&quot;http://en.wikipedia.org/wiki/Mount_Pleasant%2C_South_Carolina&quot;&gt;Mount Pleasant, SC&lt;/a&gt; turn over so many iPhones that they would already be selling boxed 1.1.1 models?&lt;/p&gt;
&lt;p&gt;South Carolina isn&#039;t exactly a technology hotspot, so I took a bet that I could buy a boxed iPhone with an older, perhaps original 1.0, firmware (flip-flops and sundresses, on the other hand, sell like hotcakes here).  I won my bet and within an hour of getting home, I had a completely unlocked iPhone with a myriad of cool unofficial apps, thanks to tools like &lt;a href=&quot;http://ibrickr.com/downloads/ibrickr_v0.8.zip&quot;&gt;iBrickr&lt;/a&gt; and &lt;a href=&quot;http://www.linkhider.com/Txc5&quot;&gt;PACAY&lt;/a&gt;.  My new iPhone now has a youtube viewer, OpenSSH, BSD utilities, a wifi stumbler, flickr uploader, and a completely cool Over The Air application installer.  &lt;/p&gt;
&lt;p&gt;The device is incredibly well built and solid.  It&#039;s smaller than I had imagined, but the screen is definitely adequate for browsing.  The touch screen obviously lacks tactile feedback, but it&#039;s also the most accurate touch interface I&#039;ve ever used.  I&#039;m able to type much faster than I ever could using normal keys and T9.&lt;/p&gt;
&lt;p&gt;With it unlocked and freed from Apple&#039;s proprietary grip, the iPhone is very special.  Free and open source software on such a beautiful piece of hardware is very exciting, but when Apple sets out to hamper such innovation and creativity, I can&#039;t help but think of their past mistakes with closed systems.  Things could have turned out very differently had MacOS been a little more open early on, and things may very well turn out similarly if Apple doesn&#039;t change their ways.  Here&#039;s to hoping Google&#039;s &lt;a href=&quot;http://www.engadget.com/2007/08/03/google-getting-more-serious-about-the-gphone/&quot;&gt;gPhone&lt;/a&gt; will be the IBM PC to Apple&#039;s II.&lt;/p&gt;
&lt;p&gt;Highly useful link: &lt;a href=&quot;http://coolblog.profit42.com/2007/09/27/unlock-your-iphone-using-the-latest-anysim/&quot;&gt;Unlock your iPhone using the latest AnySIM&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://victortrac.com/iphone-owned#comments</comments>
 <category domain="http://victortrac.com/tags/apple">apple</category>
 <category domain="http://victortrac.com/taxonomy/term/103">hack</category>
 <category domain="http://victortrac.com/taxonomy/term/102">iphone</category>
 <pubDate>Tue, 02 Oct 2007 04:30:20 +0000</pubDate>
 <dc:creator>Victor</dc:creator>
 <guid isPermaLink="false">69 at http://victortrac.com</guid>
</item>
</channel>
</rss>
