<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Esoteric Curio - Damaged Bits</title>
    <link>http://lethargy.org/~jesus/</link>
    <description>Theo's Contributions to Technological Surreality</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.4.1 - http://www.s9y.org/</generator>
    <pubDate>Sun, 14 Aug 2011 04:17:46 GMT</pubDate>

    <image>
        <url>http://lethargy.org/~jesus/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Esoteric Curio - Damaged Bits - Theo's Contributions to Technological Surreality</title>
        <link>http://lethargy.org/~jesus/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Surge is gonna kick ass.</title>
    <link>http://lethargy.org/~jesus/writes/surge-is-gonna-kick-ass</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/surge-is-gonna-kick-ass#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=205</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=205</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;I haven&#039;t blogged for a while because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I have been travelling insanely.  About 80k miles this year so far.&lt;/li&gt;
&lt;li&gt;Hacking on &lt;a href=&quot;http://circonus.com/&quot;&gt;Circonus&lt;/a&gt; and (subsequently) &lt;a href=&quot;http://github.com/omniti-labs/reconnoiter&quot;&gt;Reconnoiter&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Providing strategic and tactical guidance on some mind blowing projects for the truly awesome clientele we have at &lt;a href=&quot;http://omniti.com/&quot;&gt;OmniTI&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Speaking at quite a number of conferences.&lt;/li&gt;
&lt;li&gt;Attempting to participate more in some of the open source projects I can help.&lt;/li&gt;
&lt;li&gt;... and planning for &lt;a href=&quot;http://omniti.com/surge/2011&quot;&gt;Surge&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The little timeout I am taking to write this note isn&#039;t sufficient to dive into the truly interesting things my readers usually expect. However, I&#039;d be a jackass if I let you go any longer without knowing that Surge is going to be friggin&#039; awesome this year. At the end of this year, if you look back and see that you missed attending Surge you&#039;ll know what regret truly is.  Just sayin&#039;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 09 Aug 2011 23:48:22 -0400</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/205</guid>
    
</item>
<item>
    <title>Everyone is to blame for this continued expectation that such magic is possible.</title>
    <link>http://lethargy.org/~jesus/writes/everyone-is-to-blame-for-this-continued-expectation-that-such-magic-is-possible</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/everyone-is-to-blame-for-this-continued-expectation-that-such-magic-is-possible#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=204</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=204</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;blockquote&gt;
&lt;p&gt;My opinion is that the only reason the big enterprise storage vendors have gotten away with network block storage for the last decade is that they can afford to over-engineer the hell out of them and have the luxury of running enterprise workloads, which is a code phrase for “consolidated idle workloads.” When the going gets tough in enterprise storage systems, you do capacity planning and make sure your hot apps are on dedicated spindles, controllers, and network ports.&lt;/p&gt;

&lt;p&gt;It was fantasy believing it was possible to pull off a centralized network block storage service in a multi-tenant cloud without any of the architecture shenanigans our enterprise brethren do and think that applications, databases, and business could depend on its being perfect. Honestly, we should have know better. We the applications developers asked what is perhaps the crappiest of all abstractions in computers to solve all of our availability problems for us. We asked for magic. Clearly, the vendor never should have made the promise of magic, but everyone is to blame for this continued expectation that such magic is possible.
&lt;/p&gt;
&lt;p class=&quot;cite&quot; style=&quot;float:right&quot;&gt;- Mark Mayo of Joyent&lt;/p&gt;
&lt;/blockquote&gt;

&lt;br style:&quot;clear:both&quot;/&gt;
&lt;p&gt;This is from an &lt;a href=&quot;http://joyeur.com/2011/04/24/magical-block-store-when-abstractions-fail-us/&quot;&gt;interesting article&lt;/a&gt; by Mark Mayo over at &lt;a href=&quot;http://joyent.com&quot;&gt;Joyent&lt;/a&gt; with some excellent gems in it.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 24 Apr 2011 20:29:59 -0400</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/204</guid>
    
