<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Daniel R.</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/" />
    <link rel="self" type="application/atom+xml" href="http://life.neophi.com/danielr/atom.xml" />
   <id>tag:life.neophi.com,2010:/danielr//1</id>
    <link rel="service.post" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1" title="Daniel R." />
    <updated>2010-03-14T21:41:18Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.3svn-20070408163858</generator>
 
<entry>
    <title>Ideas for Adobe Flash Platform</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/03/ideas_for_adobe_flash_platform.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1206" title="Ideas for Adobe Flash Platform" />
    <id>tag:life.neophi.com,2010:/danielr//1.1206</id>
    
    <published>2010-03-14T21:38:44Z</published>
    <updated>2010-03-14T21:41:18Z</updated>
    
    <summary>Got an idea for an Adobe product in the Flash Platform that isn&apos;t quite a bug? View and rate ideas at: http://ideas.adobe.com/....</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Flex" />
            <category term="Helpful" />
            <category term="Programming" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>Got an idea for an Adobe product in the Flash Platform that isn't quite a bug? View and rate ideas at: <a href="http://ideas.adobe.com/">http://ideas.adobe.com/</a>.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Programming Language Trends</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/03/programming_language_trends.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1205" title="Programming Language Trends" />
    <id>tag:life.neophi.com,2010:/danielr//1.1205</id>
    
    <published>2010-03-14T04:09:08Z</published>
    <updated>2010-03-14T04:27:56Z</updated>
    
    <summary>One idea that &quot;The Passionate Programmer&quot; recommends that I&apos;ve always been intrigued by is the idea of mapping hot technologies along an early, middle and late adoption trend and seeing where the technologies you work with fall. It is a...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Helpful" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>One idea that <a href="http://www.amazon.com/gp/product/1934356344?ie=UTF8&tag=neo06-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=1934356344">"The Passionate Programmer"</a> recommends that I've always been intrigued by is the idea of mapping hot technologies along an early, middle and late adoption trend and seeing where the technologies you work with fall. It is a subjective exercise but does help you think about what is out there. Turns out for programming languages (not frameworks or toolkits) TIOBE Software has for some time now been producing a <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">Programming Community Index</a> that ranks programming languages. They have a methodology that I'm inclined to call good enough for most cases.</p>]]>
        
    </content>
</entry>
<entry>
    <title>NoSQL Live Boston</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/03/nosql_live_boston.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1204" title="NoSQL Live Boston" />
    <id>tag:life.neophi.com,2010:/danielr//1.1204</id>
    
    <published>2010-03-12T12:26:26Z</published>
    <updated>2010-03-12T13:26:01Z</updated>
    
    <summary>Yesterday I attended NoSQL Live Boston and participated on the NoSQL in the Cloud panel. During the day I captured some notes for myself which are after a brief recap of some of the points I tried to make during...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Helpful" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>Yesterday I attended NoSQL Live Boston and participated on the NoSQL in the Cloud panel. During the day I captured some notes for myself which are after a brief recap of some of the points I tried to make during the panel discussion.</p>

<p>Q: What benefits and pitfalls have you found with your use of NoSQL in the cloud?</p>

<p>Based on having used Amazon's SimpleDB service over the past 18 months.</p>

<p>Benefits: pay as go is great for starting off, zero maintenance, zero setup, scaling by spreading data across multiple domains, SimpleSB manages data replication and high availability</p>

<p>Pitfalls: new mindset required to use eventually consistent model, increase impact of network latency, keeping SimpleDB's limitations in mind (size of domains, attribute count, etc.)</p>

<p>Q: How viable are these solutions and what is hampering there adoption?</p>

