<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
 <title>Romain Prieto</title>
 
 <link href="http://blog.cuttleworks.com/" />
 <updated>2012-05-01T17:03:31+10:00</updated>
 <id>http://cuttleworks.com/blog</id>
 <author>
   <name>Romain Prieto</name>
 </author>

 
 <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/changedoesnthavetobescary" /><feedburner:info uri="changedoesnthavetobescary" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
   <title>Pragmatic pairing: code preview</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/4DSx1YFuVfs/code-review-or-code-preview" />
   <updated>2012-02-27T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2012/02/code-review-or-code-preview</id>
   <content type="html">It happens quite often: the project deadline is approaching and the team has to go faster. On my last 2 projects we decided to apply pragmatic pairing to see if our velocity picked up. Sure enough it did, after all do we really need to pair 100% of the time? On the other hand how do we make sure code quality is maintained, and knowledge of the codebase is shared? That&amp;#8217;s how we introduced the concept of code preview. That&amp;#8217;s right, not review. Preview. Out: code review I&amp;#8217;m not adverse to the concept of code reviews, I actually tried on...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/4DSx1YFuVfs" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2012/02/code-review-or-code-preview</feedburner:origLink></entry>
 
 <entry>
   <title>HttpMediaTypeNotSupportedException - Or is it?</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/tVkiH2fT3ls/http-media-type-not-supported-exception" />
   <updated>2011-12-22T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2011/12/http-media-type-not-supported-exception</id>
   <content type="html">This post is more of a reminder for future me&amp;hellip; because this is one of these errors that doesn&amp;#8217;t make much sense until you figure it out. After a relatively big refactor, one of our RESTful controllers started failing with the following exception: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json; charset=UTF-8' not supported Why would this particular controller not support application/json anymore? Of course it turned out to be a red herring. Somewhere deep in Spring&amp;#8217;s code, the following exception was being thrown&amp;hellip; and caught straight away: org.codehaus.jackson.map.JsonMappingException: Conflicting setter definitions for property "suburb": au.com.myproject.Client#setSuburb(1 params) vs au.com.myproject.Client#setSuburb(1 params) So what happened? When...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/tVkiH2fT3ls" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2011/12/http-media-type-not-supported-exception</feedburner:origLink></entry>
 
 <entry>
   <title>Spring: RESTful controllers and error handling</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/akqaTdL9hO8/spring-restful-controllers-and-error-handling" />
   <updated>2011-12-07T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2011/12/spring-restful-controllers-and-error-handling</id>
   <content type="html">Our current project is based on Spring MVC with mix of other technologies. Like in many projects, we handle errors with a global error handler that redirects to a help page. It works great: regardless of where the exception is thrown, if no one catches it the user gets taken to a page where he can try resuming or contact support. The problem is client/server interactions&amp;hellip; what about our RESTful controllers? The browser sends JSON, and it definitely expects JSON back! Let&amp;#8217;s have a look at a request that failed on the server side: In case you&amp;#8217;re wondering: yes, that&amp;#8217;s...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/akqaTdL9hO8" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2011/12/spring-restful-controllers-and-error-handling</feedburner:origLink></entry>
 
 <entry>
   <title>Expressive code: combining Guava, LambdaJ and Hamcrest</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/3Pow1sFf3EU/expressive-code-guava-lambdaj-hamcrest" />
   <updated>2011-10-19T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2011/10/expressive-code-guava-lambdaj-hamcrest</id>
   <content type="html">Disclaimer: I&amp;#8217;m a big fan of static imports. A quick Alt-Enter in IntelliJ or Ctrl-M in Eclipse often makes the code a lot more legible, and the IDE can always help you navigate if you&amp;#8217;re drawing a blank. Since you can&amp;#8217;t Ctrl-click a blog post, just leave a comment if it&amp;#8217;s not clear which library a static function is from. Hamcrest matchers have been growing in popularity over the last few years, especially against plain old Junit asserts. The main advantages are probably that: they read very well &amp;#8211; almost like plain english in fact they can be composed, for...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/3Pow1sFf3EU" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2011/10/expressive-code-guava-lambdaj-hamcrest</feedburner:origLink></entry>
 
 <entry>
   <title>Javascript code quality, as part of your build</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/PsV_UsV-0pk/javascript-code-quality-as-part-of-your-build" />
   <updated>2011-08-01T00:00:00+10:00</updated>
   <id>http://blog.cuttleworks.com//2011/08/javascript-code-quality-as-part-of-your-build</id>
   <content type="html">So you&amp;#8217;re developing a web application full of rich client-side interactions. Maybe it started off as a few functions, but by now you have quite a collection of Javascript files and modules. Chances are you&amp;#8217;re already treating this code like any other code: it&amp;#8217;s modular and unit tested, and that&amp;#8217;s great! So what&amp;#8217;s the next step? Well in my current project we thought: we run checkstyle on Java code, what about doing the same in Javascript? Sure, static code analysis has some drawbacks, but all in all if you pick the right rules it helps a lot with catching mistakes...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/PsV_UsV-0pk" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2011/08/javascript-code-quality-as-part-of-your-build</feedburner:origLink></entry>
 
 <entry>
   <title>Static blogging: from Wordpress to Jekyll</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/TOVO5kG-0_I/static-blogging-from-wordpress-to-jekyll" />
   <updated>2011-07-15T00:00:00+10:00</updated>
   <id>http://blog.cuttleworks.com//2011/07/static-blogging-from-wordpress-to-jekyll</id>
   <content type="html">The first time I started a blog, I went with the obvious option: software as a service. After all, they could get me started in minutes and let me focus on the content. After a while though, I started to get the limitations &amp;#8211; I guess &amp;#8220;free&amp;#8221; came with a cost. From then I decided to run my own instance of Wordpress, which felt a lot more flexible: I could play with CSS, change all the settings, and most of all I had my own little blog. Not that it was complicated, but you still get the IKEA satisfaction of...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/TOVO5kG-0_I" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2011/07/static-blogging-from-wordpress-to-jekyll</feedburner:origLink></entry>
 
 <entry>
   <title>Newbie’s guide to running Cyanogen on a Desire HD</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/wIVsmw6aOto/newbies-guide-to-running-cyanogen-on-a-desire-hd" />
   <updated>2011-05-25T00:00:00+10:00</updated>
   <id>http://blog.cuttleworks.com//2011/05/newbies-guide-to-running-cyanogen-on-a-desire-hd</id>
   <content type="html">Here&amp;#8217;s a post that&amp;#8217;s slightly different from the rest. While still technical, it&amp;#8217;s not about programming. It&amp;#8217;s not even about software development. This time, it&amp;#8217;s about using other people&amp;#8217;s brilliant software Warning: This post reflects my experience adding awesomeness to my Desire HD. My partner followed the same steps without any problems, but your experience might be different. Of course I cannot be held responsible for anything that happens to your phone, or for your toast burning while you play with your new toy. My Android experience I&amp;#8217;ve had an HTC Desire HD for a while now, and I can...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/wIVsmw6aOto" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2011/05/newbies-guide-to-running-cyanogen-on-a-desire-hd</feedburner:origLink></entry>
 
 <entry>
   <title>The refactoring chef</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/S5B5lz5A7no/the-refactoring-chef" />
   <updated>2011-02-25T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2011/02/the-refactoring-chef</id>
   <content type="html">Warning: please note the following post is devoid of any &amp;#8220;steak holder&amp;#8221; jokes. And it wasn&amp;#8217;t easy! I don&amp;#8217;t remember when or where I first heard this analogy, but I&amp;#8217;ve always thought it&amp;#8217;s an interesting way to describe what developers do. If I decided to share my version of it, it&amp;#8217;s because there is one discussion that seems to pop up so frequently, yet never settles: does refactoring slow us down? Could we do without it for a while to burn more points? So picture a small restaurant you like in town: the owner, running the place, and the chef...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/S5B5lz5A7no" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2011/02/the-refactoring-chef</feedburner:origLink></entry>
 
 <entry>
   <title>Android builds: dev &amp; prod</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/fSAbg-dQqUo/android-dev-prod-builds" />
   <updated>2011-02-01T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2011/02/android-dev-prod-builds</id>
   <content type="html">I&amp;#8217;ve been working with Android a lot lately, and something I hadn&amp;#8217;t quite figured out was configuration management for different environments. Well until yesterday, so I thought I&amp;#8217;d blog about it! The official checklist for publishing an app to the market unfortunately shows a very waterfall approach. While it gives crucial info about what you need to do, it also includes scary headings such as &amp;#8220;Before you do the final compile&amp;#8221;! For the sake of everyone including our users, I hope we&amp;#8217;re all doing incremental releases. So let&amp;#8217;s have a look at the minimal list of what differs between a...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/fSAbg-dQqUo" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2011/02/android-dev-prod-builds</feedburner:origLink></entry>
 
 <entry>
   <title>Can you reproduce it?</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/IMCapKhwluM/can-you-reproduce-it" />
   <updated>2011-01-16T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2011/01/can-you-reproduce-it</id>
   <content type="html">While most of us don&amp;#8217;t enjoy bug fixing that much, I believe it&amp;#8217;s a healthy exercise. On top of the obvious benefits of fixing the code, I think it helps us gain an in-depth understanding of the system and of its dependencies &amp;#8211; and as a result often sharpens our development skills. A common practice in this area is to identify or write the simplest piece of code that exhibits the given behaviour. In fact, this involves a mental process I consider crucial: breaking down the problem into pieces small enough to be processed. As we create that mental picture,...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/IMCapKhwluM" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2011/01/can-you-reproduce-it</feedburner:origLink></entry>
 
 <entry>
   <title>ThoughtFerret: your happiness monitor</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/kwhgIPOOYNo/thoughtferret-your-happiness-monitor" />
   <updated>2010-12-22T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2010/12/thoughtferret-your-happiness-monitor</id>
   <content type="html">A few months ago, ThoughtWorks Australia ran an Android competition where anyone could create an app and present it during our annual winter team hug. The apps would then be judged on several criteria including originality and usability. What better opportunity to give Android development a go and discover the platform? So Fabio Pereira and myself set up to create something useful, and settled on the following context: what if it was easier to monitor and analyse your happiness? What if companies could react to this information in an Agile way and make sure they are focusing on the right...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/kwhgIPOOYNo" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2010/12/thoughtferret-your-happiness-monitor</feedburner:origLink></entry>
 
 <entry>
   <title>Git: what am I about to push?</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/aKgc5HOibVw/git-what-am-i-about-to-push" />
   <updated>2010-12-03T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2010/12/git-what-am-i-about-to-push</id>
   <content type="html">I had used Git for personal projects in the past, but my current engagement is the first time I use it at work. And of course this comes with new questions being raised. Within our team we’ve taken up the (good) habit of letting everyone know when we push… but I’m never good at remembering what I’m about to push. Luckily, the documentation pointed us to the following commands &amp;#8211; they give a pretty list of all the local commits that haven&amp;#8217;t made it to the origin yet. git fetch &amp;amp;&amp;amp; git log origin/master.. Will output something like: commit 654b4e698f7a5648dfb1...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/aKgc5HOibVw" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2010/12/git-what-am-i-about-to-push</feedburner:origLink></entry>
 
 <entry>
   <title>Testing asynchronous javascript</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/j0Yn-1zTxRE/testing-asynchronous-javascript" />
   <updated>2010-11-18T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2010/11/testing-asynchronous-javascript</id>
   <content type="html">We all want to test our code&amp;#8230; but unfortunately Javascript is not always the easiest to tame. That&amp;#8217;s a shame, because with its loosely typed nature it can really benefit from good test coverage. However there&amp;#8217;s quite a few hurdles we have to jump over, from setting up the DOM to mocking the right dependencies&amp;#8230; One of them that had me scratching my head lately was testing asynchronous code. I don&amp;#8217;t mean HTTP requests that we usually manage to mock quite well, but these sneaky setTimeouts. Personally, I try to stay away from delayed execution. However sometimes you want to...&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/j0Yn-1zTxRE" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2010/11/testing-asynchronous-javascript</feedburner:origLink></entry>
 
 <entry>
   <title>My long overdue blog</title>
   <link href="http://feedproxy.google.com/~r/changedoesnthavetobescary/~3/j2FvQRUGhII/my-long-overdue-blog" />
   <updated>2010-11-18T00:00:00+11:00</updated>
   <id>http://blog.cuttleworks.com//2010/11/my-long-overdue-blog</id>
   <content type="html">For quite a while now, I’ve been repeatedly catching myself thinking “well if I had a blog, I could definitely talk about this”. But I didn’t, so I would just resume working or go back to watching youtube my train of thought… So this is it, today is the day I install wordpress and give it a try! What am I gonna talk about? Probably a bit of everything. And to make sure this blog does not end here, here’s a very second post coming – looks like I’m starting with technical suff!&lt;img src="http://feeds.feedburner.com/~r/changedoesnthavetobescary/~4/j2FvQRUGhII" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://blog.cuttleworks.com/2010/11/my-long-overdue-blog</feedburner:origLink></entry>
 
 
</feed>