</item>
<item>
    <title>Surge 2011 CFP Extension</title>
    <link>http://lethargy.org/~jesus/writes/surge-2011-cfp-extension</link>
            <category>BWPUG</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/surge-2011-cfp-extension#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=203</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=203</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;The CFPs have been rolling in for Surge 2011; these are exciting times.  It does, however, appear that our description of what we&#039;re looking for has produced a different set of submissions that what I expected.  I think it might help to better understand what sessions were like last year and, luckily, we&#039;ll be &lt;a href=&quot;http://omniti.com/surge/2010/sessions&quot;&gt;releasing all of the Surge 2010 video footage this week&lt;/a&gt;.  I apologize for the poor audio quality, we intend to pull in A/V recording professionals this year.&lt;/p&gt;

&lt;p&gt;We&#039;ve received some great proposals!  However, a surprising amount of them are presentations about products.  This conference is about problems and their solutions.  It is a conference for practitioners by practitioners.  Blood... in the mud.  I want to (as we did last year) share our struggles for better collective experience.&lt;/p&gt;

&lt;p&gt;Emphasis: &lt;em&gt;Accepted proposals will demonstrate real-life scalability challenges and creative solutions. We love case studies and learning from our mistakes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As such, with this context, I&#039;m extending the &lt;a href=&quot;http://omniti.com/surge/2011/cfp&quot;&gt;Surge 2011 CFP&lt;/a&gt; deadline to April 17th.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 05 Apr 2011 22:41:11 -0400</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/203</guid>
    
</item>
<item>
    <title>Top 5 &quot;software to saas&quot; culture shocks.</title>
    <link>http://lethargy.org/~jesus/writes/top-5-software-to-saas-culture-shocks</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/top-5-software-to-saas-culture-shocks#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=202</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=202</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;At OmniTI, I&#039;ve been a part of writing a lot of open source software, my fair share of closed source software.  Some of it has been shipped and some of it has been operated as a service.  While it is possible (and quite useful) to take what one learns in one scenario and apply it to another, some things simply translate poorly.&lt;/p&gt;

&lt;p&gt;I do a lot of consulting with traditional software companies that are looking to make a transition to the new world of SaaS.  Again and again, I see the same &quot;shockers&quot; hit these companies during their metamorphosis. Read my &lt;a href=&quot;http://omniti.com/seeds/from-making-software-to-running-saas&quot;&gt;top 5 things you need to know if you are going to change your business model from traditional software engineering to SaaS delivery.&lt;/a&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 01 Mar 2011 21:54:54 -0500</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/202</guid>
    
</item>
<item>
    <title>Using Esper to manage real-time data.</title>
    <link>http://lethargy.org/~jesus/writes/using-esper-to-manage-real-time-data</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/using-esper-to-manage-real-time-data#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=201</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=201</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;I&#039;m flying back from a wonderful event: &lt;a href=&quot;http://strataconf.com/&quot;&gt;Strata&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I gave a talk there called &quot;Esperwhispering&quot; that seemed to pique many people&#039;s interest.  This is the stuff you do when a database just doesn&#039;t have the horsepower to answer your questions fast enough.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://esper.codehaus.org/&quot;&gt;Esper&lt;/a&gt; is an excellent, open-source CEP tool.  It&#039;s a shame its GPL, but hey... you can&#039;t win &#039;em all.&lt;/p&gt;

&lt;p&gt;We use esper to power many things internally at &lt;a href=&quot;http://omniti.com/&quot;&gt;OmniTI&lt;/a&gt; and our clients and Esper is the code CEP engine we use to make sure &lt;a href=&quot;http://circonus.com&quot;&gt;Circonus&lt;/a&gt; custsomers know when &quot;things go wrong.&quot;&lt;/p&gt;

&lt;p&gt;This presentation gives some insight into what it does and why one would use it.  The live presentation, of course, had more information and live demos, but... you had to show up for that (or watch the live stream of the event).&lt;/p&gt;