<p>Viability: SimpleDB has a 2 year track record and recently added consistent reads and conditional puts/deletes opening up new classes of application possibilities.<br />
Adoption: Need body of knowledge, best practice patterns and use cases are still emerging</p>]]>
        <![CDATA[<p>* Welcome to NoSQL Live (Dwight Merriman)</p>

<p>Defines NoSQL as: No joins and light transaction semantics<br />
Makes scaling horizontally easier<br />
Key questions that all NoSQL products need to answer are what are the differences and what kind of consistency model is being used</p>

<p>* Crossroads, Inroads, Pitfalls  Bylaws: Peering into NoSQL's Conceivable Future (Tim Anglade)</p>

<p>Database market is big, clearly room for NoSQL<br />
Crossroads: just moving out of the startup only world but the focus is still on early adopters, NoSQL hype is about to peak, most NoSQL projects are at various states of usefulness.<br />
Inroads: Still need to make the technology better, need better marketing of the NoSQL  brand, must focus on education, for many database = SQL<br />
Pitfalls: education disrupts current RDBMS market so existing companies will fight back, overlooking the need for education<br />
Bylaws: For some industries innovation is a liability, junior developers trying to work without training very hard<br />
When NoSQL reaches the point that its search term frequency doesn't drop off during the December holiday season, then we know its gotten into the corporate world.<br />
How to fix things: make inroads in education, create a NoSQL book of knowledge, form an interest group to act as a liaison to the world, host two annual conferences start with US/EU.</p>

<p>* Scaling with NoSQL (Bradford Stephens moderator, Mark Atwood, Doug Judd, Alex Feinberg, Ryan Rawson, Ryan King)</p>

<p>Myth that NoSQL maintenance is easier. NoSQL usually has more operational overhead  due to the intersystem dependencies for horizontal scaling. Failure modes require less scrambling, no need to wake up at 2am if a node fails.<br />
Hadoop is hard to get up and running.<br />
<a href="http://github.com/lg/murder">Murder</a> is a BitTorrent based software deployment package.<br />
Most of these NoSQL solutions have issues with more data than RAM.<br />
Testing NoSQL scaling really needs at least 5-10 nodes before things get interesting.<br />
HBase and others don't handle random reads well due to underlying <a href="http://hadoop.apache.org/common/docs/current/hdfs_design.html">HDFS</a> usage.<br />
NoSQL scaling bound by <a href="http://en.wikipedia.org/wiki/CAP_theorem">CAP Theorem</a><br />
memcached suffers from lack of dynamic scaling<br />
cassandra rebalancing has issues with hot spotting<br />
hypertable uses masters with hot standby to avoid SPoF</p>

<p>* Full Stack JavaScript (Jim Wilson)</p>

<p>Run JavaScript from top to bottom to avoid language impedance mismatches.<br />
JavaScript on the server solutions: <a href="http://nodejs.org/">node.js</a>, <a href="http://narwhaljs.org/">narwhal</a>, <a href="http://www.mozilla.org/rhino/">rhino</a></p>

<p>* Schema Design with Document-Oriented Databases (Durran Jordan moderator, Eliot Horowitz, Bryan Fink, Paul Davis)</p>

<p>Many to Many is hard<br />
Solutions make use of soft links for following data to allow sharding</p>

<p>* The Evolution of the Graph Data Structure from Research to Production (Marko Rodriguez moderator, Peter Neubauer, Borislav Iordanov, Sandro Hawke)</p>

<p>Graph database are geared towards modeling relationships. Think of it as the graph is the index.<br />
<a href="http://hypergraph.sourceforge.net/">HyperGraph</a> concept isn't that popular but offers multiple edge connections. <br />
<a href="http://neo4j.org/">Neo4J</a> property graph with directed edges and key/value on edges and nodes. Think of it as a multi-dimensional linked list with full ACID support and fast path traversal. Working to ad replication, removing SPoF, better scaling.<br />
RDF is like JSON but with loops. RDF Schema or OWL add constraints. Most RDF implementations are not designed for performance but complex pattern matching. <a href="http://www.openrdf.org/doc/elmo/1.0/user-guide/">ELMO</a> has JavaBean to RDF mapping. <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a> standard for querying RDF.<br />
<a href="http://wiki.github.com/tinkerpop/gremlin/">Gremlin</a> is a graph database programming language.</p>

<p>* Toward Web Standards for NoSQL (Sandro Hawke)</p>

<p>XML is on the way out (but it will never die)<br />
<a href="http://www.ietf.org/rfc/rfc4627.txt">JSON</a> became IETF standard<br />
Standard bodies are not always needed, look at popular open source programming languages, they are creating there own standards that everyone can contribute due to its openness.<br />
Hard to do that for some segments, there won't be only one open source web browser, so that is where standards bodies help.</p>

<p>* NoSQL Lab</p>

<p><a href="http://www.openhealth.org/documents/xmtp.htm">XMTP</a> mapping of MIME/SMTP to XML.<br />
<a href="http://www.qi4j.org/">Qi4J</a> AoP on steroids</p>]]>
    </content>
