<?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>AmethystRSS Blog</title>
	<atom:link href="http://blog.AmethystRSS.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.AmethystRSS.net</link>
	<description>Managing the RSS Firehose</description>
	<lastBuildDate>Sun, 18 Mar 2012 03:32:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Software Speed, Programming Languages, and Hardware</title>
		<link>http://blog.AmethystRSS.net/2012/03/17/software-speed-programming-languages-and-hardware/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/17/software-speed-programming-languages-and-hardware/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 03:32:27 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Developing Amethyst]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=711</guid>
		<description><![CDATA[Three articles I&#8217;ve read recently have altered my thinking about data structures, algorithms, and performance. They confirm my belief that the more you and your code knows about the structure of your data, the better. My misconception (or perhaps outdated conception) is that once in memory, access times are nearly the same regardless of location. [...]]]></description>
			<content:encoded><![CDATA[<p>Three articles I&#8217;ve read recently have altered my thinking about data structures, algorithms, and performance. They confirm my belief that the more you and your code knows about the structure of your data, the better. My misconception (or perhaps outdated conception) is that once in memory, access times are nearly the same regardless of location. Actually, current main memory (not cache) architecture behaves much like a disk, just orders of magnitude faster. Sequential access is much faster than random access. Google &#8220;<a href="https://www.google.com/search?q=computer+memory+row+select+column+select">computer memory row select column select</a>&#8221; for details.</p>
<p>The first article, &#8220;Software Development for Infrastructure&#8221; in the January 2012 issue of Computer, is by Bjarne Stroustrop, the inventor of C++. He talks about a number of software issues, but the most surprising to me was his results from a program to add N random integers to a sorted list and then deleting random members of the list. He compared a vector (or array) implementation to a doubly linked list. I would expect the array version to be faster for small N. He tested up to N = 500,000 and the vector implementation was faster with the difference increasing with size. He used a linear search with both implementations, though a binary search on the array would be much faster. Preallocating space for the linked list helped, but the array version was still faster. This I did not expect.</p>
<p>He asked &#8220;How do I organize my code and data to minimize memory usage, cache misses, and so on?&#8221; His first order answer is:</p>
<ul>
<li>don&#8217;t store data unnecessarily</li>
<li>keep data compact</li>
<li>access memory in a predictable manner</li>
</ul>
<p>It is the last point where the above example shines.  The linked list is scattered all over memory, the array is alway compact and access patterns predictable.</p>
<p>Two other articles, <a href="http://radiospiel.org/sorting-in-c-3-times-faster-than-c">sorting in C++: 3 times faster than C</a> and <a href="http://dr-josiah.blogspot.com/2012/03/why-we-didnt-use-bloom-filter.html">Why we didn&#8217;t use a bloom filter</a> illustrate that generalizations about programming language speed need to be tested.  I think the analysis in the first article of why C++ was faster than C in this case is spot on.  I am not convinced that the analysis in the second article is correct, the author has an attitude about the C++ Standard Template Library (STL).  He blames Object-Oriented Programming (OOP) and vtables (used in C++ to implement virtual methods).  I can think of no good reason to use heavy OOP nor virtual methods in his example.  He may have bought into somebody&#8217;s dogma of using OOP everywhere and then rightly rejected it as inappropriate and then overgeneralized to rejecting it everywhere.  Or may just used just a poor implementation of the STL.</p>
<p>I think his real speedups are coming from a custom solution that exactly matched his problem (the number of elements in a set intersection) instead of the more general solution of computing the set intersection and counting the elements in it.  Note: his first solution was to use Redis for this.  Convenient, easy, and I could have predicted ahead of time, dead slow.  Building sets with millions of elements over the network is slow.  Staying in C or C++ is going to be way faster.  Beyond that, measure.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/17/software-speed-programming-languages-and-hardware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SxSW GO App Fixed</title>
		<link>http://blog.AmethystRSS.net/2012/03/10/sxsw-go-app-fixed/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/10/sxsw-go-app-fixed/#comments</comments>
		<pubDate>Sun, 11 Mar 2012 04:29:35 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[SXSWi]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=708</guid>
		<description><![CDATA[The SxSW Go app now syncs properly. At least when the server is up. At the moment, both the Website and the Android app are having problems. The paper copy continues to work, though I noticed that the list of speakers at one panel today is not the one in the paper copy. Paper versus [...]]]></description>
			<content:encoded><![CDATA[<p>The SxSW Go app now syncs properly.  At least when the server is up.  At the moment, both the Website and the Android app are having problems.  The paper copy continues to work, though I noticed that the list of speakers at one panel today is not the one in the paper copy.  Paper versus electronic is still a tradeoff.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/10/sxsw-go-app-fixed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paper Cannot Be Remotely Changed</title>
		<link>http://blog.AmethystRSS.net/2012/03/09/paper-cannot-be-remotely-changed/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/09/paper-cannot-be-remotely-changed/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 21:29:26 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[SXSWi]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=705</guid>
		<description><![CDATA[After Kathy Sierra canceled, her talk on the SxSW website and app disappeared. Not so the paper copy.]]></description>
			<content:encoded><![CDATA[<p>After Kathy Sierra canceled, her talk on the SxSW website and app disappeared.  Not so the paper copy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/09/paper-cannot-be-remotely-changed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kathy Sierra Cancels</title>
		<link>http://blog.AmethystRSS.net/2012/03/09/kathy-sierra-cancels/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/09/kathy-sierra-cancels/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 21:23:19 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[SXSWi]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=702</guid>
		<description><![CDATA[She is too ill to present. Wish her a speedy recovery.]]></description>
			<content:encoded><![CDATA[<p>She is too ill to present.  Wish her a speedy recovery.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/09/kathy-sierra-cancels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where is Kathy Sierra?</title>
		<link>http://blog.AmethystRSS.net/2012/03/09/where-is-kathy-sierra/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/09/where-is-kathy-sierra/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 17:26:18 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[SXSWi]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=696</guid>
		<description><![CDATA[Was working my way through my SxSWi schedule and noticed that Kathy Sierra&#8217;s talk, &#8220;battle for the soul user: gamification&#8217;s darkside&#8221; had disappeared. I had been eliminating over committed time slots and wondered if I had deleted the wrong one. Right now (11:25am CST), that talk is gone from the SxSW.com Website. I hope this [...]]]></description>
			<content:encoded><![CDATA[<p>Was working my way through my SxSWi schedule and noticed that Kathy Sierra&#8217;s talk, &#8220;battle for the soul user: gamification&#8217;s darkside&#8221; had disappeared.  I had been eliminating over committed time slots and wondered if I had deleted the wrong one.  </p>
<p>Right now (11:25am CST), that talk is gone from the SxSW.com Website.  I hope this is a technical glitch.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/09/where-is-kathy-sierra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SxSW app &#8211; Major Fail</title>
		<link>http://blog.AmethystRSS.net/2012/03/09/sxsw-app-major-fail/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/09/sxsw-app-major-fail/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 16:52:35 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[SXSWi]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=690</guid>
		<description><![CDATA[Downloaded the SxSW app for Android. Looked reasonable. Wandered about, exploring it. Still looks okay. Logged in and started through the events list, starred possible sessions to attend. Okay. Tried to sync. Never completed sync. Not okay. Opened it up the next day, times are screwy. The All Day events start at 3 in the [...]]]></description>
			<content:encoded><![CDATA[<p>Downloaded the SxSW app for Android.  Looked reasonable.  Wandered about, exploring it.  Still looks okay.  Logged in and started through the events list, starred possible sessions to attend.  Okay.  Tried to sync.  Never completed sync.  Not okay.  Opened it up the next day, times are screwy.  The All Day events start at 3 in the afternoon?  The first real (Kathy Sierra is back!) session is 9 at night?  Those times are off by 6 hours.  Aren&#8217;t we 6 hours off UTC (AKA GMT, Greenwich, Zulu)?  Yes.</p>
<p>I e-mailed the developers about the time difference.  In reviews, others reported both problems.  Waited a day, times still off and sync not working.  Uninstalled the app and reinstalled.  Times back to correct, still no working sync.</p>
<p>I&#8217;ve completed picking the events I want to attend on the SxSW Web site.  Now do I mark up the Pocket Guide (paper)?  Hand mark up the app?  Both?</p>
<p>The Pocket Guide is 8.5&#8243; high, too big for a pocket.  And spiral bound.  Spiral bindings do not survive long in a pack.  But it only needs to last a few days.  Paper is dependable.</p>
<p>The Android fits in my bag.  Is going anyway.  But I don&#8217;t know how much I can depend on the app.  How mobile friendly is the SxSW Website?</p>
<p>Every year the potholes are in different places.  Last year it took three tries and over an hour to get my badge.  With a picture from their Web cam at the registration desk.  It was never clear why the picture I uploaded was not used.  This year I was in and out of badge pickup in under 15 minutes.  With the picture from last year that wasn&#8217;t acceptable last year.  Shrug.</p>
<p>YPMV (Your Potholes May Vary)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/09/sxsw-app-major-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quiet: The Power of Introverts in a World That Can’t Stop Talking</title>
		<link>http://blog.AmethystRSS.net/2012/03/08/quiet/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/08/quiet/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 23:24:48 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[SXSWi]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=685</guid>
		<description><![CDATA[I am an introvert. Many, if not most, programmers are introverts. Quiet by Susan Cain is a helpful guide for introverts on how to play to their strengths. Note: introvert is not the same as shy. I&#8217;ve met two shy extroverts, both foreign nationals. Two is a bit small sample to generalize from. After a [...]]]></description>
			<content:encoded><![CDATA[<p>I am an <a href="http://en.wikipedia.org/wiki/Extraversion_and_introversion">introvert</a>.  Many, if not most, programmers are introverts.  <a href="http://www.thepowerofintroverts.com/about-the-book/"><em>Quiet</em></a> by Susan Cain is a helpful guide for introverts on how to play to their strengths.</p>
<p>Note: introvert is not the same as shy.  I&#8217;ve met two shy extroverts, both foreign nationals.  Two is a bit small sample to generalize from.  After a day of meetings, I&#8217;m ready to head home for some quiet and sleep.  My boss is ready to head over to the local brewpub with the customer to drink and discuss beer.  Classic introvert and extrovert behavior.  But at the company Christmas party, he is the one standing out around the edges.</p>
<p>I&#8217;m about to dive into SxSW Interactive, a potentially overwhelming experience for anyone.  Maybe this year I can have a few more successes and a bit less burnout.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/08/quiet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Padrino and libxml-ruby</title>
		<link>http://blog.AmethystRSS.net/2012/03/08/padrino-and-libxml-ruby/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/08/padrino-and-libxml-ruby/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 23:14:14 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Padrino]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=682</guid>
		<description><![CDATA[libxml-ruby (Ruby wrapper around the libxml2 library) does a few funky things that mess with Padrino&#8217;s head. LibXML::XML::Encoding redefines to_s() requiring one argument. This causes some error handling code to barf. I think Padrino can be changed to make this less likely. In the meantime, adding the following line to Gemfile seems to work. gem [...]]]></description>
			<content:encoded><![CDATA[<p>libxml-ruby (Ruby wrapper around the libxml2 library) does a few funky things that mess with Padrino&#8217;s head.  LibXML::XML::Encoding redefines to_s() requiring one argument.  This causes some error handling code to barf.  I think Padrino can be changed to make this less likely.  In the meantime, adding the following line to Gemfile seems to work.</p>
<p>gem &#8216;libxml-ruby&#8217;, :require => &#8216;xml&#8217;</p>
<p>I&#8217;ve messed with Padrino to check out how to change it for the better.  So I&#8217;m not positive which changes are the workaround/correction.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/08/padrino-and-libxml-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git rebase</title>
		<link>http://blog.AmethystRSS.net/2012/03/01/git-rebase/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/01/git-rebase/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 18:46:11 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=678</guid>
		<description><![CDATA[I learned git from &#8220;Pragmatic Version Control Using Git&#8221;. It is a good book, but the section on git rebase almost sounded like &#8220;The git rebase command rebases a branch.&#8221; Understanding Git Conceptually helped solidify my understanding of Git, especially the section on rebasing. The simple ASCII graphs of the branches and commits make clear [...]]]></description>
			<content:encoded><![CDATA[<p>I learned <code>git</code> from &#8220;Pragmatic Version Control Using Git&#8221;.  It is a good book, but the section on <code>git rebase</code> almost sounded like &#8220;The git rebase command rebases a branch.&#8221;</p>
<p><a href="http://www.eecs.harvard.edu/~cduan/technical/git/">Understanding Git Conceptually</a> helped solidify my understanding of Git, especially the section on <a href="http://www.eecs.harvard.edu/~cduan/technical/git/git-5.shtml">rebasing</a>.  The simple ASCII graphs of the branches and commits make clear what a thousand words did not.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/01/git-rebase/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter Bootstrap</title>
		<link>http://blog.AmethystRSS.net/2012/03/01/twitter-bootstrap/</link>
		<comments>http://blog.AmethystRSS.net/2012/03/01/twitter-bootstrap/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 18:02:02 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Padrino]]></category>

		<guid isPermaLink="false">http://blog.AmethystRSS.net/?p=674</guid>
		<description><![CDATA[Twitter has open sourced a CSS and Javascript library to help bootstraps get up and running.  I am switching to it for the Rails2 to Padrino migration.  Amethyst doesn&#8217;t have much style, and I&#8217;m too cheap to pay a designer.  I may when there are some paying users.  The first cut took just an afternoon [...]]]></description>
			<content:encoded><![CDATA[<p>Twitter has open sourced a CSS and Javascript library to help bootstraps get up and running.  I am switching to it for the Rails2 to Padrino migration.  Amethyst doesn&#8217;t have much style, and I&#8217;m too cheap to pay a designer.  I may when there are some paying users.  The first cut took just an afternoon and it looks much better.  The gray background on zebra-striped tables is not dark enough to be noticeable on laptops when viewed off-axis.  I may tweak that.</p>
<p>In the process, I read most of the documentation and looked at some example sites.  I picked up on the look and feel  Several sites I&#8217;ve visited recently screamed that they were using TW Bootstrap, e.g., <a href="http://www.linkrdr.com">linkrdr</a> and others gently hinted, e.g., <a href="http://match.teamsunited.com/">TEAMSUNITED &#8211; Matchmaking</a>.</p>
<p>The conversion wasn&#8217;t as hard as I expected.  Because more is happening on the client side, I was able to drop some server-side code.  A win.  And my CSS and Javascript had begun to smell.  Now someone else with more experience is writing and maintaining it.  Another win.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.AmethystRSS.net/2012/03/01/twitter-bootstrap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