&lt;div style=&quot;width:425px&quot; id=&quot;__ss_6795426&quot;&gt;&lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/postwait/esperwhispering&quot; title=&quot;Esperwhispering&quot;&gt;Esperwhispering&lt;/a&gt;&lt;/strong&gt;&lt;object id=&quot;__sse6795426&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=esperwhispering-110203011826-phpapp02&amp;stripped_title=esperwhispering&amp;userName=postwait&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed name=&quot;__sse6795426&quot; src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=esperwhispering-110203011826-phpapp02&amp;stripped_title=esperwhispering&amp;userName=postwait&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style=&quot;padding:5px 0 12px&quot;&gt;View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/postwait&quot;&gt;postwait&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 04 Feb 2011 14:01:10 -0500</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/201</guid>
    
</item>
<item>
    <title>#ywahusty</title>
    <link>http://lethargy.org/~jesus/writes/ywahusty</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/ywahusty#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=200</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=200</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;h3&gt;Defining the term:&lt;/h3&gt;
&lt;p&gt;I recently used a term and was hit with a lot of out-of-band requests for explanation. It&#039;s a good one and excellent food for thought.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;b&gt;ywahusty (yuh-wuh-hus-tee)&lt;/b&gt;: you will always have users smarter than you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This basic concept is one of sound, pragmatic systems engineering that might appear to fly in the face of traditional product engineering... but doesn&#039;t.&lt;/p&gt;

&lt;p&gt;In traditional product engineering, there is a goal to produce a product that is both accessible and useful to the largest subset of the predefined audience of the product.  Basically, in software terms: you don&#039;t put too many knobs on the dashboard or you will have all sorts of operator errors.  You work very hard to tune those knobs or have then auto-tune so that the product behaves correctly under normal operational uses (and of course, their edge conditions).  This is just good product design.&lt;/p&gt;

&lt;p&gt;We are faced with a problem: shit goes wrong.  As an engineer for a software product, you know full well that shit will break.  Those knobs will be set and/or auto-tuned and you&#039;ll be thinking: &quot;what if?&quot;  The: &quot;Wow, I&#039;ve never seen this set of inputs. The min_wu_tang_threshold is 11... it might behave better at 42 right now... sure wish I could twist that knob that product management insisted I leave off right now.&quot;  The truth is: the product you ship is not the product they receive.  Not every knob you ship has to be in the &quot;manual,&quot; it can be in the unsupported &quot;ninja manual.&quot;  You can absolutely instrument your application without sacrificing simple and intuitive use by the majority of your audience.&lt;/p&gt;

&lt;p&gt;Bottom line? The knob should be there. My hat goes off to an &lt;a href=&quot;http://www.messagesystems.com/company/who_we_are/&quot;&gt;engineering team&lt;/a&gt; that takes this to heart: &quot;I am ten ninjas.&quot; And a second tip of the hat to the diaspora of Solaris kernel engineers that have allowed us to tweak (seemingly) insane operational constraints on production systems without applying patches or rebooting.&lt;/p&gt;

&lt;h3&gt;Appealing to the pragmatist.&lt;/h3&gt;

&lt;p&gt;I&#039;ll attempt to appeal to the pragmatist in you. You are equipped with more knowledge now than you were when you started reading this prose. This is a truth whether you agree with anything I&#039;ve said simply because you have more information.  Even you, with you current implementation knowledge would benefit from the ability to tweak, twist and manipulate the parameters of your operating product because it will allow you to test new ideas, verify assumptions and validate the design and implementation choices you&#039;ve made with far greater ease.&lt;/p&gt;

&lt;p&gt;As a side note, gdb and/or mdb aren&#039;t the &quot;knobs&quot; I&#039;m talking about: think more along the lines of sysctl&#039;s on most UNIX implementations.  These are (mostly) run-time tunable parameters -- and yes users &lt;em&gt;can&lt;/em&gt; set them to values that will cause certain, and often immediate, combustion.  (good) Kernel engineers know that price benefit of having these knobs far outweighs their liability.&lt;/p&gt;