</entry>
<entry>
    <title>The Company of Myself</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/03/the_company_of_myself.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1202" title="The Company of Myself" />
    <id>tag:life.neophi.com,2010:/danielr//1.1202</id>
    
    <published>2010-03-10T04:23:31Z</published>
    <updated>2010-03-10T04:28:36Z</updated>
    
    <summary>If you are a fan of Braid, The Company of Myself is an awesome little Flash game that uses the replay your actions concept very well....</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Visual" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>If you are a fan of <a href="http://life.neophi.com/danielr/2010/02/braid.html">Braid</a>, <a href="http://www.kongregate.com/games/2DArray/the-company-of-myself">The Company of Myself</a> is an awesome little Flash game that uses the replay your actions concept very well.</p>]]>
        
    </content>
</entry>
<entry>
    <title>PKIX path building failed</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/02/pkix_path_building_failed.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1199" title="PKIX path building failed" />
    <id>tag:life.neophi.com,2010:/danielr//1.1199</id>
    
    <published>2010-02-21T01:47:18Z</published>
    <updated>2010-02-21T01:54:15Z</updated>
    
    <summary>Recently this error message started showing up in one of our log files and needless to say was causing a few issues: [org.apache.commons.httpclient.HttpMethodDirector] - Turns out the process had been running long enough that while trying to perform an HTTPS...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Programming" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>Recently this error message started showing up in one of our log files and needless to say was causing a few issues:</p>

<blockquote>[org.apache.commons.httpclient.HttpMethodDirector] - <I/O exception (javax.net.ssl.SSLHandshakeException) caught when processing request: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target>
</blockquote>

<p>Turns out the process had been running long enough that while trying to perform an HTTPS based operation the certificate in the JVM for the certificate authority the target site was using had expired. A quick update of the cacerts file and everything was happy again. Yet another <a href="http://en.wikipedia.org/wiki/Software_rot">software rot</a> angle to keep in mind.</p>]]>
        
    </content>
</entry>
<entry>
    <title>US: Americans Talk About Love</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/02/us_americans_talk_about_love.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1197" title="US: Americans Talk About Love" />
    <id>tag:life.neophi.com,2010:/danielr//1.1197</id>
    
    <published>2010-02-15T14:47:41Z</published>
    <updated>2010-02-15T14:48:24Z</updated>
    
    <summary> Us: Americans Talk About Love by John Bowe My rating: 4 of 5 stars This book isn&apos;t about fairytale love. This book is about love being complex, crazy, heart-rending, and at the same time comforting, profound, and heartwarming. The...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Books" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p><a href="http://www.goodreads.com/book/show/6929510-us" style="float: left; padding-right: 20px"><img alt="Us: Americans Talk About Love" border="0" src="http://ecx.images-amazon.com/images/I/4135I3USRiL._SX106_.jpg" /></a> <a href="http://www.goodreads.com/book/show/6929510-us">Us: Americans Talk About Love</a> by <a href="http://www.goodreads.com/author/show/868759.John_Bowe">John Bowe</a><br/><br/><br />
My rating: <a href="http://www.goodreads.com/review/show/89749141">4 of 5 stars</a><br />
This book isn't about fairytale love. This book is about love being complex, crazy, heart-rending, and at the same time comforting, profound, and heartwarming. The stories reflect the melting pot that is America touching on generational, cultural, and ethical differences of what people consider and call love.</p>

<p><a href="http://www.goodreads.com/review/list/2130032-daniel-r">View all my reviews >></a><br />
</p>]]>
        
    </content>
