<?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-5727636489004040433</id><updated>2012-02-16T06:33:53.671-08:00</updated><category term='qcon'/><category term='hibernate'/><category term='java annotations proxy'/><category term='scala'/><category term='quartz'/><category term='mysql'/><category term='java'/><category term='cache'/><category term='contracts'/><category term='erlang'/><category term='REST'/><category term='google checkout'/><category term='soa'/><category term='backwards compatibility'/><category term='annotations'/><category term='interfaces'/><category term='I18N'/><category term='india'/><category term='jvm'/><category term='http'/><category term='invalidation'/><category term='IDE'/><category term='oracle'/><category term='threading'/><category term='live upgrade'/><category term='squid'/><category term='JDeveloper'/><category term='grails'/><category term='etag'/><category term='erlang concurrency'/><category term='shard'/><category term='code migration'/><category term='groovy'/><category term='vary'/><category term='cache_control'/><category term='grails-service'/><category term='services'/><category term='jvm ibm'/><category term='architecture'/><category term='solaris'/><category term='erlang records'/><category term='gmail'/><category term='database'/><title type='text'>Software Carnival</title><subtitle type='html'>tales of computing, debugging, and other forms of silliness</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-8169611890582614288</id><published>2010-10-19T22:16:00.000-07:00</published><updated>2010-10-19T22:20:35.638-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='vary'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='cache_control'/><title type='text'>Adventures with Squid caching - Vary header</title><summary type='text'>Note: this entry is part of a series on RESTful web services, HTTP, and squid caching, all of which starts with an overview.