&lt;h3&gt;Appealing to the experienced.&lt;/h3&gt;

&lt;p&gt;Now, we come full circle, for the honest engineers that can check their ego at the door. I have never in my life developed a piece of successful software that had a user-base that contained only users dumber than myself.  The concept therein is absurd for any project with even moderate adoption.  You engineer your systems to be both observable and &lt;em&gt;operable&lt;/em&gt; because at the end of the day you will get schooled by (at least some of) your users.&lt;/p&gt;

&lt;p&gt;Again... &lt;em&gt;please&lt;/em&gt; make your software operable. Why? #ywahusty&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 04 Feb 2011 10:41:44 -0500</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/200</guid>
    
</item>
<item>
    <title>Why haven't all my graphs been useful like this?</title>
    <link>http://lethargy.org/~jesus/writes/why-havent-all-my-graphs-been-useful-like-this</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/why-havent-all-my-graphs-been-useful-like-this#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=198</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=198</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;I don&#039;t know now many times I&#039;ve tried to eyeball a graph from this week against a graph from last week.  This is both painful and senseless as my eyeballs simply aren&#039;t that good.  Enter &quot;&lt;a href=&quot;http://circonus.com/blog/2011/01/does-this-look-right-to-you&quot;&gt;the right way to do it&lt;/a&gt;.&quot;  Bliss.&lt;/p&gt;

&lt;img src=&quot;http://circonus.com/i/content/blog/longspike-overlay.png&quot; /&gt; 
    </content:encoded>

    <pubDate>Thu, 20 Jan 2011 16:21:28 -0500</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/198</guid>
    
</item>
<item>
    <title>Capacity Planning</title>
    <link>http://lethargy.org/~jesus/writes/capacity-planning</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/capacity-planning#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=197</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=197</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;img src=&quot;http://circonus.com/i/content/blog/4weeks1year-linest.png&quot; style=&quot;width: 100%; border: 1px solid #999; margin-bottom: 1em&quot;/&gt;

&lt;p&gt;I used to export data into Excel and do linear regressions on it... How I have no need.  I am happier person and people like me more.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://circonus.com/blog/2011/01/capacity-planning-made-easy&quot;&gt;Here&#039;s how we made capacity planning easier for everyone.&lt;/a&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 05 Jan 2011 19:33:46 -0500</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/197</guid>
    
</item>
<item>
    <title>Theo seeks aspiring database administrator</title>
    <link>http://lethargy.org/~jesus/writes/theo-seeks-aspiring-database-administrator</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/theo-seeks-aspiring-database-administrator#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=196</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=196</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;What does it mean to be a &lt;a href=&quot;http://omniti.com/is/hiring/database-administrator&quot;&gt;database administrator&lt;/a&gt;?  It means more than just respecting data in a room full of engineers and analysts that do not -- it means bending them to your will and making them respect it, too.  It means knowing when people&#039;s concept of sacrosanct data integrity and consistency can be thrown out the window and letting those people know that, this time, they can cope with inaccuracy or volatility.  You think those things contradict? This job&#039;s not for you.&lt;/p&gt;