</entry>
<entry>
    <title>A Fire Upon the Deep</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/02/a_fire_upon_the_deep.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1196" title="A Fire Upon the Deep" />
    <id>tag:life.neophi.com,2010:/danielr//1.1196</id>
    
    <published>2010-02-13T19:57:29Z</published>
    <updated>2010-02-14T14:01:42Z</updated>
    
    <summary> A Fire Upon The Deep by Vernor Vinge My rating: 5 of 5 stars A masterful journey through space to save the universe from a growing new power. The story mixes alien races, hive minds, technology, and politics in...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Books" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p><a href="http://www.goodreads.com/book/show/77711.A_Fire_Upon_The_Deep" style="float: left; padding-right: 20px"><img alt="A Fire Upon The Deep (Zones of Thought)" border="0" src="http://photo.goodreads.com/books/1170900383m/77711.jpg" /></a> <a href="http://www.goodreads.com/book/show/77711.A_Fire_Upon_The_Deep">A Fire Upon The Deep</a> by <a href="http://www.goodreads.com/author/show/44037.Vernor_Vinge">Vernor Vinge</a><br/><br/><br />
My rating: <a href="http://www.goodreads.com/review/show/89520112">5 of 5 stars</a><br />
A masterful journey through space to save the universe from a growing new power. The story mixes alien races, hive minds, technology, and politics in a captivating story presenting it all in believable scenarios. The ending pushed the boundaries a little but resolved everything cleanly, a pleasant change from other science fiction I've read recently.</p>

<p><a href="http://www.goodreads.com/review/list/2130032-daniel-r">View all my reviews >></a><br />
</p>]]>
        
    </content>
</entry>
<entry>
    <title>One Thing At A Time</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/02/one_thing_at_a_time.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1194" title="One Thing At A Time" />
    <id>tag:life.neophi.com,2010:/danielr//1.1194</id>
    
    <published>2010-02-06T00:21:43Z</published>
    <updated>2010-02-06T00:24:34Z</updated>
    
    <summary>Anonymous asked: How do you maintain focus (on work, dreams, goals, life)? You do one thing at a time. -- Frank Chimero I&apos;ve been casting my net wide these past fews months and so far haven&apos;t found that one thing...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Quotes" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<blockquote>Anonymous asked: How do you maintain focus (on work, dreams, goals, life)?

<p>You do one thing at a time.</p>

<p>-- <a href="http://blog.frankchimero.com/post/371292272/how-do-you-maintain-focus-on-work-dreams-goals">Frank Chimero</a></blockquote></p>

<p>I've been casting my net wide these past fews months and so far haven't found that one thing yet, but I know when I do it will ring true like is has in the past.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Braid</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/02/braid.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1193" title="Braid" />
    <id>tag:life.neophi.com,2010:/danielr//1.1193</id>
    
    <published>2010-02-04T01:53:29Z</published>
    <updated>2010-02-04T01:59:24Z</updated>
    
    <summary>Yesterday I bought a computer game. For those that know me well this may came as a big surprise since this isn&apos;t something I normally do. Lately I&apos;ve found myself searching for something to sink my teeth into. I&apos;ve not...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Visual" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>Yesterday I bought a computer game. For those that know me well this may came as a big surprise since this isn't something I normally do. Lately I've found myself searching for something to sink my teeth into. I've not quite found it yet so I've been doing my best to not just sit in front of the television and watch movies. To that end a discussion at work recently brought up the game <a href="http://www.braid-game.com/">Braid</a>. I have to say so far it is an awesome puzzle game, my favorite genre. The playing with time dynamic the game has isn't something I've seen in the few games I've played or heard about and it's done very well. Definitely worth the few bucks it cost me.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Don&apos;t Make Me Think</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/02/dont_make_me_think.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1192" title="Don't Make Me Think" />
    <id>tag:life.neophi.com,2010:/danielr//1.1192</id>
    
    <published>2010-02-03T01:19:06Z</published>
    <updated>2010-02-03T01:19:39Z</updated>
    
    <summary> Don&apos;t Make Me Think: A Common Sense Approach to Web Usability by Steve Krug My rating: 4 of 5 stars A no nonsense approach on how to design web sites to be as effective as possible. The second edition...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Books" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p><a href="http://www.goodreads.com/book/show/3368.Don_t_Make_Me_Think_A_Common_Sense_Approach_to_Web_Usability" style="float: left; padding-right: 20px"><img alt="Don't Make Me Think: A Common Sense Approach to Web Usability (2nd Edition)" border="0" src="http://photo.goodreads.com/books/1163443099m/3368.jpg" /></a> <a href="http://www.goodreads.com/book/show/3368.Don_t_Make_Me_Think_A_Common_Sense_Approach_to_Web_Usability">Don't Make Me Think: A Common Sense Approach to Web Usability</a> by <a href="http://www.goodreads.com/author/show/2298.Steve_Krug">Steve Krug</a><br/><br/><br />