BackgroundThe HTTP 1.1 RFC includes a lot of new features to support caching. One of the headers we found interesting was the Vary header. It allows an origin server to tell the caching proxy that the URI will have variants (different encodings, formats, etc) as different </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/8169611890582614288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=8169611890582614288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8169611890582614288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8169611890582614288'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2010/10/adventures-with-squid-caching-vary.html' title='Adventures with Squid caching - Vary header'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-4451755735428406599</id><published>2010-10-18T22:17:00.000-07:00</published><updated>2010-10-19T22:19:44.112-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vary'/><category scheme='http://www.blogger.com/atom/ns#' term='invalidation'/><category scheme='http://www.blogger.com/atom/ns#' term='etag'/><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='squid'/><title type='text'>Adventures with Squid caching - overview</title><summary type='text'>I've been knees-deep in the REST services world for most of the last 12 months, and while that domain may be simpler to model and deal with than RPC or SOAP, one of the most compelling advantages is making use of HTTP caching. Instead baking your own caching layer or application, using stateful server sessions, or, worst of all, forcing clients to use a fat-client jar that does it's own caching (</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/4451755735428406599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=4451755735428406599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/4451755735428406599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/4451755735428406599'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2010/10/adventures-with-squid-caching-overview.html' title='Adventures with Squid caching - overview'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-4901733602632313676</id><published>2010-09-08T10:46:00.000-07:00</published><updated>2010-09-08T10:48:50.084-07:00</updated><title type='text'>Emacs and sql-plus fun</title><summary type='text'>Found this nugget to make sql-plus less painful:On emacs, M-x sql-oracle does the trick</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/4901733602632313676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=4901733602632313676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/4901733602632313676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/4901733602632313676'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2010/09/emacs-and-sql-plus-fun.html' title='Emacs and sql-plus fun'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-8147624513634490796</id><published>2010-04-27T09:14:00.000-07:00</published><updated>2010-04-27T09:21:37.380-07:00</updated><title type='text'>REST != !SOAP</title><summary type='text'>OK, so we're heavy in recruitment time here at $DAYJOB, and I see lots of resumes that claim deep REST experience. However, when I probe candidates about building URIs, resources, using HTTP correctly, and so on, they are largely clueless. Probe a bit further and really all they've done is create some simple HTTP endpoint that takes query params or XML in the request body.Now, there's nothing </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/8147624513634490796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=8147624513634490796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8147624513634490796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8147624513634490796'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2010/04/rest-soap.html' title='REST != !SOAP'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-8651445851409927744</id><published>2010-04-01T13:50:00.001-07:00</published><updated>2010-04-01T14:00:49.108-07:00</updated><title type='text'>SQLPlus options</title><summary type='text'>So, for the truly geeky, you can "pass" in parameters to alter the default environment/behavior of sqlplus. The orafaq page helped me figure this out:create a login.sql file for all your commandsadd the directory to the $SQLPATH env variable (on most client machines, you'll need to create the env var)launch sqlplus, and you should have all your options setupMy current login.sql looks like this:</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/8651445851409927744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=8651445851409927744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8651445851409927744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8651445851409927744'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2010/04/sqlplus-options.html' title='SQLPlus options'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-2586577305112143498</id><published>2010-01-05T00:20:00.000-08:00</published><updated>2010-01-05T01:34:01.892-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jvm ibm'/><title type='text'>IBM J9 Diagnostics</title><summary type='text'>Here at $DAYJOB we're using the IBM J9 JVM for our test and production deployments. I've had some performance and memory problems recently, so here's a quick entry about some of the things the J9 JVM provides for diagnotics.First up: the diagnostics documentation summary.Next, here's a series of things you can get the J9 JVM to give you:GC log - use the standard -verbose:gc command line option to</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/2586577305112143498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=2586577305112143498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/2586577305112143498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/2586577305112143498'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2010/01/ibm-j9-diagnostics.html' title='IBM J9 Diagnostics'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-4599970237674376453</id><published>2009-08-19T13:06:00.000-07:00</published><updated>2009-08-19T13:11:40.569-07:00</updated><title type='text'>Regex for parsing HTTP query string</title><summary type='text'>Instead of using lame-ass StringTokenizer looking for an ampersand, here's a regex I found handy:((\w*)+)(=)[\w\d]*[^(\&amp;)]The extra parens around the first part token allow you treat the parameter name as a group by iteslf. Could've added it it to the value, as well, I suppose .... but clearly I don't need that now!</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/4599970237674376453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=4599970237674376453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/4599970237674376453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/4599970237674376453'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2009/08/regex-for-parsing-http-query-string.html' title='Regex for parsing HTTP query string'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-8448248539657250941</id><published>2009-03-02T06:58:00.003-08:00</published><updated>2010-04-01T13:49:54.807-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erlang records'/><title type='text'>Erlang records</title><summary type='text'>Erlang progress update: I've been sidetracked by working on some Java reflection for $DAYJOB (not bad/unfreindly stuff, just needed to work through it), so I'm now back on my side project.  Working through Joe Armstrong's book, I'm now looking at Erlang records (pg 69+). Records seem like a cool to add names to tuples so you end up with something that feels like a name-value pair map or, if you </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/8448248539657250941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=8448248539657250941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8448248539657250941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8448248539657250941'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2009/03/erlang-records.html' title='Erlang records'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-5732790580878917622</id><published>2009-02-26T06:16:00.003-08:00</published><updated>2009-02-26T09:18:22.480-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java annotations proxy'/><title type='text'>Java Annotations and Proxies</title><summary type='text'>Just discovered this: If you create a class with annotations of any kind, those annotations (and any other metadata) is lost when the object is proxied. Google searching didn't turn too much on the subject, but I did find this post about one work around (but it only relates to Hibernate). This seems sort-of innocuous on the surface (from a language/API level), but with every framework under the </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/5732790580878917622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=5732790580878917622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/5732790580878917622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/5732790580878917622'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2009/02/java-annotations-and-proxies.html' title='Java Annotations and Proxies'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-1795121592658099986</id><published>2009-02-17T06:15:00.004-08:00</published><updated>2009-02-17T06:21:19.560-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erlang concurrency'/><title type='text'>Erlang "processes" clarified</title><summary type='text'>Now that I'm into erlang, I've been going through the Getting Started guide on the erlang.org site, and I found this little nugget:the term "process" is usually used when the threads of execution share no data with each other and the term "thread" when they share data in some way. Threads of execution in Erlang share no data, that's why we call them processes.I was always confused about erlang "</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/1795121592658099986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=1795121592658099986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1795121592658099986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1795121592658099986'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2009/02/erlang-processes-clarified.html' title='Erlang &quot;processes&quot; clarified'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-1324041262729168703</id><published>2009-02-12T06:49:00.003-08:00</published><updated>2009-02-12T07:01:06.077-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><title type='text'>New Project - Erlang E-commerce</title><summary type='text'>Well, now that we've moved to California (Sept 2008), and things are finally settling in, I'm looking for a new project to play with. At the end of long conversation with a current coworker, Steve Atkinson, about concurrency and the bear that it can be to wrestle with (especially in regards to shared state) I admitted that I'm interested in seeing how the new crop of functional programming </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/1324041262729168703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=1324041262729168703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1324041262729168703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1324041262729168703'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2009/02/new-project-erlang-e-commerce.html' title='New Project - Erlang E-commerce'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-821577259265676863</id><published>2008-12-09T10:35:00.005-08:00</published><updated>2008-12-09T10:45:29.207-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='annotations'/><title type='text'>Creating a Java annotation</title><summary type='text'>So I created a new (method-level) annotation that basically just takes a string, and when the target method is invoked, via aspect I get that string. The annotation looks like this (name changed to protect the innocent):public @interface Annotatable { String value(); }After a few hours of banging my head, trying to figure out why everything compiled correctly, yet when testing I could never get </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/821577259265676863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=821577259265676863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/821577259265676863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/821577259265676863'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/12/creating-java-annotation.html' title='Creating a Java annotation'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-8884229531459526671</id><published>2008-08-06T03:38:00.003-07:00</published><updated>2008-08-06T03:49:56.281-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jvm'/><title type='text'>NUMA and the JVM</title><summary type='text'>Good blog entry from Jon Masamitsu about NUMA optimizations in Java 6 on Solaris. NUMA, essentially, and vastly simplified, is to access a region of memory that is physically closer to a processer on a multi-processor system. This way there's less latency when reading/writing to the general memory region. For Java, the optimizations are made primarily to the Eden (young generation) heap space, as</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/8884229531459526671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=8884229531459526671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8884229531459526671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8884229531459526671'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/08/numa-and-jvm.html' title='NUMA and the JVM'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-8226590849154902120</id><published>2008-08-06T03:03:00.008-07:00</published><updated>2008-08-06T03:35:01.710-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='threading'/><title type='text'>Java 6 threading article</title><summary type='text'>An article on Java 6 threading optimizations recently appeared on infoq. It's a good article in two parts, but here I'm just going to capture some of the interesting notes about the different locking features now in the JVM (most of this entry is paraphrase - that is, notes to myself).Escape analysis -  determine the scope of all references in an app. If HotSpot can determine the refs are limited</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/8226590849154902120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=8226590849154902120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8226590849154902120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8226590849154902120'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/08/java-6-threading-article.html' title='Java 6 threading article'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-8393074925582967939</id><published>2008-07-02T07:48:00.004-07:00</published><updated>2008-08-06T03:03:13.277-07:00</updated><title type='text'>devWorks Benchmarking article</title><summary type='text'>This is a great article from the IBM devWorks site about Java performance benchmarking. I'm just capturing some notes in this entry.Measuring time:System.currentTimeMillis() - gets the "wall clock" time, but the updates from the OS are hardware dependent and may only occur every ~10 ms. call to OS returns instantlySystem.nanoTime() - returns a differential time, measured in microseconds, bu the </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/8393074925582967939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=8393074925582967939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8393074925582967939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8393074925582967939'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/07/devworks-benchmarking-article.html' title='devWorks Benchmarking article'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-423530931213635893</id><published>2008-05-23T08:40:00.007-07:00</published><updated>2008-05-23T09:34:56.291-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quartz'/><category scheme='http://www.blogger.com/atom/ns#' term='grails-service'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Grails + email service</title><summary type='text'>Alright, finally getting back into to grails coding after a long time away. For my test pet store application, I decided to take a day and create newsletter sender. Basically, it just takes an email address (submitted via a little form widget thingy), and stores it in a separate table the database. I'm not bothering with user accounts yet for the site, so I'm just keeping it in a stupidly simple </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/423530931213635893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=423530931213635893' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/423530931213635893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/423530931213635893'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/05/grails-email-service.html' title='Grails + email service'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-9208466306564066948</id><published>2008-05-08T08:40:00.001-07:00</published><updated>2008-05-08T08:42:52.398-07:00</updated><title type='text'>Pat Helland speech</title><summary type='text'>Wow - another reason why Pat is truly one of my heros: Speech from 2007 TechEd EMEA</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/9208466306564066948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=9208466306564066948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/9208466306564066948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/9208466306564066948'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/05/pat-helland-speech.html' title='Pat Helland speech'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-3014931929096232970</id><published>2008-04-03T10:55:00.003-07:00</published><updated>2008-04-03T11:07:55.090-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google checkout'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Starting with Grails</title><summary type='text'>In an effort to branch out an learn my "one language per year" like a good little developer, I've decided to start tooling around with Groovy and it's most famous offspring, Grails. I spent a week on a test app just to get my feet wet with the Grails conventions for GSPs/Controllers/Domain object and such, and I must admit that it's been soooooo easy to get things up and running. And not having </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/3014931929096232970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=3014931929096232970' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/3014931929096232970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/3014931929096232970'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/04/starting-with-grails.html' title='Starting with Grails'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-393783454224039615</id><published>2008-03-18T13:05:00.007-07:00</published><updated>2008-03-19T08:23:24.129-07:00</updated><title type='text'>Apache HTTP Client and proxy settings</title><summary type='text'>I don't how many times I've had to do it (and how many times I've screwed it up), but I can never remember just how to set up proxies for Apache HTTP Client. So, to keep a record of my googling and experimenting, here's the entries that really helped:Java, Commons HTTP Client and HTTP proxies (Aaron Johnson). Check this the first example if you just need to set proxy name/host.jGuru -  just the </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/393783454224039615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=393783454224039615' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/393783454224039615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/393783454224039615'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/03/apache-http-client-and-proxy-settings.html' title='Apache HTTP Client and proxy settings'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-6702058762903517843</id><published>2008-02-24T21:57:00.011-08:00</published><updated>2008-02-24T22:16:06.365-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='live upgrade'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Solaris Live Upgrade notes</title><summary type='text'>Here's some handy tips for using Open Solaris Live Upgrade. Really, this is just my set of notes, most of which I've pilfered from this article. I'm not a Solaris expert my any stretch of the imagination, but this may be helpful to someone out there (even me....)First, download the DVD ISO (or the separate CD images and cat them together). Then mount the ISO:lofiadm -a  /dev/lofi/1mount -F hsfs -</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/6702058762903517843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=6702058762903517843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/6702058762903517843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/6702058762903517843'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/02/solaris-live-upgrade-notes.html' title='Solaris Live Upgrade notes'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-685460998223988355</id><published>2008-02-14T10:40:00.000-08:00</published><updated>2008-02-15T10:34:21.257-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Right-sizing the architecture</title><summary type='text'>I work at a medium-sized technology company as an e-commerce architect. The company started out in the dot-com days supporting a single web site (primarily content driven). When I joined about two and a half years ago, the company decided to expand out into new sites hosting different content for different partners. As technologists, we decided break apart what was a monolithic application into </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/685460998223988355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=685460998223988355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/685460998223988355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/685460998223988355'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/02/right-sizing-architecture.html' title='Right-sizing the architecture'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-8353723052678382823</id><published>2008-02-05T06:18:00.001-08:00</published><updated>2008-02-05T06:32:01.637-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>JDeveloper 11g Jumps the Shark</title><summary type='text'>I stopped using Eclipse about a year and a half ago because the performance (on a reasonably performant Mac) was just too abysmal. I then spent a month trying other IDEs (the free ones, at least - I'm cheap), and eventually settled on JDeveloper. It's not the best, but it had enough of what I needed - which is basically just Java editing and code complete. I really don't need all the crap they </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/8353723052678382823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=8353723052678382823' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8353723052678382823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8353723052678382823'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/02/jdeveloper-11g-jumps-shark.html' title='JDeveloper 11g Jumps the Shark'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-5274911313644691234</id><published>2008-01-28T03:42:00.000-08:00</published><updated>2008-01-28T03:59:22.932-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Simplifying service interfaces - avoid database ids</title><summary type='text'>Let's assume you have a data-centric (i.e. CRUD) service for retrieving product information. For the sake of simplicity, let's assume an XSD that looks like this:&lt;complexType name="product"&gt;&lt;sequence&gt;&lt;element name="sku" type="string"/&gt;&lt;element name="name" type="string"/&gt;&lt;element name="description" type="string" minOccurs="0"/&gt;&lt;element name="product-type" type="product-type"/&gt;&lt;/sequence&gt;&lt;/</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/5274911313644691234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=5274911313644691234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/5274911313644691234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/5274911313644691234'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2008/01/simplifying-service-interfaces-avoid.html' title='Simplifying service interfaces - avoid database ids'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-6151994004608834789</id><published>2007-12-27T08:45:00.000-08:00</published><updated>2007-12-27T09:31:55.347-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='contracts'/><category scheme='http://www.blogger.com/atom/ns#' term='interfaces'/><title type='text'>Simplifying service interfaces</title><summary type='text'>When I started building out services, I was lucky enough to miss out on the whole notion of distributed objects - the idea of treating a remote object as if it were local. I did, however, start off with thick clients and (XML) RPC-style style calls, using JAX-RPC (&lt;shudder&gt;). In this style, of course, all the operations are very fine-grained, even when loading a single entity. After knocking my </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/6151994004608834789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=6151994004608834789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/6151994004608834789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/6151994004608834789'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/12/service-interfaces.html' title='Simplifying service interfaces'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-1111509747287226984</id><published>2007-12-06T15:39:00.000-08:00</published><updated>2007-12-06T04:30:45.516-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='shard'/><title type='text'>Playing with Hibernate Shards</title><summary type='text'>After hearing a lot of discussion at QCon and elsewhere about the notion of database sharding (a new, hipper name for the older, more mundane name "partitioning"), I decided to download the Hibernate Shards project and give it a whirl (what else do you do when you can't sleep?). I wrote an earlier blog entry on running multiple MySQL instances that will help when playing with Hibernate Shards.As </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/1111509747287226984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=1111509747287226984' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1111509747287226984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1111509747287226984'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/12/playing-with-hibernate-shards.html' title='Playing with Hibernate Shards'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-1374645687505905415</id><published>2007-12-06T13:05:00.000-08:00</published><updated>2007-12-06T02:57:40.032-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shard'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Running multiple instances of MySQL on the same machine</title><summary type='text'>This may be documented elsewhere on the internet, but I thought I capture my own notes about how to setup and run multiple MySQL instances on the same box. I was playing with this mainly for experimenting with sharding, in particular with the Hibernate Shards project). I'm going to make several assumptions for this discussion: that the databases will, data excluded, be mirror of the other in </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/1374645687505905415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=1374645687505905415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1374645687505905415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1374645687505905415'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/12/running-multiple-instances-of-mysql-on.html' title='Running multiple instances of MySQL on the same machine'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-2906445153101567377</id><published>2007-12-06T06:38:00.000-08:00</published><updated>2007-12-06T03:38:45.862-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='india'/><title type='text'>Initial observations in India</title><summary type='text'>(5 Dec 2007)I should talk about the area where Tavant's office is located. This is a suburb of Delhi called Noida, and from our location it's about a 20 minute drive just to get to the Noida-Delhi border. Until ten years or so ago this area was just a rural village. But then some developers started building roads and office buildings, and starting two or three years ago, many software companies </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/2906445153101567377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=2906445153101567377' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/2906445153101567377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/2906445153101567377'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/12/india-trip-day-4-initial-views-in-india.html' title='Initial observations in India'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-1175537245407114909</id><published>2007-12-05T18:08:00.000-08:00</published><updated>2007-12-05T18:20:02.748-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='india'/><title type='text'>India Trip - Day 1, part 2</title><summary type='text'>(evening of 2 Dec 2007)After taking a much needed nap, we were met by our friend Navin Goel, who is an employee at the company we are visiting here in India called Tavant. Navin picked us up in the afternoon and was took us to a local Hindu shrine call Akshardahm. Wow, that place is really stunning and quite beautiful. Akshardahm is a temple dedicated to an eigthteenth-century Hindu priest named </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/1175537245407114909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=1175537245407114909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1175537245407114909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/1175537245407114909'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/12/india-trip-day-1-part-2.html' title='India Trip - Day 1, part 2'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-2332936789122687117</id><published>2007-12-02T14:30:00.000-08:00</published><updated>2007-12-05T18:08:20.530-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='india'/><title type='text'>India trip - Day 1</title><summary type='text'>(2 Dec 2007)Well, we finally arrived in India! Mahesh and I are here to give training seminars to the employees of the outsourcing/staff augmentation company we work with here In Delhi, Tavant. We left Friday evening from New York JFK and arrived in Brussels on time (7:30 am on Saturday). Then in Brussels there was a three hour delay due to some power outages - argh. We got into Delhi at 2:30 a.m</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/2332936789122687117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=2332936789122687117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/2332936789122687117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/2332936789122687117'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/12/india-trip-day-1.html' title='India trip - Day 1'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-8041161834823656640</id><published>2007-11-28T22:53:00.000-08:00</published><updated>2008-12-13T02:40:30.962-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='I18N'/><title type='text'>Survival Guide to Internationalization (I18N)</title><summary type='text'>As software engineers, we typically don't bother with many "things you should design for" until they become a necessity. Things like security and internationalization fall into that bucket. The agilists would say, "Of course, stupid, don't build it until you have a business needs for it" (sorry for my poor paraphrasing of a well-thought out paradigm, but you get the picture). The older and less </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/8041161834823656640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=8041161834823656640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8041161834823656640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/8041161834823656640'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/11/survival-guide-to-internationalization.html' title='Survival Guide to Internationalization (I18N)'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YUSZoHDyqXo/R0yNduigOFI/AAAAAAAAAIQ/qu0xu4JQsA0/s72-c/normalized-before.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-7874692685297203400</id><published>2007-11-28T18:04:00.000-08:00</published><updated>2007-11-28T18:12:45.580-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>Meta-data and RESTful web services</title><summary type='text'>I'd like to think out loud about REST and URIs and ROA. The concepts behind REST are ideas I am really thinking about lately, but there some issues I find in reticifying it with my current software needs. Let's say I have a URL/URI:http://www.my_domain.com/item/123which represents the addressable location of the item I am interested in (uniquely, and cleverly, identified by the identifier "123").</summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/7874692685297203400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=7874692685297203400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/7874692685297203400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/7874692685297203400'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/11/meta-data-and-restful-web-services.html' title='Meta-data and RESTful web services'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-4741785343009839662</id><published>2007-11-20T08:14:00.000-08:00</published><updated>2007-11-20T13:09:10.814-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qcon'/><category scheme='http://www.blogger.com/atom/ns#' term='threading'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Test driving Scala</title><summary type='text'>At the QCon conference in San Francisco two weeks ago, I heard Brian Goetz speak about concurrency, it's past and where we're at now. It was a really great session (I should probably blog about it in the future), but one of the problems he identified with the concurrency in Java is the notion of shared state between threads. Long story short, some alternate approaches to concurrency and safety </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/4741785343009839662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=4741785343009839662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/4741785343009839662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/4741785343009839662'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/11/test-driving-scala.html' title='Test driving Scala'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5727636489004040433.post-2117874004170454826</id><published>2007-11-12T19:57:00.000-08:00</published><updated>2007-11-13T07:13:59.935-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code migration'/><category scheme='http://www.blogger.com/atom/ns#' term='backwards compatibility'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Backwards compatibility in services</title><summary type='text'>With all the hoopla over web services (including WS-* and REST varieties) and asynchronous messaging, there seems to be little discussion on how to make these services (I'm using the term very generically here) compatible with existing service consumers.  This issue is really not a problem for vendors or tools providers to solve, as it really pertains to the problem domain at hand and how the </summary><link rel='replies' type='application/atom+xml' href='http://softwarecarnival.blogspot.com/feeds/2117874004170454826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5727636489004040433&amp;postID=2117874004170454826' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/2117874004170454826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5727636489004040433/posts/default/2117874004170454826'/><link rel='alternate' type='text/html' href='http://softwarecarnival.blogspot.com/2007/11/backwards-compatibility-in-services.html' title='Backwards compatibility in services'/><author><name>Jason Brown</name><uri>http://www.blogger.com/profile/14054361400006189506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