&lt;p&gt;Do you think the world can be solved through relational algebra? I&#039;m listening.  Do you think the world should be solved through relational algebra? Don&#039;t apply here. Have you edited a database redo/write-ahead log in a hex editor to bootstrap a failed recovery?  Now we&#039;re talking about reality.  We live in a world where the probability of bit errors on disks rattles our cage by guaranteeing corrupt data and indexes when using traditional filesystems. Being responsible for data in this world is no simple task.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you think you can scale single RDBMS to the sizes we see on a daily basis, I&#039;ll beat you with a stick.&lt;/li&gt;
&lt;li&gt;If you think RDBMS is are passe and any problem can be appropriately solved with a NoSQL solution, I&#039;ll beat you with a stick.&lt;/li&gt;
&lt;li&gt;If you think data is holy, I&#039;ll buy you a stick.&lt;/li&gt;
&lt;li&gt;If you try to pipe my data through the wrong tool, I&#039;ll carve zeros and ones into my stick and then beat you with it.&lt;/li&gt;
&lt;li&gt;If you think its okay to let someone who cares more about code than data roll out queries without your review, I&#039;ll make you beat them with a stick, then beat you with a stick while you clean up their bloody remains.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a real database architect&#039;s role, you don&#039;t manage a database -- you manage data.  You keep it secret, you keep it safe, you keep it clean, and you keep it available.  From Oracle, to PostgreSQL, to MSSQL, to MySQL, to Cassandra, to Riak, to Hadoop, to Esper you will be responsible for the operational integrity of systems that touch data and turn it into useful outputs for people and businesses.&lt;/p&gt;

&lt;p&gt;If you know relational databases and at least one of NoSQL systems or streaming databases (CEP/IEP), then you may have what it takes to be on the &lt;a href=&quot;http://omniti.com/is/hiring/database-administrator&quot;&gt;OmniTI data management team&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 28 Dec 2010 08:20:40 -0500</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/196</guid>
    
</item>
<item>
    <title>Web Performance Boot Camp</title>
    <link>http://lethargy.org/~jesus/writes/web-performance-boot-camp</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/web-performance-boot-camp#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=195</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=195</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;Slides are &lt;a href=&quot;http://lethargy.org/~jesus/misc/webperformancebootcamp.pdf&quot;&gt;here&lt;/a&gt;, get &#039;em while they&#039;re hot.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 02 Nov 2010 16:33:09 -0400</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/195</guid>
    
</item>
<item>
    <title>Perform or Die</title>
    <link>http://lethargy.org/~jesus/writes/perform-or-die</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/perform-or-die#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=194</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=194</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;There&#039;s no excuse these days for crappy web performance.  The low hanging fruit is just too low. It is trivial to make a web site that loads fast for users. Do it.  If you don&#039;t know how, you should come to my &lt;a href=&quot;http://na.apachecon.com/c/acna2010/sessions/631&quot;&gt;Web Performance Boot Camp tutorial&lt;/a&gt; at &lt;a href=&quot;http://apachecon.com/&quot;&gt;ApacheCon&lt;/a&gt;. Make you site fast &amp;#8212; no excuses.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 29 Oct 2010 22:39:50 -0400</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/194</guid>
    
</item>
<item>
    <title>Why JSON sucks.</title>
    <link>http://lethargy.org/~jesus/writes/why-json-sucks</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/why-json-sucks#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=193</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=193</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;JSON sucks.  Don&#039;t get me wrong, I love the simplicity of it.  It&#039;s simple, it&#039;s easy, it&#039;s portable, it&#039;s ubiquitous at this point. None of that means it doesn&#039;t suck.  Outside of Javascript (hence the portability), JSON itself is limited to native types in the grammar:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;null&lt;/li&gt;
  &lt;li&gt;object (like a hash)&lt;/li&gt;
  &lt;li&gt;array&lt;/li&gt;
  &lt;li&gt;string&lt;/li&gt;
  &lt;li&gt;integer (signed 32bit)&lt;/li&gt;
  &lt;li&gt;number (double)&lt;/li&gt;
  &lt;li&gt;boolean&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Really? It&#039;s 2010 and we&#039;re all flocking to a grammar where we can only accurately represent integers up to 2&lt;sup&gt;31&lt;/sup&gt;-1. WTF?  Any new standard we adopted should certainly have had grammar specifications for: 1, 8, 16, 32, 64, 128 bit signed and unsigned integers, 32bit and 64bit IEEE floating point (float and double) as well as arbitrary precision real numbers.  I&#039;d much rather have a grammar that I struggle to translate into my native language data types (like, &quot;hmmm, what am I supposed to do with a real in C?&quot;) than I would have a grammar in which I cannot precisely express myself.&lt;/p&gt;

