<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3822535</id><updated>2012-02-12T10:27:53.297-08:00</updated><category term='#java'/><category term='#biz'/><category term='tech'/><category term='#travel'/><category term='#note to self'/><category term='#data'/><category term='#streamcruncher'/><category term='#event processing'/><category term='#productivity'/><category term='#dads pictures'/><category term='#ashwin-ism'/><category term='#system'/><category term='general'/><category term='#books'/><title type='text'>Ashwin Jayaprakash's Blog</title><subtitle type='html'>Falling into the future at light speed</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default?start-index=101&amp;max-results=100'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>358</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3822535.post-7832112892917431432</id><published>2012-01-28T21:13:00.000-08:00</published><updated>2012-01-28T21:13:56.597-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#system'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Kotlin, Unix Philosophy, Cypher and loads of tech stuff to read</title><content type='html'>There are so many &lt;a href="http://en.wikipedia.org/wiki/List_of_JVM_languages"&gt;JVM based languages&lt;/a&gt; out there and yet none of them seem to be able to take over from good old (has it really been that long) Java. From my point of view (I'm sure it's shared by many others) most of these languages like Scala, JRuby, Groovy, Gosu, Clojure, Ceylon etc feel too far away from the center. They either propose radical syntax and idioms, seem overly clever, too flexible and hence not clear/safe for the average developer, or just not performant enough.&lt;br /&gt;&lt;br /&gt;Take Scala for example. If you pay no heed to the sensation Yammer's &lt;a href="https://gist.github.com/1406238"&gt;leaked email&lt;/a&gt; to TypeSafe caused and just read between the lines, there are some very &lt;a href="http://marxsoftware.blogspot.com/2011/12/recent-community-conversation-on-scala.html"&gt;real truths there&lt;/a&gt; about what a large population of developers, team leads, managers expect from a language before they can invest time, training, money, people and their careers into it.&lt;br /&gt;&lt;br /&gt;Which is why, I find &lt;a href="http://confluence.jetbrains.net/display/Kotlin/Welcome"&gt;JetBrain's Kotlin&lt;/a&gt; and to some extent for non-server side &lt;a href="http://dartr.com/"&gt;Google's Dart&lt;/a&gt; to be promising. Neither of these languages are about revolutionary/radical new concepts or "paradigm" shifts (ahem) nor do they hide their Java roots. &lt;a href="https://twitter.com/#%21/joshbloch/statuses/144140426918625280"&gt;Dart &lt;/a&gt;is definitely not JVM based but neither is Kotlin planning to stick to just the JVM (&lt;a href="http://blog.jetbrains.com/kotlin/2012/01/the-road-ahead/"&gt;LLVM plans&lt;/a&gt;). They are both intended to be evolutionary cleanups with some state of the art language features.Only time will tell &lt;a href="http://www.wiki.jvmlangsummit.com/Main_Page"&gt;if they succeed&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To add to our distractions we have Node.js with some &lt;a href="http://mdavey.wordpress.com/2011/12/20/resilent-messaging-with-node-js-rabbitmq-or-zeromq/"&gt;appeal&lt;/a&gt; if you are just out of school and easily impressed or have a &lt;a href="http://ql.io/"&gt;very specific need&lt;/a&gt;. Sigh...I'm already sounding like a weather beaten veteran who's seen too many "flash in the pans".&lt;br /&gt;&lt;br /&gt;If you didn't know and are wondering what the actual JVM team has been doing in response to the demand from these new JVM-based languages in Java 7, here's a &lt;a href="http://weblogs.java.net/blog/forax/archive/2011/12/17/jsr-292-goodness-almost-static-final-field"&gt;hint (JSR 292, MethodHandles, InvokeDynamic ..)&lt;/a&gt;. Be warned, this is not for the faint of heart.&lt;br /&gt;&lt;br /&gt;Enough of that. Now on to BloomFilters, a wonderful data structure heavily used by all NoSQL systems like Hive, Cassandra etc. Here's a very nice &lt;a href="http://www.jasondavies.com/bloomfilter/"&gt;visualization&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've written about &lt;a href="http://javaforu.blogspot.com/2009/12/graph-dbs-other-nosql.html"&gt;Neo4J&lt;/a&gt; the graph database before. I really like the concept but I haven't found an excuse yet (partially because it's LGPL) to use it. They even have a nicely done graph access language, sort of like SQL for graphs called &lt;a href="http://java.dzone.com/news/neo4j-16-m02-%E2%80%9Cj%C3%B6rn-kniv%E2%80%9D"&gt;Cypher&lt;/a&gt;. Here's a nice demo of &lt;a href="http://datablend.be/?p=1255"&gt;Neo4J, Gephi&lt;/a&gt; and spatial data. Makes sense for desktop use but I don't know if they have many server/enterprise grade users with many concurrent transactions.&lt;br /&gt;&lt;br /&gt;If you are looking for some general tech reading, like while on a place, here's a nice set of essays (also a book) - &lt;a href="http://www.aosabook.org/en/index.html"&gt;The Architecture of Open Source Applications&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Speaking of Open Source, I had not read or heard about &lt;a href="http://en.wikipedia.org/wiki/Unix_philosophy#Mike_Gancarz:_The_UNIX_Philosophy"&gt;The Unix Philosophy&lt;/a&gt;. I like the simplicity and focus. Obviously it has had great success but it applies to other software too. Sort of like &lt;a href="http://javaforu.blogspot.com/2009/05/lessons-in-api-design.html"&gt;Deiter Rams&lt;/a&gt; ideas on design but &lt;a href="http://javaforu.blogspot.com/2009/05/lessons-in-api-design.html"&gt;for software&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you've made it till here and are dying for some hard core tech, then here's some on &lt;a href="http://markmail.org/thread/w4yaphklhfbfmb2w#query:+page:1+mid:sl5ajg3hmfjgd5tg+state:results"&gt;CAS concurrency&lt;/a&gt;, &lt;a href="http://lwn.net/Articles/392307/"&gt;Azul's proposed&lt;/a&gt; Linux kernel patch and &lt;a href="http://vanillajava.blogspot.com/2012/01/java-thread-affinity-support-for-hyper.html"&gt;thread affinity&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;These days, any blog is incomplete without mention of BigData. So, here's some BigData reading material - slides from the &lt;a href="http://www.datastax.com/events/cassandrasf2011/presentations"&gt;Cassandra 2011&lt;/a&gt; summit.&lt;br /&gt;&lt;br /&gt;Ashwin.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7832112892917431432?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7832112892917431432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7832112892917431432' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7832112892917431432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7832112892917431432'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2012/01/kotlin-unix-philosophy-cypher-and-loads.html' title='Kotlin, Unix Philosophy, Cypher and loads of tech stuff to read'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4355913918784490763</id><published>2012-01-02T11:11:00.000-08:00</published><updated>2012-01-02T11:11:39.015-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>An 8 day, 3228 mile long road trip</title><content type='html'>We did an 8 day, 3228 mile long road trip from the Bay Area to Arizona, New Mexico, Nevada and back via Los Angeles. A proper road trip with just a rough idea of our route, no prior hotel bookings, a rental car and friends.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe width="650" height="500" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?msa=0&amp;amp;msid=207035343197917485791.0004b58fc5bcdd99812bd&amp;amp;ie=UTF8&amp;amp;ll=34.772315,-113.263147&amp;amp;spn=5.230605,17.641407&amp;amp;t=m&amp;amp;vpsrc=6&amp;amp;output=embed"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;View &lt;a href="http://maps.google.com/maps/ms?msa=0&amp;amp;msid=207035343197917485791.0004b58fc5bcdd99812bd&amp;amp;ie=UTF8&amp;amp;ll=34.772315,-113.263147&amp;amp;spn=5.230605,17.641407&amp;amp;t=m&amp;amp;vpsrc=6&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;Trip/Dec2011&lt;/a&gt; in a larger map&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616030319/" title="Sunset over San Luis Reservoir by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7004/6616030319_217bfb71f0.jpg" width="500" height="375" alt="Sunset over San Luis Reservoir"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616045099/" title="Long goods train (5 engines and a mile long) near Palm Springs, Arizona by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7001/6616045099_721cff9f44.jpg" width="500" height="375" alt="Long goods train (5 engines and a mile long) near Palm Springs, Arizona"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616801937/" title="Roosevelt lake, Arizona by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7167/6616801937_75e5bbdbbd.jpg" width="500" height="333" alt="Roosevelt lake, Arizona"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616811979/" title="Apache trail, Arizona by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7027/6616811979_470a8f79d9.jpg" width="500" height="254" alt="Apache trail, Arizona"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616813521/" title="Apache trail, Arizona by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7156/6616813521_1fdf0d64f2.jpg" width="500" height="278" alt="Apache trail, Arizona"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616817143/" title="Apache trail (22 mile dirt road), Arizona by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7171/6616817143_8800eded14.jpg" width="500" height="375" alt="Apache trail (22 mile dirt road), Arizona"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616051577/" title="Apache Trail, Arizona by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7012/6616051577_53df326d43.jpg" width="375" height="500" alt="Apache Trail, Arizona"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616821489/" title="After the 22 mile Apache trail drive by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7160/6616821489_0a206ab0c2.jpg" width="500" height="321" alt="After the 22 mile Apache trail drive"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616070265/" title="White sands missile range, New Mexico by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7022/6616070265_5de5912e8b.jpg" width="500" height="375" alt="White sands missile range, New Mexico"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616695743/" title="IMG_2984 by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7175/6616695743_6d3d7861f8.jpg" width="500" height="333" alt="IMG_2984"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616743277/" title="IMG_2899 by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7028/6616743277_bffa91fc7f.jpg" width="500" height="333" alt="IMG_2899"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616784003/" title="See those 2 people ahead of Anu way up there? by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7161/6616784003_00c69bd76c.jpg" width="500" height="333" alt="See those people way up there?"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616790033/" title="Dolls Theater by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7008/6616790033_171e7db0e2.jpg" width="333" height="500" alt="Dolls Theater"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616716711/" title="Petrified/Fossilized tree - tree turned to stone by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7030/6616716711_b855e5f927.jpg" width="500" height="333" alt="Petrified/Fossilized tree - tree turned to stone"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616704929/" title="Painted Desert - Petrified Forest National Park, Arizona by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7165/6616704929_f78dc2ca2b.jpg" width="500" height="333" alt="Painted Desert - Petrified Forest National Park, Arizona"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616734273/" title="Petrified tree stump for display by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7157/6616734273_577f26d527.jpg" width="500" height="333" alt="Petrified tree stump for display"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616269737/" title="X'mas tree at The Venetian, Las Vegas by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7005/6616269737_ba4b7dbb9a.jpg" width="375" height="500" alt="X'mas tree at The Venetian, Las Vegas"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616304903/" title="The Stratosphere, Las Vegas - the red tube at the top is also a ride! by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7021/6616304903_bf7a1e3395.jpg" width="375" height="500" alt="The Stratosphere, Las Vegas - the red tube at the top is also a ride!"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/6616676111/" title="&amp;quot;The&amp;quot; Fountain at The Bellagio, Vegas by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7174/6616676111_99d730fe81.jpg" width="500" height="375" alt="&amp;quot;The&amp;quot; Fountain at The Bellagio, Vegas"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4355913918784490763?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4355913918784490763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4355913918784490763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4355913918784490763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4355913918784490763'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2012/01/8-day-3228-mile-long-road-trip.html' title='An 8 day, 3228 mile long road trip'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-1045873411354375096</id><published>2011-12-03T20:32:00.001-08:00</published><updated>2011-12-07T08:59:22.664-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#system'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Some interesting talks from Camelone, Eurocon, HadoopWorld, distributed joins and more</title><content type='html'>Apache Camel, if you haven't used or even heard about this lovely little integration framework then I highly recommend watching this &lt;a href="http://skillsmatter.com/podcast/design-architecture/riding-camel/JS-2327"&gt;video by one of its founders&lt;/a&gt;. It's best described as a mini-ESB, an implementation of the Enterprise Application Integration Patterns (EAI) with API/programmatic access, a zillion connectors and a delight to use.&lt;br /&gt;&lt;br /&gt;Also worth watching is the EAI intro video by &lt;a href="http://fusesource.com/camelone2011/camelone-2011-gregor-hohpe/"&gt;Gregor Hohpe at Camelone 2011&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some interesting HadoopWorld 2011 slides:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cloudera.com/resource/hadoop-world-2011-presentation-slides-advanced-hbase-schema-design" target="_blank"&gt;Hadoop World 2011 Presentation Slides: Advanced HBase Schema Design - Lars George, Cloudera&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cloudera.com/resource/hadoop-world-2011-presentation-slides-replacing-rdb-dw-with-hadoop-and-hive-for-telco-big-data" target="_blank"&gt;Hadoop World 2011 Presentation Slides: Replacing RDB/DW with Hadoop and Hive for Telco Big Data - Jason Han, NexR&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cloudera.com/resource/hadoop-world-2011-presentation-slides-hadoop-and-graph-data-management-challenges-and-opportunities"&gt;Hadoop World 2011: Hadoop and Graph Data Management: Challenges and Opportunities&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&amp;nbsp;Apache Eurocon 2011 slides, worth reading - &lt;a href="http://www.lucidimagination.com/devzone/events/conferences/ApacheLuceneEurocon2011/realtime-search-twitter"&gt;Lucene at Twitter.&lt;/a&gt;&lt;br /&gt;Joins - the Achilles heel of NoSql, distributed systems. Possible, but difficult and not always feasible. Yet, several solutions are available being offered in addition to the big data warehouse &lt;a href="http://javaforu.blogspot.com/2011/08/in-memory-db-tables-shared-nothing-time.html"&gt;vendors&lt;/a&gt; and &lt;a href="http://javaforu.blogspot.com/2011/06/sharding-distributed-object-graphs-and.html"&gt;do-it-yourselfers&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.clusterdb.com/mysql-cluster/70x-faster-joins-with-aql-in-mysql-cluster-7-2-dmr/"&gt;70x Faster Joins with AQL in MySQL Cluster 7.2 DMR&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://assets.en.oreilly.com/1/event/36/MySQL%20Cluster%20and%20Pushdown-joins%20_In%20Pursuit%20of%20the%20Holy%20Grail_%20Presentation.pdf"&gt;25x: MySQL Cluster and pushdown joins (in pursuit of the holy grail)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dbms2.com/2011/11/08/hadapt-is-moving-forward/"&gt;Hadapt is moving forward&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;More lessons on IO - &lt;a href="http://www.percona.com/files/presentations/percona-live/london-2011/PLUK2011-disk-io-abstraction-layer-x-rays.pdf"&gt;Disk I/O abstraction layer X-rays&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You thought &lt;a href="http://vanillajava.blogspot.com/2011/11/low-latency-slides.html"&gt;System.nanoTime() was fast&lt;/a&gt; than using System.currentTimeMills() for profiling? Well.. it's all relative.&lt;br /&gt;&lt;br /&gt;The old JCache API seems to have been revived - &lt;a href="https://oracleus.wingateweb.com/published/oracleus2011/sessions/24223/S24223_2553040.pdf"&gt;JSR107: The new Caching Standard&lt;/a&gt;. It's also going to be a part of the next JEE spec. More signs of commoditization - a good sign of progress.&lt;br /&gt;&lt;br /&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-1045873411354375096?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/1045873411354375096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=1045873411354375096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1045873411354375096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1045873411354375096'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/12/some-interesting-talks-from-camelone.html' title='Some interesting talks from Camelone, Eurocon, HadoopWorld, distributed joins and more'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3878461117740368405</id><published>2011-10-31T20:07:00.000-07:00</published><updated>2011-10-31T20:07:18.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#system'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Garbage collection, memory, IO and other scary stories</title><content type='html'>Happy Halloween! Want to read some scary, low-level, systems related stuff? Here's a short list of very useful articles I read recently:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://irr.posterous.com/what-every-data-programmer-needs-to-know-abou"&gt;What Every Data Programmer Needs to Know about Disks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wlug.org.nz/LinuxIoScheduler"&gt;Linux IO Scheduler&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/Do-You-Really-Get-Memory"&gt;Do You Really Get Memory?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://fabiensanglard.net/quake2/index.php"&gt;Quake 2 Source Code Review&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.aosabook.org/en/index.html"&gt;The Architecture of Open Source Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ualberta.ca/CNS/RESEARCH/LinuxClusters/mem.html"&gt;Understanding Memory&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.snailinaturtleneck.com/blog/2011/08/30/playing-with-virtual-memory/"&gt;Playing with Virtual Memory&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://javaforu.blogspot.com/search/label/%23system"&gt;Other links&lt;/a&gt; I've mentioned previously&lt;/li&gt;&lt;/ul&gt;SQL &lt;a href="http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back"&gt;anti-patterns&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;GC &lt;a href="http://samsaffron.com/archive/2011/10/28/in-managed-code-we-trust-our-recent-battles-with-the-net-garbage-collector"&gt;horror stories&lt;/a&gt; in the &lt;a href="http://channel9.msdn.com/posts/Maoni-Stephens-CLR-45-Server-Background-GC"&gt;.Net world&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Still not scared? How about some math and statistics:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://engineering.linkedin.com/algorithms/ranking-live-streams-data"&gt;Ranking data&lt;/a&gt; at LinkedIn&lt;/li&gt;&lt;li&gt;Some &lt;a href="http://www.discursive.com/books/cjcook/reference/math.html"&gt;more math stuff&lt;/a&gt; and other useful &lt;a href="http://www.discursive.com/books/cjcook/reference/book-cjcook.html"&gt;miscellaneous Java articles&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Basic &lt;a href="http://www.r-bloggers.com/programmers-should-know-r/"&gt;R/statistics every programmer&lt;/a&gt; should know&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Boo!&lt;br /&gt; Ashwin.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3878461117740368405?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3878461117740368405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3878461117740368405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3878461117740368405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3878461117740368405'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/10/garbage-collection-memory-io-and-other.html' title='Garbage collection, memory, IO and other scary stories'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3004982683009567361</id><published>2011-09-24T17:15:00.000-07:00</published><updated>2011-09-24T17:15:43.028-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Fremont Older Open Space Preserve</title><content type='html'>So close to South Bay Area. &lt;a href="http://www.bahiker.com/southbayhikes/stevenscreek.html"&gt;Prospect Road trail&lt;/a&gt; is a little steep but short. Worth visiting again because there are so many trails.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3004982683009567361?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3004982683009567361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3004982683009567361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3004982683009567361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3004982683009567361'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/09/hiking-in-fremont-older-open-space.html' title='Hiking in Fremont Older Open Space Preserve'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-8373393044197838173</id><published>2011-09-13T09:01:00.000-07:00</published><updated>2011-09-13T09:01:19.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Monday = one of the days of the week when you forget if you had coffee and have to look in the trash can for the discarded coffee cup, just to check.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-8373393044197838173?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/8373393044197838173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=8373393044197838173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8373393044197838173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8373393044197838173'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/09/monday-one-of-days-of-week-when-you.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5309024856130367191</id><published>2011-09-13T05:25:00.000-07:00</published><updated>2011-09-13T05:25:35.841-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#system'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Offloading data from the JVM heap (a little experiment)</title><content type='html'>Last &lt;a href="http://javaforu.blogspot.com/2011/09/ram-disk-is-already-in-linux-and-nobody.html"&gt;time&lt;/a&gt;, I wrote about the possibility of using Linux shared memory to offload cacheable/reference data from the JVM. To that end I wrote a small Java program to see if it was practical. The results were better (some even stranger) than I had expected.&lt;br /&gt;&lt;br /&gt;Here's what the test program does:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a bunch of java.nio.ByteBuffers that add up to 96MB of storage&lt;/li&gt;&lt;li&gt;Write ints starting from the first buffer, all the way to the last one - that's writing a total of 96MB of some contrived data&lt;/li&gt;&lt;li&gt;For each test, the buffer creation, writing and deletion is done 24 times (JIT warm up)&lt;/li&gt;&lt;li&gt;For each such test iteration, measure the memory (roughly) used in the JVM heap, the time taken to create those buffers and the time taken to write 96MB of data&lt;/li&gt;&lt;li&gt;Obviously, there are things here that sound fishy to you - like why use ByteBuffers instead of just writing to an OutputStream or why write to the buffers in sequence. Well, my intentions were just to get a ballpark figure as to the performance and the viability of moving data off the JVM heap &lt;/li&gt;&lt;/ul&gt;About the test:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There are really 5 different ways to create the buffers. Then there are 2 variations of these tests in which the buffer sizes vary (blocks), but the total bytes written are the same&lt;/li&gt;&lt;li&gt;The buffers (blocks) for each variation are created as:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Ordinary HeapByteBuffers inside the JVM heap itself - as a baseline for performance&lt;/li&gt;&lt;li&gt;DirectByteBuffers&lt;/li&gt;&lt;li&gt;A file created on Ext4fs using RandomAccessFile and parts of the file are memory mapped using the FileChannel. The file is opened in "rw" mode. Other options are "rwd" and "rws"&lt;/li&gt;&lt;li&gt;The same as above but the file resides in /dev/shm the in-memory based, shared memory virtual file system (Tmpfs)&lt;/li&gt;&lt;li&gt;The buffers are created using Apache's Tomcat Native Libraries which in turn use Apache Portable Runtime libraries. The Shared memory (Shm) feature was used to create the buffers. This is similar to DirectByteBuffers but the buffers reside in a common area, in OS memory and not owned by any but shared between processes (Similar to /dev/shm but without the filesystem wrapper overhead)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The machine used to test was my moderately powered Windows 7 home laptop with 8GB RAM, 2.3GHz i5 running a Cloudera Ubuntu Linux VMWare Player. There were a few other processes running, but nothing that was using CPU extensively. 500MB+ memory was free and available&lt;/li&gt;&lt;li&gt;The VM had 1GB RAM and the JVM heap was 256MB&lt;/li&gt;&lt;/ul&gt;Results:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The test program was run once for each configuration, but each test itself ran 24 times to allow the JIT to warmup and even the file system caches to stay warm where needed&lt;/li&gt;&lt;li&gt;The test prints out the timings with headers which were then compiled into a single text file and then analyzed in &lt;a href="http://rstudio.org/"&gt;RStudio&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;summary_mem_used_time_taken_millis&lt;br /&gt;&lt;br /&gt;  block_size                      test_type perctile95_buffer_create_and_work_time_millis perctile95_mem_bytes&lt;br /&gt;1       4096                         direct                                       1555.65              3047456&lt;br /&gt;2       4096 file_/dev/shm/mmap_test.dat_rw                                        661.70              3047632&lt;br /&gt;3       4096          file_mmap_test.dat_rw                                       2055.75              3047632&lt;br /&gt;4       4096                           heap                                       1071.15            102334496&lt;br /&gt;5    4194304                         direct                                        653.85                 3008&lt;br /&gt;6    4194304 file_/dev/shm/mmap_test.dat_rw                                        561.40                 3184&lt;br /&gt;7    4194304          file_mmap_test.dat_rw                                       3878.25                 3184&lt;br /&gt;8    4194304                           heap                                       1064.80            100664960&lt;br /&gt;9    4194304                            shm                                        678.40                 2496&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-RwZpNoUzmME/Tm759ipq1oI/AAAAAAAAAsk/7srOcskyRLg/s1600/graf_bar_combined_time.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-RwZpNoUzmME/Tm759ipq1oI/AAAAAAAAAsk/7srOcskyRLg/s1600/graf_bar_combined_time.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-S9lBnKiUueA/Tm75-NP7T9I/AAAAAAAAAso/UdroIwSOWG4/s1600/graf_bar_memory_used.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-S9lBnKiUueA/Tm75-NP7T9I/AAAAAAAAAso/UdroIwSOWG4/s1600/graf_bar_memory_used.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xuaBvx-qxkw/Tm8C6gL6t6I/AAAAAAAAAtA/X7Jsgq48SKA/s1600/graf_histo_combined_time.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-xuaBvx-qxkw/Tm8C6gL6t6I/AAAAAAAAAtA/X7Jsgq48SKA/s1600/graf_histo_combined_time.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-n14PsaUV3lY/Tm75_IcM7EI/AAAAAAAAAsw/hM84IbnYw_E/s1600/graf_histo_creation_time.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-n14PsaUV3lY/Tm75_IcM7EI/AAAAAAAAAsw/hM84IbnYw_E/s1600/graf_histo_creation_time.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-9XxG1djBmMk/Tm8DFXbsdbI/AAAAAAAAAtE/UZO3CQqYopo/s1600/graf_histo_work_time.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-9XxG1djBmMk/Tm8DFXbsdbI/AAAAAAAAAtE/UZO3CQqYopo/s1600/graf_histo_work_time.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Interpretation of the results:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The test where block size was 4KB had quite a lot of memory overhead for the non-Java-heap ByteBuffers. Memory mapping was also slow for these small sizes as the Javadocs itself says for FileChannel.map()&lt;/li&gt;&lt;li&gt;The JVM heap test was slower than I had expected (for larger ByteBuffers). I was expecting that to be to fastest. Perhaps it was the small memory (1GB) virtualized OS it was running in. For smaller block sizes approaching 1K or less, the JVM heap performance is unbeatable. But in these tests, the focus was on larger block sizes&lt;/li&gt;&lt;li&gt;The Apache shared memory test would not even start for the 4KB tests as it would complain about "not enough space"&lt;/li&gt;&lt;li&gt;Almost everything fared well in the larger 4MB test. The per-block overhead was less for the off-heap tests and also the performance was nearly identical for /dev/shm, Apache Shm and DirectByteBuffer&lt;/li&gt;&lt;/ul&gt;Sources:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The sources for this test are available &lt;a href="https://code.google.com/p/ashwinjayaprakash/source/browse/trunk/projects/buffer_shm"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;To run all the tests except Apache Shm you only need to compile JavaBufferTest and run it with the correct parameters&lt;/li&gt;&lt;li&gt;To run all tests, you can use the sub-class AprBufferTest which can test Apache Shm and also the remaining tests. To compile this you'll need tomcat-coyote.jar from &lt;a href="http://tomcat.apache.org/download-70.cgi"&gt;apache-tomcat-7.0+&lt;/a&gt;. To run this you'll need the Jar file and the Tomcat Native bindings - &lt;a href="http://tomcat.apache.org/download-native.cgi"&gt;tcnative.dll&lt;/a&gt; or &lt;a href="http://packages.ubuntu.com/search?keywords=libtcnative-1"&gt;libtcnative&lt;/a&gt; for Linux &lt;/li&gt;&lt;/ul&gt;There are advantages to using ByteBuffer outside the Java heap:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The mapped file or the shared memory segments can outlive the JVM's life span. Another process can come in and attach to it and read the data&lt;/li&gt;&lt;li&gt;Reduces the GC pressure&lt;/li&gt;&lt;li&gt;Zero-copy transfers are possible to another file, network or device using FileChannel.transferTo()&lt;/li&gt;&lt;li&gt;Several projects and products have used this approach to host large volumes of data in the JVM&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://issues.apache.org/jira/browse/HBASE-3455"&gt;HBase-3455&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Details of HBase &lt;a href="http://www.cloudera.com/blog/2011/02/avoiding-full-gcs-in-hbase-with-memstore-local-allocation-buffers-part-2/"&gt;Slab allocator&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="https://issues.apache.org/jira/browse/CASSANDRA-2252"&gt;Cassandra-2252&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Disadvantages:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The data has to be stored, read and written using primitives to the ByteBuffer - putInt(), putFloat(), putChar() etc&lt;/li&gt;&lt;li&gt;Java objects cannot be read/written like in a simple Java program. Everything has to be serialized and deserialized back and forth from the buffers. This adds to latency and also makes it less user friendly&lt;/li&gt;&lt;/ul&gt;Misc notes and references:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;These tests can also be run on Windows, except for the Linux Tmpfs tests. However a RAM Drive can be used to achieve something similar&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Ashwin. &lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5309024856130367191?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5309024856130367191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5309024856130367191' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5309024856130367191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5309024856130367191'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/09/offloading-data-from-jvm-heap-little.html' title='Offloading data from the JVM heap (a little experiment)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-RwZpNoUzmME/Tm759ipq1oI/AAAAAAAAAsk/7srOcskyRLg/s72-c/graf_bar_combined_time.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7796393412345146768</id><published>2011-09-06T21:07:00.000-07:00</published><updated>2011-09-06T21:07:43.279-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Blue Lakes and Clear Lake (CA's biggest natural lake)</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Clear_Lake_%28California%29"&gt;Clear Lake&lt;/a&gt; in Kelseyville is a nice and peaceful place to visit and spend a weekend. Unlike Tahoe this feels cozier, less commercialized and is close to Napa. You can rent lake front property/spacious homes, relax and unwind. It is also the largest natural freshwater lake entirely in California (Tahoe is not because it spreads into Nevada).&lt;br /&gt;&lt;br /&gt;Blue Lakes is a smaller lake about 45 minutes from Clear Lake (Soda Bay) and is a perfect spot to float around on the lake and spend a warm afternoon with family and friends.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="450" marginheight="0" marginwidth="0" scrolling="no" src="http://maps.google.com/maps/ms?msa=0&amp;amp;msid=207035343197917485791.0004ac4b511be99e845a6&amp;amp;ie=UTF8&amp;amp;vpsrc=0&amp;amp;ll=38.839708,-122.736511&amp;amp;spn=0.962691,1.167297&amp;amp;z=9&amp;amp;output=embed" width="425"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;View &lt;a href="http://maps.google.com/maps/ms?msa=0&amp;amp;msid=207035343197917485791.0004ac4b511be99e845a6&amp;amp;ie=UTF8&amp;amp;vpsrc=0&amp;amp;ll=38.839708,-122.736511&amp;amp;spn=0.962691,1.167297&amp;amp;z=9&amp;amp;source=embed" style="color: blue; text-align: left;"&gt;Trip/05Sep2011&lt;/a&gt; in a larger map&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Ashwin.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7796393412345146768?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7796393412345146768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7796393412345146768' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7796393412345146768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7796393412345146768'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/09/blue-lakes-and-clear-lake-cas-biggest.html' title='Blue Lakes and Clear Lake (CA&apos;s biggest natural lake)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4230012926472937353</id><published>2011-09-01T00:26:00.000-07:00</published><updated>2011-09-02T21:50:25.161-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>RAM disk is already in Linux and nobody told you (a.k.a Shared memory for ordinary folk)</title><content type='html'>The Linux 2.6 Kernel these days comes with an in memory file system. This is really &lt;a href="http://en.wikipedia.org/wiki/Shared_Memory#Specific_implementations"&gt;shared memory&lt;/a&gt; across processes ("Everything old is new again!").&lt;br /&gt;&lt;br /&gt;The beauty of the Linux implementation (like everything else) is that this shared memory looks like a regular file system - &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/dev/shm&lt;/span&gt; (but is really &lt;a href="http://en.wikipedia.org/wiki/Tmpfs"&gt;Tmpfs&lt;/a&gt;). So, your application - yes even a Java application can use this shared memory system across processes as if it were just writing to a regular file. You can create directories, setup a memory quota for this file system, tail files, change to the directories etc like any other directory, open-write-close files that can be read by other processes. Convenient!&lt;br /&gt;&lt;br /&gt;RAM disks are not a new concept. But a RAM disk driver that is built into the kernel adds a totally different level of credibility and trust to the concept.&lt;br /&gt;&lt;br /&gt;All the contents of this directory are in memory. Nothing gets written to the disk, no flush, no IO wait times. Naturally, this being in-memory you will loose all the contents when your OS reboots. What possible use can this be to us, I hear you ask? Well well.. where do I begin:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Memory is cheap. 96GB RAM is quite common these days on server class machines &lt;/li&gt;&lt;li&gt;You can run a big RDBMS on this file system. Typically these databases are anyway replicated/clustered over the network&lt;/li&gt;&lt;ul&gt;&lt;li&gt;So you can run the entire DB in-memory and still have HA because the replica is running on another machine anyway (low "disk" latency + high TPS + HA)&lt;/li&gt;&lt;li&gt;Why write to a local disk which can crash anytime&lt;/li&gt;&lt;li&gt;Why spend so much on expensive SSDs&lt;/li&gt;&lt;li&gt;10GigE is already here &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Run medium sized JVMs and push all the heavy data to this shared memory filesystem&lt;/li&gt;&lt;ul&gt;&lt;li&gt;You free up the heap to do simple in-JVM caching and reduce the pressure on GC by moving all the data to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/dev/shm&lt;/span&gt; &lt;/li&gt;&lt;li&gt;If your JVM crashes, another JVM can be notified to pick up that data since it is just stored as a bunch of files and directories&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;People used to do IPC all the time using old fashioned shared memory constructs but it fell out of favor because networks and network drivers became quite fast&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Also moving away from IPC to TCP-over-localhost gave you freedom to spread your processes across machines (TCP-over-GigE)&lt;/li&gt;&lt;li&gt;Perhaps it is now worthwhile to re-examine that approach and shave precious milliseconds by not copying data back and forth between processes over sockets&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;To that end I wrote a simple Java class to measure the performance of writing to file on &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/dev/shm&lt;/span&gt; compared to a regular disk based file on&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; /tmp&lt;/span&gt;. The results are interesting and I'm hoping will make you readers re-think about your software systems ("Everything old is new ...").&lt;br /&gt;&lt;br /&gt;The program is a simple Java file writer that forces a flush every few tens of bytes (which means nothing when writing to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/dev/shm&lt;/span&gt;). The destination file and its path can be specified as a command line argument. So, it's easy to compare performance. I ran these tests on a &lt;a href="http://www.cloudera.com/"&gt;Cloudera&lt;/a&gt;-Ubuntu VMWare image running on my 64-bit Windows 7 laptop with 4GB RAM and 2.3 GHz duo core Intel i5. In-memory is not surprisingly 7x faster for a 112KB file. Also, laptop was running on batteries means processor speed steps down to save power.&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1185555.js?file=FileOutTest.java"&gt;&lt;/script&gt; &lt;br /&gt;Why people do not talk about this relatively new Linux feature out loud is perplexing.&lt;br /&gt;&lt;br /&gt;Other interesting commands you can run against this file system:&lt;br /&gt;&lt;ul style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;li&gt;mkdir &lt;/li&gt;&lt;li&gt;cat&lt;/li&gt;&lt;li&gt;tail, grep&lt;/li&gt;&lt;li&gt;ipcs -a&lt;/li&gt;&lt;li&gt;df -k&lt;/li&gt;&lt;/ul&gt;Follow up articles:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.oracle-base.com/articles/linux/LargeSGAOnLinux.php"&gt;Bigger pages&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b32009/appc_linux.htm#CHDFFCJB"&gt;In memory file system commands&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b32009/appi_vlm.htm#CACCIGFE"&gt;Optimizing Oracle&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;Detailed log:&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1185555.js?file=FileOutTest.log"&gt;&lt;/script&gt;&lt;br /&gt;Until next time,&lt;br /&gt;Ashwin.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4230012926472937353?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4230012926472937353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4230012926472937353' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4230012926472937353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4230012926472937353'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/09/ram-disk-is-already-in-linux-and-nobody.html' title='RAM disk is already in Linux and nobody told you (a.k.a Shared memory for ordinary folk)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3182181241653389814</id><published>2011-08-28T23:22:00.000-07:00</published><updated>2011-10-31T20:07:47.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>Guicing up your app with Google Guice</title><content type='html'>I've created a simple but not completely trivial demo application using Guice. This is something I did to understand and compare &lt;a href="http://code.google.com/p/google-guice/"&gt;Google-Guice&lt;/a&gt; with &lt;a href="http://seamframework.org/Weld"&gt;JBoss Weld&lt;/a&gt;'s &lt;a href="http://javaforu.blogspot.com/2010/06/hadoop-cdi-weld-hsql-and-chuck-norris.html"&gt;CDI&lt;/a&gt; RI for Java SE.&lt;br /&gt;&lt;br /&gt;This project is a pure Guice project called &lt;a href="http://code.google.com/p/guice-demo"&gt;Guice-Demo&lt;/a&gt; (duh) . Here's the &lt;a href="http://code.google.com/p/guice-demo/source/browse/#svn%2Ftrunk"&gt;source&lt;/a&gt;. Well, that's all there is. I thought this would be of some use to other first time users. The project wiki/docs are minimal and I might add some info later on, when I have the time. Until then I hope that the code is self explanatory.&lt;br /&gt;&lt;br /&gt;If you are interested in the Java CDI standard, then &lt;a href="http://agoncal.wordpress.com/2011/05/23/to-inject-or-not-to-inject-cdi-is-the-question/"&gt;this&lt;/a&gt; is useful. Weld also works on JavaSE but has &lt;a href="http://stackoverflow.com/questions/7114920/can-the-classpath-scanning-be-controlled-in-weld"&gt;no control&lt;/a&gt; over classpath scanning for injection and makes starts up times slower and somewhat wasteful.&lt;br /&gt;&lt;br /&gt;Guice's module creation is very straightforward. It also allows creating multiple Injector instances.&lt;br /&gt;&lt;br /&gt;Both Weld and Guice are not very unit test friendly as you will see &lt;a href="https://groups.google.com/d/topic/google-guice/28Zy43UWWNc/discussion"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ashwin.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3182181241653389814?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3182181241653389814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3182181241653389814' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3182181241653389814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3182181241653389814'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/08/guicing-up-your-app-with-google-guice.html' title='Guicing up your app with Google Guice'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-9042793391191853253</id><published>2011-08-27T18:28:00.000-07:00</published><updated>2011-08-27T18:28:39.336-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Stevens Creek County Park</title><content type='html'>&lt;a href="http://www.bahiker.com/southbayhikes/stevenscreek.html"&gt;Accessible&lt;/a&gt; and a relaxing walk around the reservoir that can easily convert to a longer hike. It's surprising that I had never been to this place, less than 15 minutes away. Avoid the main entrance on Balboa road which requires a fee to park. Try the West campus entrance where street parking is allowed (looked like).&lt;br /&gt;&lt;br /&gt;There are 2 adjacent parks that are probably worth visiting as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-TJ_Q3mlIbbM/TlmZbPF-1fI/AAAAAAAAAsc/pgUuscKI7DQ/s1600/IMG00252.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/-TJ_Q3mlIbbM/TlmZbPF-1fI/AAAAAAAAAsc/pgUuscKI7DQ/s640/IMG00252.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-9042793391191853253?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/9042793391191853253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=9042793391191853253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/9042793391191853253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/9042793391191853253'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/08/hiking-in-stevens-creek-county-park.html' title='Hiking in Stevens Creek County Park'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-TJ_Q3mlIbbM/TlmZbPF-1fI/AAAAAAAAAsc/pgUuscKI7DQ/s72-c/IMG00252.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6807670179387266850</id><published>2011-08-13T11:43:00.000-07:00</published><updated>2011-08-13T11:43:34.826-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>In-memory DB tables, shared nothing, time series, low latency and others</title><content type='html'>Some useful articles I read in the past few weeks. &lt;br /&gt;&lt;br /&gt;Big data, shared nothing, distributed SQL, in-memory SQL:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://hadoopblog.blogspot.com/2011/07/realtime-hadoop-usage-at-facebook.html" target="_blank"&gt;Realtime hadoop usage at Facebook&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Teradata &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.teradata.com/library/pdf/eb3053.pdf" target="_blank"&gt;Teradata Shared Nothing storage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oracleexadata.teradatanow.com/" target="_blank"&gt;Teradata compared with Oracle Exadata&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Slightly dated but &lt;a href="http://www.teradataforum.com/attachments/a050318a.pdf" target="_blank"&gt;comparison doc between Teradata and Oracle&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://db.apache.org/derby/docs/dev/tuning/tuning-single.html" target="_blank"&gt;Apache Derby's tuning docs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;MySQL's in-memory DB options&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mysqlhacker.com/kabir/performance/speeding-up-zencart-with-mysql-memory-tables.html" target="_blank"&gt;Heap tables&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bigdbahead.com/?p=183" target="_blank"&gt;NDB storage&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;New age time series databases:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.oscon.com/oscon2011/public/schedule/detail/20283" target="_blank"&gt;Lumberyard&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://opentsdb.net/"&gt;OpenTSDB&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Very good and detailed accounts of low latency Java based servers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/DSL-for-High-Frequency-Trading" target="_blank"&gt;DSL for High Frequency Trading&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lmax/" target="_blank"&gt;LMAX&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://martinfowler.com/articles/lmax.html" target="_blank"&gt;LMAX&lt;/a&gt; &lt;a href="http://code.google.com/p/disruptor/" target="_blank"&gt;Disruptor&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.mysqlperformanceblog.com/2011/06/09/aligning-io-on-a-hard-disk-raid-the-benchmarks/" target="_blank"&gt;Disk I/O&lt;/a&gt; and &lt;a href="http://unix4lyfe.org/time/" target="_blank"&gt;time&lt;/a&gt; related notes.&lt;br /&gt;&lt;br /&gt;Programming and Java:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=331531" target="_blank"&gt;The Principles of Good Programming&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.oscon.com/oscon2011/public/schedule/detail/19924" target="_blank"&gt;JVM Bytecode for Dummies&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cs.usfca.edu/%7Egalles/visualization/Algorithms.html" target="_blank"&gt;Data Structure Visualizations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/javaconcurrenta/" target="_blank"&gt;Java Concurrent Animated&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Until next time,&lt;br /&gt;Ashwin.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6807670179387266850?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6807670179387266850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6807670179387266850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6807670179387266850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6807670179387266850'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/08/in-memory-db-tables-shared-nothing-time.html' title='In-memory DB tables, shared nothing, time series, low latency and others'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-867084035571709364</id><published>2011-08-01T20:43:00.000-07:00</published><updated>2011-08-01T20:44:36.340-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>Java 7's j.u.c.Phaser - a short tutorial</title><content type='html'>If you've tried to figure out how the &lt;a href="http://download.oracle.com/javase/7/docs/api/java/util/concurrent/Phaser.html"&gt;Phaser&lt;/a&gt; works in &lt;a href="http://javaforu.blogspot.com/2011/07/java-7-good-bits.html"&gt;Java 7&lt;/a&gt; and haven't had much luck, then you are not alone. I too had some difficulty understanding what looks like a very esoteric concurrency construct. I asked around on the &lt;a href="http://concurrency.markmail.org/thread/ovidnpkxg265gaew"&gt;Concurrency-Interest&lt;/a&gt; forum. Folks there are very helpful and I almost understood it but was missing some details.&lt;br /&gt;&lt;br /&gt;So, I decided to get my hands dirty and play with this new toy. Phaser (as the JavaDocs say) is very much like a CountDownLatch or a CyclicBarrier but is better suited where:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Parallel operations need to proceed in lockstep&lt;/li&gt;&lt;li&gt;After every step, all parallel operations wait until all others have completed&lt;/li&gt;&lt;li&gt;When they do, all proceed to the next step and so on...&lt;/li&gt;&lt;/ol&gt;Sounds easy, but understanding the API was not easy for me. So, I had to write a simple program to see how it worked. Here it is:&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1119541.js?file=PhaserDemo.java"&gt;&lt;/script&gt;&lt;br /&gt;What the program does is:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a Phaser instance and set it up to expect 2 parties and the main thread/itself as a third party&lt;/li&gt;&lt;li&gt;Start 2 producer threads&lt;/li&gt;&lt;li&gt;Start a consumer thread&lt;/li&gt;&lt;li&gt;Unregister itself as the third party and let the 2 producers run in parallel - as 2 remaining parties&lt;/li&gt;&lt;li&gt;In the mean while the 2 producer threads pretend to do some work and move forward in phases&lt;/li&gt;&lt;ol&gt;&lt;li&gt;There are a total of 10 phases&lt;/li&gt;&lt;li&gt;Each producer writes it results into an array where the array position matches the phase number&lt;/li&gt;&lt;li&gt;I call this array per producer - a lane (like a highway)&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;While the producers are running, the consumer tries to catch up with them&lt;/li&gt;&lt;ol&gt;&lt;li&gt;It waits for the phase to complete and then reads the results of that phase&lt;/li&gt;&lt;li&gt; The consumer is slower and over time it trails behind the producers&lt;/li&gt;&lt;li&gt;When it comes back after pretending to do some processing the producers would've moved - sometimes 1 or even 2 phases ahead&lt;/li&gt;&lt;li&gt;The consumer now reads all the phases that have completed so far and then catches up&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;This consumer looks like it is reading "read-committed" transactions - doesn't it?&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;This picture (hopefully) explains more clearly, what is happening in the code:&lt;br /&gt;&lt;br /&gt;(Remember - the sequence diagram and log shown here are specific to my computer. On slower or faster machines you might see slightly different results - for the consumer, at least in the beginning phases.) &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fkweeMLwiRQ/TjduJkMbJ_I/AAAAAAAAArE/T_0DQxBJFRQ/s1600/phaser.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-fkweeMLwiRQ/TjduJkMbJ_I/AAAAAAAAArE/T_0DQxBJFRQ/s1600/phaser.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The log output:&lt;br /&gt;&lt;script src="https://gist.github.com/1119541.js?file=phaser.log"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Until next time!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-867084035571709364?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/867084035571709364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=867084035571709364' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/867084035571709364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/867084035571709364'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/08/java-7s-jucphaser-short-tutorial.html' title='Java 7&apos;s j.u.c.Phaser - a short tutorial'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-fkweeMLwiRQ/TjduJkMbJ_I/AAAAAAAAArE/T_0DQxBJFRQ/s72-c/phaser.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-1395871582851112591</id><published>2011-07-31T13:14:00.000-07:00</published><updated>2011-07-31T13:14:24.302-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>Java 7 (the good bits)</title><content type='html'>Finally, it's here! &lt;br /&gt;&lt;br /&gt;Like you, I've been waiting for this release for almost 3 years. Sometimes wondering what features would really go into version 7... sometimes wondering if there would even be a 7 (after the acquisition).&lt;br /&gt;&lt;br /&gt;Here's the smallest set of links that you'd need, to understand the new features. Of course there are many articles and blogs on the internet with more detailed information:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The most obvious - &lt;a href="http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html"&gt;release notes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://download.oracle.com/javase/7/docs/index.html"&gt;map of the Java SE&lt;/a&gt; world&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html"&gt;Performance &lt;/a&gt;enhancements&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/javase/7/docs/technotes/guides/concurrency/changes7.html"&gt;Concurrency &lt;/a&gt;changes - Phaser and Fork-Join&lt;/li&gt;&lt;ul&gt;&lt;li&gt;I would suggest using this &lt;a href="http://sourceforge.net/projects/javaconcurrenta/"&gt;animated framework&lt;/a&gt; to ease your understanding &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/javase/7/docs/technotes/guides/io/enhancements.html#javase7"&gt;NIO&lt;/a&gt; enhancements&lt;/li&gt;&lt;ul&gt;&lt;li&gt;More detailed NIO.2 &lt;a href="http://www.baptiste-wicht.com/2010/04/java-7-new-io-features-asynchronous-operations-multicasting-random-access-with-jsr-203-nio-2/"&gt;code &lt;/a&gt;examples&lt;/li&gt;&lt;li&gt;Slightly more detailed articles - &lt;a href="http://www.ibm.com/developerworks/java/library/j-nio2-1/index.html"&gt;#1&lt;/a&gt; and &lt;a href="http://www.ibm.com/developerworks/java/library/j-nio2-2/index.html"&gt;#2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/javase/7/docs/technotes/guides/vm/multiple-language-support.html"&gt;Multi language&lt;/a&gt; support&lt;/li&gt;&lt;li&gt;The rest of the features and fixes&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-1395871582851112591?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/1395871582851112591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=1395871582851112591' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1395871582851112591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1395871582851112591'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/07/java-7-good-bits.html' title='Java 7 (the good bits)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3107694630898965695</id><published>2011-07-28T18:38:00.000-07:00</published><updated>2011-07-28T22:10:52.166-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#books'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>Review of EJB 3.1 Cookbook</title><content type='html'>I just finished reading the &lt;a href="http://amzn.com/1849682380"&gt;EJB 3.1 Cookbook&lt;/a&gt; by Richard M. Reese. I haven't used EJBs in almost 5 years and since the JEE spec hadn't undergone any major (interesting) changes I had ignored it....until I heard about the newer and more simplified JEE 6/EJB 3 spec - the one that uses Java annotations. To me this attempt to simplify the standard seems like a very good thing in that the standards body finally started paying attention to the many accusations hurled (rightfully so) upon it my Spring, Ruby/Rails, Scala and other camps.&lt;br /&gt;&lt;br /&gt;So, I was curious to see what the new spec looked like and coincidentally I was given a chance to review this EJB 3.1 Cookbook by &lt;a href="http://www.packtpub.com/ejb-3-1-cookbook/book"&gt;Packt Publishing&lt;/a&gt;. The book being a cookbook/recipe book, it does not go into the details of why you should use JEE/EJB or how a beginner should get started and other such basics. It assumes that you are already familiar with programming, Java, JEE and specifically EJBs.&lt;br /&gt;&lt;br /&gt;I must say that the new spec looks lighter and so much simpler than it did a few years ago. &lt;br /&gt;&lt;br /&gt;The book is packed (no pun on the publisher's name) with small and useful recipes focusing on each new aspect of EJB 3.1:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Dependency Injection (CDI)&lt;/li&gt;&lt;li&gt;Stateful, stateless and singleton EJB annotations&lt;/li&gt;&lt;li&gt;Persistent EJB annotations&lt;/li&gt;&lt;li&gt;MDB annotations&lt;/li&gt;&lt;li&gt;Timers and schedulers&lt;/li&gt;&lt;li&gt;Concurrency&lt;/li&gt;&lt;li&gt;Startup sequence, named and dependent EJBs&lt;/li&gt;&lt;li&gt;Soap and restful web services&lt;/li&gt;&lt;li&gt;Security&lt;/li&gt;&lt;li&gt;Interceptors (AOP)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It is a good book to help you get up to speed on the latest spec. You might still, occasionally need to look up the detailed spec or Google or some other forum for specifics. Overall it is a good, almost vendor agnostic (Oracle Glassfish) and easily digestable read. It does lack some depth in a few places but then if you need more details, then you should read the actual spec.&lt;br /&gt;&lt;br /&gt;As an aside, I feel all publishers should reduce the prices of their ebook/PDF versions.&lt;br /&gt;&lt;br /&gt;Until next time,&lt;br /&gt;Ashwin.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3107694630898965695?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3107694630898965695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3107694630898965695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3107694630898965695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3107694630898965695'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/07/review-of-ejb-31-cookbook.html' title='Review of EJB 3.1 Cookbook'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6101361664187134677</id><published>2011-06-29T19:14:00.001-07:00</published><updated>2011-06-29T19:14:52.880-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>60F and raining... somebody forgot to switch on Summer.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6101361664187134677?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6101361664187134677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6101361664187134677' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6101361664187134677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6101361664187134677'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/06/60f-and-raining.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3059816778910187986</id><published>2011-06-25T12:17:00.000-07:00</published><updated>2011-06-27T11:01:21.920-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><title type='text'>The Five W's (and H) approach</title><content type='html'>A few days ago, I was trying to explain some technical concepts to a friend. After a bit of explaining I tried listing out reasons, places and times where those concepts would be applicable. I still thought that I had left out something. I then spent some time searching online for ways to -&amp;nbsp;learn systematically and teach correctly by at least outlining the essentials of the problem and encouraging the learner to follow up in his/her own time.&lt;br /&gt;&lt;br /&gt;Did I find anything? Of course I did. In fact I discovered too much information but found only some to be simple and interesting. My favorite is what you might think is obvious - &lt;a href="http://en.wikipedia.org/wiki/Five_Ws"&gt;The Five W's and an H&lt;/a&gt; approach.&lt;br /&gt;&lt;br /&gt;Apart from it being obvious, the Five W's helps you to break down the problem into:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When&lt;/li&gt;&lt;li&gt;Where&lt;/li&gt;&lt;li&gt;What&lt;/li&gt;&lt;li&gt;Who&lt;/li&gt;&lt;li&gt;Why&lt;/li&gt;&lt;li&gt;How&lt;/li&gt;&lt;/ul&gt;The easiest way to teach this to kids is to use each finger on one hand to stand for a "W". The H is extra.&lt;br /&gt;&lt;br /&gt;Now, why is this simple technique relevant?&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; It is:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Simple&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Easy to remember &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Easy to explain&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; It serves as a starter guide to:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Formulate the right questions &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Break down the problem&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cover/analyze all aspects of the problem - like why &amp;amp; why not, what &amp;amp; what not&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; It also helps us:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Remember better by understanding, instead of memorizing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Identify the problem by looking for signs (5 Ws)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; It works quite nicely as:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A way to exchange ideas (5 Ws = 5 aspects)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A way to encourage people (even kids) to think deeper- (&lt;a href="http://en.wikipedia.org/wiki/Systems_thinking"&gt;Systems thinking&lt;/a&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; By supplying the first 5 questions when stumped&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Progress to &lt;a href="http://en.wikipedia.org/wiki/Category:Problem_solving"&gt;other approaches&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A template to share and disseminate knowledge (5 Ws = 5 steps)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Like Design Patterns and Anti-patterns for software design&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Simple reproducible steps for QA/Support/Services/junior members&amp;nbsp; etc.&lt;br /&gt;&lt;br /&gt;Here's a simple pictorial way to help you get started. I drew it for myself initially. It is built like a form where you can fill in the blanks, on the right hand side. I encourage you to print it out and use it in meetings too or even to teach your kids.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-G0DwKZApzpY/TgYxKHjl6UI/AAAAAAAAAqo/O8EMQ9ZVcuw/s1600/5ws_h_aj.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="456" src="http://1.bp.blogspot.com/-G0DwKZApzpY/TgYxKHjl6UI/AAAAAAAAAqo/O8EMQ9ZVcuw/s640/5ws_h_aj.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The 5 W's and H extended&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3059816778910187986?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3059816778910187986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3059816778910187986' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3059816778910187986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3059816778910187986'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/06/five-ws-and-h-approach.html' title='The Five W&apos;s (and H) approach'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-G0DwKZApzpY/TgYxKHjl6UI/AAAAAAAAAqo/O8EMQ9ZVcuw/s72-c/5ws_h_aj.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-2284987501922626557</id><published>2011-06-18T11:23:00.000-07:00</published><updated>2011-06-20T20:56:52.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#system'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Sharding, distributed object graphs and other reading material</title><content type='html'>[Minor update: June 20, 2011]&lt;br /&gt; &lt;br /&gt;Some interesting notes on sharding/data partitioning using SQL:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.jurriaanpersyn.com/archives/2009/02/12/database-sharding-at-netlog-with-mysql-and-php/" target="_blank"&gt;Database &lt;wbr&gt;&lt;/wbr&gt;sharding at netlog with MySql and PHP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mysqlperformanceblog.com/2011/05/14/distributed-set-processing-with-shard-query/%20"&gt;Distributed Set Processing with Shard-Query&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java-persistence-performance.blogspot.com/2011/05/data-partitioning-scaling-database.html" target="_blank"&gt;Data partitioning - scaling &lt;wbr&gt;&lt;/wbr&gt;database&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Some previously described &lt;a href="http://javaforu.blogspot.com/2011/02/going-native-yes-to-sql-and-other.html"&gt;here&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;But, these are more interesting - notes on designing a complex, distributed, object graph:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.benstopford.com/2011/01/27/beyond-the-data-grid-building-a-normalised-data-store-using-coherence" target="_blank"&gt;Beyond the Data Grid: Coherence, Normalisation, Joins and Linear Scalability&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sna-projects.com/sna/images/avatara-sam-sig.ppt" target="_blank"&gt;Avatara - LinkedIn's home grown OLAP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Some previously described &lt;a href="http://javaforu.blogspot.com/2009/07/partitioning-data-locality-and-some.html"&gt;here&lt;/a&gt;&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;I came across &lt;a href="http://code.google.com/p/activejdbc/"&gt;ActiveJDBC&lt;/a&gt; (yeah yeah.. I know what you are thinking.. another ORM) but this is simple and only aims to solve the simple (80%) cases. Very unobtrusive.&lt;br /&gt;&lt;br /&gt;Some IO related system internals:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Interesting &lt;a href="http://useless-factor.blogspot.com/2011/05/why-not-mmap.html"&gt;article about mmap and Linux&lt;/a&gt; O_DIRECT&lt;a href="http://useless-factor.blogspot.com/2011/05/why-not-mmap.html" target="_blank"&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://hoytech.com/vmtouch/" target="_blank"&gt;VMtouch - finding how many pages of your file are cached&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;A detour:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What goes on &lt;a href="http://financialprogrammers.com/blog1/it-careers-in-investment-banks/"&gt;behind the (IT) scenes&lt;/a&gt; in an Investment bank?&lt;/li&gt;&lt;li&gt;An interesting talk on &lt;a href="http://vimeo.com/19122939"&gt;Re-thinking IT&lt;/a&gt; by John Seddon a Systems thinker&lt;/li&gt;&lt;/ul&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-2284987501922626557?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/2284987501922626557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=2284987501922626557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2284987501922626557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2284987501922626557'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/06/sharding-distributed-object-graphs-and.html' title='Sharding, distributed object graphs and other reading material'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6701467531041066324</id><published>2011-05-19T21:35:00.000-07:00</published><updated>2011-05-19T21:35:39.185-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><title type='text'>Some tools you should not leave home without</title><content type='html'>In no specific order:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;After years of searching for hierarchical to-do list managers, frustrating outline and OPML editors, buggy project trackers I found this - &lt;a href="http://www.codeproject.com/KB/applications/todolist2.aspx"&gt;ToDoList&lt;/a&gt;. It's clean, free (as in speech) and surprisingly, has really nice features&lt;/li&gt;&lt;li&gt;yWork's brilliant diagram editor - &lt;a href="http://live.yworks.com/graphity/"&gt;Graphity&lt;/a&gt; or it's thick client cousin - &lt;a href="http://www.yworks.com/en/products_yed_about.html"&gt;yEd&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.xmind.net/"&gt;XMind&lt;/a&gt; for mind mapping and brainstorming&lt;/li&gt;&lt;li&gt;A decent screen capture and annotation tool - &lt;a href="http://www.screenpresso.com/"&gt;Screenpresso&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://notepad-plus-plus.org/"&gt;Notepad++&lt;/a&gt;, naturally&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6701467531041066324?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6701467531041066324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6701467531041066324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6701467531041066324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6701467531041066324'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/05/some-tools-you-should-not-leave-home.html' title='Some tools you should not leave home without'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7715597975372917561</id><published>2011-05-08T12:18:00.000-07:00</published><updated>2011-05-08T12:18:34.320-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking up Mission Peak</title><content type='html'>The best time of the year to go there - Spring. Preferably, to watch the sun rise or sun set.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/5697438531/" title="View of Bay Area from Mission Peak - yes that's where we started by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="View of Bay Area from Mission Peak - yes that's where we started" height="375" src="http://farm6.static.flickr.com/5067/5697438531_67013f3229.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/5697427737/" title="Mission Peak - view of our Bay Area by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Mission Peak - view of our Bay Area" height="375" src="http://farm6.static.flickr.com/5307/5697427737_5292ce3be8.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/5697998260/" title="Mission Peak by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Mission Peak" height="375" src="http://farm6.static.flickr.com/5269/5697998260_ae28f62d1c.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/5697420429/" title="Finally! At the peak after a 2 hr uphill hike by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Finally! At the peak after a 2 hr uphill hike" height="375" src="http://farm6.static.flickr.com/5226/5697420429_ffd628b53f.jpg" width="500" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7715597975372917561?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7715597975372917561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7715597975372917561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7715597975372917561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7715597975372917561'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/05/hiking-up-mission-peak.html' title='Hiking up Mission Peak'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm6.static.flickr.com/5067/5697438531_67013f3229_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5144178698236404749</id><published>2011-04-28T11:01:00.000-07:00</published><updated>2011-06-18T11:32:30.188-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#system'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>DSLs, OODBs, system internals and some Java stuff</title><content type='html'>&lt;br /&gt;DSLs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Groovy is perhaps the best language that lends itself for this purpose. Here's a nice (longish) introduction - &lt;a href="http://www.infoq.com/presentations/Groovy-DSLs"&gt;Groovy.DSLs (from: beginner, to: expert)&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;A simpler pseudo DSL based on regex - &lt;a href="http://jbehave.org/"&gt;Jbehave&lt;/a&gt;, primarily used for Behaviour-driven development in Java&lt;/li&gt;&lt;/ul&gt;A good article by (The) Martin Fowler on &lt;a href="http://martinfowler.com/articles/nonDeterminism.html"&gt;how to develop quality code - for beginners&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A few good articles I came across recently on operating systems, disks, networking:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://scale-out-blog.blogspot.com/2011/01/virtual-ip-addresses-and-their.html"&gt;http://scale-out-blog.blogspot.com/2011/01/virtual-ip-addresses-and-their.html&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html"&gt;http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://duartes.org/gustavo/blog/category/internals/"&gt;http://duartes.org/gustavo/blog/category/internals/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://th30z.blogspot.com/2011/02/linux-cgroups-memory-threshold-notifier.html"&gt;http://th30z.blogspot.com/2011/02/linux-cgroups-memory-threshold-notifier.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;OODBs - NoSql's grandpa and the forgotten cousin of SQL. Haven't even heard of OODBs? Here's a &lt;a href="http://danweinreb.org/blog/object-oriented-database-management-systems-succeeded"&gt;4 year old article&lt;/a&gt; but still worth reading.&lt;br /&gt;&lt;br /&gt;Java tidbits:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; NIO ByteBuffer related memory de-allocation problems&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/2129762/how-do-i-fix-java-lang-outofmemoryerror-at-sun-misc-unsafe-allocatememorynative/2791783#2791783%20"&gt;The problem&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Also a documented &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6296278"&gt;Sun/Oracle bug&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Solution 1: &lt;a href="https://github.com/toddlipcon/hadoop-lzo/commit/91cf4d921f1f247bf764f3d1ef5df831ca8f465f"&gt;https://github.com/toddlipcon/hadoop-lzo/commit/91cf4d921f1f247bf764f3d1ef5df831ca8f465f&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Solution 2 also done by FileChannelImpl.unmap(xx) - &lt;a href="http://www.docjar.com/html/api/sun/nio/ch/FileChannelImpl.java.html"&gt;line 724&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;ObjectOutputStream's ClassLoader &lt;a href="http://blogs.sun.com/adventures/entry/desrializing_objects_custom_class_loaders"&gt;limitation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The many &lt;a href="http://stackoverflow.com/questions/5574241/interesting-uses-of-sun-misc-unsafe"&gt;uses of Sun/Oracle Java's Unsafe API&lt;/a&gt; and a clean way to &lt;a href="http://jira.codehaus.org/browse/XSTR-14?focusedCommentId=19204&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_19204"&gt;get hold of it&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5144178698236404749?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5144178698236404749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5144178698236404749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5144178698236404749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5144178698236404749'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/04/dsls-oodbs-system-internals-and-some.html' title='DSLs, OODBs, system internals and some Java stuff'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4046891466808573111</id><published>2011-04-20T21:28:00.001-07:00</published><updated>2011-04-20T21:28:55.736-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>You know you are growing old(er) when you catch yourself listening to the news more often than music, while driving.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4046891466808573111?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4046891466808573111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4046891466808573111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4046891466808573111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4046891466808573111'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/04/you-know-you-are-growing-older-when-you.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-618310554874236648</id><published>2011-04-07T22:20:00.000-07:00</published><updated>2011-07-05T20:06:08.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>The little gem that is BusyBox (for Windows)</title><content type='html'>As a Windows user (no shame) I have, for years searched for a simple GNU-like toolkit - grep, awk, tail and other such goodies enjoyed by Linux users. Yes, there's Cygwin but it's a beast - too big and a pain to install. Sometimes, I've even resorted to starting a Linux VMWare image just to run a simple awk script to munge some log files.&lt;br /&gt;&lt;br /&gt;But today...today I found &lt;a href="http://www.busybox.net/"&gt;BusyBox&lt;/a&gt; and there's a compact 600KB &lt;a href="https://github.com/pclouds/busybox-w32"&gt;BusyBox exe for Windows&lt;/a&gt;! What does it have? Well.. what does it not have?! It has all the essentials:&lt;br /&gt;&lt;pre&gt;[, [[, ar, ash, awk, base64, basename, bash, bbconfig, bunzip2, bzcat,&lt;br /&gt;bzip2, cal, cat, catv, cksum, cmp, comm, cp, cpio, cut, date, dc, dd,&lt;br /&gt;diff, dirname, dos2unix, echo, ed, egrep, env, expand, expr, false,&lt;br /&gt;fgrep, find, fold, getopt, grep, gunzip, gzip, hd, head, hexdump, kill,&lt;br /&gt;killall, length, ls, lzcat, lzma, lzop, lzopcat, md5sum, mkdir, mv, od,&lt;br /&gt;pgrep, pidof, printenv, printf, ps, pwd, rm, rmdir, rpm2cpio, sed, seq,&lt;br /&gt;sh, sha1sum, sha256sum, sha512sum, sleep, sort, split, strings, sum,&lt;br /&gt;tac, tail, tar, tee, test, touch, tr, true, uncompress, unexpand, uniq,&lt;br /&gt;unix2dos, unlzma, unlzop, unxz, unzip, usleep, uudecode, uuencode, vi,&lt;br /&gt;wc, wget, which, whoami, xargs, xz, xzcat, yes, zcat&lt;br /&gt;&lt;/pre&gt;This is where I'd use it the most - to compress and summarize JVM thread dumps for quick analysis. It's based on &lt;a href="http://blog.tsunanet.net/2010/08/jpmp-javas-poor-mans-profiler.html"&gt;JPMP&lt;/a&gt;, but here's &lt;a href="https://gist.github.com/851961"&gt;my version&lt;/a&gt; of it. First, download &lt;a href="https://github.com/pclouds/busybox-w32"&gt;BusyBox for Windows&lt;/a&gt; and then use the simple script below to munge your JVM thread dump.&lt;br /&gt;&lt;br /&gt;This is the first part of the script:&lt;br /&gt;&lt;script src="https://gist.github.com/851961.js?file=3%29%20jpmp.bat"&gt;&lt;/script&gt;This is the awk pattern that is used by the script above.&lt;br /&gt;&lt;script src="https://gist.github.com/851961.js?file=4%29%20jpmp_strace.awk"&gt;&lt;/script&gt;All you have to do now is run it against your thread dump file:&lt;br /&gt;&lt;pre&gt;jpmp.bat ..\jstack.out &amp;gt; ..\jstack.out.log&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And it converts a huge file like this...&lt;br /&gt;&lt;pre&gt;2011-04-07 20:44:06&lt;br /&gt;Full thread dump Java HotSpot(TM) 64-Bit Server VM (16.2-b04 mixed mode):&lt;br /&gt;&lt;br /&gt;"TimerQueue" daemon prio=6 tid=0x000000004ec33000 nid=0x1268 in Object.wait() [0x000000004a3cf000]&lt;br /&gt;   java.lang.Thread.State: WAITING (on object monitor)&lt;br /&gt; at java.lang.Object.wait(Native Method)&lt;br /&gt; - waiting on &amp;lt;0x0000000034004608&amp;gt; (a javax.swing.TimerQueue)&lt;br /&gt; at javax.swing.TimerQueue.run(TimerQueue.java:232)&lt;br /&gt; - locked &amp;lt;0x0000000034004608&amp;gt; (a javax.swing.TimerQueue)&lt;br /&gt; at java.lang.Thread.run(Thread.java:619)&lt;br /&gt;&lt;br /&gt;"D3D Screen Updater" daemon prio=8 tid=0x000000004af1e000 nid=0x186c in Object.wait() [0x000000004f40f000]&lt;br /&gt;   java.lang.Thread.State: TIMED_WAITING (on object monitor)&lt;br /&gt; at java.lang.Object.wait(Native Method)&lt;br /&gt; - waiting on &amp;lt;0x0000000034e16ba8&amp;gt; (a java.lang.Object)&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;"Reference Handler" daemon prio=10 tid=0x0000000000823800 nid=0x18e4 in Object.wait() [0x000000004940f000]&lt;br /&gt;   java.lang.Thread.State: WAITING (on object monitor)&lt;br /&gt; at java.lang.Object.wait(Native Method)&lt;br /&gt; - waiting on &amp;lt;0x0000000034dda018&amp;gt; (a java.lang.ref.Reference$Lock)&lt;br /&gt; at java.lang.Object.wait(Object.java:485)&lt;br /&gt; at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)&lt;br /&gt; - locked &amp;lt;0x0000000034dda018&amp;gt; (a java.lang.ref.Reference$Lock)&lt;br /&gt;&lt;br /&gt;"VM Thread" prio=10 tid=0x0000000000820000 nid=0x14c4 runnable &lt;br /&gt;&lt;br /&gt;"GC task thread#0 (ParallelGC)" prio=6 tid=0x0000000000777800 nid=0x173c runnable &lt;br /&gt;&lt;br /&gt;"GC task thread#1 (ParallelGC)" prio=6 tid=0x0000000000779800 nid=0x4b8 runnable &lt;br /&gt;&lt;br /&gt;"GC task thread#2 (ParallelGC)" prio=6 tid=0x000000000077b000 nid=0x15d0 runnable &lt;br /&gt;&lt;br /&gt;"GC task thread#3 (ParallelGC)" prio=6 tid=0x000000000077c800 nid=0x199c runnable &lt;br /&gt;&lt;br /&gt;"VM Periodic Task Thread" prio=10 tid=0x0000000049580800 nid=0x1984 waiting on condition &lt;br /&gt;&lt;br /&gt;JNI global references: 1355&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Into a tidy summary like this. Very useful if you have thread dumps from 20 servers taken every 30 seconds.&lt;br /&gt;All this without leaving the comfort of your Windows system!&lt;br /&gt;&lt;pre&gt;2 j.lang.Object.wait,j.io.PipedInputStream.read,j.io.PipedInputStream.read,sun.nio.cs.StreamDecoder.readBytes,sun.nio.cs.StreamDecoder.implRead,sun.nio.cs.StreamDecoder.read,j.io.InputStreamReader.read,j.io.BufferedReader.fill,j.io.BufferedReader.readLine,j.io.BufferedReader.readLine,sun.tools.jconsole.OutputViewer$PipeListener.run&lt;br /&gt;1 sun.awt.windows.WToolkit.eventLoop,sun.awt.windows.WToolkit.run,j.lang.Thread.run&lt;br /&gt;1 j.lang.Object.wait,sun.java2d.d3d.D3DScreenUpdateManager.run,j.lang.Thread.run&lt;br /&gt;1 j.lang.Object.wait,jx.swing.TimerQueue.run,j.lang.Thread.run&lt;br /&gt;1 j.lang.Object.wait,j.lang.ref.ReferenceQueue.remove,j.lang.ref.ReferenceQueue.remove,sun.java2d.Disposer.run,j.lang.Thread.run&lt;br /&gt;1 j.lang.Object.wait,j.lang.ref.ReferenceQueue.remove,j.lang.ref.ReferenceQueue.remove,j.lang.ref.Finalizer$FinalizerThread.run&lt;br /&gt;1 j.lang.Object.wait,j.lang.Object.wait,sun.awt.AWTAutoShutdown.run,j.lang.Thread.run&lt;br /&gt;1 j.lang.Object.wait,j.lang.Object.wait,j.lang.ref.Reference$ReferenceHandler.run&lt;br /&gt;1 j.lang.Object.wait,j.lang.Object.wait,j.awt.EventQueue.getNextEvent,j.awt.EventDispatchThread.pumpOneEventForFilters,j.awt.EventDispatchThread.pumpEventsForFilter,j.awt.EventDispatchThread.pumpEventsForHierarchy,j.awt.EventDispatchThread.pumpEvents,j.awt.EventDispatchThread.pumpEvents,j.awt.EventDispatchThread.run&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-618310554874236648?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/618310554874236648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=618310554874236648' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/618310554874236648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/618310554874236648'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/04/little-gem-that-is-busybox-for-windows.html' title='The little gem that is BusyBox (for Windows)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-2787527159033027146</id><published>2011-03-23T20:35:00.000-07:00</published><updated>2011-03-23T20:35:52.884-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#books'/><title type='text'>Dabawalas and other books I read recently</title><content type='html'>Some interesting books I read in the past few months. Needless to say they were mostly, all Sci-Fi: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.librarything.com/work/49215/book/67148564"&gt;The Engines of God&lt;/a&gt; by Jack McDevitt. Not good at all&lt;/li&gt;&lt;li&gt; &lt;a href="http://www.librarything.com/work/23264/book/66866521"&gt;Iron Sunrise (Singularity)&lt;/a&gt; by Charles Stross. Average read&lt;/li&gt;&lt;li&gt; &lt;a href="http://www.librarything.com/work/49794/book/68839149"&gt;The Collected Stories of Vernor Vinge&lt;/a&gt; by &lt;a href="http://www.librarything.com/author/vingevernor"&gt;Vernor Vinge&lt;/a&gt;. Not too bad. I was expecting something better&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.librarything.com/work/27590/book/71484681"&gt;A World Out Of Time&lt;/a&gt; by Larry Niven. Starts off quite well for somthing that was written 35 years ago. Predictable ending&lt;/li&gt;&lt;li&gt; &lt;a href="http://www.librarything.com/work/4884081/book/71484748"&gt;Dabawalas: Lessons for Building lasting success based on values&lt;/a&gt; by Shrinivas Pandit. A very interesting distraction from my regular reading. An inspiring story about Mumbai, India's lunch carriers. An astonishing &lt;a href="http://en.wikipedia.org/wiki/Dabbawala#Economic_analysis"&gt;Six Sigma&lt;/a&gt; error rate from a loosely organized band of mostly rural workers!&lt;/li&gt;&lt;/ul&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-2787527159033027146?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/2787527159033027146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=2787527159033027146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2787527159033027146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2787527159033027146'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/03/dabawalas-and-other-books-i-read.html' title='Dabawalas and other books I read recently'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-2401671271943176361</id><published>2011-03-23T19:46:00.000-07:00</published><updated>2011-03-23T20:13:17.255-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'>What's missing in Google Search</title><content type='html'>Let's face it, most of the world relies on Google Search to find information on the web. I do. In this day and age of Facebook, Twitter, LinkedIn, social bookmarking sites and other "social applications", Google Search is still years behind.&lt;br /&gt;&lt;br /&gt;Some basic features that are sorely missing from their flagship product:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Linking to a search result. Even Google Maps has &lt;a href="http://goo.gl/maps/mpPe"&gt;this feature&lt;/a&gt;, but Search does not&lt;/li&gt;&lt;li&gt;Creating a bundle of links like &lt;a href="http://bitly.com/"&gt;Bitly&lt;/a&gt; from some selected search results&lt;/li&gt;&lt;/ol&gt;Why? Because it makes it easier to share research with colleagues and friends. It also helps to bookmark only interesting links when you are looking for some information and not have to wade through tons of results.&lt;br /&gt;&lt;br /&gt;I've suggested this feature to Google a couple of times, but it seems to have fallen on deaf ears. I hope at least the Bing team is listening.&lt;br /&gt;&lt;br /&gt;This is what I'd really love. To start with, at least:&lt;br /&gt;(If you were wondering, I used &lt;a href="http://balsamiq.com/"&gt;Balsamiq&lt;/a&gt; to create the mock-up) &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8ZjgEQ40ptU/TYqtLwdlsuI/AAAAAAAAAo8/2twCCY3Buxw/s1600/google-social-search.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="486" src="http://1.bp.blogspot.com/-8ZjgEQ40ptU/TYqtLwdlsuI/AAAAAAAAAo8/2twCCY3Buxw/s640/google-social-search.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-2401671271943176361?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/2401671271943176361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=2401671271943176361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2401671271943176361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2401671271943176361'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/03/whats-missing-in-google-search.html' title='What&apos;s missing in Google Search'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-8ZjgEQ40ptU/TYqtLwdlsuI/AAAAAAAAAo8/2twCCY3Buxw/s72-c/google-social-search.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-8503791972622204615</id><published>2011-03-21T18:39:00.000-07:00</published><updated>2011-03-21T18:39:01.857-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Entropy is the greatest enemy of life, ideas, memory and hope.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-8503791972622204615?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/8503791972622204615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=8503791972622204615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8503791972622204615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8503791972622204615'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/03/entropy-is-greatest-enemy-of-life-ideas.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3621044476459618089</id><published>2011-02-17T17:28:00.001-08:00</published><updated>2011-02-17T17:28:54.093-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Monterey bay</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/ashwinjay/5455030454/" title="photo sharing"&gt;&lt;img src="http://farm6.static.flickr.com/5100/5455030454_ca4a708690.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/5455030454/"&gt;Monterey bay&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ashwinjay/"&gt;ashwin.jayaprakash&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3621044476459618089?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3621044476459618089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3621044476459618089' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3621044476459618089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3621044476459618089'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/02/monterey-bay_17.html' title='Monterey bay'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm6.static.flickr.com/5100/5455030454_ca4a708690_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5616164559972852020</id><published>2011-02-17T17:27:00.001-08:00</published><updated>2011-02-17T17:28:54.094-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Monterey bay sunrise</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/ashwinjay/5454417609/" title="photo sharing"&gt;&lt;img src="http://farm6.static.flickr.com/5138/5454417609_c14ecd3a94.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/5454417609/"&gt;Monterey bay sunrise&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ashwinjay/"&gt;ashwin.jayaprakash&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5616164559972852020?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5616164559972852020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5616164559972852020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5616164559972852020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5616164559972852020'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/02/monterey-bay-sunrise.html' title='Monterey bay sunrise'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm6.static.flickr.com/5138/5454417609_c14ecd3a94_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5634341344264607551</id><published>2011-02-17T17:26:00.001-08:00</published><updated>2011-02-17T17:28:54.094-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Monterey bay</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/ashwinjay/5454416125/" title="photo sharing"&gt;&lt;img src="http://farm6.static.flickr.com/5097/5454416125_7bbb0d9c39.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/5454416125/"&gt;Monterey bay&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ashwinjay/"&gt;ashwin.jayaprakash&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5634341344264607551?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5634341344264607551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5634341344264607551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5634341344264607551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5634341344264607551'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/02/monterey-bay.html' title='Monterey bay'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm6.static.flickr.com/5097/5454416125_7bbb0d9c39_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7493014370375429212</id><published>2011-02-02T05:47:00.000-08:00</published><updated>2011-06-18T11:32:30.333-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Going native, yes to SQL and other stories</title><content type='html'>Some interesting performance related articles and links I've come across in the past few weeks:&lt;br /&gt;&lt;br /&gt;A useful &lt;a href="https://groups.google.com/d/topic/project-voldemort/ATdGnpHm8H8/discussion"&gt;thread&lt;/a&gt; discussing Voldemort's performance compared to Cassandra. Even more interesting to note is that LinkedIn runs 18G heaps for Voldemort+BDB.&lt;br /&gt;&lt;br /&gt;HBase guys doing some &lt;a href="https://issues.apache.org/jira/browse/HBASE-3455"&gt;work around&lt;/a&gt; the JVM GC, reminiscent of arenas and slab allocators.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Native code:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://jfs.des.udc.es/"&gt;Java Fast Sockets&lt;/a&gt; - a research project around alternative, high performance socket implementations for Java and its spin-off company. The company &lt;a href="http://torusware.com/"&gt;site&lt;/a&gt; still looks like it's in stealth mode. A downloadable version would've been nice. A "free" version would've been nicer.&lt;br /&gt;&lt;br /&gt;If you thought Java Classloading was &lt;a href="http://www.zeroturnaround.com/jrebel/"&gt;tricky&lt;/a&gt; and JVM startup times are better these days - look at what the Firefox and Chrome guys have been up to - bypassing normal DLL loading and pre-fetching pages from disk: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=627591"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=627591&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/xre/nsWindowsWMain.cpp"&gt;http://mxr.mozilla.org/mozilla-central/source/toolkit/xre/nsWindowsWMain.cpp&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=554421"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=554421&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://infrequently.org/2011/01/on-the-care-and-feeding-of-spinning-disks/"&gt;http://infrequently.org/2011/01/on-the-care-and-feeding-of-spinning-disks/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://src.chromium.org/svn/trunk/src/chrome/app/client_util.cc"&gt;http://src.chromium.org/svn/trunk/src/chrome/app/client_util.cc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://src.chromium.org/viewvc/chrome/trunk/src/base/file_util_win.cc?view=markup"&gt;http://src.chromium.org/viewvc/chrome/trunk/src/base/file_util_win.cc?view=markup&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Another interesting read about &lt;a href="http://eli.thegreenplace.net/2011/01/23/how-debuggers-work-part-1/"&gt;how debuggers&lt;/a&gt; work internally.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Yes to SQL:&lt;/b&gt;&lt;br /&gt;Some libraries and notes for SQL sharding and replication:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://symmetricds.codehaus.org/"&gt;Symmetric DS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/apps/mediawiki/tungsten/index.php?title=Introduction_to_the_Tungsten_SQL_Router"&gt;Tungsten SQL Router&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/shard-query/"&gt;shard-query&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://swanhart.livejournal.com/134177.html"&gt;8 substitution rules&lt;/a&gt; for running SQL in parallel &lt;/li&gt;&lt;/ul&gt;Some interesting SQL tips and tools:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Reverse engineer &lt;a href="http://revj.sourceforge.net/"&gt;snowflake join diagram&lt;/a&gt; generator&lt;/li&gt;&lt;li&gt;PostGre explain plan "&lt;a href="http://www.depesz.com/index.php/2010/12/18/two-years-of-explain-depesz-com/#more-1931"&gt;explainer&lt;/a&gt;"&lt;/li&gt;&lt;/ul&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7493014370375429212?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7493014370375429212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7493014370375429212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7493014370375429212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7493014370375429212'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/02/going-native-yes-to-sql-and-other.html' title='Going native, yes to SQL and other stories'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-400114390441409157</id><published>2011-01-25T21:31:00.000-08:00</published><updated>2011-01-25T21:31:26.538-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Ray Mears</title><content type='html'>If you've never heard of &lt;a href="http://en.wikipedia.org/wiki/Ray_Mears"&gt;Ray Mears&lt;/a&gt; and his multiple BBC series on bushcraft, woodlands survival and generally enjoying time out in the woods, then it's time you watched &lt;a href="http://video.yandex.ru/users/barttripod/collection/4/?p=0"&gt;some&lt;/a&gt; of his &lt;a href="http://www.google.com/search?q=ray+mears"&gt;videos&lt;/a&gt;. This is unlike other "TV presenter vs nature" shows you commonly see on TV. Ray Mears shows how you to work "with" nature in his relaxed and pleasant presentation style. I would place Ray Mears in the same class as top BBC naturalists/historians/travelers as Michael Wood, David Attenborough, Michael Palin to name a few.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-400114390441409157?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/400114390441409157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=400114390441409157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/400114390441409157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/400114390441409157'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/01/ray-mears.html' title='Ray Mears'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6622837280928253710</id><published>2011-01-21T23:12:00.000-08:00</published><updated>2011-04-07T22:18:03.384-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>Shades Of Gray (Another fix for online reading)</title><content type='html'>(Mis)Quoting lines from Billy Joel's song "&lt;a href="http://www.amazon.com/dp/B00136PYDI/"&gt;Shades of grey&lt;/a&gt;":&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Shades of grey wherever I go&lt;br /&gt;.. .&lt;br /&gt;Black and white is &lt;b&gt;[&lt;i&gt;not&lt;/i&gt;]&lt;/b&gt; how it should be&lt;br /&gt;But shades of grey are the colors I see&lt;/blockquote&gt;It has occurred to me (after being disappointed with the tiny 6" screen of the Kindle) that we spend a lot of time (those of us who do) on the computer staring at bright and mostly white computer screens. We've become accustomed to the brightness of the white backgrounds. I find it quite stressful to read against a white background for long hours.&lt;br /&gt;&lt;br /&gt;After spending a few hours searching (alas) online, I found some tricks that have made my computer time even &lt;a href="http://javaforu.blogspot.com/2011/01/making-your-online-reading-even-more.html"&gt;more pleasant&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1) Fix for PDFs - a poor man's ebook reader:&lt;/b&gt;&lt;br /&gt;Change the background of all PDFs you read by changing your preferences in Adobe Acrobat Reader. Go to the toolbar "Edit &amp;gt; Preferences &amp;gt; Accessibility &amp;gt; Document color options". Check the box that says "Replace Document Colors" and choose a gray background as shown in the screenshot.&lt;br /&gt;&lt;br /&gt;Note the background color - 192-192-192, the magic combination.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-i8jW7I2gyg/TTp-62YK3tI/AAAAAAAAAnE/eqszSC8fBr8/s1600/1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="357" src="http://1.bp.blogspot.com/_-i8jW7I2gyg/TTp-62YK3tI/AAAAAAAAAnE/eqszSC8fBr8/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And this is what it will look like. You can view it in full screen mode and almost convince yourself that you are reading an ebook.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-i8jW7I2gyg/TTsIYajqobI/AAAAAAAAAnQ/IVMfTy_uo9E/s1600/2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="390" src="http://2.bp.blogspot.com/_-i8jW7I2gyg/TTsIYajqobI/AAAAAAAAAnQ/IVMfTy_uo9E/s400/2.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2) Fix for IntelliJ:&lt;/b&gt;&lt;br /&gt;Something similar can be done for IntelliJ. Import this &lt;a href="http://www.box.net/shared/ybaqvxaarm"&gt;JAR file&lt;/a&gt; with color settings for IntelliJ 10 using "File &amp;gt; Import settings".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-i8jW7I2gyg/TTqCLU4e2DI/AAAAAAAAAnM/cSlqcmk2Ei8/s1600/3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_-i8jW7I2gyg/TTqCLU4e2DI/AAAAAAAAAnM/cSlqcmk2Ei8/s400/3.png" width="370" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Who said "gray areas" are bad? Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6622837280928253710?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6622837280928253710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6622837280928253710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6622837280928253710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6622837280928253710'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/01/shades-of-gray-another-fix-for-online.html' title='Shades Of Gray (Another fix for online reading)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-i8jW7I2gyg/TTp-62YK3tI/AAAAAAAAAnE/eqszSC8fBr8/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-8732484727150568129</id><published>2011-01-19T19:58:00.000-08:00</published><updated>2011-04-07T22:18:03.385-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><title type='text'>Making your online reading even more pleasant</title><content type='html'>What better way to read a whole bunch of articles that you've been saving for later than to "print" it all and read?&lt;br /&gt;&lt;br /&gt;I'm a heavy user of &lt;a href="http://javaforu.blogspot.com/2010/03/make-your-online-reading-more-pleasant.html"&gt;Readable&lt;/a&gt; and &lt;a href="javascript:(function(){readConvertLinksToFootnotes=false;readStyle='style-apertura';readSize='size-large';readMargin='margin-narrow';_readability_script=document.createElement('script');_readability_script.type='text/javascript';_readability_script.src='http://lab.arc90.com/experiments/readability/js/readability.js?x='+(Math.random());document.documentElement.appendChild(_readability_script);_readability_css=document.createElement('link');_readability_css.rel='stylesheet';_readability_css.href='http://lab.arc90.com/experiments/readability/css/readability.css';_readability_css.type='text/css';_readability_css.media='all';document.documentElement.appendChild(_readability_css);_readability_print_css=document.createElement('link');_readability_print_css.rel='stylesheet';_readability_print_css.href='http://lab.arc90.com/experiments/readability/css/readability-print.css';_readability_print_css.media='print';_readability_print_css.type='text/css';document.getElementsByTagName('head')[0].appendChild(_readability_print_css);})();"&gt;Readability&lt;/a&gt;, but nothing beats printing everything into a PDF, logging off and then reading it comfortably on your ebook reader (if you have one, which I don't. Yet). Well..paper if you really have to.&lt;br /&gt;&lt;br /&gt;After a lot of searching I found this wonderful addon for Firefox which lets you print all your webpages, html or text files on disk from the command-line. With this tool you can even write a batch file with all your links and print them into &lt;a href="http://sites.google.com/site/torisugari/commandlineprint2"&gt;PDFs from the command line&lt;/a&gt; (via: &lt;a href="https://wiki.mozilla.org/Firefox/Feature_Brainstorming:Printing#Command_Line_Printing"&gt;MozillaWiki&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Once you've generated all your PDFs, you can even merge them all into a giant PDF &lt;a href="http://www.pdfsam.org/?page_id=32"&gt;using this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And you are all set!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-8732484727150568129?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/8732484727150568129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=8732484727150568129' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8732484727150568129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8732484727150568129'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/01/making-your-online-reading-even-more.html' title='Making your online reading even more pleasant'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7582027232360716222</id><published>2011-01-08T22:43:00.000-08:00</published><updated>2011-06-18T11:32:19.140-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>So many products... so many  choices</title><content type='html'>Something akin to the &lt;a href="http://en.wikipedia.org/wiki/Efficient-market_hypothesis"&gt;Efficient-market hypothesis&lt;/a&gt; or the &lt;a href="http://www.investopedia.com/terms/i/informationallyefficientmarket.asp"&gt;Informationally Efficient Market&lt;/a&gt; (the opposite of) that might explain why the market can sustain an ecosystem of products and solutions - even sub-standard ones.&lt;br /&gt;&lt;br /&gt;[Update: May 1, 2011] &lt;a href="http://en.wikipedia.org/wiki/Porter_five_forces_analysis"&gt;Porter's Five Forces&lt;/a&gt; model is a very accurate analysis of this problem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-i8jW7I2gyg/TSlS9ZsH50I/AAAAAAAAAmc/rHxLhbQu_Fw/s1600/IT+problem.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="248" src="http://4.bp.blogspot.com/_-i8jW7I2gyg/TSlS9ZsH50I/AAAAAAAAAmc/rHxLhbQu_Fw/s640/IT+problem.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7582027232360716222?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7582027232360716222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7582027232360716222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7582027232360716222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7582027232360716222'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/01/so-many-products-so-many-choices.html' title='So many products... so many  choices'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-i8jW7I2gyg/TSlS9ZsH50I/AAAAAAAAAmc/rHxLhbQu_Fw/s72-c/IT+problem.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-1880745636376611551</id><published>2011-01-08T20:19:00.000-08:00</published><updated>2011-01-21T23:21:26.493-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Russian Ridge OSP</title><content type='html'>Another year and a nice hike to begin it. I've hiked here &lt;a href="http://javaforu.blogspot.com/search?q=russian+ridge"&gt;a few times before&lt;/a&gt; and I still love it.&lt;br /&gt;&lt;br /&gt;This time I got to see a coyote waiting over the ridge and looking down at passing hikers and waiting to pounce on a swarm of little birds that were feeding on seeds on the hillside:&lt;br /&gt;(Shot from a camera phone. Bad quality)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-i8jW7I2gyg/TSk3CD6PRpI/AAAAAAAAAmY/Sxg9ms8zEeA/s1600/IMG00131.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-i8jW7I2gyg/TSk3CD6PRpI/AAAAAAAAAmY/Sxg9ms8zEeA/s1600/IMG00131.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-1880745636376611551?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/1880745636376611551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=1880745636376611551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1880745636376611551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1880745636376611551'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2011/01/hiking-in-russian-ridge-osp.html' title='Hiking in Russian Ridge OSP'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-i8jW7I2gyg/TSk3CD6PRpI/AAAAAAAAAmY/Sxg9ms8zEeA/s72-c/IMG00131.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3268193076279511741</id><published>2010-12-29T20:11:00.000-08:00</published><updated>2011-04-07T22:18:03.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>Proximity search using SQLite's FTS feature</title><content type='html'>A few months ago I was playing with &lt;a href="http://www.sqlite.org/fts3.html#section_3"&gt;SQLite's Full Text Search&lt;/a&gt; feature. I was especially interested in the Match-Near-Term operator - which allows you to search for a bunch of terms that are with 'm' words of each other. Lucene also has this &lt;a href="http://www.lucidimagination.com/blog/2009/07/18/the-spanquery/"&gt;feature&lt;/a&gt; (obviously) called SpanQuery. This is called &lt;a href="http://en.wikipedia.org/wiki/Proximity_search_%28text%29"&gt;Proximity search&lt;/a&gt; if you didn't already know.&lt;br /&gt;&lt;br /&gt;This kind of search has its limitations - so does SQLite, especially performance problems for large data sets. I chose SQLite with the &lt;a href="http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC"&gt;SQLite-JDBC&lt;/a&gt; driver because of its simplicty of setup and SQL interface (duh!). I created the FTS table in an in-memory database and tried some simple queries. It's not too bad. I'll just file it for later.&lt;br /&gt;&lt;br /&gt;Here's the code. I just create 2 streams of stock ticks (all contrived, just like the rest of the code) and try to search for patterns in the 2 series. It does not exactly do what I wanted it to, but it was fun to play with the concept.&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/758256.js?file=gistfile1.java"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3268193076279511741?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3268193076279511741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3268193076279511741' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3268193076279511741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3268193076279511741'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/12/proximity-search-using-sqlites-fts.html' title='Proximity search using SQLite&apos;s FTS feature'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3415242374303008540</id><published>2010-12-24T19:22:00.000-08:00</published><updated>2011-06-18T11:32:30.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Enterprise technology landscape from 10,000 ft above - circa 2010</title><content type='html'>[&lt;b&gt;Updated:&lt;/b&gt; Dec 25, 2010] &lt;br /&gt;&lt;br /&gt;My personal view of where some technologies stand, today:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-i8jW7I2gyg/TRZv7R65xvI/AAAAAAAAAmU/5P4ZvPoOmeM/s1600/eco+system.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="484" src="http://4.bp.blogspot.com/_-i8jW7I2gyg/TRZv7R65xvI/AAAAAAAAAmU/5P4ZvPoOmeM/s640/eco+system.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Happy holidays and a happy new year!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3415242374303008540?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3415242374303008540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3415242374303008540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3415242374303008540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3415242374303008540'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/12/enterprise-technology-landscape-from.html' title='Enterprise technology landscape from 10,000 ft above - circa 2010'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-i8jW7I2gyg/TRZv7R65xvI/AAAAAAAAAmU/5P4ZvPoOmeM/s72-c/eco+system.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-1858697848460319620</id><published>2010-12-22T08:58:00.000-08:00</published><updated>2011-01-21T23:19:57.352-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>If you are going to lose your socks, make sure that you lose it in pairs.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-1858697848460319620?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/1858697848460319620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=1858697848460319620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1858697848460319620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1858697848460319620'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/12/if-you-are-going-to-lose-your-socks.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7541989827203975944</id><published>2010-12-12T19:07:00.000-08:00</published><updated>2011-06-18T11:32:30.347-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>What they did not teach in OOP/OOAD class</title><content type='html'>For over a decade the &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29"&gt;Gang Of Four Design Patterns&lt;/a&gt; or the GoF patterns are they are fondly referred to have become one of the favorite topics in job interviews. And for good reason. It has even led to the rise in the popularity and acceptance of spin offs like - &lt;a href="http://www.oracle.com/technetwork/java/patterns-139816.html"&gt;J2EE Blueprints&lt;/a&gt;, &lt;a href="http://www.eaipatterns.com/toc.html"&gt;Enterprise Integration Patterns&lt;/a&gt; and even &lt;a href="http://en.wikipedia.org/wiki/Anti-pattern"&gt;Anti-patterns&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Would it be too much to ask for to teach these concepts in school today in the final semester before sending graduates off into the real world?&lt;br /&gt;&lt;br /&gt;However, knowledge of the GoF patterns is not sufficient to build elegant systems. In fact it must be said that an over-reliance and blind following of the GoF patterns quite often leads to bloated and over-engineered systems. Case in point - Spring superseded a bloated J2EE. Google &lt;a href="http://code.google.com/p/google-guice/"&gt;Guice&lt;/a&gt; and &lt;a href="http://seamframework.org/Weld"&gt;JEE CDI&lt;/a&gt; are in turn attempts to improve upon Spring which itself has gained a lot of weight over the years. &lt;br /&gt;&lt;br /&gt;In my experience, I have come to realize that in order to insure a more complete and proper understanding of the art of design and its application in a complex software system, there are 2 other essential sets of design patterns. The lesser known and under used ones:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) &lt;a href="http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29"&gt;GRASP&lt;/a&gt; - General Responsibility Assignment Software Patterns&lt;br /&gt;&amp;nbsp; &amp;nbsp; 2) &lt;a href="http://en.wikipedia.org/wiki/Solid_%28object-oriented_design%29"&gt;SOLID&lt;/a&gt; - Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion&lt;br /&gt;&lt;br /&gt;Where the GoF patterns and their spin offs explain "how" to build the components; SOLID and GRASP help in understanding "why" those components, packages, abstractions, interfaces and dependencies have to be built and assembled in a certain way. &lt;br /&gt;&lt;br /&gt;To drive home the point, just sending off graduates with partial knowledge i.e GoF = "How" and without SOLID + GRASP = "Why" would be like teaching automobile engineers how to machine parts of a car and not teaching them how to assemble the parts to make a drivable car.&lt;br /&gt;&lt;br /&gt;If students are expected to figure out the "why" on their own at their first jobs, they will unwittingly build and design &lt;a href="http://en.wikipedia.org/wiki/Rube_Goldberg_machine"&gt;Rube Goldberg&lt;/a&gt; type of software, inflicting the source code with factories of factories, bad adapters that don't do anything, redundant interfaces, singletons that resist unit testing and the list goes on.... until they learn from experience (if at all). For it takes years of experience and guidance to gain a holistic view of complex systems. &lt;a href="http://en.wikipedia.org/wiki/Systems_thinking"&gt;Systems thinking&lt;/a&gt; also helps a great deal. &lt;br /&gt;&lt;br /&gt;While we are discussing the subject of good design there is another important aspect that is even less understood - API design. There is a remedy for that too. Joshua Bloch's - &lt;a href="http://www.google.com/research/pubs/archive/32713.pdf"&gt;How to Design a Good API and Why it Matters&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In conclusion, I'd like to list down some famous quotations and rules of thumb that help me when I'm designing a particularly tricky system:&lt;br /&gt;&amp;nbsp;&amp;nbsp; - Simple things should be simple, complex things should be possible (&lt;a href="http://en.wikipedia.org/wiki/Alan_Kay"&gt;Alan Kay&lt;/a&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp; - Simplicity before generality, use before reuse (&lt;a href="http://oreilly.com/catalog/9780596522704"&gt;97 Things ..&lt;/a&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp; - Ask yourself if a feature or its design is &lt;a href="http://en.wikipedia.org/wiki/Necessary_and_sufficient_condition"&gt;necessary and sufficient&lt;/a&gt;. Anything more is a waste. Anything less means the job is not complete&lt;br /&gt;&lt;br /&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7541989827203975944?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7541989827203975944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7541989827203975944' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7541989827203975944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7541989827203975944'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/12/what-they-did-not-teach-in-oopooad.html' title='What they did not teach in OOP/OOAD class'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6781476289076141435</id><published>2010-12-07T23:19:00.000-08:00</published><updated>2011-06-18T11:32:30.276-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>LinkedIn's Kafka messaging project</title><content type='html'>Kudos to the LinkedIn team for making another highly focused and elegant project available as open source - &lt;a href="http://sna-projects.com/kafka/design.php"&gt;Kafka&lt;/a&gt;. In spite of its name it is anything but &lt;a href="http://en.wiktionary.org/wiki/Kafkaesque"&gt;Kafkaesque&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Kafka seems to be a serious attempt to address the messaging problem by starting from first principles. Not having played with the project yet, but from just reading the design doc it looks like a well thought out design.&lt;br /&gt;&lt;br /&gt;I have written about the scalability limits of push-systems that are somewhat common to JMS implementations - &lt;a href="http://javaforu.blogspot.com/2010/08/blurring-line-between-messaging-and.html"&gt;here&lt;/a&gt; about polling from NoSql instead of push, a little &lt;a href="http://javaforu.blogspot.com/2010/11/jms-spec-time-for-upgrade.html"&gt;here&lt;/a&gt; about JMS spec needing an upgrade and vaguely &lt;a href="http://javaforu.blogspot.com/2010/09/txncommit-are-you-sure.html"&gt;here&lt;/a&gt; when talking about alternatives to 2 phase transactions.&lt;br /&gt;&lt;br /&gt;The alternative systems like Flume, Scribe, &lt;a href="http://wiki.apache.org/hadoop/HedWig"&gt;Hedgwig&lt;/a&gt;, Chukwa and such are too log-file-collection focused. Whereas Kafka looks more like a regular messaging system with a clean polling mechanism. Explicit polling with good storage automatically solves many of the problems that I had written about &lt;a href="http://javaforu.blogspot.com/2010/11/jms-spec-time-for-upgrade.html"&gt;here&lt;/a&gt; like retries, slow consumers/flow control and durable subscriptions. I'm particularly glad to see that they've read the &lt;a href="http://www.varnish-cache.org/trac/wiki/ArchitectNotes"&gt;Varnish&lt;/a&gt; article on OS disk caching which Redis seems to have somewhat muddled up (comment &lt;a href="http://antirez.com/post/redis-virtual-memory-story.html"&gt;#29&lt;/a&gt;). Funny, zero-copy was something I was &lt;a href="http://web.archiveorange.com/archive/v/ZVMdIrxz9D9eGzRZkNX5#rxz9D9eGzRZkNX5"&gt;exploring&lt;/a&gt; just a few weeks ago with Netty.&lt;br /&gt;&lt;br /&gt;I don't however foresee any enterprise projects switching to Kafka immediately. Its performance and cost of license (ASL) might not be enough to motivate people from trying it out. The strangely simplistic yet clever design does require some careful reading of the docs and understanding of the APIs. Hopefully it will gain a wider user base unlike their other nice project Voldemort - another simple and elegant project.&lt;br /&gt;&lt;br /&gt;Also be sure to have a look at their new disk store - &lt;a href="http://sna-projects.com/krati/"&gt;Krati&lt;/a&gt;. I'm even more glad to see that all these projects are in Java (actually Scala).&lt;br /&gt;&lt;br /&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6781476289076141435?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6781476289076141435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6781476289076141435' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6781476289076141435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6781476289076141435'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/12/linkedins-kafka-messaging-project.html' title='LinkedIn&apos;s Kafka messaging project'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-8692039258788540043</id><published>2010-12-04T00:31:00.000-08:00</published><updated>2011-06-18T11:32:30.420-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Clever Enum tricks and some things to read over the weekend</title><content type='html'>Here's a Java goody - changing the default maximum compile errors reported by Javac:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://forums.sun.com/thread.jspa?messageID=2250634#2250634" target="_blank"&gt;http://forums.sun.com/thread.&lt;wbr&gt;&lt;/wbr&gt;jspa?messageID=2250634#2250634&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Clever things that you can do with Java Enums:&lt;br /&gt;&amp;nbsp;&amp;nbsp; Create a hierarchy - &lt;a href="http://java.dzone.com/articles/enum-tricks-hierarchical-data"&gt;http://java.dzone.com/articles/enum-tricks-hierarchical-data&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Make it implement an interface - &lt;a href="http://api.neo4j.org/current/org/neo4j/graphdb/RelationshipType.html"&gt;http://api.neo4j.org/current/org/neo4j/graphdb/RelationshipType.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://api.neo4j.org/current/org/neo4j/graphdb/RelationshipType.html"&gt;&lt;/a&gt;&lt;br /&gt;And some bizarre things to do like - converting Java to native:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://nestedvm.ibex.org/" target="_blank"&gt;http://nestedvm.ibex.org/&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://llvm.org/svn/llvm-project/java/trunk/docs/java-frontend.txt" target="_blank"&gt;http://llvm.org/svn/llvm-&lt;wbr&gt;&lt;/wbr&gt;project/java/trunk/docs/java-&lt;wbr&gt;&lt;/wbr&gt;frontend.txt&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.vishia.org/Java2C/html/features.html" target="_blank"&gt;http://www.vishia.org/Java2C/&lt;wbr&gt;&lt;/wbr&gt;html/features.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What would happen if you tried to bypass the Sql engine in MySql? You'd get 750,000 reads per second!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html" target="_blank"&gt;http://yoshinorimatsunobu.&lt;wbr&gt;&lt;/wbr&gt;blogspot.com/2010/10/using-&lt;wbr&gt;&lt;/wbr&gt;mysql-as-nosql-story-for.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some Hadoop and cloud related presentations worth reading:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.cloudera.com/resource/hw10_hbase_in_production_at_facebook" target="_blank"&gt;http://www.cloudera.com/&lt;wbr&gt;&lt;/wbr&gt;resource/hw10_hbase_in_&lt;wbr&gt;&lt;/wbr&gt;production_at_facebook&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.cloudera.com/resource/hw10_apache_zookeeper_at_yahoo" target="_blank"&gt;http://www.cloudera.com/&lt;wbr&gt;&lt;/wbr&gt;resource/hw10_apache_&lt;wbr&gt;&lt;/wbr&gt;zookeeper_at_yahoo&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.slideshare.net/adrianco/netflix-on-cloud-combined-slides-for-dev-and-ops"&gt;http://www.slideshare.net/adrianco/netflix-on-cloud-combined-slides-for-dev-and-ops&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-8692039258788540043?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/8692039258788540043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=8692039258788540043' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8692039258788540043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8692039258788540043'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/12/clever-enum-tricks-and-some-things-to.html' title='Clever Enum tricks and some things to read over the weekend'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-539119366770158955</id><published>2010-11-21T12:12:00.000-08:00</published><updated>2011-06-18T11:32:30.199-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Scalable compute &amp; storage frameworks - A Refcard (in progress)</title><content type='html'>If you have been closely following the NoSql space or even shown a mild interest in scalable technologies such as Compute Grids, Data Grids, Distributed Caches or the countless other terms that people use interchangeably - you have probably realized that most Architects do not have the time or the resources to investigate the sift through the noise and decide on what to use.&lt;br /&gt;&lt;br /&gt;Since I've had some experience using one such framework and also because I follow the progress of some others, I thought it would be helpful to everyone if I put together some information.&lt;br /&gt;&lt;div class="floatingbox"&gt;Please &lt;a href="http://code.google.com/p/scalable-frameworks/"&gt;share and contribute&lt;/a&gt; information. Spread the word. Your efforts will be acknowledged.&lt;a href="mailto:ashwin.jayaprakash%2Bscalableframeworks@gmail.com?subject=About Scalable Frameworks"&gt;Ask&lt;/a&gt; for permission to work on the Wiki and Spreadsheet.&lt;/div&gt;What I have done is created a &lt;a href="http://code.google.com/p/scalable-frameworks/"&gt;Google Code project: scalable-frameworks&lt;/a&gt; where I hope I can spare the time to keep it updated and enlist some help from the community at large to gather correct information.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The intention is for it to serve as a ready reckoner and not be complete or authoritative&lt;/li&gt;&lt;li&gt;Performance is a criterion that has consciously been excluded from the lists here to avoid flame wars&lt;/li&gt;&lt;li&gt;For the full information it would be best to visit the actual product's/project's website&lt;/li&gt;&lt;li&gt;It is not official, nor has it been prepared by thorough research&lt;/li&gt;&lt;li&gt;If you have questions or would like to clarify/contribute, please get in touch&lt;/li&gt;&lt;/ul&gt;To start with, there are 2 parts:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A very simple introduction with images describing the basic concepts&lt;/li&gt;&lt;li&gt;A spreadsheet that is meant to serve as a ready reckoner - to help you choose the right framework/platform&lt;/li&gt;&lt;ul&gt;&lt;li&gt;It has some basic features listed&lt;/li&gt;&lt;li&gt;Pay attention to the features that you would find most useful and pick the project that has most/all the ones you are looking for &lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Basic concepts:&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;To help understand the basic processing and storage idioms being explored, here are a few images: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"Store and retrieve" (Scatter-Gather) on a cluster of compute + storage nodes:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-i8jW7I2gyg/TOl0W5gbD5I/AAAAAAAAAmA/zxfv4UZqnzk/s1600/scatter-relay-compute.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="507" src="http://2.bp.blogspot.com/_-i8jW7I2gyg/TOl0W5gbD5I/AAAAAAAAAmA/zxfv4UZqnzk/s640/scatter-relay-compute.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"Store, notify changes, apply changes" (Scatter-Relay-Compute) on a cluster of compute + storage nodes:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-i8jW7I2gyg/TOl0YhjTNpI/AAAAAAAAAmE/Mg1ve4qbFpc/s1600/scatter-relay-compute-alert.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="534" src="http://2.bp.blogspot.com/_-i8jW7I2gyg/TOl0YhjTNpI/AAAAAAAAAmE/Mg1ve4qbFpc/s640/scatter-relay-compute-alert.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"Store, notify changes, calculate, notify new calculation result" (Scatter-Relay-ComputeAlert) on a cluster of compute + storage nodes:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-i8jW7I2gyg/TOl0VPjKC0I/AAAAAAAAAl8/w0549lMGiuw/s1600/scatter-gather.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="628" src="http://1.bp.blogspot.com/_-i8jW7I2gyg/TOl0VPjKC0I/AAAAAAAAAl8/w0549lMGiuw/s640/scatter-gather.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Refcard:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;(&lt;a href="https://spreadsheets.google.com/pub?key=0Ag3dCdVLk-NvdFFJWVNhWEhBdUowR2JhM1preTUyVUE&amp;amp;hl=en&amp;amp;output=html"&gt;Full Spreadsheet&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="600" src="https://spreadsheets.google.com/pub?key=0Ag3dCdVLk-NvdFFJWVNhWEhBdUowR2JhM1preTUyVUE&amp;amp;hl=en&amp;amp;output=html&amp;amp;widget=true" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-539119366770158955?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/539119366770158955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=539119366770158955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/539119366770158955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/539119366770158955'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/11/scalable-compute-storage-frameworks.html' title='Scalable compute &amp; storage frameworks - A Refcard (in progress)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-i8jW7I2gyg/TOl0W5gbD5I/AAAAAAAAAmA/zxfv4UZqnzk/s72-c/scatter-relay-compute.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4609801449501430188</id><published>2010-11-17T22:39:00.000-08:00</published><updated>2011-04-07T22:18:03.394-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#event processing'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>Variety is the spice of (the Architect's) life</title><content type='html'>A mind map of the various aspects of software - from an architect's point of view:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-i8jW7I2gyg/TOTRPCUi7RI/AAAAAAAAAl4/ehcGgYLAqz4/s1600/variety_spice_architect.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="347" src="http://2.bp.blogspot.com/_-i8jW7I2gyg/TOTRPCUi7RI/AAAAAAAAAl4/ehcGgYLAqz4/s640/variety_spice_architect.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4609801449501430188?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4609801449501430188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4609801449501430188' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4609801449501430188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4609801449501430188'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/11/variety-is-spice-of-architects-life.html' title='Variety is the spice of (the Architect&apos;s) life'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-i8jW7I2gyg/TOTRPCUi7RI/AAAAAAAAAl4/ehcGgYLAqz4/s72-c/variety_spice_architect.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3162529747827979994</id><published>2010-11-13T18:43:00.000-08:00</published><updated>2011-01-21T23:21:26.495-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Memorial Park (Off CA 84)</title><content type='html'>I decided to go hiking in one of the parks off CA-84 (La Honda). It's a longer drive from I-280 and goes closer to the coast. Driving on LA Honda is also quite fun if the weather is good. I had hiked &lt;a href="http://javaforu.blogspot.com/2008/06/sam-macdonald-county-park.html"&gt;in the same area&lt;/a&gt; a few years ago.&lt;br /&gt;&lt;br /&gt;I went to&lt;a href="http://www.bahiker.com/southbayhikes/memorial.html"&gt; Memorial Park&lt;/a&gt;, paid the $5 registration fee and went wandering around the empty camp grounds. I could not find a map anywhere (unlike the other parks) so I just went down to the creek from Tan oak camp grounds and walked along the creek, against the flow. After about a 1/4 mile, you reach a bridge which is actually part of Pescadero Creek Road. There are many camp grounds here. I crossed the bridge and wandered around in the Wurr campgrounds. Still no sign of a trail.&lt;br /&gt;&lt;br /&gt;So, I came back to the road and then saw the entrance to &lt;a href="http://www.redwoodhikes.com/Portola/Portola.html"&gt;Pescadero Creek County Park&lt;/a&gt; - Hoffman Creek Trailhead. I went in and kept going. There's a map here but Pomponio trail appears to be in both parks. It's confusing.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-i8jW7I2gyg/TN9Jj8p1qKI/AAAAAAAAAls/DA8zzcmfVzA/s1600/1-Map-Pescadero-Creek-Park.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_-i8jW7I2gyg/TN9Jj8p1qKI/AAAAAAAAAls/DA8zzcmfVzA/s400/1-Map-Pescadero-Creek-Park.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;After about 10-15 minutes, there's a a junction where Old Haul Road (the one you will on) makes a left. I turned left and kept walking. Then you see a sign that says Pomponio Trail. Make a left here, cross the creek. There is no bridge. If it has rained, I don't know if it's safe to cross the 10 ft span of ankle deep water. There are rocks to step on to help cross the creek.&lt;br /&gt;&lt;br /&gt;Pomponio trail looks like an out-and-back trail. There is no loop. I went in for a while and then headed back the same way. &lt;br /&gt;&lt;br /&gt;Overall, it's a nice place. No crowd. I was worried that I did not see any fellow hikers until I saw just 1 couple on their way back. Camping here would also be a fun - very convenient too considering how close it is to 280. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-i8jW7I2gyg/TN9LTw2TkNI/AAAAAAAAAlw/kmsUgHOHOmE/s1600/3-Pomponio-Trail.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_-i8jW7I2gyg/TN9LTw2TkNI/AAAAAAAAAlw/kmsUgHOHOmE/s400/3-Pomponio-Trail.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3162529747827979994?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3162529747827979994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3162529747827979994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3162529747827979994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3162529747827979994'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/11/hiking-in-memorial-park-off-ca-84.html' title='Hiking in Memorial Park (Off CA 84)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-i8jW7I2gyg/TN9Jj8p1qKI/AAAAAAAAAls/DA8zzcmfVzA/s72-c/1-Map-Pescadero-Creek-Park.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3270017404430713064</id><published>2010-11-12T08:21:00.000-08:00</published><updated>2011-01-21T23:19:57.353-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>If only the world were immune to diseases like it is to logic...&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3270017404430713064?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3270017404430713064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3270017404430713064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3270017404430713064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3270017404430713064'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/11/if-only-world-were-immune-to-diseases.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-877997841720573429</id><published>2010-11-09T00:07:00.000-08:00</published><updated>2011-06-18T11:32:30.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>JMS spec - Time for an upgrade?</title><content type='html'>The last &lt;a href="http://en.wikipedia.org/wiki/Java_Message_Service"&gt;JMS&lt;/a&gt; specification was written 8 years ago! Since then the world has seen multi-core 64 bit systems, Hadoop, compute grids, data grids, AMQP, ZeroMQ, NoSql, Twitter, Facebook ..... and still JMS 1.1 is the backbone of enterprise systems.&lt;br /&gt;&lt;br /&gt;There are a few things however, that are missing sorely from the spec and consequently from any implementation in a "standard" way. Each provider no doubt has an answer to some of its limitations but the emphasis is on the lack of a standard way.&lt;br /&gt;&lt;br /&gt;8 years ago, running a whole swarm of machines as a single cluster was rare. But in today's world it is not. It is exactly here that the spec is lacking. I have listed some features below that I would find useful. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Message acknowledgment:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Out of order Acks:&lt;/b&gt; Acknowledging messages individually and in an order that is different from how they were received. The spec is vague about this. In some systems acknowledging a message will automatically ack all messages that have been received so far in that session! TIBCO EMS has Explicit Client Acknowledgement that is non-standard but is certainly very useful&lt;/li&gt;&lt;li&gt;&lt;b&gt;Negative Acks&lt;/b&gt;: In some systems, if a message causes an exception at the receiving end, that message will not be redelivered by the server until the original client session disconnects. It would've been nice if the spec allowed some kind of a Negative Ack to force the server to redeliver the message to the same or a different session&lt;/li&gt;&lt;li&gt;&lt;b&gt;Batch Acks&lt;/b&gt;: Since JMS is used in many setups to correlate multiple messages coming from different queues and considering that Ack'ing is expensive at high message rates; JMS should have a facility to accept a batch acknowledgment of many JMSMessageIds. Similar to JDBC batch statements&lt;/li&gt;&lt;li&gt;&lt;b&gt;Disconnected &amp;amp; Federated Acks&lt;/b&gt;: In complex systems where messages can flow through multiple tiers of application servers either as the original JMS message or as an enriched &lt;a href="http://en.wikipedia.org/wiki/Data_transfer_object"&gt;DTO&lt;/a&gt;/VO, allowing the final tier in the flow to acknowledge the message purely by JMSMessageId would be very useful. Currently, only the client that received the message from the server can acknowledge it. Also the message has to be held in memory for the duration. In &lt;a href="http://en.wikipedia.org/wiki/Staged_event-driven_architecture"&gt;SEDA&lt;/a&gt; systems this does not work well and forces the developers to jump through unnecessary design hoops&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Message selectors:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Smart selectors:&lt;/b&gt; JMS Selectors are very static and expensive to apply at high message rates. They were meant to work as a rudimentary form of Content based routing. What is really needed is a way to let the client run custom logic (like RMI) through the queue and pick what it needs. This way clients should be able to use a modified form of QueueBrowser and consume anything it finds interesting&lt;/li&gt;&lt;li&gt; &lt;b&gt;Context aware routing:&lt;/b&gt; ActiveMQ has a non-standard feature called &lt;a href="http://activemq.apache.org/how-do-message-groups-compare-to-selectors.html"&gt;Message Group&lt;/a&gt; that can be used to perform smart message routing using a custom header. This would be a welcome feature where data aware routing would provide a huge performance improvement by exploiting data locality to deliver related messages to the same application server and thereby avoiding data/cache thrashing&lt;/li&gt;&lt;/ul&gt;Also, read &lt;a href="http://javaforu.blogspot.com/2010/08/blurring-line-between-messaging-and.html"&gt;this&lt;/a&gt; for a different take on the future of messaging.&lt;br /&gt;&lt;br /&gt;Until next time, cheers!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-877997841720573429?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/877997841720573429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=877997841720573429' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/877997841720573429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/877997841720573429'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/11/jms-spec-time-for-upgrade.html' title='JMS spec - Time for an upgrade?'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-1741860042720808051</id><published>2010-10-27T21:00:00.000-07:00</published><updated>2011-01-21T23:21:26.497-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>"Flexible" design (Willis Tower)</title><content type='html'>Inside Chicago's Willis/Sears Tower - &lt;a href="http://www.box.net/shared/gu8pjj9xnm"&gt;creaking sounds (mp3)&lt;/a&gt; when the tall building sways in the wind. The swaying is by design - to help it cope with the structural stresses it encounters at the top, from strong winds in stormy weather.&lt;br /&gt;&lt;br /&gt;A little short of &lt;a href="http://en.wikipedia.org/wiki/Willis_Tower"&gt;half a kilometer&lt;/a&gt; in height and one of the tallest buildings in the world. Now, that is extreme engineering! &lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.box.net/embed/ob1iqobn3grfuhv.swf" width="200" height="200" wmode="opaque" type="application/x-shockwave-flash" allowFullScreen="true" allowScriptAccess="always"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-1741860042720808051?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/1741860042720808051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=1741860042720808051' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1741860042720808051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1741860042720808051'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/10/flexible-design-wilis-tower_27.html' title='&quot;Flexible&quot; design (Willis Tower)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7473380374152831269</id><published>2010-10-23T00:28:00.000-07:00</published><updated>2011-04-07T22:18:03.397-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><title type='text'>Even Star Trek technology has memory fragmentation issues</title><content type='html'>Memory fragmentation problems? Well, even Star Trek holograms have similar issues &lt;a href="http://javaforu.blogspot.com/2010/01/sqlite-talk-select-from-sqliteinternals.html"&gt;(1)&lt;/a&gt; &lt;a href="http://javaforu.blogspot.com/search?q=memory"&gt;(2)&lt;/a&gt;. This is why you need a Compacting Garbage Collector :)&lt;br/&gt;&lt;br/&gt;&lt;object width="560" height="315"&gt;    &lt;param name="movie" value="http://www.dailymotion.com/swf/video/VIDEO_ID?background=493D27&amp;foreground=E8D9AC&amp;highlight=FFFFF0"&gt;&lt;/param&gt;    &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;    &lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;    &lt;embed type="application/x-shockwave-flash" src="http://www.dailymotion.com/swf/video/xfctor_even-star-trek-technology-has-memor_tech?background=493D27&amp;foreground=E8D9AC&amp;highlight=FFFFF0" width="560" height="315" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7473380374152831269?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7473380374152831269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7473380374152831269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7473380374152831269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7473380374152831269'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/10/even-star-trek-technology-has-memory.html' title='Even Star Trek technology has memory fragmentation issues'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7240112701331480808</id><published>2010-10-21T23:34:00.000-07:00</published><updated>2011-06-18T11:32:30.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>select 'Whoa..' || 'Cool!' from mozilla_history_storage</title><content type='html'>&lt;a href="http://sqlite.org/"&gt;SQLite&lt;/a&gt; is a brilliant embedded SQL engine and it is used by software that you and I use everyday - Firefox, Android and many more. See &lt;a href="http://javaforu.blogspot.com/2010/01/sqlite-talk-select-from-sqliteinternals.html"&gt;earlier reference&lt;/a&gt;.&lt;br /&gt;What you might not know is how extensively it is used in Firefox. History, bookmarks all use SQLite. The kind of queries that are used would put many Enterprise applications to shame. I was just curious to see what was under the hood and decided to hunt down the &lt;a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/components/places/src/nsNavHistory.cpp"&gt;History and Bookmarks source code&lt;/a&gt;.&lt;br /&gt;&lt;pre class="brush: java"&gt;&lt;br /&gt; "SELECT v.visit_date, COALESCE( "&lt;br /&gt;   "(SELECT r.visit_type FROM moz_historyvisits_temp r "&lt;br /&gt;     "WHERE v.visit_type IN ") +&lt;br /&gt;       nsPrintfCString("(%d,%d) ", TRANSITION_REDIRECT_PERMANENT,&lt;br /&gt;                                   TRANSITION_REDIRECT_TEMPORARY) +&lt;br /&gt;       NS_LITERAL_CSTRING(" AND r.id = v.from_visit), "&lt;br /&gt;   "(SELECT r.visit_type FROM moz_historyvisits r "&lt;br /&gt;     "WHERE v.visit_type IN ") +&lt;br /&gt;       nsPrintfCString("(%d,%d) ", TRANSITION_REDIRECT_PERMANENT,&lt;br /&gt;                                   TRANSITION_REDIRECT_TEMPORARY) +&lt;br /&gt;       NS_LITERAL_CSTRING(" AND r.id = v.from_visit), "&lt;br /&gt;   "visit_type) "&lt;br /&gt; "FROM moz_historyvisits_temp v "&lt;br /&gt; "WHERE v.place_id = :page_id "&lt;br /&gt; "UNION ALL "&lt;br /&gt; "SELECT v.visit_date, COALESCE( "&lt;br /&gt;   "(SELECT r.visit_type FROM moz_historyvisits_temp r "&lt;br /&gt;     "WHERE v.visit_type IN ") +&lt;br /&gt;       nsPrintfCString("(%d,%d) ", TRANSITION_REDIRECT_PERMANENT,&lt;br /&gt;                                   TRANSITION_REDIRECT_TEMPORARY) +&lt;br /&gt;       NS_LITERAL_CSTRING(" AND r.id = v.from_visit), "&lt;br /&gt;   "(SELECT r.visit_type FROM moz_historyvisits r "&lt;br /&gt;     "WHERE v.visit_type IN ") +&lt;br /&gt;       nsPrintfCString("(%d,%d) ", TRANSITION_REDIRECT_PERMANENT,&lt;br /&gt;                                   TRANSITION_REDIRECT_TEMPORARY) +&lt;br /&gt;       NS_LITERAL_CSTRING(" AND r.id = v.from_visit), "&lt;br /&gt;   "visit_type) "&lt;br /&gt; "FROM moz_historyvisits v "&lt;br /&gt; "WHERE v.place_id = :page_id "&lt;br /&gt;   "AND v.id NOT IN (SELECT id FROM moz_historyvisits_temp) "&lt;br /&gt; "ORDER BY visit_date DESC LIMIT ") +&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now...see this. Imagine doing this without SQL? I am however, a little disappointed. I was expecting the code to be using some fancy NGram search like what Lucene does, but it doesn't look like it.&lt;br /&gt;&lt;pre class="brush: sql"&gt;&lt;br /&gt; SELECT DISTINCT null, &lt;br /&gt;        'place:type=%ld&amp;sort=%ld&amp;domain=&amp;domainIsHost=true&lt;br /&gt;          &amp;beginTime='||:begin_time||'&amp;endTime='||:end_time, &lt;br /&gt;        :localhost, :localhost, null, null, null, null, null, null, null &lt;br /&gt; WHERE EXISTS( &lt;br /&gt;   SELECT h.id &lt;br /&gt;   FROM moz_places h &lt;br /&gt;   JOIN moz_historyvisits v ON v.place_id = h.id &lt;br /&gt;   WHERE h.hidden &lt;&gt; 1 AND h.rev_host = '.' &lt;br /&gt;     AND h.visit_count &gt; 0 &lt;br /&gt;     AND h.url BETWEEN 'file://' AND 'file:/~' &lt;br /&gt;     {QUERY_OPTIONS_VISITS} {QUERY_OPTIONS_PLACES} &lt;br /&gt;     {ADDITIONAL_CONDITIONS} &lt;br /&gt;   UNION &lt;br /&gt;   SELECT h.id &lt;br /&gt;   FROM moz_places_temp h &lt;br /&gt;   JOIN moz_historyvisits v ON v.place_id = h.id &lt;br /&gt;   WHERE h.hidden &lt;&gt; 1 AND h.rev_host = '.' &lt;br /&gt;     AND h.visit_count &gt; 0 &lt;br /&gt;     AND h.url BETWEEN 'file://' AND 'file:/~' &lt;br /&gt;     {QUERY_OPTIONS_VISITS} {QUERY_OPTIONS_PLACES} &lt;br /&gt;     {ADDITIONAL_CONDITIONS} &lt;br /&gt;   UNION &lt;br /&gt;   SELECT h.id &lt;br /&gt;   FROM moz_places h &lt;br /&gt;   JOIN moz_historyvisits_temp v ON v.place_id = h.id &lt;br /&gt;   WHERE h.hidden &lt;&gt; 1 AND h.rev_host = '.' &lt;br /&gt;     AND h.visit_count &gt; 0 &lt;br /&gt;     AND h.url BETWEEN 'file://' AND 'file:/~' &lt;br /&gt;     {QUERY_OPTIONS_VISITS} {QUERY_OPTIONS_PLACES} &lt;br /&gt;     {ADDITIONAL_CONDITIONS} &lt;br /&gt;   UNION &lt;br /&gt;   SELECT h.id &lt;br /&gt;   FROM moz_places_temp h &lt;br /&gt;   JOIN moz_historyvisits_temp v ON v.place_id = h.id &lt;br /&gt;   WHERE h.hidden &lt;&gt; 1 AND h.rev_host = '.' &lt;br /&gt;     AND h.visit_count &gt; 0 &lt;br /&gt;     AND h.url BETWEEN 'file://' AND 'file:/~' &lt;br /&gt;     {QUERY_OPTIONS_VISITS}  {QUERY_OPTIONS_PLACES} &lt;br /&gt;     {ADDITIONAL_CONDITIONS}         &lt;br /&gt; ) &lt;br /&gt; UNION ALL &lt;br /&gt; SELECT DISTINCT null, &lt;br /&gt;        'place:type=%ld&amp;sort=%ld&amp;domain='||host||'&amp;domainIsHost=true&lt;br /&gt;          &amp;beginTime='||:begin_time||'&amp;endTime='||:end_time, &lt;br /&gt;        host, host, null, null, null, null, null, null, null &lt;br /&gt; FROM ( &lt;br /&gt;   SELECT DISTINCT get_unreversed_host(rev_host) AS host &lt;br /&gt;   FROM moz_places h &lt;br /&gt;   JOIN moz_historyvisits v ON v.place_id = h.id &lt;br /&gt;   WHERE h.rev_host &lt;&gt; '.' &lt;br /&gt;     AND h.visit_count &gt; 0 &lt;br /&gt;     {QUERY_OPTIONS_VISITS} {QUERY_OPTIONS_PLACES} &lt;br /&gt;     {ADDITIONAL_CONDITIONS} &lt;br /&gt;   UNION &lt;br /&gt;   SELECT DISTINCT get_unreversed_host(rev_host) AS host &lt;br /&gt;   FROM moz_places_temp h &lt;br /&gt;   JOIN moz_historyvisits v ON v.place_id = h.id &lt;br /&gt;   WHERE h.rev_host &lt;&gt; '.' &lt;br /&gt;     AND h.visit_count &gt; 0 &lt;br /&gt;     {QUERY_OPTIONS_VISITS} {QUERY_OPTIONS_PLACES} &lt;br /&gt;     {ADDITIONAL_CONDITIONS} &lt;br /&gt;   UNION &lt;br /&gt;   SELECT DISTINCT get_unreversed_host(rev_host) AS host &lt;br /&gt;   FROM moz_places h &lt;br /&gt;   JOIN moz_historyvisits_temp v ON v.place_id = h.id &lt;br /&gt;   WHERE h.rev_host &lt;&gt; '.' &lt;br /&gt;     AND h.visit_count &gt; 0 &lt;br /&gt;     {QUERY_OPTIONS_VISITS} {QUERY_OPTIONS_PLACES} &lt;br /&gt;     {ADDITIONAL_CONDITIONS} &lt;br /&gt;   UNION &lt;br /&gt;   SELECT DISTINCT get_unreversed_host(rev_host) AS host &lt;br /&gt;   FROM moz_places_temp h &lt;br /&gt;   JOIN moz_historyvisits_temp v ON v.place_id = h.id         &lt;br /&gt;   WHERE h.rev_host &lt;&gt; '.' &lt;br /&gt;     AND h.visit_count &gt; 0 &lt;br /&gt;     {QUERY_OPTIONS_VISITS} {QUERY_OPTIONS_PLACES} &lt;br /&gt;     {ADDITIONAL_CONDITIONS}         &lt;br /&gt;   ORDER BY 1 ASC &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;There's plenty more where this came from:&lt;br /&gt;&amp;nbsp; - &lt;a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/components/places/src/nsNavHistory.cpp"&gt;mozilla-central/source/toolkit/components/places/src/nsNavHistory.cpp&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="https://developer.mozilla.org/en/Places/Query_System"&gt;https://developer.mozilla.org/en/Places/Query_System&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="https://developer.mozilla.org/en/Storage"&gt;https://developer.mozilla.org/en/Storage&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="https://developer.mozilla.org/en/Places/History_Service/Design"&gt;https://developer.mozilla.org/en/Places/History_Service/Design&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you wish to use SQLite from your Java program, there are some drivers available. SQLite also supports a pure memory mode, much like my other favorite database &lt;a href="http://www.h2database.com/"&gt;H2&lt;/a&gt;.&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC"&gt;http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://code.google.com/p/sqlite4java/"&gt;http://code.google.com/p/sqlite4java/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7240112701331480808?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7240112701331480808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7240112701331480808' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7240112701331480808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7240112701331480808'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/10/sqlite-is-brilliant-embedded-sql-engine.html' title='select &apos;Whoa..&apos; || &apos;Cool!&apos; from mozilla_history_storage'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4572052468378821023</id><published>2010-10-10T20:40:00.000-07:00</published><updated>2011-06-18T11:32:30.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Time series, disk swapping, shazam patents and other stories</title><content type='html'>&lt;div id="repository_description" rel="repository_description_edit"&gt;Here's a collection of useful Cassandra and HBase articles I've come across in the past few months:&lt;br /&gt;&lt;br /&gt;Time series storage in the big 2 NoSQL systems - Cassandra and Hbase: &lt;br /&gt;&amp;nbsp; - &lt;a href="http://outerthought.org/lily/417-ot.html" target="_blank"&gt;http://outerthought.org/lily/417-ot.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://markmail.org/search/?q=cassandra+counter+increment" target="_blank"&gt;http://markmail.org/search/?q=cassandra+counter+increment&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="https://www.cloudkick.com/blog/2010/mar/02/4_months_with_cassandra/" target="_blank"&gt;https://www.cloudkick.com/blog/2010/mar/02/4_months_with_cassandra/&lt;/a&gt; &lt;br /&gt;&amp;nbsp; - &lt;a href="http://github.com/zohmg/zohmg"&gt;http://github.com/zohmg/zohmg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Apache Hive vs Pig:&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.jroller.com/otis/entry/hadoop_land_hive_vs_pig" target="_blank"&gt;http://www.jroller.com/otis/entry/hadoop_land_hive_vs_pig&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.larsgeorge.com/2009/10/hive-vs-pig.html" target="_blank"&gt;http://www.larsgeorge.com/2009/10/hive-vs-pig.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cassandra GC and swapping:&lt;br /&gt;&amp;nbsp; - &lt;a href="http://blog.mikiobraun.de/2010/08/cassandra-gc-tuning.html" target="_blank"&gt;http://blog.mikiobraun.de/2010/08/cassandra-gc-tuning.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.riptano.com/blog/whats-new-cassandra-065" target="_blank"&gt;http://www.riptano.com/blog/whats-new-cassandra-065&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Geohash"&gt;Geohashing&lt;/a&gt; sounded like an ingenious concept. Here's something built on Cassandra:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Geohash" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.slideshare.net/mmalone/scaling-gis-data-in-nonrelational-data-stores" target="_blank"&gt;http://www.slideshare.net/mmalone/scaling-gis-data-in-nonrelational-data-stores&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, yeah that's a lot of NoSQL articles to read. Here's a hilarious video against NoSQL to balance it. (Warning: Watch for foul language. For a more civilized roast, see &lt;a href="http://javaforu.blogspot.com/2009/11/roast-of-nosql-by-brian-aker.html"&gt;this&lt;/a&gt;)&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.royans.net/arch/mongodb-is-webscale-humor/" target="_blank"&gt;http://www.royans.net/arch/mongodb-is-webscale-humor/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://javaforu.blogspot.com/2010/01/patents-copyrights-and-reverse.html"&gt;Patent&lt;/a&gt; trouble . Here's the story of a smart guy who wrote a &lt;a href="http://sites.google.com/site/redcodenl/"&gt;music recognizer&lt;/a&gt; over a weekend and got into some trouble with Patent lawyers.&lt;br /&gt;&lt;br /&gt;After a long time, I found a nice &lt;a href="http://weblogs.java.net/blog/johnsmart/archive/2010/09/30/junit-kung-fu-getting-more-out-your-unit-tests"&gt;JUnit presentation&lt;/a&gt; that made me reconsider my decision to switch to TestNG from JUnit.&lt;br /&gt;&lt;br /&gt;Some Linux fun - swapping OS pages and opening 500K sockets (Also see above for what Cassandara did&amp;nbsp; to prevent swapping):&lt;br /&gt;&amp;nbsp; - &lt;a href="http://blog.urbanairship.com/blog/2010/09/29/linux-kernel-tuning-for-c500k/" target="_blank"&gt;http://blog.urbanairship.com/blog/2010/09/29/linux-kernel-tuning-for-c500k/&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://jcole.us/blog/archives/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/" target="_blank"&gt;http://jcole.us/blog/archives/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/&lt;/a&gt;&lt;/div&gt;&lt;div id="repository_description" rel="repository_description_edit"&gt;&lt;br /&gt;Until next time!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4572052468378821023?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4572052468378821023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4572052468378821023' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4572052468378821023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4572052468378821023'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/10/time-series-disk-swapping-shazam.html' title='Time series, disk swapping, shazam patents and other stories'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-129791342919196297</id><published>2010-10-06T10:40:00.003-07:00</published><updated>2011-01-21T23:21:26.498-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><category scheme='http://www.blogger.com/atom/ns#' term='#dads pictures'/><title type='text'>Red Munia or Red Avadavat</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/srjp/5057782544/" title="photo sharing"&gt;&lt;img src="http://farm5.static.flickr.com/4088/5057782544_482737439b.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/srjp/5057782544/"&gt;Red Munia or Red Avadavat&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/srjp/"&gt;SRJP&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Pic taken by my dad - Dr. Jayaprakash.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-129791342919196297?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/129791342919196297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=129791342919196297' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/129791342919196297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/129791342919196297'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/10/red-munia-or-red-avadavat_06.html' title='Red Munia or Red Avadavat'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4088/5057782544_482737439b_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-1474319500165991062</id><published>2010-10-06T10:40:00.001-07:00</published><updated>2011-01-21T23:21:26.499-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><category scheme='http://www.blogger.com/atom/ns#' term='#dads pictures'/><title type='text'>Red Munia or Red Avadavat</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/srjp/5057169567/" title="photo sharing"&gt;&lt;img src="http://farm5.static.flickr.com/4154/5057169567_c2bf531b5e.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/srjp/5057169567/"&gt;Red Munia or Red Avadavat&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/srjp/"&gt;SRJP&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Pic taken by my dad - Dr. Jayaprakash.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-1474319500165991062?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/1474319500165991062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=1474319500165991062' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1474319500165991062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1474319500165991062'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/10/red-munia-or-red-avadavat.html' title='Red Munia or Red Avadavat'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4154/5057169567_c2bf531b5e_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7091295984932999849</id><published>2010-09-26T11:34:00.000-07:00</published><updated>2011-06-18T11:32:30.301-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Txn.commit() - Are you sure?</title><content type='html'>[+ indicates updated on Sep 27, 2010]&lt;br /&gt;&lt;br /&gt;Transactions - do we need them and are people really using them like they are claim to?&lt;br /&gt;&lt;br /&gt;We know that transactions are theoretically the best way to keep data consistent, but it might not always be the most practical way to do it.&lt;br /&gt;&lt;br /&gt;[+]&lt;br /&gt;There could be a variety of reasons:&lt;br /&gt;&amp;nbsp;- Reduced performance after using transactions&lt;br /&gt;&amp;nbsp;- Lack of proper XA support across all the participating resources&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - "Last resource commit"/XA emulation can leave some edge cases in a mess &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - There could be more than 1 resource that does not support XA. In such cases emulation will not work&lt;br /&gt;&amp;nbsp;- There could be a need for nested transactions which are not widely supported&lt;br /&gt;&amp;nbsp;- The transaction manager might not have proper support for repair/recovery of heuristic hazards &lt;br /&gt;&amp;nbsp;- Multi-step transactions that need savepoints and lack of proper support or semantics for restoring it&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Transactions that might be too expensive to retry from the beginning&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - If the client program crashes, then having a new client continue the transaction might not be feasible&lt;br /&gt;&amp;nbsp; &amp;nbsp; - Multi-page, lengthy UI forms that need disconnected data sets &lt;br /&gt;&amp;nbsp;- Impractical for long running transactions and so on..&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Many others have written about it. I'd rather refer to their notes instead of write my own, from scratch: &lt;br /&gt;&amp;nbsp;- &lt;a href="http://www.eaipatterns.com/ramblings/18_starbucks.html"&gt;Starbucks Does Not Use Two-Phase Commit&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://infogrid.org/blog/2010/08/acid-transactions-are-overrated/"&gt;ACID Transactions Are Overrated&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://www.economist.com/node/16646044"&gt;Computer says no&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://qconlondon.com/dl/qcon-london-2010/slides/MarkLittle_TransactionsOverUsedOrJustMisunderstood.pdf" target="_blank"&gt;Transactions - Overused Or Just Misunderstood (Mark Little)&lt;/a&gt; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Remember - if Transactions work for you and all your systems support it, then go for it.&lt;br /&gt;&lt;br /&gt;Having said that, there still are many systems where data flows &lt;a href="http://javaforu.blogspot.com/2010/08/blurring-line-between-messaging-and.html"&gt;across large applications&lt;/a&gt;; where a simpler, resilient and more predictable compensating mechanism is suitable. Simpler it may be, but designing such systems require a lot of foresight and expertise: &lt;br /&gt;&amp;nbsp; - Optimistic concurrency based on version numbers&lt;br /&gt;&amp;nbsp; - Atomic compare-and-swap upsert/update operations&lt;br /&gt;&amp;nbsp; - Polite spin locks and backoff-retry mechanisms&lt;br /&gt;&amp;nbsp; - Clear &lt;a href="http://javaforu.blogspot.com/2010/05/3-laws-of-error-handling-and-everything.html"&gt;error reporting&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - State capture, repair and consistency checking&lt;br /&gt;&amp;nbsp; - Operation logging, undo and re-apply&lt;br /&gt;&amp;nbsp; - Proper documentation and involvement of Developer/Architect &lt;br /&gt;&lt;br /&gt;For much larger systems like Amazon, LinkedIn and the like, availability is as important as consistency. See earlier references - &lt;a href="http://javaforu.blogspot.com/2009/05/all-your-base-are-belong-to-cloud.html"&gt;#1&lt;/a&gt;, &lt;a href="http://javaforu.blogspot.com/2009/11/debate-on-dynamo-and-cassandra.html"&gt;#2&lt;/a&gt;, &lt;a href="http://jsensarma.com/blog/2009/11/01/dynamo-a-flawed-architecture-part-i/"&gt;#3&lt;/a&gt; and &lt;a href="http://www.google.com/search?q=voldemort+eventual+consistency&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a"&gt;#4&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some interesting notes on Transactions that I keep referring to every now and then:&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.jroller.com/pyrasun/entry/xa_exposed_part_iii_the"&gt;XA Exposed, Part III: The Implementor's Notebook&lt;/a&gt;&lt;br /&gt;&amp;nbsp; - &lt;a href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/3732d690-0201-0010-a993-b92aab79701f?QuickLink=index&amp;amp;overridelayout=true"&gt;Distributed Transactions and Two-Phase Commit&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7091295984932999849?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7091295984932999849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7091295984932999849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7091295984932999849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7091295984932999849'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/09/txncommit-are-you-sure.html' title='Txn.commit() - Are you sure?'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3450100849509577026</id><published>2010-09-25T21:26:00.000-07:00</published><updated>2011-01-21T23:21:26.500-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Upper Stevens Creek County Park</title><content type='html'>&lt;a href="http://www.bahiker.com/southbayhikes/usccp.html"&gt;Upper Stevens Creek County Park&lt;/a&gt; is just opposite &lt;a href="http://javaforu.blogspot.com/2010/04/hiking-in-long-ridge-open-space.html"&gt;Long Ridge Open Space Preserve&lt;/a&gt; on CA 35. You have to go down Grizzly Flat trail and then back up. There are 2 trail heads next to each other - The North and the South legs. You can go down one and come back up the other.&lt;br /&gt;&lt;br /&gt;The trail goes about 1.1 miles down where the North and South legs meet. You can go further down to Grizzly flats junction where it meets Canyon trail. There is a nice stream at the bottom. You can cross it and go further down towards Page Mill. I however, turned around and came back up.&lt;br /&gt;&lt;br /&gt;This is not an easy trail. It is about as steep as &lt;a href="http://javaforu.blogspot.com/2010/08/hiking-in-windy-hill-open-space.html"&gt;Windy Hill Open Space Preserve&lt;/a&gt;, probably a little less. But the whole trail is always in the shade and is very quiet and pleasant.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3450100849509577026?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3450100849509577026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3450100849509577026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3450100849509577026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3450100849509577026'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/09/hiking-in-upper-stevens-creek-county.html' title='Hiking in Upper Stevens Creek County Park'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7198700099862272761</id><published>2010-09-18T20:29:00.000-07:00</published><updated>2011-04-07T22:18:03.399-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>Whither ORM?</title><content type='html'>If you are scratching your head wondering why even after so many years there is still a confusing mix of ORM solutions, then you are not alone.&lt;br /&gt;&lt;br /&gt;JPA/JDO/Hibernate/Spring/Mybatis/Cayenne - which one and why?&lt;br /&gt;&lt;br /&gt;And if you are planning to write something on your own when there already are so many, then you should probably go read about &lt;a href="http://en.wikipedia.org/wiki/Not_Invented_Here"&gt;NIH&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm actually amazed that even after the relative acceptance of NoSQL we are still struggling to standardize on ORM for SQL/RDBMS.&lt;br /&gt;&lt;br /&gt;It's &lt;strike&gt;almost&lt;/strike&gt; like a religious debate:&lt;br /&gt;&amp;nbsp;- &lt;a href="https://www.jfire.org/modules/phpwiki/index.php/Why%20not%20JPA"&gt;https://www.jfire.org/modules/phpwiki/index.php/Why%20not%20JPA&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://www.datanucleus.org/products/accessplatform/persistence_api.html"&gt;http://www.datanucleus.org/products/accessplatform/persistence_api.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://www.datanucleus.org/products/accessplatform/jdo_jpa_faq.html"&gt;http://www.datanucleus.org/products/accessplatform/jdo_jpa_faq.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://www.dzone.com/links/search.html?query=jdo"&gt;http://www.dzone.com/links/search.html?query=jdo&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://www.dzone.com/links/search.html?query=jpa"&gt;http://www.dzone.com/links/search.html?query=jpa&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://java.dzone.com/articles/jpa-performance-optimization"&gt;http://java.dzone.com/articles/jpa-performance-optimization&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Good old Apache itself has 2 solid implementations of JPA and JDO. Both seem very mature and very well documented:&lt;br /&gt;&amp;nbsp;- &lt;a href="http://db.apache.org/jdo/why_jdo.html"&gt;http://db.apache.org/jdo/why_jdo.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://openjpa.apache.org/"&gt;http://openjpa.apache.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Apache also has some offbeat/non-standard implementations. Some dead, some doing well:&lt;br /&gt;&amp;nbsp;- &lt;a href="http://cayenne.apache.org/why-cayenne.html"&gt;http://cayenne.apache.org/why-cayenne.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://db.apache.org/"&gt;http://db.apache.org/&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://www.mybatis.org/"&gt;http://www.mybatis.org/&lt;/a&gt; - formerly Apache iBatis&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7198700099862272761?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7198700099862272761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7198700099862272761' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7198700099862272761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7198700099862272761'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/09/whither-orm.html' title='Whither ORM?'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-2822021208035665323</id><published>2010-09-18T19:39:00.000-07:00</published><updated>2011-01-21T23:19:57.354-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Reading a busy Twitter stream with @s and #s is as hard as parsing unformatted XML with your eyes - correction, with 1 eye closed.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-2822021208035665323?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/2822021208035665323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=2822021208035665323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2822021208035665323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2822021208035665323'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/09/reading-busy-twitter-stream-is-as-hard.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7823590601861086458</id><published>2010-09-18T15:26:00.000-07:00</published><updated>2011-01-21T23:20:47.831-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#books'/><title type='text'>Books I read in the last few months</title><content type='html'>&lt;a href="http://amzn.com/0765319640"&gt;Blindsight&lt;/a&gt; by Peter Watts: I thoroughly enjoyed reading this book. Although the ending was a bit of a let down, the amount of research that has gone into writing this book is impressive. It has a very refreshing combination of bio-chemistry, human vision, psychology and AI.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://amzn.com/0441016006"&gt;Galactic North&lt;/a&gt; by Alastair Reynolds: A collection of short stories. Generally, I try to stay away from short stories because I feel the characters do not have time to develop and neither does the story. This one however has a continuous feel across stories and is worth reading if you liked Revelation Space.            &lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://amzn.com/0765340356"&gt;Eifelheim&lt;/a&gt; by Michael Flynn: Another Hugo nominee (I think). Not too bad it you'd rather have the story wander off into a medieval village setting during the time of the Black Death. Certainly not in the same league as the Sci-Fi masters.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://amzn.com/039333869X"&gt;Liar's Poker&lt;/a&gt; by Michael Lewis: This is not sci-fi at all. It's a 20 year old book about an Investment bank - the infamous Salomon brothers. They say history repeats itself. Just replace Salomon Brothers with Lehman Brothers and add a generous measure of greed and short sightedness. This is a very funny book considering what the book is all about. Well worth the read.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://amzn.com/076534825X"&gt;Spin&lt;/a&gt; by Robert Charles Wilson: Here's one I tried reading but just couldn't get myself to finish it. For a Hugo award nominee this was a disastrous read.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7823590601861086458?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7823590601861086458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7823590601861086458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7823590601861086458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7823590601861086458'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/09/books-i-read-in-last-few-months.html' title='Books I read in the last few months'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-846275990281642830</id><published>2010-09-12T14:21:00.000-07:00</published><updated>2011-01-21T23:21:26.501-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Skyline Ridge Open Space Preserve</title><content type='html'>&lt;a href="http://www.bahiker.com/southbayhikes/skyline1.html%20"&gt;Skyline Ridge Open Space Preserve&lt;/a&gt;, is right next door to &lt;a href="http://javaforu.blogspot.com/search?q=russian+ridge"&gt;Russian Ridge&lt;/a&gt; off CA 35. This is perhaps one of the nicest hikes for beginners. Gentle slopes, good combination of shade and open trails, great view just a mile into the hike, a park bench and a pond (actually 2) at the end of the 1.5 mile Ipiwa trail.&lt;br /&gt;&lt;br /&gt;Start from the Skyline parking lot and follow the Ipiwa trail, cross Old Page Mill road and you will reach Alpine Pond. There are many shorter walkways you can use to spend time around the pond. Then head back the same way to Skyline parking.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-i8jW7I2gyg/TI1CJ0x3TcI/AAAAAAAAAk8/VHKZLVx8VYk/s1600/Skyline_ridge-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_-i8jW7I2gyg/TI1CJ0x3TcI/AAAAAAAAAk8/VHKZLVx8VYk/s400/Skyline_ridge-1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-i8jW7I2gyg/TI1CPTsU4vI/AAAAAAAAAlA/EXcQtO4Cfjs/s1600/Skyline_ridge-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_-i8jW7I2gyg/TI1CPTsU4vI/AAAAAAAAAlA/EXcQtO4Cfjs/s400/Skyline_ridge-2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-i8jW7I2gyg/TI1CU5y0khI/AAAAAAAAAlE/w8bD_HsU2FI/s1600/Skyline_ridge-Alpine-pond.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_-i8jW7I2gyg/TI1CU5y0khI/AAAAAAAAAlE/w8bD_HsU2FI/s400/Skyline_ridge-Alpine-pond.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-846275990281642830?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/846275990281642830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=846275990281642830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/846275990281642830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/846275990281642830'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/09/hiking-in-skyline-ridge-open-space.html' title='Hiking in Skyline Ridge Open Space Preserve'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-i8jW7I2gyg/TI1CJ0x3TcI/AAAAAAAAAk8/VHKZLVx8VYk/s72-c/Skyline_ridge-1.jpg' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Skyline Ridge Regional Open Space, La Honda, CA 94020, USA</georss:featurename><georss:point>37.3029897 -122.1774431</georss:point><georss:box>37.2859212 -122.20662560000001 37.3200582 -122.1482606</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3228794571995729662</id><published>2010-08-15T19:43:00.000-07:00</published><updated>2011-01-21T23:19:57.355-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>If life is a journey, shouldn't we be traveling light?&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3228794571995729662?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3228794571995729662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3228794571995729662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3228794571995729662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3228794571995729662'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/08/if-life-is-journey-shouldnt-we-be.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-8482744587339435275</id><published>2010-08-13T00:48:00.000-07:00</published><updated>2011-06-18T11:32:30.394-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>The blurring line between Messaging and Storage</title><content type='html'>Alternate Google Docs link: &lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=18DSDl9xCgR_v9iJ_WA7aq3TOscT426cfJUepln3AFtfB128Ci3sjJOjYO9yQ&amp;hl=en"&gt;The Blurring Line&lt;/a&gt; (&lt;a href="http://goo.gl/HKX2t"&gt;http://goo.gl/HKX2t&lt;/a&gt;)&lt;br&gt;&lt;br&gt;&lt;object data="http://d1.scribdassets.com/ScribdViewer.swf" height="600" id="doc_10581" name="doc_10581" style="outline: medium none;" type="application/x-shockwave-flash" width="100%"&gt;                &lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;                 &lt;param name="wmode" value="opaque"&gt;                 &lt;param name="bgcolor" value="#ffffff"&gt;                 &lt;param name="allowFullScreen" value="true"&gt;                 &lt;param name="allowScriptAccess" value="always"&gt;                 &lt;param name="FlashVars" value="document_id=35825064&amp;access_key=key-t4xsh0t23f4xjmy0gqa&amp;page=1&amp;viewMode=list"&gt;                 &lt;embed id="doc_10581" name="doc_10581" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=35825064&amp;access_key=key-t4xsh0t23f4xjmy0gqa&amp;page=1&amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="600" width="100%" wmode="opaque" bgcolor="#ffffff"&gt;&lt;/embed&gt;             &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-8482744587339435275?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/8482744587339435275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=8482744587339435275' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8482744587339435275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8482744587339435275'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/08/blurring-line-between-messaging-and.html' title='The blurring line between Messaging and Storage'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7236048062981928393</id><published>2010-08-01T19:13:00.000-07:00</published><updated>2011-01-21T23:21:26.502-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Windy Hill Open Space Preserve</title><content type='html'>This time unlike &lt;a href="http://www.bahiker.com/southbayhikes/whsrhg.html"&gt;the last&lt;/a&gt;, I started from the CA 35 entrance, and hiked down first and then back up. 1.8 miles of pretty steep incline each way. Best avoided if you haven't hiked in a while. The view of the entire Bay Area is unbeatable and worth the climb.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7236048062981928393?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7236048062981928393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7236048062981928393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7236048062981928393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7236048062981928393'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/08/hiking-in-windy-hill-open-space.html' title='Hiking in Windy Hill Open Space Preserve'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6907585117367686045</id><published>2010-07-31T23:17:00.000-07:00</published><updated>2011-06-18T11:32:30.289-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Carbonado, Graphs, FUSE, Merge-Join and assorted stuff</title><content type='html'>This month in tech... before that, here's a &lt;a href="http://proguard.sourceforge.net/index.html#/testimonials.html"&gt;testimonial&lt;/a&gt; for an open source project that you can't beat: &lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;You could've been rich - My mother&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;Moving on, I heard about a persistence API called &lt;a href="http://carbonado.sourceforge.net/index.html"&gt;Carbonado&lt;/a&gt; on the Voldemort forums. It's an open source project from the Amazon guys. It's a no frills (&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=42847"&gt;read clean and simple&lt;/a&gt;) layer that works with Berkley DB and JDBC. It's even &lt;a href="http://www.oracle.com/technology/products/berkeley-db/faq/je_faq.html#47"&gt;blessed &lt;/a&gt;by the BDB guys as a nicer layer on top of BDB.&lt;br /&gt;&lt;br /&gt;Here's a &lt;a href="http://www.slideshare.net/ydn/3-xxl-graphalgohadoopsummit2010"&gt;decent presentation&lt;/a&gt;  on graph algorithms from the Hadoop summit. Not very detailed, more like best practices and hints. And here's a nice illustration of &lt;a href="http://williamcotton.com/pagerank-explained-with-javascript"&gt;PageRank using Javascript&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;An &lt;a href="http://mail.openjdk.java.net/pipermail/hotspot-gc-use/2010-July/thread.html#656"&gt;interesting thread&lt;/a&gt; going on between the Hotspot GC team and a HBase engineer facing some GC problems. Have a look at the new generation sizes they've used for some deployments, it was new to me.&lt;br /&gt;&lt;br /&gt;If you want to OD on JVM options, there's a &lt;a href="http://blogs.sun.com/watt/resource/jvm-options-list.html"&gt;list&lt;/a&gt; for that too.&lt;a href="http://blogs.sun.com/watt/resource/jvm-options-list.html"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some folks playing with the userland filesystem in Unix - FUSE. &lt;a href="http://pl.atyp.us/wordpress/?p=2917"&gt;Voldemort&lt;/a&gt;, &lt;a href="http://blog.ksplice.com/2010/07/building-filesystems-the-way-you-build-web-apps/"&gt;Github&lt;/a&gt; and all sorts of funny stuff as Filesystems. Reminds me of GDrive.&lt;br /&gt;&lt;br /&gt;NoSQL systems are notorious for not being able to do simple Joins. Their answer is Map-Reduce. For running multi-attribute filtering, there's &lt;a href="http://www.necessaryandsufficient.net/2010/02/join-algorithms-illustrated/"&gt;Merge-Join&lt;/a&gt;. Google's App Engine which is like a poor man's data store &lt;a href="http://www.scribd.com/doc/16952419/Building-scalable-complex-apps-on-App-Engine"&gt;suggests the same (slide 30)&lt;/a&gt;. I am skeptical of such queries that run on a cluster of machines, without any indexes, burning CPU on all machines, moving data back and forth. Can't imagine what it does to latency.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6907585117367686045?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6907585117367686045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6907585117367686045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6907585117367686045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6907585117367686045'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/carbonado-graphs-fuse-merge-join-and.html' title='Carbonado, Graphs, FUSE, Merge-Join and assorted stuff'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-8392792729834719777</id><published>2010-07-27T21:29:00.001-07:00</published><updated>2011-01-21T23:19:57.356-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Overheard in a coffee shop: "A few yrs ago I was young and restless. Now I'm just old and breathless most of the time".&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-8392792729834719777?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/8392792729834719777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=8392792729834719777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8392792729834719777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8392792729834719777'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/overheard-in-coffee-shop-few-yrs-ago-i.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3423746532477363510</id><published>2010-07-25T14:27:00.000-07:00</published><updated>2011-06-18T11:32:30.151-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Apache Cassandra for first timers</title><content type='html'>I wanted to get a feel for how &lt;a href="http://wiki.apache.org/cassandra/GettingStarted"&gt;Apache Cassandra&lt;/a&gt; works, so I downloaded and installed (just copied) the files. I decided to run the single node test. Here's what I did on my Windows 7 laptop:&lt;br /&gt;&lt;br /&gt;1) Download and unzip the latest Cassandra zip file to some folder - D:\Dump\apache-cassandra-0.6.3&lt;br /&gt;2) Open a command prompt at the main Cassandra directory and type - bin\cassandra.bat&lt;br /&gt;3) That's it! You have a single node server that is running with the defaults. It creates and starts logging to some default location. In my case it was - D:\var\lib\cassandra\&lt;br /&gt;&lt;br /&gt;Now, I wasn't too happy with the default Keyspace configuration - this is the "schema". So, I shut down the server, deleted the log directory and modified the configuration file in conf\storage-conf.xml. I simplified the Keyspace to 2 simple sub-sets - a column family called Message and a super column family called Car.&lt;br /&gt;&lt;br /&gt;The more I look at the Cassandra column family structure, the more it reminds me of XML.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/489879.js?file=storage-conf.xml"&gt;&lt;/script&gt;&lt;br /&gt;Then I started the &lt;a href="http://wiki.apache.org/cassandra/CassandraCli"&gt;CLI&lt;/a&gt; batch file to punch in some commands. I wasn't expecting this. I was really looking forward to a simple Java client program and there isn't any. So, those HBase guys were not kidding they said Cassandra does not have a simple client program. You have to use a Thrift client or some other &lt;a href="http://wiki.apache.org/cassandra/ClientOptions"&gt;third party client&lt;/a&gt; like Hector. I wasn't too eager to do that so I just went the command line way.&lt;br /&gt;&lt;br /&gt;It seemed easy enough. It takes a few minutes to understand which one is the key name, the column family name and the super column family name. The advantage is that it's like a hierarchy of SortedMaps. Which means that the keys across records do not even have to have the same column names. Notice that there are some slight differences in the columns I've entered like - "Upgrade", "Leather seats" or "AWD" which are not there in the other records. So, there is some flexibility.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/489879.js?file=cli-commands.bat"&gt;&lt;/script&gt;&lt;br /&gt;Some thought must be given to how efficient the storage is when you intend to store millions of records at the column/super column family/column family level. Search for discussions in the &lt;a href="http://www.mail-archive.com/search?q=ColumnFamily&amp;amp;l=cassandra-user@incubator.apache.org&amp;amp;o=relevance&amp;amp;start=10"&gt;Cassandra-User&lt;/a&gt; mailing list. There are lots of &lt;a href="http://www.mail-archive.com/search?l=cassandra-user%40incubator.apache.org&amp;amp;q=ColumnFamilies"&gt;such discussions&lt;/a&gt; and on which mode is better.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Thoughts:&lt;/b&gt;&lt;br /&gt;1) The installation is easy but the lack of a proper client is bothersome&lt;br /&gt;2) CLI looks good for key-value type of queries, but I was really interested in those queries on slices and ranges. I couldn't find anything ready made&lt;br /&gt;3) Hbase and Hive along with &lt;a href="http://www.cloudera.com/blog/2010/07/whats-new-in-cdh3b2-hue/"&gt;Cloudera's Beeswax&lt;/a&gt; UI for running SQL-like queries are very compelling. But, have a look at the &lt;a href="http://hbase.apache.org/docs/current/cygwin.html"&gt;HBase installation&lt;/a&gt;. It doesn't look easy. That's why I decided to try Cassandra.&lt;br /&gt;4) This &lt;a href="http://whynosql.com/cassandra-vs-hbase/"&gt;article here&lt;/a&gt;, is the most succinct comparison of Cassandra and HBase&lt;br /&gt;&lt;br /&gt;Until next time!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3423746532477363510?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3423746532477363510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3423746532477363510' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3423746532477363510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3423746532477363510'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/apache-cassandra-for-first-timers.html' title='Apache Cassandra for first timers'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4305476207481447098</id><published>2010-07-20T22:43:00.000-07:00</published><updated>2011-04-07T22:18:03.402-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>/dev/null on Windows</title><content type='html'>I was trying to run &lt;a href="http://javaforu.blogspot.com/2010/07/weekend-at-zookeeper.html"&gt;Apache ZooKeeper on Windows&lt;/a&gt; the other day. Getting it to run was super easy. I was more interested in running it without any file/snapshot logging.&lt;br /&gt;&lt;br /&gt;I did ask around in the &lt;a href="http://zookeeper-user.578899.n2.nabble.com/ZK-recovery-questions-tt5310116.html#a5319372"&gt;forums&lt;/a&gt; and I thought letting the "dataDir" directory to point to "/dev/null" would solve the problem. But being a (ahem) Windows user I couldn't quite get the "/dev/null" to work. In &lt;a href="http://technet.microsoft.com/en-us/library/bb463207.aspx"&gt;Windows the equivalent&lt;/a&gt; is "nul" but it doesn't quite work when you try to use it from Java. Some operations work, but some don't.&lt;br /&gt;&lt;br /&gt;[&lt;b&gt;Update 1:&lt;/b&gt; &lt;br /&gt;Strangely &lt;code&gt;getAbsolutePath()&lt;/code&gt; prepends the current directory's path but the file does not get created.&lt;br /&gt;Creating &lt;code&gt;nul:\abc.log&lt;/code&gt; throws an exception. But &lt;code&gt;nul:abc.log&lt;/code&gt; does not and Java says its absolute path is &lt;code&gt;d:\dump\nul:abc.log&lt;/code&gt; but the file is not there. Which means that it is indeed writing to the "null" device. I wonder what I'm missing.]&lt;br /&gt;&lt;br /&gt;As usual, the full code is here: &lt;a href="http://gist.github.com/484116"&gt;http://gist.github.com/484116&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/484116.js?file=DevNullTest.java"&gt;&lt;/script&gt;&lt;br /&gt;Here's the output and it shows what works and what doesn't:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/484116.js?file=output.log"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4305476207481447098?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4305476207481447098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4305476207481447098' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4305476207481447098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4305476207481447098'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/devnull-on-windows.html' title='/dev/null on Windows'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4053840248587644127</id><published>2010-07-18T10:41:00.000-07:00</published><updated>2011-01-21T23:20:47.832-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#books'/><title type='text'>Years before Inception (movie)</title><content type='html'>Here's a short list of TV episodes where similar concepts of dream manipulation and recursive realities were explored decades ago:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Avengers 1967:&lt;/b&gt;&lt;br /&gt;Deaths Door (A series of Diplomats are drugged and forced to participate in their own nightmares. On waking up, events unfold just like the nightmare - all the way up to the Diplomatic event)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Star Trek: The Next Generation: Season 6:&lt;/b&gt;&lt;br /&gt;Ship in a Bottle (A sentient hologram of Dr. Moriarty tricks the crew into thinking they are back on the ship after visiting the Holodeck. In actuality they are in a hologram ship inside another hologram.)&lt;br /&gt;&lt;br /&gt;Frame of Mind (An officer is trapped and taken prisoner while on a mission. He is then drugged and his dreams are tampered with. He starts thinking that his actual life on the Enterprise was a delusion and is convinced to find closure with his delusional characters by killing them in his mind among other things)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Star Trek: Voyager: Season 2&lt;/b&gt;&lt;br /&gt;Projections (The ships holographic doctor is convinced into believing that he is not a hologram but the actual hologram designer who has got lost in his own mental simulations on a Star base near Jupiter. He is asked to give up control of the ship to end the simulation)&lt;br /&gt;&lt;br /&gt;Similar types of episodes in Mission Impossible Season 1 (1966) and 2.&lt;br /&gt;&lt;br /&gt;[Update 1: Also see &lt;a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/DreamWithinADream"&gt;DreamWithinADream&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4053840248587644127?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4053840248587644127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4053840248587644127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4053840248587644127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4053840248587644127'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/years-before-inception-movie.html' title='Years before Inception (movie)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7478836865025513074</id><published>2010-07-17T11:24:00.001-07:00</published><updated>2011-01-21T23:19:57.357-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Having 2 chins is better than 1... Not!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7478836865025513074?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7478836865025513074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7478836865025513074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7478836865025513074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7478836865025513074'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/having-2-chins-is-better-than-1.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5353562201755021098</id><published>2010-07-12T23:16:00.000-07:00</published><updated>2011-01-21T23:19:57.358-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>It occurs to me that our mind is like a snow globe and the snow is our thoughts and ideas. It is most beautiful when the snow is swirling around the glass.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5353562201755021098?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5353562201755021098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5353562201755021098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5353562201755021098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5353562201755021098'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/it-occurs-to-me-that-our-mind-is-like.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5498568786207244114</id><published>2010-07-11T23:00:00.000-07:00</published><updated>2011-06-18T11:32:30.214-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>A simple (Project) Voldemort test on Windows</title><content type='html'>Here's a simple &lt;a href="http://project-voldemort.com/quickstart.php"&gt;Voldemort&lt;/a&gt; test program. It's basically the one that ships with the project but with a few, little modifications to make it work on Windows/Cygwin.&lt;br /&gt;&lt;br /&gt;First off, the server scripts are all Unix shell scripts. So, I had to install &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt; on my Windows 7 laptop. Then the most essential&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; bin/voldemort-server.sh&lt;/span&gt; script had to be modified a little to work with Cygwin because Java does not recognize the Cygwin mapped Path and Classpaths like &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/cygdrive/d/Dump/voldemort-0.81&lt;/span&gt;. You have to wrap paths with &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cygpath&lt;/span&gt; to map them back to the actual paths:&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;java -cp &lt;span class="k"&gt;$(&lt;/span&gt;cygpath -w -p -l -a &lt;span class="nv"&gt;$CLASSPATH&lt;/span&gt;&lt;/span&gt;&lt;span class="k" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;) ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The simple Java client test program needs &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dist/voldemort-0.81.jar&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dist/voldemort-test-0.81.jar&lt;/span&gt;. I had to find out about the second jar from their &lt;a href="http://code.google.com/p/project-voldemort/issues/detail?id=231"&gt;issues list&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;That's it! Now, you can start the single node server and run the client Java program as many times as you like.&lt;br /&gt;&lt;br /&gt;All the files are available here: &lt;a href="http://gist.github.com/472163"&gt;http://gist.github.com/472163&lt;/a&gt;. Here are the snippets.&lt;br /&gt;&lt;br /&gt;Client:&lt;br /&gt;&lt;script src="http://gist.github.com/472163.js?file=SimpleVTest.java"&gt;&lt;/script&gt;&lt;br /&gt;Server script:&lt;br /&gt;&lt;script src="http://gist.github.com/472163.js?file=voldemort-server.sh"&gt;&lt;/script&gt;&lt;br /&gt;Client output:&lt;br /&gt;&lt;script src="http://gist.github.com/472163.js?file=client.log"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5498568786207244114?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5498568786207244114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5498568786207244114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5498568786207244114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5498568786207244114'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/simple-project-voldemort-test-on.html' title='A simple (Project) Voldemort test on Windows'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7027799442538347230</id><published>2010-07-05T09:48:00.000-07:00</published><updated>2011-01-21T23:21:26.504-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Bay Area at Sunrise</title><content type='html'>Waking up at 4.30 in the morning on a holiday to watch the sunrise is not something people even think of doing. Today, I did exactly that.&lt;br /&gt;&lt;br /&gt;I was up before dawn and was on my way to Page Mill Road (off CA 280) to watch the Sun rise. This being my first time (waking up this early, I mean) I was unsure of where to go. So, I chose my regular hiking spots. I drove up Page Mill before Sun rise (5.50 AM) and was well on my way up the hills.&lt;br /&gt;&lt;br /&gt;There was no one in sight. No bikers! Yay! I saw quite a few deer grazing next to the road and many hare/rabbits. It was peaceful, cool and smelled like wild flowers. I drove down Page mill, stopping at a few places to take pictures. At this hour, all the parks are still closed. Your best bet is to drive towards the end of Page Mill, beyond Montebello and even cross the CA 35 intersection. There is one area which leads to private property. You can pull over in front of the gate and take a few snaps quickly. It's a pity there aren't any vista points to park and enjoy the sun rise on Page Mill.&lt;br /&gt;&lt;br /&gt;(Move your mouse over the images to see descriptions.) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4766115900/" title="Sun rise. View from Page mill road. Few miles before reaching Montebello preserve by ashwin.jayaprakash, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4096/4766115900_095aef652f.jpg" width="500" height="255" alt="Sun rise. View from Page mill road. Few miles before reaching Montebello preserve"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4764460918/" title="Sun rise. View from Page mill road. Few miles before reaching Montebello preserve by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Sun rise. View from Page mill road. Few miles before reaching Montebello preserve" height="283" src="http://farm5.static.flickr.com/4094/4764460918_6abeafe3b9.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4764461684/" title="Woodside and areas west of CA 280. Just a few minutes after sunrise by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Woodside and areas west of CA 280. Just a few minutes after sunrise" height="328" src="http://farm5.static.flickr.com/4135/4764461684_30404cf43f.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4764462076/" title="Sun rising. Almost the end of Page mill road by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Sun rising. Almost the end of Page mill road" height="268" src="http://farm5.static.flickr.com/4076/4764462076_63641e5521.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4763825689/" title="Sun rising. Almost the end of Page mill road by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Sun rising. Almost the end of Page mill road" height="304" src="http://farm5.static.flickr.com/4141/4763825689_8613502173.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then, when I reached CA 35, I continued down Page Mill for a few miles and then turned around. Went north again on CA 35. Just a mile or so from that intersection, there is a vista point overlooking the Bay Area. This is a nice spot. The sun had already risen by the time I got here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4764463588/" title="Sun rise over the Bay Area by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Sun rise over the Bay Area" height="358" src="http://farm5.static.flickr.com/4096/4764463588_1f68c9a7fd.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4764463982/" title="Sun rise over the Bay Area by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Sun rise over the Bay Area" height="217" src="http://farm5.static.flickr.com/4078/4764463982_c8c6fbd7f2.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4764465054/" title="It's not the ocean, it's the Bay Area!! Low level clouds by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="It's not the ocean, it's the Bay Area!! Low level clouds" height="271" src="http://farm5.static.flickr.com/4122/4764465054_c2bb7bd237.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4763828623/" title="It's not the ocean, it's the Bay Area!! Low level clouds by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="It's not the ocean, it's the Bay Area!! Low level clouds" height="227" src="http://farm5.static.flickr.com/4142/4763828623_9a7ee91bc5.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4764466662/" title="Deja (rear) view? The future looks just like the past by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Deja (rear) view? The future looks just like the past" height="333" src="http://farm5.static.flickr.com/4141/4764466662_5402e58a4d.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Overall, it was worth it. I was back home by 8 AM! The Bay Area was still cloudy. It was a surprising discovery for me to see that the hills are actually clear of fog and clouds. It's only at sea level, where the early morning are gray and dull.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ashwinjay/4763830263/" title="Back to CA 280. 7.30 AM and still cloudy at sea level by ashwin.jayaprakash, on Flickr"&gt;&lt;img alt="Back to CA 280. 7.30 AM and still cloudy at sea level" height="315" src="http://farm5.static.flickr.com/4139/4763830263_f09f513287.jpg" width="500" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7027799442538347230?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7027799442538347230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7027799442538347230' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7027799442538347230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7027799442538347230'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/bay-area-at-sunrise.html' title='Bay Area at Sunrise'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4096/4766115900_095aef652f_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5296619800034610532</id><published>2010-07-04T19:28:00.000-07:00</published><updated>2011-06-18T11:32:30.195-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Weekend at the Zoo(Keeper)</title><content type='html'>I've &lt;a href="http://javaforu.blogspot.com/search?q=zookeeper"&gt;written&lt;/a&gt; about &lt;a href="http://hadoop.apache.org/zookeeper/"&gt;Apache ZooKeeper&lt;/a&gt; before, but I had never actually tried it. Only today did I get a chance to play with it.&lt;br /&gt;&lt;br /&gt;The ZooKeeper recipes really piqued my curiosity. So after spending a few hours reading the docs, I decided to give it a try. My interest was purely the performance side of it. ZK makes it very clear in the docs that it excels under read-heavy workloads. And the more replicated servers you add, the better it gets. They were not kidding.&lt;br /&gt;&lt;br /&gt;I have my test code here -&lt;a href="http://gist.github.com/463930"&gt;http://gist.github.com/463930&lt;/a&gt;. Keep in mind that this is a simple test, perhaps even a micro benchmark. It does not even have the minimum 3 servers for a quorum. Remember, my tests were run on a new (2010) laptop with 4 hyper threads with some simple Xms/Xmx JVM settings and everything else remaining as is - default, out of the box. This is by no means a representative test. There are &lt;a href="http://wiki.apache.org/hadoop/ZooKeeper/ServiceLatencyOverview"&gt;official numbers on the ZK wiki&lt;/a&gt; with tests run on a real server class machine. You should have a look at those too&lt;br /&gt;&lt;br /&gt;Well, what can I say - it is a little slow. Even writing messages with a few bytes take a while. Granted, each write in a loop requires a network call. So, if I write a 1000 messages, it requires a 1000 remote/network calls. The &lt;code&gt;CreateMode.PERSISTENT_SEQUENTIAL&lt;/code&gt; is very handy, like the RDBMS autogenerated-id column.&lt;br /&gt;&lt;br /&gt;I would've liked a few more batch-oriented calls like getDataForChildren() and createIfAbsent() instead of making 2 calls first to find out the child names and then to get the actual data. But hey, I'm just trying to shoehorn it into a wrong usecase. &lt;br /&gt;&lt;br /&gt;This is the simple test and the sample console output is further below. You can always get the full code from my Gist repo :&lt;br /&gt;&lt;script src="http://gist.github.com/463930.js?file=SimpleZkTest.java"&gt;&lt;/script&gt;&lt;br /&gt;Console output:&lt;br /&gt;&lt;script src="http://gist.github.com/463930.js?file=output.log"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5296619800034610532?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5296619800034610532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5296619800034610532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5296619800034610532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5296619800034610532'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/07/weekend-at-zookeeper.html' title='Weekend at the Zoo(Keeper)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6095358991222430365</id><published>2010-06-27T10:28:00.000-07:00</published><updated>2011-01-21T23:21:26.505-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Russian Ridge (again)</title><content type='html'>I went hiking in Russian Ridge  (&lt;a href="http://javaforu.blogspot.com/2010/04/hiking-in-russian-ridge-open-space.html"&gt;again&lt;/a&gt;) yesterday. I had been there just a few weeks ago. This time, I took 2 photos from my cell phone. So, they're not so great. Summer is here and it was hotter and so everything has started to dry up. Too many flies on the trails for some reason. The open trails here mean that you should best avoid it during summer.&lt;br /&gt;&lt;br /&gt;Yes, that's a blanket of fog on the trees, in the background. They are not clouds. It looks wonderful.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-i8jW7I2gyg/TCeInMuxRpI/AAAAAAAAAi4/CRtW5GN-HKk/s1600/russian_ridge.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="http://3.bp.blogspot.com/_-i8jW7I2gyg/TCeInMuxRpI/AAAAAAAAAi4/CRtW5GN-HKk/s400/russian_ridge.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-i8jW7I2gyg/TCeJ0SqnuYI/AAAAAAAAAjA/h-pYNmO1Gzo/s1600/russian_ridge_2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="http://2.bp.blogspot.com/_-i8jW7I2gyg/TCeJ0SqnuYI/AAAAAAAAAjA/h-pYNmO1Gzo/s400/russian_ridge_2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6095358991222430365?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6095358991222430365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6095358991222430365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6095358991222430365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6095358991222430365'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/06/hiking-in-russian-ridge-again.html' title='Hiking in Russian Ridge (again)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-i8jW7I2gyg/TCeInMuxRpI/AAAAAAAAAi4/CRtW5GN-HKk/s72-c/russian_ridge.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-1063186342011826608</id><published>2010-06-26T09:57:00.000-07:00</published><updated>2011-01-21T23:19:29.347-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><title type='text'>Funny JavaZone Video</title><content type='html'>Here's a funny vid to watch over the weekend (it's only a few minutes long). Still strictly Java related, mind you:&lt;p&gt;&lt;object width="580" height="360"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KrfpnbGXL70&amp;hl=en_US&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/KrfpnbGXL70&amp;hl=en_US&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="360"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-1063186342011826608?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/1063186342011826608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=1063186342011826608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1063186342011826608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1063186342011826608'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/06/funny-javazone-video.html' title='Funny JavaZone Video'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-9054582454258389489</id><published>2010-06-24T22:21:00.000-07:00</published><updated>2011-06-18T11:32:30.452-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#system'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Varnish, Voldemort, Virtualization and other vaguely related stuff</title><content type='html'>&lt;div style="text-align: justify;"&gt;A few interesting articles I read these past 2 weeks:&lt;br /&gt;&lt;br /&gt;1) Voldemort presentation at QCon - &lt;a href="http://www.infoq.com/presentations/Project-Voldemort-at-Gilt-Groupe" target="_blank"&gt;Project &lt;wbr&gt;&lt;/wbr&gt;Voldemort at Gilt Groupe&lt;/a&gt;. I didn't know that Voldemort was storage independent. Interesting to see the different storage options they tested. Lots of other useful presentations from &lt;a href="http://qconlondon.com/london-2010/schedule/wednesday.jsp"&gt;QCon London 2010&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2) Some fairly detailed and low level notes on systems stuff like swapping and paging from the guys who wrote Varnish page cache - &lt;a href="http://queue.acm.org/detail.cfm?id=1814327" target="_blank"&gt;You're Doing It Wrong&lt;/a&gt;. The original &lt;a href="http://varnish-cache.org/wiki/ArchitectNotes"&gt;Varnish Architect notes&lt;/a&gt; describes the remaining details.&lt;br /&gt;&lt;br /&gt;3) The latency and throughput numbers of Market data - &lt;a href="http://www.latencystats.com/" target="_blank"&gt;http://www.latencystats.com/&lt;/a&gt; and &lt;a href="http://www.marketdatapeaks.com/" target="_blank"&gt;http://www.marketdatapeaks.&lt;wbr&gt;&lt;/wbr&gt;com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) Azul Systems opens up a part of their awesome runtime - &lt;a href="http://www.managedruntime.org/" target="_blank"&gt;http://www.managedruntime.org/&lt;/a&gt;. They have a Linux kernel module for better memory management. I'll follow this with interest, being a fan of the awesome Dr. Cliff Click.&lt;br /&gt;&lt;br /&gt;5) Some &lt;a href="http://blog.scottlowe.org/2010/06/13/the-vmotion-reality/#comment-48696"&gt;questions &lt;/a&gt;I had posted on Virtualization expert blogs about &lt;a href="http://ppadala.net/blog/2010/06/understanding-live-migration-of-virtual-machines/#comment-445"&gt;when  not to use them&lt;/a&gt;. There's no doubt that Sys Admins and IT guys want everything in the data centers to move to a 100% virtualized environment. Apparently it not just about server consolidation anymore. Companies are willing to sacrifice some performance for easier provisioning. To me the performance reduction is disappointing. It's like 2001 all over again when Java was slow and there was a lot of resistance to using it in production. Eventually the JVMs became faster (well, so did the processors to some extent) and people stopped thinking twice about using Java. Now, just when you thought Java was going to run blazing fast on multi-core, there's a second VM under the Java VM to slow things down. Dang! So much for progress. Now we have to wait for 10G pipes , SSDs and mega-multi-core to make up for the drop in power.&lt;br /&gt;&lt;br /&gt;6) ORM - do we still have that impedance mismatch? Why are there so many standards - &lt;a href="http://www.dzone.com/links/r/why_not_jpa.html"&gt;JDO and JPA&lt;/a&gt; and so many frameworks? &lt;a href="http://db.apache.org/"&gt;Apache&lt;/a&gt; itself has so many. Then there is Hibernate, DataNucleus and EclipseLink.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;7) Does Queuing interest you? &lt;a href="http://nichol.as/zeromq-an-introduction"&gt;ZeroMQ &lt;/a&gt;looks interesting. Anything that is open source interests me. Here's some &lt;a href="http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes"&gt;eval notes&lt;/a&gt; on open source queuing systems. A little dated but still interesting.&lt;br /&gt;&lt;br /&gt;Until next time!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-9054582454258389489?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/9054582454258389489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=9054582454258389489' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/9054582454258389489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/9054582454258389489'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/06/varnish-voldemort-virtualization-and.html' title='Varnish, Voldemort, Virtualization and other vaguely related stuff'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7012138043851868615</id><published>2010-06-15T22:38:00.000-07:00</published><updated>2011-01-21T23:20:47.833-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#books'/><title type='text'>This quarter in Sci-fi</title><content type='html'>1) &lt;a href="http://amzn.com/0345353129"&gt;Protector&lt;/a&gt; by Larry Niven has a very relaxing and smooth flow. Simple, unadulterated and enjoyable 80's Sci-fi.&lt;br /&gt;&lt;br /&gt;2) &lt;a href="http://amzn.com/0345460014"&gt;The Scar&lt;/a&gt; by China Mieville. Another Mieville classic. This story is set on a pirate ship, complete with science-fantasy, steampunk and magic. Loads of sugary goodness, like his other novels.&lt;br /&gt;&lt;br /&gt;3) &lt;a href="http://amzn.com/0312871996"&gt;The Light of Other Days&lt;/a&gt; by Arthur C. Clarke and Stephen Baxter. What happens when 2 masters work together? You get a Hard Sci-Fi masterpiece. If every action you make were to be visible later in the future with the help of wormhole cameras, would we still lie, commit crimes and injustices? A thought provoking novel. We talk about Facebook, Google and privacy. Hah! You should read this book. The issues in the novel are way more complex. Society and species level.&lt;br /&gt;&lt;br /&gt;4) &lt;a href="http://amzn.com/0380817926"&gt;Ilium&lt;/a&gt; by Dan Simmons. A fat book, you have been warned. A strange mix of sci-fi, Greek gods, Trojan war, Shakespeare and post humanism. Too bad this is just part 1. I would say, it's almost as good as Hyperion.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7012138043851868615?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7012138043851868615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7012138043851868615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7012138043851868615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7012138043851868615'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/06/this-quarter-in-sci-fi.html' title='This quarter in Sci-fi'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3206347156256777572</id><published>2010-06-13T22:40:00.000-07:00</published><updated>2011-06-18T11:32:30.132-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Hadoop, CDI, Weld, HSQL and Chuck Norris Java jokes</title><content type='html'>Big data doesn't get bigger than this...very rarely. i.e if you exclude GOOG, EBAY and MSFT. Facebook now has the &lt;a href="http://hadoopblog.blogspot.com/2010/05/facebook-has-worlds-largest-hadoop.html"&gt;largest Hadoop&lt;/a&gt; installation, surpassing Yahoo. &lt;a href="http://hadoop.apache.org/hive/"&gt;Hive &lt;/a&gt;is the main interface into Hadoop for the Facebook analytics team, it seems.What caught my attention was the 16G heap for the JobTracker nodes and 58G heap for the NameNode.&lt;br /&gt;&lt;br /&gt;I still find it hard to believe that the established OLAP and DW companies&lt;a href="http://www.dbms2.com/2009/05/11/facebook-hadoop-and-hive/"&gt; cannot offer&lt;/a&gt; competitive prices and solutions. One of them has docs explaining how they do joins in clusters - &lt;a href="http://www.info.teradata.com/templates/eSrchResults.cfm?prodline=&amp;amp;txtpid=&amp;amp;txtrelno=&amp;amp;txtttlkywrd=TDBS13.0&amp;amp;rdsort=Title&amp;amp;srtord=Asc&amp;amp;wNew=True&amp;amp;nm=Teradata+Database+13.0"&gt;SQL Request and Transaction Processing&lt;/a&gt;. Just the doc for Join processing runs up to 400 pages. Impressive to say the least!&lt;br /&gt;&lt;br /&gt;HSQL has a new re-written core with MVCC and 2 phase locking. This &lt;a href="http://hsqldb.org/web/features200.html"&gt;version 2.0&lt;/a&gt; is now about as good as H2. I like the competition.&lt;br /&gt;&lt;br /&gt;I've been trying to understand where this new (CDI) &lt;a href="http://java.dzone.com/articles/cdi-overview-part-2"&gt;Dependency Injection&lt;/a&gt; business was heading. After digging up a few articles, I found these interesting: 2 JSRs - 330 and 299. 299 extends 330 as described &lt;a href="http://java.dzone.com/articles/what-relation-betwe-there"&gt;here&lt;/a&gt;. And obviously, Spring, &lt;a href="http://saviorodrigues.wordpress.com/2010/05/21/is-google-ready-for-enterprise-java/#comment-23053"&gt;naturally&lt;/a&gt; is not very enthusiastic about making JEE easy to use - read the comments in that 299-330 article. JBoss' &lt;a href="http://seamframework.org/Weld"&gt;Weld&lt;/a&gt; is the RI.&lt;br /&gt;&lt;br /&gt;And here's a bit of fun, courtesy Chuck Norris:&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1) Chuck Norris Java jokes - &lt;a href="http://www.ovisual.com/4/"&gt;http://www.ovisual.com/4/&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 2) Chuck Norris facts -  &lt;a href="http://www.chucknorrisfacts.com/chuck-norris-top-50-facts"&gt;http://www.chucknorrisfacts.com/chuck-norris-top-50-facts&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Until next time!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3206347156256777572?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3206347156256777572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3206347156256777572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3206347156256777572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3206347156256777572'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/06/hadoop-cdi-weld-hsql-and-chuck-norris.html' title='Hadoop, CDI, Weld, HSQL and Chuck Norris Java jokes'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5792497796995779778</id><published>2010-05-26T20:45:00.000-07:00</published><updated>2011-06-18T11:32:30.227-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Data cleansing, perceptual hash and others</title><content type='html'>Got dirty data? I am very impressed with this data cleansing tool built by the Freebase guys. Specifically because it is open source and the UI is so well done - &lt;a href="http://code.google.com/p/freebase-gridworks/"&gt;Freebase Gridworks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Haha, yes another NoSQL system which claims incredible performance - &lt;a href="http://blog.superfeedr.com/Database/NoSQL/OSS/open-source/kumofs-a-database-success-story/"&gt;KumoFS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Spring. No, not the season, I mean the &lt;a href="http://www.springbyexample.org/pdf/SpringByExample.pdf"&gt;framework&lt;/a&gt;. I have &lt;a href="http://saviorodrigues.wordpress.com/2010/05/21/is-google-ready-for-enterprise-java/#comment-23053"&gt;many questions&lt;/a&gt; about why it's required in light of the supposedly simplified new JEE spec. &lt;br /&gt;&lt;br /&gt;I wonder how all those various distributed Lucene index implementations perform. Apache Solr itself offers most of those &lt;a href="http://lucene.apache.org/solr/features.html#Replication"&gt;enterprise features&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.compass-project.org/"&gt;http://www.compass-project.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/terrastore/"&gt;http://code.google.com/p/terrastore/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://github.com/tjake/Lucandra"&gt;http://github.com/tjake/Lucandra&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sna-projects.com/zoie/"&gt;http://sna-projects.com/zoie/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://katta.sourceforge.net/"&gt;http://katta.sourceforge.net/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Perceptual hashing to &lt;a href="http://www.mikeperham.com/2010/05/21/detecting-duplicate-images-with-phashion/"&gt;detect duplicate images&lt;/a&gt;. I'll file this under all the other "interesting" hashing techniques.&lt;br /&gt;&lt;br /&gt;The LinkedIn guys have a simple implementation of a &lt;a href="http://github.com/rhavyn/norbert"&gt;load balancer&lt;/a&gt; using Zookeeper and NIO/Netty. Nothing new here, but this one is in Scala. Apparently they like Scala too, just like the Twitter dev team.&lt;br /&gt;&lt;br /&gt;Have a nice and long (for some) weekend!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5792497796995779778?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5792497796995779778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5792497796995779778' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5792497796995779778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5792497796995779778'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/05/data-cleansing-perceptual-hash.html' title='Data cleansing, perceptual hash and others'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3084199699376689825</id><published>2010-05-15T17:03:00.000-07:00</published><updated>2011-06-18T11:32:30.125-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>The 3 laws of error handling (and everything in life)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Having spent a few years wading through production log files and unruly code, I've come to some startlingly unoriginal conclusions. Also being a Science Fiction fan, I've come up with these 3 laws (Heard of the &lt;a href="http://en.wikipedia.org/wiki/Three_Laws_of_Robotics"&gt;Three Laws of Robotics&lt;/a&gt;?):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;The 3 laws of error handling (and everything in life)&lt;/b&gt;:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 1) &lt;a href="http://en.wikipedia.org/wiki/Cover_your_ass"&gt;CYA&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 2) Take responsibility&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 3) When in doubt, refer #2&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now, there are some of you who are probably thinking "Take responsibility" should've been #1, but that would just sound very cliched. Let's be honest, CYA is what everyone does first in the real world. But #2 and #3 help keep that CYA attitude in check. It makes the world a better place. Well..sort of.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So, how exactly does this apply to umm.. programming? Let's take an arbitrary simple example that I found on the internet:&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;pre class="brush: java"&gt;&lt;br /&gt;java.lang.IllegalArgumentException&lt;br /&gt;at org.apache.axis.encoding.ser.BeanPropertyTarget.set(BeanPropertyTarget.java:157) &lt;br /&gt;at org.apache.axis.encoding.DeserializerImpl.valueComplete(DeserializerImpl.java:249) &lt;br /&gt;at org.apache.axis.encoding.ser.ArrayDeserializer.valueComplete(ArrayDeserializer.java:583) &lt;br /&gt;at org.apache.axis.encoding.DeserializerImpl.endElement(DeserializerImpl.java:509) &lt;br /&gt;at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)&lt;br /&gt;at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:171)&lt;br /&gt;at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)&lt;br /&gt;at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)&lt;br /&gt;.. .. .. &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This stack trace is not very helpful is it? If your program threw something like this in production what would you have done? &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 1) How can you defend (if it comes to that) that it was not something in your code?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 2) Perhaps the input/arguments were wrong or the library you called caused it&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 3) So, does this leave your object in a corrupt and incomplete state?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 4) Should the caller retry and hope that the problem does not occur again?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 5) What is the alternative? What now? How do you get around it? Can you get around it?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;See? There are so many questions and if this happened in production, then you would have 0 answers.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;How does the "3 laws" help? If you structure your code like this:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;CYA:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; - The error was caused because...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; - The input that was expected was... but was actually...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; - We&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Tried these things but...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Retried so many times but...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Take responsibility:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; - The error is &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Recoverable - how?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Un-recoverable because... Therefore you have to...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; - The system/instance is now&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Still ok except for...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Unstable and so you have to... or we already are doing...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Here's one simple way to implement parts of it:&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;pre class="brush: java"&gt;&lt;br /&gt;java.lang.Exception&lt;br /&gt;   + getMessage()&lt;br /&gt;   + getCause()&lt;br /&gt;&lt;br /&gt;        &amp;Delta;&lt;br /&gt;        |&lt;br /&gt;        |&lt;br /&gt;        &lt;br /&gt;com.javaforu.util.NiceException&lt;br /&gt;   + isCallersFault()&lt;br /&gt;   + isOperationRecoverable()&lt;br /&gt;   + isCalleeCorruptOrUnstable() &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Cheers!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3084199699376689825?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3084199699376689825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3084199699376689825' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3084199699376689825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3084199699376689825'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/05/3-laws-of-error-handling-and-everything.html' title='The 3 laws of error handling (and everything in life)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-3344149989978241631</id><published>2010-05-13T21:23:00.000-07:00</published><updated>2011-06-18T11:32:30.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#biz'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Orient database, Zookeeper, Interest rates, Yield curves and more NoSQL</title><content type='html'>&lt;div style="text-align: justify;"&gt;By now you would've thought that people had stopped developing old fashioned datastores...well think again. I chanced upon another database - &lt;a href="http://code.google.com/p/orient/"&gt;Orient&lt;/a&gt;. It supports many modes (or claims to)  - raw storage, SQL, Object oriented along with ACID transactions.. sounds very interesting. And it's under the Apache License.&lt;br /&gt;&lt;a href="http://code.google.com/p/orient/" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;We've been reading so much about Hadoop and Cassandra and NoSQL everywhere, but not much about another essential Hadoop sub-project. It's worth using in its own right - &lt;a href="http://hadoop.apache.org/zookeeper/"&gt;ZooKeeper&lt;/a&gt;. Check out their &lt;a href="http://hadoop.apache.org/zookeeper/docs/r3.3.0/recipes.html"&gt;recipes page&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Some more ZooKeeper coverage on other blogs:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 1) &lt;a href="http://www.igvita.com/2010/04/30/distributed-coordination-with-zookeeper" target="_blank"&gt;http://www.igvita.com/2010/04/&lt;wbr&gt;&lt;/wbr&gt;30/distributed-coordination-&lt;wbr&gt;&lt;/wbr&gt;with-zookeeper&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 2) &lt;a href="http://coffeesgone.wordpress.com/2010/05/05/zookeeper-locking/" target="_blank"&gt;http://coffeesgone.wordpress.&lt;wbr&gt;&lt;/wbr&gt;com/2010/05/05/zookeeper-&lt;wbr&gt;&lt;/wbr&gt;locking/&lt;/a&gt;&lt;br /&gt;&amp;nbsp; 3) &lt;a href="http://ria101.wordpress.com/2010/05/12/locking-and-transactions-over-cassandra-using-cages/"&gt;http://ria101.wordpress.com/2010/05/12/locking-and-transactions-over-cassandra-using-cages/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.igvita.com/2010/04/30/distributed-coordination-with-zookeeper" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;Voldemort vs Cassandra...Wait.wait...this is not a rehash of that Twitter-Cassandra article that's making its rounds on the interwebs. This is a performance comparison - &lt;a href="http://blog.medallia.com/2010/05/choosing_a_keyvalue_storage_sy.html" target="_blank"&gt;http://blog.medallia.com/2010/&lt;wbr&gt;&lt;/wbr&gt;05/choosing_a_keyvalue_&lt;wbr&gt;&lt;/wbr&gt;storage_sy.html&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Had enough of reading about software? How about investments and interest rates and Fed policies? It's a nice distraction: &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 1) &lt;a href="http://www.investopedia.com/articles/03/122203.asp"&gt;Interest rates and bond investments&lt;/a&gt;&lt;/div&gt;&lt;div class="paragraphHead" style="text-align: justify;"&gt;&amp;nbsp; 2) &lt;a href="http://www.frbsf.org/publications/federalreserve/monetary/index.html"&gt;U.S. Monetary Policy: An Introduction&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 3) &lt;a href="http://blog.firsttuesdayjournal.com/2010/03/using-the-yield-spread-to-forecast-recessions-and-recoveries/"&gt;Using the yield spread to forecast recessions and recoveries&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.investopedia.com/articles/03/122203.asp" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://blog.firsttuesdayjournal.com/2010/03/using-the-yield-spread-to-forecast-recessions-and-recoveries/" target="_blank"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Until next time.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-3344149989978241631?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/3344149989978241631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=3344149989978241631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3344149989978241631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/3344149989978241631'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/05/orient-database-zookeeper-interest.html' title='Orient database, Zookeeper, Interest rates, Yield curves and more NoSQL'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-1322469062883252143</id><published>2010-05-05T08:39:00.001-07:00</published><updated>2011-01-21T23:19:57.359-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Rule of thumb for Powerpoint slides - If you cannot read the text on your Blackberry, then you have too much content. It's a simple, low-def test much like the &lt;a href="http://fivesecondtest.com/"&gt;5 second test&lt;/a&gt; to see how much people will/can remember.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-1322469062883252143?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/1322469062883252143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=1322469062883252143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1322469062883252143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1322469062883252143'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/05/rule-of-thumb-for-powerpoint-slides-if.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7745941270813667487</id><published>2010-05-02T18:09:00.000-07:00</published><updated>2011-01-21T23:19:57.360-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>I tried to cash a Reality Check and it bounced.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7745941270813667487?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7745941270813667487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7745941270813667487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7745941270813667487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7745941270813667487'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/05/i-tried-to-cash-reality-check-and-it.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-8444022097706471915</id><published>2010-04-24T22:41:00.000-07:00</published><updated>2011-01-21T23:21:26.506-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Russian Ridge Open Space Preserve</title><content type='html'>&lt;a href="http://www.bahiker.com/southbayhikes/russianridge.html"&gt;Russian Ridge&lt;/a&gt; is an easy to find hiking area. It gets pretty crowded before noon. Spring is undoubtedly the best time to visit. Most of the trails are out in the open and there is no shade. So, it is probably best to avoid in Summer. But in Spring with all the hillsides covered with spring flowers, it is certainly worth a visit.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-8444022097706471915?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/8444022097706471915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=8444022097706471915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8444022097706471915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8444022097706471915'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/04/hiking-in-russian-ridge-open-space.html' title='Hiking in Russian Ridge Open Space Preserve'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4291559586314470209</id><published>2010-04-20T19:28:00.000-07:00</published><updated>2011-01-21T23:19:57.361-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Overheard at &lt;a href="http://www.google.com/search?hl=en&amp;q=wall+street+finance+fraud"&gt;someone's cafeteria&lt;/a&gt; - "There must be some kinda way out of here said the &lt;del&gt;joker&lt;/del&gt; broker to the &lt;del&gt;thief&lt;/del&gt; chief......all along the watch tower.." [Jimi Hendrix]&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4291559586314470209?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4291559586314470209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4291559586314470209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4291559586314470209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4291559586314470209'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/04/overheard-at-someones-cafeteria-there.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-1083696909194593890</id><published>2010-04-17T17:04:00.000-07:00</published><updated>2011-01-21T23:21:26.507-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><title type='text'>Hiking in Long Ridge Open Space Preserve</title><content type='html'>I went hiking with friends to &lt;a href="http://www.bahiker.com/southbayhikes/longridge.html"&gt;Long Ridge Open Space Preserve&lt;/a&gt;. We did the 4.71 mile loop on Peter's Creek Trail and the Long Ridge Trail. It's a mild trail, very pleasant surroundings. The best part is the meadow overlooking the Pacific at a distance. This is midway along the hike.&lt;br /&gt;&lt;br /&gt;Also, don't forget to enjoy the small lake (pond?) in the first quarter of the loop. It seemed to be covered with algae. It didn't smell though.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-i8jW7I2gyg/S8pUnlIXYYI/AAAAAAAAAgk/94lWow3wyQM/s1600/long_ridge_trail.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-i8jW7I2gyg/S8pUnlIXYYI/AAAAAAAAAgk/94lWow3wyQM/s320/long_ridge_trail.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-1083696909194593890?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/1083696909194593890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=1083696909194593890' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1083696909194593890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/1083696909194593890'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/04/hiking-in-long-ridge-open-space.html' title='Hiking in Long Ridge Open Space Preserve'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-i8jW7I2gyg/S8pUnlIXYYI/AAAAAAAAAgk/94lWow3wyQM/s72-c/long_ridge_trail.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4637202645572265472</id><published>2010-04-12T20:53:00.000-07:00</published><updated>2011-06-18T11:32:30.181-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#biz'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Golden ratios, collapse of complex business models, time debt and GM (GM?)</title><content type='html'>&lt;a href="http://commons.apache.org/jexl/"&gt;JEXL version 2&lt;/a&gt;, the Apache Expression Language is out. It may be slower than MVEL (very likely) or Spring EL (don't know for sure) but JEXL is from Apache and that deserves a special mention. The v2 API looks good with facilities to plug in/customize many aspects of parsing and evaluation.&lt;br /&gt;&lt;br /&gt;Need to sort gigabytes of text but don't have Hadoop or Unix "sort" handy? Not to worry. &lt;a href="https://mail.google.com/mail/%20http://www.daniel-lemire.com/blog/archives/2010/04/01/external-memory-sorting-in-java/"&gt;External sorting&lt;/a&gt; is a remarkably simple concept that does &lt;a href="http://code.google.com/p/externalsortinginjava/"&gt;chunk-wise sorting and merging&lt;/a&gt;. Isn't that MapReduce without the pain of a Hadoop cluster setup? &lt;br /&gt;&lt;br /&gt;Clay Shirky's note on the &lt;a href="http://www.shirky.com/weblog/2010/04/the-collapse-of-complex-business-models/"&gt;collapse of complex business models&lt;/a&gt; - after reading this I couldn't help thinking about the Innovator's dilemma and how some big companies need some kind of rebooting at some point (negative marginal value). And how open source is a disruptive model employed by many small companies to compete with larger software companies. For a long time their documentation and feature set is poor compared to more established companies but eventually they catch up. But during "awkward teenager" period, some customers are willing to use it, which is perplexing. Good enough is perfectly ok for some purposes I suppose.&lt;br /&gt;&lt;br /&gt;Much like GM and its endless problems which eventually led to the closure of their &lt;a href="http://www.npr.org/templates/story/story.php?storyId=125430405"&gt;Fremont plant&lt;/a&gt; (among other things). This in spite of a collaboration with their arch nemesis Toyota! Speaking of quality, this is a painful reminder of how bad quality has to be addressed ASAP. Not fixing quality in time (before release) is in effect giving yourself a time debt. Time debt? &lt;a href="http://www.kalzumeus.com/2010/03/20/running-a-software-business-on-5-hours-a-week/"&gt;This guy&lt;/a&gt; defines it as - "Basically, time debt is anything that you do which will commit you to doing unavoidable work in the&amp;nbsp;future." If you don't fix the problem before it leaves the assembly line like that Fremont plant, after the release you/Engineering, Support, Product management will spend hours identifying and fixing something that could've been fixed for much less cost before the release, with interest. Duh! Think of your customer's loss of faith too.&lt;br /&gt;&lt;br /&gt;Oh, I almost forgot, here are some &lt;a href="http://www.smashingmagazine.com/2010/02/09/applying-mathematics-to-web-design/"&gt;UI tips that require Math&lt;/a&gt;. I especially liked the Golden ratio. Very elegant.&lt;br /&gt;&lt;br /&gt;Until next time..&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4637202645572265472?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4637202645572265472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4637202645572265472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4637202645572265472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4637202645572265472'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/04/golden-ratios-collapse-of-complex.html' title='Golden ratios, collapse of complex business models, time debt and GM (GM?)'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4279810763190976370</id><published>2010-04-12T19:09:00.001-07:00</published><updated>2011-01-21T23:19:57.362-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Life is a long winding road....better drive a car that handles well.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4279810763190976370?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4279810763190976370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4279810763190976370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4279810763190976370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4279810763190976370'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/04/life-is-long-winding-road.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5230844959712695424</id><published>2010-04-08T19:17:00.000-07:00</published><updated>2011-01-21T23:19:57.363-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Old Chinese proverb: If your IQ is below room temperature, then move to a warmer climate.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5230844959712695424?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5230844959712695424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5230844959712695424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5230844959712695424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5230844959712695424'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/04/old-chinese-proverb-if-your-iq-is-below.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5766393137778696242</id><published>2010-04-05T19:06:00.001-07:00</published><updated>2011-01-21T23:19:57.364-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Ice cream should come in only 1 flavor - "Self control" with a topping of nuts.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5766393137778696242?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5766393137778696242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5766393137778696242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5766393137778696242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5766393137778696242'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/04/ice-cream-should-come-in-only-1-flavor.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4426539886839134450</id><published>2010-04-03T10:09:00.001-07:00</published><updated>2011-01-21T23:19:57.367-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>After the Kindle and the iPad, I suppose there won't be any "Death by a  1000 paper cuts"? Does this mean that our lives are safer now?&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4426539886839134450?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4426539886839134450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4426539886839134450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4426539886839134450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4426539886839134450'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/04/after-kindle-and-ipad-i-suppose-there.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-289060717094060584</id><published>2010-03-31T19:57:00.001-07:00</published><updated>2011-01-21T23:21:26.508-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><category scheme='http://www.blogger.com/atom/ns#' term='#dads pictures'/><title type='text'>Blue tailed bee eaters</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/srjp/4479945613/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2747/4479945613_a92e35d526.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/srjp/4479945613/"&gt;Blue tailed bee eaters&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/srjp/"&gt;SRJP&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	 Pic taken by my dad - Dr. Jayaprakash.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-289060717094060584?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/289060717094060584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=289060717094060584' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/289060717094060584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/289060717094060584'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/blue-tailed-bee-eaters_31.html' title='Blue tailed bee eaters'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2747/4479945613_a92e35d526_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-5008082892966322671</id><published>2010-03-31T19:56:00.001-07:00</published><updated>2011-01-21T23:21:26.509-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#travel'/><category scheme='http://www.blogger.com/atom/ns#' term='#dads pictures'/><title type='text'>Blue tailed bee eaters</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/srjp/4479946249/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2786/4479946249_f4e5b7a8c2.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/srjp/4479946249/"&gt;Blue tailed bee eaters&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/srjp/"&gt;SRJP&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	 Pic taken by my dad - Dr. Jayaprakash.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-5008082892966322671?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/5008082892966322671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=5008082892966322671' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5008082892966322671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/5008082892966322671'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/blue-tailed-bee-eaters.html' title='Blue tailed bee eaters'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2786/4479946249_f4e5b7a8c2_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6930710194678693665</id><published>2010-03-29T22:32:00.000-07:00</published><updated>2011-04-07T22:18:03.407-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><title type='text'>Make your online reading more pleasant</title><content type='html'>If you spend a lot of time reading online, like me then eye strain is probably your biggest complaint. You can stop worrying, because there's a beautiful tool called &lt;a href="http://readable-app.appspot.com/index.html"&gt;Readable&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No, don't worry it's free and does not need any installation. All you have to do is drag a link and drop it on to your Browser's Bookmarks Toolbar.&lt;br /&gt;&lt;br /&gt;It turns this .....&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_-i8jW7I2gyg/S7GJusuRqKI/AAAAAAAAAf4/t88yoe8GlXo/s1600/before.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://3.bp.blogspot.com/_-i8jW7I2gyg/S7GJusuRqKI/AAAAAAAAAf4/t88yoe8GlXo/s320/before.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;into this...! It's the same web page, just the style has changed. Beautiful isn't it? You can revert back to the original by just clicking the page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-i8jW7I2gyg/S7GJxXrrIJI/AAAAAAAAAgA/hMu946WIvAM/s1600/after.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-i8jW7I2gyg/S7GJxXrrIJI/AAAAAAAAAgA/hMu946WIvAM/s320/after.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can&amp;nbsp;use the theme I use - just &lt;a href="javascript:(function(){if(document.getElementsByTagName('html').length&amp;gt;0);else{return;}if(document.getElementsByTagName('body').length&amp;gt;0);else{return;}if(window.$readable);else{window.$readable={};window.$readable.path='http://readable-app.appspot.com/';}window.$readable.options={};window.$readable.options.base='better_readability';window.$readable.options.font_family='lucida';window.$readable.options.font_size='18';window.$readable.options.text_line_height='2';window.$readable.options.text_align='normal';window.$readable.options.text_image_align='center';window.$readable.options.text_box_width='60_percent';window.$readable.options.text_box_align='center';window.$readable.options.text_box_outer_margin='1';window.$readable.options.text_box_inner_margin='2';window.$readable.options.color_theme='dark_grey_off_white';window.$readable.options.background_transparency='100';window.$readable.options.background_transparency_color='dark_grey';window.$readable.options.video='strip';if(window.$readable.callScript){window.$readable.callScript();return;}if(document.getElementsByTagName('head').length&amp;gt;0);else{document.getElementsByTagName('html')[0].insertBefore(document.createElement('head'),document.getElementsByTagName('body')[0]);}document.getElementsByTagName('head')[0].appendChild(document.createElement('script')).setAttribute('src',window.$readable.path+'target.js?rand='+encodeURIComponent(Math.random()));})()"&gt;drag and drop this link&lt;/a&gt; into your Bookmarks and  when you are on any web page just click this Readable bookmark. Or you  can make one yourself. Here's the actual site with a tutorial - &lt;a href="http://readable-app.appspot.com/setup.html"&gt;Readable theme setup&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Happy reading!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6930710194678693665?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6930710194678693665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6930710194678693665' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6930710194678693665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6930710194678693665'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/make-your-online-reading-more-pleasant.html' title='Make your online reading more pleasant'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-i8jW7I2gyg/S7GJusuRqKI/AAAAAAAAAf4/t88yoe8GlXo/s72-c/before.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6472955779621878896</id><published>2010-03-23T20:35:00.000-07:00</published><updated>2011-06-18T11:32:30.270-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#biz'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>(Smaller) Compute Grids face off, some Math and Cassandra at it again</title><content type='html'>Head over to Dzone to see how these Open Source Compute Grids stack up  against each other - &lt;a href="http://java.dzone.com/articles/comparison-gridcloud-computing-0"&gt;GridGain  vs Hazelcast&lt;/a&gt; (and Hadoop for reference). Compared to Cassandra,  Hadoop and Voldemort that's installed on monstrous scales, these are for  mere mortals - I mean Enterprise deployments. I say this without any  intention of sounding sarcastic. &lt;br /&gt;&lt;br /&gt;Oh, talking about Cassandra, did you hear &lt;a href="http://blog.reddit.com/2010/03/she-who-entangles-men.html"&gt;Reddit  also switched&lt;/a&gt; last week? Cassandra seems unstoppable. I remember  just a year ago when Memcached was all the rage. Now it's Cassandra. Big Database  vendors (and Storage companies) are definitely taking notice. Last year  there was a rash of announcements by DB vendors that they had  implemented Columnar storage and MapReduce. It reminds me of &lt;a href="http://en.wikiquote.org/wiki/Mohandas_Karamchand_Gandhi"&gt;Gandhi's  quote&lt;/a&gt; - "First  they ignore you, then they laugh at you, then they fight you, then  you win". Way to go Apache projects!&lt;br /&gt;&lt;br /&gt;Note to self - &lt;a href="http://nathanmarz.com/blog/hadoop-math-followup-measurement/"&gt;The  mathematics behind Hadoop-based systems&lt;/a&gt; might come in handy later.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://static.springsource.org/spring-batch/"&gt;Spring Batch&lt;/a&gt;  - and you thought you needed Hadoop for scalable Batch processing. Hey,  didn't I say - mere mortals and Enterprise? I'm not sure how many  people are really using this or how good it is. But I wish we had a &lt;a href="http://www.slideshare.net/gschmutz/spring-batch-20-2794015"&gt;simple  framework&lt;/a&gt; like this when I wrote batch programs for a bank a few  years ago.&lt;br /&gt;&lt;br /&gt;Ever the heard the term Intrapreneur? &lt;a href="http://streambase.typepad.com/streambase_stream_process/2010/01/bigcompanyinnovation.html"&gt;Big   Companies Can Innovate, if they Act Small&lt;/a&gt; is worth a quick look.&lt;br /&gt;&lt;br /&gt;Peace!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6472955779621878896?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6472955779621878896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6472955779621878896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6472955779621878896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6472955779621878896'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/smaller-compute-grids-face-off-some.html' title='(Smaller) Compute Grids face off, some Math and Cassandra at it again'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-2620443083068700054</id><published>2010-03-23T19:05:00.001-07:00</published><updated>2011-01-21T23:19:57.368-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Spring. I thought of getting the old cycle out. Tires need replacing. All 3 of them.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-2620443083068700054?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/2620443083068700054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=2620443083068700054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2620443083068700054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2620443083068700054'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/spring.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6459306923903612626</id><published>2010-03-21T23:38:00.000-07:00</published><updated>2011-04-07T22:18:03.408-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><title type='text'>Semi-educated tax tidbit: TurboTax and Stocks</title><content type='html'>Tax season is here again and if you were like me, scouring the internet  trying to understand how to fill up that TurboTax form for ESOP and  Restricted Stock, then this might be helpful.&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;(&lt;b&gt;Disclaimer:&lt;/b&gt; The information here and even in the links are  not Tax advice nor is it any other kind of advice. Don't take my or  their word for it. If you see something wrong here, then let me know  I'll do my best to correct it. No guarantees whatsoever)&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;This applies only to Same day sales.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Employee Stock Options:&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;Net Proceeds  = Sale price * num of shares&lt;br /&gt;Date  of sale = Sale date&lt;br /&gt;&lt;br /&gt;Cost basis = Exercise price * num of shares&lt;br /&gt;Date   acquired = Exercise date&lt;br /&gt;&lt;br /&gt;Your W2 should already mention the ordinary income  earned = Exercise price - Grant price. Sale price can either be higher  or lower than Exercise price. That small amount constitutes as Short  Term (Same day sale) Capital Gains or Loss.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;Restricted Stock:&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;Net Proceeds  = Sale price * num of  RS&lt;br /&gt;Date  of sale = Sale date&lt;br /&gt;&lt;br /&gt;Cost basis = Vest price * num of RS&lt;br /&gt;Date  acquired = Vest date&lt;br /&gt;&lt;br /&gt;W2 already mentions the income earned on the  RS using Vest price on Vesting date.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;More info:&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;- Search for "Understanding Restricted Stock" on Etrade if you have an account.&lt;br /&gt;- &lt;a href="http://turbotax.intuit.com/tax-tools/tax-tips/investments-and-rental-property/5593.html"&gt;NonQualified Stock Options&lt;/a&gt;.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6459306923903612626?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6459306923903612626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6459306923903612626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6459306923903612626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6459306923903612626'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/semi-educated-tax-tidbit-turbotax-and.html' title='Semi-educated tax tidbit: TurboTax and Stocks'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-8305077018041917053</id><published>2010-03-21T20:02:00.000-07:00</published><updated>2011-06-18T11:32:19.152-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Gmail productivity</title><content type='html'>For a long time, I wanted a simple tool that would merge my to-do list, draft letters and reminders with my email system. About a year or so ago Gmail introduced some nifty features that let me do just that. So, I thought I'd share them with you (a yr later).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-i8jW7I2gyg/S6bcSmEVrYI/AAAAAAAAAfU/fISaAlmdljs/s1600-h/gmail_main.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="106" src="http://4.bp.blogspot.com/_-i8jW7I2gyg/S6bcSmEVrYI/AAAAAAAAAfU/fISaAlmdljs/s320/gmail_main.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;First, configure Multiple Inboxes:&lt;/b&gt;&lt;br /&gt;Go to Gmail settings and select the Multiple Inboxes tab and then type this in. You just need 1 pane, so add this &lt;code&gt;-in:trash AND (label:to-do OR in:drafts)&lt;/code&gt; as the Search query and call the Pane "To do".&lt;br /&gt;&lt;br /&gt;[Update: May 9, 2011]&lt;br /&gt;&lt;blockquote&gt;I now have 3 inboxes in addition to the main inbox. This needs 2 labels "to-do" and "constant"&lt;br /&gt;&lt;b&gt;Urgent:&lt;/b&gt;&lt;br /&gt;&lt;code&gt;-in:trash AND is:starred AND -label:constant&lt;/code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;b&gt;To do:&lt;/b&gt;&lt;br /&gt;&lt;code&gt;-in:trash AND -is:starred AND -label:constant AND (label:to-do OR in:drafts)&lt;/code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;b&gt;Long term/Constant reminders:&lt;/b&gt;&lt;br /&gt;&lt;code&gt;-in:trash AND -is:starred AND label:constant AND (label:to-do OR in:drafts)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-i8jW7I2gyg/S6bZCgMFE3I/AAAAAAAAAfE/CDcFYHi1vLI/s1600-h/gmail_multiple_inbox.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://4.bp.blogspot.com/_-i8jW7I2gyg/S6bZCgMFE3I/AAAAAAAAAfE/CDcFYHi1vLI/s400/gmail_multiple_inbox.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - &lt;/b&gt;&lt;b&gt;Add a Filter to move those emails to the other Inbox:&lt;/b&gt;&lt;br /&gt;Well this is all you will need. Don't worry, it's just 1 physical Inbox but different views to your emails.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-i8jW7I2gyg/S6baOWc7F6I/AAAAAAAAAfM/TyQsHGZwGzQ/s1600-h/gmail_todo_filter.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" src="http://1.bp.blogspot.com/_-i8jW7I2gyg/S6baOWc7F6I/AAAAAAAAAfM/TyQsHGZwGzQ/s400/gmail_todo_filter.PNG" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 - Enjoy: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, you can just send a quick note to yourself from your Blackberry or office desktop to your Gmail account and it will go to the &lt;b&gt;To do&lt;/b&gt; list. Even draft emails and blogs that you haven't finished writing will appear in this list. Cool huh?&lt;br /&gt;&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-8305077018041917053?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/8305077018041917053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=8305077018041917053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8305077018041917053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/8305077018041917053'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/gmail-productivity.html' title='Gmail productivity'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-i8jW7I2gyg/S6bcSmEVrYI/AAAAAAAAAfU/fISaAlmdljs/s72-c/gmail_main.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-4117552611693188804</id><published>2010-03-18T12:04:00.000-07:00</published><updated>2011-01-21T23:19:57.369-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>As the Maharishi said, let your mind wander...but carry your GPS along.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-4117552611693188804?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/4117552611693188804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=4117552611693188804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4117552611693188804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/4117552611693188804'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/as-maharishi-said-let-your-mind-wander.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-2094117741934651151</id><published>2010-03-18T11:53:00.000-07:00</published><updated>2011-04-07T22:18:03.411-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#event processing'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#note to self'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#streamcruncher'/><title type='text'>Digging up links to my old Event Stream Processor</title><content type='html'>I was digging up links and articles to my old &lt;a href="http://www.streamcruncher.com/"&gt;StreamCruncher&lt;/a&gt; hobby project. Cleaning up my bookmarks, rather.Here's what Google came up with (after some manual filtering):&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.cs.ru.nl/mtl/scripties/2007/PaulDekkersScriptie.pdf"&gt;Paul Dekker's Master's thesis&lt;/a&gt; on Complex Event Processing with StreamCruncher, RuleCore and Esper as case studies&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://blog.athico.com/2007/05/event-stream-processing-complex-event.html"&gt;Edson Tirelli's blog entry&lt;/a&gt;, one of the Drools guys&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://neilconway.org/talks/stream_intro.pdf"&gt;An Introduction To Data Stream Query Processing&lt;/a&gt; from Truviso&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.slideshare.net/javasymposium/creating-an-eventdriven-soa"&gt;Creating an event driven SOA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Marco on &lt;a href="http://rulecore.com/CEPblog/?p=257"&gt;in-memory DBs for CEP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://financial-techinsider.blogspot.com/2007/03/sql-debate.html"&gt;The SQL debate&lt;/a&gt; on Financial Techinsider.&lt;br /&gt;&lt;br /&gt;- Zepheira &lt;a href="http://zepheira.com/presentations/2008/esper/esper.pdf"&gt;presentation&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Later.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-2094117741934651151?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/2094117741934651151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=2094117741934651151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2094117741934651151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/2094117741934651151'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/digging-up-links-to-my-old-event-stream.html' title='Digging up links to my old Event Stream Processor'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-6013111710730303493</id><published>2010-03-16T21:28:00.001-07:00</published><updated>2011-01-21T23:19:57.370-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#ashwin-ism'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'></title><content type='html'>Spring - yes, that season when annoying cyclists and bikers crawl out of the woodwork and make you drive slower.&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-6013111710730303493?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/6013111710730303493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=6013111710730303493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6013111710730303493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/6013111710730303493'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/spring-yes-that-season-when-annoying.html' title=''/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3822535.post-7505341840283427176</id><published>2010-03-16T20:24:00.000-07:00</published><updated>2011-06-18T11:32:30.340-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='#java'/><category scheme='http://www.blogger.com/atom/ns#' term='#data'/><title type='text'>Hawt diggity! So many key-value stores!</title><content type='html'>A short list of in-process, key-value stores, mercifully not calling themselves NoSQL.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forge.fusesource.com/forge/projects/HAWTDB" target="_blank"&gt;HawtDB&lt;/a&gt; - yet another key-value store. It's old fashioned B-Trees and it uses the same code base as ActiveMQ's file storage system.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/simpledbm/"&gt;SimpleDBM&lt;/a&gt; - as the author himself claims, it's fun to implement the old algorithms and see for your self.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/babudb/"&gt;Babudb&lt;/a&gt; - why another one, of course.&lt;br /&gt;&lt;br /&gt;If someone thought of &lt;a href="http://github.com/tjake/Lucandra"&gt;Lucandra&lt;/a&gt; (Lucene + Cassandra), then you ask how come there's no Prevayler + Lucene? Of course there is one. It's called &lt;a href="http://code.google.com/p/nodb/"&gt;Nodb&lt;/a&gt;. I wonder what happened to Prevayler.&lt;br /&gt;&lt;br /&gt;And some other things I liked:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.decompiler.free.fr/"&gt;JD Java Decompiler&lt;/a&gt; - better than any I've seen so far.&lt;br /&gt;&lt;br /&gt;If you love Apache Camel, then you'll love &lt;a href="http://code.mycila.com/wiki/MycilaEvent"&gt;MycilaEvent&lt;/a&gt;. A simple and elegant in-memory publish-subscribe system.&lt;br /&gt;&lt;br /&gt;Oh, before you go there's &lt;a href="http://code.google.com/p/seaglass/" target="_blank"&gt;Seaglass&lt;/a&gt; - helping even the ugliest Swing UIs look insanely cool. If you thought  Nimbus LF in Java 6 was good, this is even better. Remember the awesome  Alloy LF but had to pay for? Good thing Seaglass is open source.&lt;br /&gt;&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;div&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
[By &lt;b&gt;Ashwin&amp;nbsp;Jayaprakash&lt;/b&gt;.
There's more where this came from - &lt;a href="http://javaforu.blogspot.com/search/label/tech?max-results=5"&gt;tech&lt;/a&gt; topics
and &lt;a href="http://javaforu.blogspot.com/search/label/general?max-results=5"&gt;general&lt;/a&gt; topics]
&lt;/div&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3822535-7505341840283427176?l=javaforu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaforu.blogspot.com/feeds/7505341840283427176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3822535&amp;postID=7505341840283427176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7505341840283427176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3822535/posts/default/7505341840283427176'/><link rel='alternate' type='text/html' href='http://javaforu.blogspot.com/2010/03/hawt-diggity-so-many-key-value-stores.html' title='Hawt diggity! So many key-value stores!'/><author><name>Ashwin Jayaprakash</name><uri>https://profiles.google.com/107828227273550585503</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-C-WLwc356A4/AAAAAAAAAAI/AAAAAAAAAsM/GudrpeSOLZ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