My rating: <a href="http://www.goodreads.com/review/show/87965362">4 of 5 stars</a><br />
A no nonsense approach on how to design web sites to be as effective as possible. The second edition adds information on treating users well and designing for accessibility while trimming the focus on how to conduct usability testing. It has been a number of years since I first skimmed this book and I found the changes welcome. My biggest complaint with the book continues to be a lack of a summary or checklist on the high level points with references to where the topic is covered in more detail. While the book is concise enough to easily skim through I frequently found myself wishing for some more than just the index to find material when I wanted to review a topic. If even half the advice given in the book was followed the web would be twice as easy to use.</p>

<p><a href="http://www.goodreads.com/review/list/2130032-daniel-r">View all my reviews >></a><br />
</p>]]>
        
    </content>
</entry>
<entry>
    <title>NoSQL Rundown</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/02/nosql_rundown.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1191" title="NoSQL Rundown" />
    <id>tag:life.neophi.com,2010:/danielr//1.1191</id>
    
    <published>2010-02-01T15:08:05Z</published>
    <updated>2010-02-02T14:27:57Z</updated>
    
    <summary>I&apos;ve been occasionally following NoSQL over the past year since starting to use SimpleDB for unstructured data storage. A lot of options have opened up and recently Tim Anglade put this list together that I thought was worth sharing. Hopefully...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Links" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>I've been occasionally following NoSQL over the past year since starting to use SimpleDB for unstructured data storage. A lot of options have opened up and recently Tim Anglade put this list together that I thought was worth sharing. Hopefully I got all the links correct as they were not part of the original message.</p>

<ul>
<li><a href="http://incubator.apache.org/cassandra/">Cassandra</a></li>
<li><a href="http://couchdb.apache.org/">CouchDB</a></li>
<li><a href="http://wiki.github.com/cliffmoon/dynomite/">Dynomite</a></li>
<li><a href="http://fis-gtm.com/">GT.M</a></li>
<li><a href="http://hadoop.apache.org/">Hadoop</a></li>
<li><a href="http://hadoop.apache.org/hbase/">HBase</a></li>
<li><a href="http://www.kobrix.com/hgdb.jsp">HyperGraphDB</a></li>
<li><a href="http://www.hypertable.org/">Hypertable</a></li>
<li><a href="http://infogrid.org/">InfoGrid</a></li>
<li><a href="http://jackrabbit.apache.org/">JackRabbit</a></li>
<li><a href="http://memcachedb.org/">MemcacheDB</a></li>
<li><a href="http://www.erlang.org/doc/apps/mnesia">Mnesia</a></li>
<li><a href="http://www.mongodb.org/">MongoDB</a></li>
<li><a href="http://neo4j.org/">Neo4J</a></li>
<li><a href="http://www.openneptune.com/">Neptune</a></li>
<li><a href="http://code.google.com/p/redis/">Redis</a></li>
<li><a href="http://riak.basho.com/">Riak</a></li>
<li><a href="http://aws.amazon.com/simpledb/">SimpleDB</a></li>
<li><a href="http://www.sones.com/">Sones</a></li>
<li><a href="http://allmydata.org/source/tahoe/trunk/docs/about.html">Tahoe-LAFS</a></li>
<li><a href="http://code.google.com/p/terrastore/">Terrastore</a></li>
<li><a href="http://1978th.net/tokyocabinet/">TokyoCabinet</a></li>
<li><a href="http://project-voldemort.com/">Voldemort</a></li>
</ul>

<ul>
<li><a href="http://labs.google.com/papers/bigtable.html">BigTable</a></li>
<li><a href="http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf">Dynamo</a></li>
<li><a href="http://developer.yahoo.net/blog/archives/2009/06/sherpa.html">Sherpa</a></li>
</ul>