&lt;p&gt;Every time I need to (correctly) represent a large integer such as 4611686018427387900, I&#039;m forced to do so in a string.  It causes me to throw up in mouth a little. Everyone seems dead set on this, so I suppose I&#039;ll learn to cherish the flavor of bile.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 10 Oct 2010 09:19:17 -0400</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/193</guid>
    
</item>
<item>
    <title>Finding leaks on Solaris (w/o Valgrind)</title>
    <link>http://lethargy.org/~jesus/writes/finding-leaks-on-solaris-wo-valgrind</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/finding-leaks-on-solaris-wo-valgrind#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=192</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=192</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;Premise: I write a lot of C code.  I run a lot of Solaris.&lt;/p&gt;

&lt;p&gt;Sadness: One of my favorite tools ever made is Valgrind.  Valgrind does not run on Solaris.&lt;/p&gt;

&lt;p&gt;A lot of the C code I write is event-driven and as such (complicated) it is harder to write code and leaked memory is a common residual of this more complicated coding effort.  Memory leaks suck.  Most of the code I write is systems-level code and as such is exercised heavily and needs to run for months or years without restart.  So, leaks more than suck.&lt;/p&gt;

&lt;p&gt;Valgrind will tell you exactly where you&#039;re leaking (and it feels like it tells you why)... BFM.&lt;/p&gt;

&lt;p&gt;On Solaris, we have a different option: libumem.&lt;/p&gt;

&lt;p&gt;I compile almost all of my apps against libumem, which has the effect of replacing malloc/free/and friends with a more multi-processor scalable slab-allocator implementation than the default one in libc.  A very useful feature in libumem is debugging and leak detection... how?&lt;/p&gt;

&lt;p&gt;First, let&#039;s assume you&#039;ve compiled your app with debugging symbols (-g in the compiler flags).  Next, I&#039;ll assume you didn&#039;t have the foresight to link against libumem (-lumem on the linker line).  We need to link in libumem and we need to turn on debugging.  In the case of this example, our app is the Apache web server &lt;kbd&gt;httpd&lt;/kbd&gt;.&lt;/p&gt;

&lt;p&gt;
&lt;kbd&gt;LD_PRELOAD=libumem.so.1 UMEM_DEBUG=default /opt/apache22/bin/httpd&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;Now, just find the process ID of exampled (perhaps as easy as a &lt;kbd&gt;pgrep exampled&lt;/kbd&gt;). It is leaking, so we&#039;ll use the process ID 666. To find the leaks (without killing or restarting), we can simply use the mdb umem helper ::findleaks on the running process.&lt;/p&gt;

&lt;p&gt;
&lt;kbd&gt;echo &quot;::findleaks -d &quot; | mdb -p 666 &gt; leak-profile.txt&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;Note you can also do this from a core... very nice.&lt;/p&gt;

&lt;p&gt;The output has a summary and then individual profile records grouped by stack trace of allocation, like:&lt;/p&gt;

&lt;pre&gt;
umem_alloc_16384 leak: 203 buffers, 16384 bytes each, 3325952 bytes total
            ADDR          BUFADDR        TIMESTAMP           THREAD
                            CACHE          LASTLOG         CONTENTS
         1d36b60          1d37000   70235c07811a50              197
                           65a468           617900                0
                 libumem.so.1`umem_cache_alloc_debug+0x152
                 libumem.so.1`umem_cache_alloc+0x1a2
                 libumem.so.1`umem_alloc+0xdb
                 libumem.so.1`malloc+0x59
                 libapr.so.0.2.12`allocator_alloc+0x466
                 libapr.so.0.2.12`apr_palloc+0xda
                 bio_filter_out_ctx_new+0x37
                 ssl_io_filter_init+0xb1
                 ssl_init_ssl_connection+0x2cd
                 ssl_hook_pre_connection+0x123
                 ap_run_pre_connection+0xc3
                 ap_process_connection+0x30
                 process_socket+0xa8
                 worker_thread+0x2d8
                 libapr.so.0.2.12`dummy_worker+0x30
&lt;/pre&gt;

&lt;p&gt;mod_ssl... Why are you so mean to me?&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 09 Oct 2010 16:04:18 -0400</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/192</guid>
    
</item>
<item>
    <title>What's your postgres search_path?</title>
    <link>http://lethargy.org/~jesus/writes/whats-your-postgres-search_path</link>
            <category>BWPUG</category>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/whats-your-postgres-search_path#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=191</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=191</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;Hey you! PostgreSQL process running a query over there... Yeah you.  What&#039;s your search path?&lt;/p&gt;

&lt;p&gt;Hello? Why aren&#039;t you listening to me?  Oh, just because you are busy running queries for someone else for hours means you don&#039;t have to take some time to answer my question?  Apparently, that&#039;s a good enough excuse. You, yes you process ID 18883, need to respect my authority.&lt;/p&gt;

&lt;pre&gt;
# echo &#039;*postgres`namespace_search_path /s&#039; | mdb -p 18883
0x9d5420:       noit_a29_n625680_noit, stratcon, public
&lt;/pre&gt;

&lt;p&gt;I done told you.&lt;/p&gt;

&lt;p&gt;Sorry. I didn&#039;t mean to get rough with you. You know I love you, right?&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 09 Oct 2010 15:44:32 -0400</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/191</guid>
    
</item>
<item>
    <title>OmniTI's Surge. Year one. Done. Awesome.</title>
    <link>http://lethargy.org/~jesus/writes/omnitis-surge-year-one-done-awesome</link>
            <category>Damaged Bits</category>
            <category>OpenSolaris</category>
            <category>PostgreSQL</category>
    
    <comments>http://lethargy.org/~jesus/writes/omnitis-surge-year-one-done-awesome#comments</comments>
    <wfw:comment>http://lethargy.org/~jesus/wfwcomment.php?cid=190</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://lethargy.org/~jesus/rss.php?version=2.0&amp;type=comments&amp;cid=190</wfw:commentRss>
    

    <author>nospam@example.com (Theo Schlossnagle)</author>
    <content:encoded>
    &lt;p&gt;This past Thursday and Friday (and much of Wednesday honestly), &lt;a href=&quot;http://omniti.com/&quot;&gt;OmniTI&lt;/a&gt; went where it never went before: we ran a conference. &lt;a href=&quot;http://omniti.com/surge/2010&quot;&gt;Surge 2010&lt;/a&gt; was, in fact, a unique conference despite its close relevance to others in the industry. This conference was assembled to answer one question: &quot;How do I build systems that perform well and scale to meet demand?&quot; That may seem like a simple question that someone has asked before, but I am an engineer and, as such, use an engineering definition of &quot;system&quot; and have a fearful respect for what &quot;demand&quot; can really be.&lt;/p&gt;

&lt;p&gt;I&#039;d like to shout out a huge CONGRATULATIONS to all of the OmniTI team involved in orchestrating this event. People stopped no fewer than fifty times during the two day event to tell me how professional they thought the event was: specifically the polish of the brand, the beautifully consistent quality and composure of the conference itself, the venue, the proficiency of the speakers and fact the the content presented was all on-topic and well oriented to, what I shall call, the Internet Architect Practitioner.&lt;/p&gt;

&lt;h3&gt;On Systems.&lt;/h3&gt;

&lt;p&gt;A system is a set of connected things or parts forming a complex whole and as such, it isn&#039;t &quot;a computer.&quot;  Systems, particularly complex systems, are not only fascinating, but also happen to be ubiquitous between all of us and every useful website on the planet.  Designing a system isn&#039;t about writing a piece of software or running a computer, it is about so much more.  In the context of Internet computing, it is about the connectedness of many components including logical, electrical, optical and even mechanical. &lt;a href=&quot;http://dtrace.org/blogs/bmc&quot;&gt;Bryan Cantrill&lt;/a&gt; did a spectacular job enlightening the crowd to the fascinating intricacies of failures in complex systems.&lt;/p&gt;