<ul>
<li>ESRI ArcGIS (non-free)</li>
<li>Oracle's Spatial Layer (non-free)</li>
<li>SAND (academic Geographical/Spatial database) </li>
</ul>]]>
        
    </content>
</entry>
<entry>
    <title>The Music of Chance</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/01/the_music_of_chance.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1190" title="The Music of Chance" />
    <id>tag:life.neophi.com,2010:/danielr//1.1190</id>
    
    <published>2010-02-01T00:01:03Z</published>
    <updated>2010-02-01T00:04:09Z</updated>
    
    <summary>I had read this book awhile ago as part of a book group but due to a gag order around discussing books prior to meeting in person, I&apos;m only now getting around to posting it. Minor spoiler alert. The Music...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Books" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>I had read this book awhile ago as part of a book group but due to a gag order around discussing books prior to meeting in person, I'm only now getting around to posting it. Minor spoiler alert.</p>

<p><a href="http://www.goodreads.com/book/show/453.The_Music_of_Chance" style="float: left; padding-right: 20px"><img alt="The Music of Chance" border="0" src="http://photo.goodreads.com/books/1156917458m/453.jpg" /></a> <a href="http://www.goodreads.com/book/show/453.The_Music_of_Chance">The Music of Chance</a> by <a href="http://www.goodreads.com/author/show/296961.Paul_Auster">Paul Auster</a><br/><br/><br />
My rating: <a href="http://www.goodreads.com/review/show/87657070">2 of 5 stars</a><br />
The book started off great. I had visions of Rounders and Good Will Hunting in my head as the story started to unfold. Unfortunately once they lost the big poker game and voluntarily entered indentured servitude my suspension of disbelief was broken and I could no longer relate to the characters. As a result I found it a drudgery to complete the book.</p>

<p><a href="http://www.goodreads.com/review/list/2130032-daniel-r">View all my reviews >></a><br />
</p>]]>
        
    </content>
</entry>
<entry>
    <title>AIR 2.0 and Presentation Nightmares</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/01/air_20_and_presentation_nightm.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1187" title="AIR 2.0 and Presentation Nightmares" />
    <id>tag:life.neophi.com,2010:/danielr//1.1187</id>
    
    <published>2010-01-13T04:20:13Z</published>
    <updated>2010-01-13T04:23:24Z</updated>
    
    <summary>Tonight I spoke at the Boston Flex User Group about AIR 2.0 with a focus on the new Native Process API and Networking APIs. Alas the talk didn&apos;t go as planned since I forgot my bag of video output adapters...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Flex" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>Tonight I spoke at the <a href="http://www.bostonfug.org/">Boston Flex User Group</a> about AIR 2.0 with a focus on the new Native Process API and Networking APIs. Alas the talk didn't go as planned since I forgot my bag of video output adapters at home and didn't notice until I was setting up. The meeting was only a few blocks away from the Allurent offices so I ran (more like a sprint) back to find suitable replacements. Alas in my rush to borrow an adapter (only being able to find a mini display port to HDMI) I ran afoul of the old Mac VGA/HDMI mechanical virus issue. However, it wasn't until after sprinting back to the meeting and futzing with projectors for 15 minutes that I realized this issue. Thankfully a fellow attendee loaned me his computer and using the USB drive I did have on me, I managed to gave a modified version of the talk sans running demo code. I'd like to thank those in attendance for their patience, apologize for my forgetfulness, and hope that at least a little information was conveyed. A copy of the presentation <a href="/danielr/files/AIR2.pdf">is available in PDF format</a>. The most import code snippets are below:</p>]]>
        <![CDATA[<p>Define a Native Process Startup Information instance:</p><pre class="code"><span class="linecomment">// _mxmlc, _cssFile, _brandFile, and _kitDir are of type File</span>
<span class="category5">var</span> nativeProcessStartupInfo:NativeProcessStartupInfo = <span class="category1">new</span> NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = _mxmlc;
<span class="category5">var</span> mxmlcArguments:Vector.&lt;String&gt; = <span class="category1">new</span> Vector.&lt;String&gt;();
mxmlcArguments.<span class="category2">push</span>(_cssFile.nativePath);
mxmlcArguments.<span class="category2">push</span>(<span class="quote">"-output"</span>);
mxmlcArguments.<span class="category2">push</span>(_brandFile.nativePath);
nativeProcessStartupInfo.<span class="category2">arguments</span> = mxmlcArguments;
nativeProcessStartupInfo.workingDirectory = _kitDir;</pre><p></p>

<p>Create and attach listeners to a Native Process:</p><pre class="code"><span class="linecomment">// _nativeProcess is of type NativeProcess</span>
_nativeProcess = <span class="category1">new</span> NativeProcess();

_nativeProcess.addEventListener(Event.STANDARD_ERROR_CLOSE, handleStandardErrorClose);
_nativeProcess.addEventListener(Event.STANDARD_INPUT_CLOSE, handleStandardInputClose);
_nativeProcess.addEventListener(Event.STANDARD_OUTPUT_CLOSE, handleStandardOutputClose);

_nativeProcess.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, handleStandardErrorError);
_nativeProcess.addEventListener(IOErrorEvent.STANDARD_INPUT_IO_ERROR, handleStandardInputError);
_nativeProcess.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, handleStandardOutputError);