&lt;p&gt;In fact, in talking to Cantrill, he suggested that each talk should be required to have at least one real-world failure described.  I personally believe that learning from another&#039;s success is far less effective than learning from their failures.  Brian was describing his impression of &lt;a href=&quot;http://dyn.com/why-dyn/leadership-team/tom-daly&quot;&gt;Tom Daly&lt;/a&gt;&#039;s excellent talk on how &lt;a href=&quot;http://dyn.com/enterprise-dynect-platform&quot;&gt;Dyn&lt;/a&gt; leverages AnyCast and partway through he said to me: &quot;Given the complexities of this system, I have to think when this thing goes south, it must go really south.&quot;  True enough, Tom described a rather intricate cascading failure all summed up with two words: fascinating and educational.&lt;/p&gt;

&lt;h3&gt;On Demand.&lt;/h3&gt;

&lt;p&gt;Demand is, in the beginning and the end, the bedfellow of supply in the racy world of economics.  The interesting part in Internet systems (as opposed to economics) is how the system reacts to conditions in which demand exceeds supply.  In economics, inventory is exhausted and future prices rise.  In our systems, resources are depleted and experience nose-dives.  If this condition persists, we have a natural economic scenario where that demand for a crappy experience will not erode and general demand will fall bringing back balance.  However, we can &quot;just make more.&quot; We can add more resources and ensure that resources aren&#039;t depleted. And, most importantly, if you architect your systems well, you can do this both successfully and cost-efficiently.  Demand on the Internet has a dark side in that while it is bounded, it is bounded by the population of planet Earth.  Ouch.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://twitter.com/#!/crucially&quot;&gt;Artur Bergman&lt;/a&gt; presented details on how &lt;a href=&quot;http://www.wikia.com/Wikia&quot;&gt;Wikia&lt;/a&gt; serves its global audience both successfully and (very) cost-effectively. Artur Bergman never fails to make me think just a bit outside of the box I&#039;d been thinking in; always refreshing and always useful.  I&#039;ve been struggling with how to accomplish the real-time variant of what Artur has done aggregating actual user-perceived performance; the problem isn&#039;t that hard, the trick is scaling it as a service. The idea that one can leverage Google Analytics to do this, for free, in hour-relative real-time is damn spiffy.&lt;/p&gt;

&lt;h3&gt;Learning.&lt;/h3&gt;

&lt;p&gt;I learned a tremendous amount at Surge 2010. My job, amongst others, is to keep abreast of the current technologies and methodologies used to power the largest websites in the world (top 500). I take that knowledge and extract or adapt those techniques and help companies in the top 10000 compete more effectively.  I read academic papers, &lt;a href=&quot;http://acm.org/&quot;&gt;ACM&lt;/a&gt; and &lt;a href=&quot;http://ieee.org/&quot;&gt;IEEE&lt;/a&gt; journals every week. I talk to &lt;a href=&quot;http://omniti.com/is&quot;&gt;colleagues&lt;/a&gt;. I read &quot;trendy&quot; tech outlets like &lt;a href=&quot;http://news.ycombinator.com/&quot;&gt;hackernews&lt;/a&gt; and &lt;a href=&quot;http://www.reddit.com/r/technology/&quot;&gt;reddit&lt;/a&gt;. I gather as much knowledge as possible. But, what do I do with it?&lt;/p&gt;

&lt;p&gt;My goal is to share that knowledge with my team at OmniTI. I&#039;ve struggled with how exactly to do this in the past. I have to say that my most successful effort to date was Surge 2010.  Almost everyone from OmniTI attended and many told me that they left Surge feeling educated and (more importantly) inspired by the truly enthralling industry in which we all work.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 07 Oct 2010 11:00:00 -0400</pubDate>
    <guid isPermaLink="false">http://lethargy.org/~jesus/writes/190</guid>
    
</item>

</channel>
</rss>