_nativeProcess.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, handleStandardErrorData);
_nativeProcess.addEventListener(ProgressEvent.STANDARD_INPUT_PROGRESS, handleStandardInputProgress);
_nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, handleStandardOutputData);

_nativeProcess.addEventListener(NativeProcessExitEvent.EXIT, handleNativeProcessExit);</pre><p></p>

<p>Typical event handling code:<br />
</p><pre class="code"><span class="category1">private</span> <span class="category2">function</span> handleStandardOutputData(progressEvent:ProgressEvent):<span class="category1">void</span> {
    <span class="category3">trace</span>(_nativeProcess.standardOutput.readUTFBytes(_nativeProcess.standardOutput.bytesAvailable));
}

<span class="category1">private</span> <span class="category2">function</span> handleNativeProcessExit(nativeProcessExitEvent:NativeProcessExitEvent):<span class="category1">void</span> {
    <span class="category3">trace</span>(nativeProcessExitEvent.exitCode);
}</pre><p></p>

<p>Create a new server socket that listens on an OS selected available port:</p><pre class="code"><span class="linecomment">// _serverSocket is of type ServerSocket</span>
_serverSocket = <span class="category1">new</span> ServerSocket();
_serverSocket.addEventListener(Event.CLOSE, handleServerClose);
_serverSocket.addEventListener(Event.CONNECT, handleServerConnect);
_serverSocket.bind();
_serverSocket.listen();</pre><p></p>

<p>Handle a new incoming connection:</p><pre class="code"><span class="category1">private</span> <span class="category2">function</span> handleServerConnect(serverSocketConnectEvent:ServerSocketConnectEvent):<span class="category1">void</span> {
    <span class="category5">var</span> socket:Socket = serverSocketConnectEvent.socket;
    socket.addEventListener(ProgressEvent.SOCKET_DATA, handleSocketData);
    socket.addEventListener(Event.CLOSE, handleSocketClose);
    socket.addEventListener(IOErrorEvent.IO_ERROR, handleSocketIOError);
}</pre><p></p>

<p>Handling socket data:</p><pre class="code"><span class="category1">private</span> <span class="category2">function</span> handleSocketData(progressEvent:ProgressEvent):<span class="category1">void</span> {
    <span class="category5">var</span> socket:Socket = Socket(progressEvent.<span class="category2">target</span>);
    <span class="category5">var</span> byteArray:ByteArray = <span class="category1">new</span> ByteArray();
    socket.readBytes(byteArray, 0, socket.bytesAvailable);
    
    socket.writeUTFBytes(<span class="quote">"HTTP/1.1 404 Not Found"</span> + CRLF);
    socket.writeUTFBytes(<span class="quote">"Connection: close"</span> + CRLF);
    socket.writeUTFBytes(CRLF);
    socket.<span class="category2">flush</span>();
    socket.close();
}</pre>]]>
    </content>
</entry>
<entry>
    <title>My Top 10 Spam Subjects from 2009</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/01/my_top_10_spam_subjects_from_2.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1184" title="My Top 10 Spam Subjects from 2009" />
    <id>tag:life.neophi.com,2010:/danielr//1.1184</id>
    
    <published>2010-01-02T16:00:21Z</published>
    <updated>2010-01-02T16:10:08Z</updated>
    
    <summary>Doing some quick command line hacks I extracted the top 10 spam subjects (ignoring case) that I received in 2009 according to Postini. Each subject accounts for 0.25% of the spam messages I received with no subject accounting for 0.88%....</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>Doing some quick command line hacks I extracted the top 10 spam subjects (ignoring case) that I received in 2009 according to Postini. Each subject accounts for 0.25% of the spam messages I received with no subject accounting for 0.88%. All told just under half of the spam I got used a unique subject.</p>

<table>
<tr><th>Count</th><th>Subject</th></tr>
<tr><td>396</td><td>[no subject]</td></tr>
<tr><td>127</td><td>free cialis</td></tr>
<tr><td>124</td><td>age is no longer a barrier for me in bed</td></tr>
<tr><td>123</td><td>pay shipping and get your trials</td></tr>
<tr><td>119</td><td>le_vrai_jeu_se_joue_seulement_lm-`_om-y_il_a_commencm-i:_m-`_las_vegas!_</td></tr>
<tr><td>115</td><td>we know you want the free cialis</td></tr>
<tr><td>115</td><td>pay shipping for your erotic nights</td></tr>
<tr><td>115</td><td>don't pay anything for your pills for 15 days</td></tr>
<tr><td>114</td><td>feel 10 years younger in bed today</td></tr>
<tr><td>114</td><td>do not underestimate the value of free pills</td></tr>
</table>]]>
        <![CDATA[<p>Using space as a word delimiter and lowercasing everything, these were the top 10 words found in my spam subjects. Not nearly as interesting as the full subject lines.</p>

<table>
<tr><th>Count</th><th>Word</th></tr>
<tr><td>8854</td><td>your</td></tr>
<tr><td>6988</td><td>for</td></tr>
<tr><td>6031</td><td>free</td></tr>
<tr><td>5426</td><td>the</td></tr>
<tr><td>4851</td><td>to</td></tr>
<tr><td>4666</td><td>a</td></tr>
<tr><td>4600</td><td>you</td></tr>
<tr><td>3587</td><td>and</td></tr>
<tr><td>3504</td><td>get</td></tr>
<tr><td>3014</td><td>in</td></tr>
</table>]]>
    </content>
</entry>
<entry>
    <title>2009 Spam</title>
    <link rel="alternate" type="text/html" href="http://life.neophi.com/danielr/2010/01/2009_spam.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://life.neophi.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=1183" title="2009 Spam" />
    <id>tag:life.neophi.com,2010:/danielr//1.1183</id>
    
    <published>2010-01-01T22:45:02Z</published>
    <updated>2010-01-01T23:02:33Z</updated>
    
    <summary>Since I switched to Google for handling my email I don&apos;t have as fine grained tracking of spam as I did in years past. My first line of spam defense is Postini which caught 43,683 spam messages for 2009. I...</summary>
    <author>
        <name>Daniel Rinehart</name>
        <uri>http://danielr.neophi.com/</uri>
    </author>
            <category term="Kitchen Sink" />
    
    <content type="html" xml:lang="en" xml:base="http://life.neophi.com/danielr/">
        <![CDATA[<p>Since I switched to Google for handling my email I don't have as fine grained tracking of spam as I did in <a href="http://life.neophi.com/danielr/2008/01/2007_spam_statistics.html">years</a> <a href="http://life.neophi.com/danielr/2007/01/2006_spam_statistics.html">past</a>. My first line of spam defense is Postini which caught 43,683 spam messages for 2009. I get very few false positives from Postini so that number is about spot on. My GMail spam folder currently holds 406 spams messages received in the last 30 days. If I do a rough calculation, I'd say GMail caught another 3,263 spam messages. Postini drops certain spam messages into the bit bucket before I see any trace of it which contributed to only 45% of my email for 2009 being spam. The number of spam messages a day though is marching upwards. Minus a few drops when a spam botnet is shutdown the trend for the year isn't pretty as the graph below shows.</p>]]>
        <![CDATA[<p><img src="/danielr/images/Spam2009.png"/></p>]]>
    </content>
</entry>

</feed> 

