Sonar in the news
Welcome to the roundup of blog posts and pages that mentioned Sonar last month…
5 Java powered open source tools for your team
By Alex Collins, 27 August 2010
If you’re a Java shop and want to ensure you can support your team’s toolset, here are some pointers for the must-have tools we modern developers use day-to-day.
Killer tool: Sonar
By Erwin Vervaet, 27 August 2010
Today a colleague at work showed Sonar to me, and I must say that I was really impressed! Sonar is an open source code quality analysis tool that uses a number of popular Java code analyzers like PMD, CheckStyle, FindBugs and Cobertura under the hood, …
Cross-referencing plugins in Sonar 2.2
By Josh Cummings, 19 August 2010
Formerly, we had three Sonar plugins, two “mavenly” dependent on the other. The parent plugin held the common code for uploading non-Java files into Sonar for reporting. The other two took care of analyzing xml and css, respectively, and tying violations to those files.
Integration Tests in Sonar
By Josh Cummings, 19 August 2010
Integration tests are another important aspect of analyzing a project’s overall health that Sonar does not yet support out of the box. To get this functionality, you’ll need to build a couple of Sonar plugins (or try using the ones that I built) that will instrument your integration test code, run the integration tests, and collect the integration test results as well as the new coverage data.
Architecture Analysis Tool SonarJ 6.0 Supports Structural Debt Index and Quality Model
By Srini Penchikala, 16 August 2010
The latest version of software architecture analysis and quality governance tool SonarJ supports structural debt index metrics and architecture quality model. The company behind the product, hello2morrow, last month announced the release of version 6.0 of the tool.
Maven 3 and Sonar
By Anders Hammar, 16 August 2010
Another step towards a final release of Maven 3.0 was made the other day when version 3.0-beta-2 was released. I’ve been using Maven 3 since its alpha days, and despite the alpha/beta moniker, I find it to be superior to any Maven 2.x version. If you are starting a new project, I strongly recommend using Maven 3.
Reporting more than Java code in Sonar (Part I)
By Josh Cummings, 3 August 2010
Of course, anyone that has done static analysis on their project in the past has found certain bad practices that are out of their tools reach to spot. Some examples are…
Two UI tidbits at Zappos/Amazon
Here are two nice UI elements that I have recently discovered on the Zappos and Amazon websites.
Multiple-image browsing at ZapposIt’s common to see multiple-image browsing on product pages, but it’s pretty rare on search result pages. And it always comes with more UI weight (icon to open the browsing widget, or prev/next icons to browse icons…). Zappos has implemented a very nice solution that adds no extra UI weight: when rolling over the image from left to right, the image changes, and you can discover up to 6 photos per product directly on the search result page! Sure, at first glance, this is not easy to understand: it took me a few seconds to understand how to move the mouse over (top to bottom? squared zones?…); but once you’ve got it, it’s a pleasure to use!
Usage-oriented facets at AmazonIn the CSE world, we often oppose hard goods and soft goods. It’s usually easy to build a product database for hard goods (electronics goods, domestic appliances, cars…), and then let users browse products, click on “compare prices” and land on product pages. But for soft goods (fashion, health & beauty, flower…), the number of references makes it a daunting task and so CSEs usually let users browse offers rather than products. In short, hard goods = easy to structure; soft goods = the mess to organize.
When it comes to facets, most CSEs and retailer sites implement feature-oriented facets and rarely usage-oriented facets… Using the analogy “hard goods / soft goods”, I’m tempted to use the terms “hard facets” for feature-oriented facets and “soft facets” for usage-oriented facets. Does it make sense?
Anyway, Amazon is experimenting with soft facets on its “Women’s denim” category in the US. When landing on the homepage of the category, you can choose “Modern chic”, “Timeless style”, “Everyday casual”, “Fresh & forward” styles. Basically those values act as shortcuts in the navigation (1 option in the soft facets = multiple options in the hard facets selected), and they give a kind of “buying guides embedded into faceted navigation” behavior that I really like.
Twitter Weekly Updates for 2010-08-08
- The Coupon Network: Everything You Need To Know About The Web’s Hottest Business Model http://bit.ly/b5UVkq #
- I really like the "Lightbox" tool on Pixmac.com. Could work well on a shopping site… http://bit.ly/aAmCkI (via @dfbrule) #
- DoubleClick Founder Launches Structured “Decision Engine” FindTheBest.com http://selnd.com/9yRKcc #
- The camera lens comparator of FindTheBest.com is pretty good : what is better than pure dashboard to compare features? http://bit.ly/9QGp3G #
- Also, very nice introduction video at FindTheBest.com http://youtu.be/Kv46GeN3tsA #
- Writing a blog post about Measy. Searching "measy / techblogs" on Blekko and got results difficult to get so easily with Google. Impressed! #
- "The history and evolution of SEO" http://bit.ly/bUrC3o Nice infography of 15 years of SEO (yes, 15! :) ) #
- Today I've realized the power of realtime. Explosion heard in Grenoble: only Twitter is talking about it even if the cause is still unknown #
- No One Nos: Learning to Say No to Bad Ideas http://bit.ly/aNQJEO #ux #userexperience #
- "Shopkick Teams With Best Buy To End Fake Retail Check-Ins" http://bit.ly/cb0Y6D Smart but scary? #
- I've got a 2nd invite for Blekko search engine – who wants it ? #
- ok that was quick :) Blekko invite gone :) #
- fflick’s Sentiment Engine Turns Twitter Into A Crowdsourced Movie Critic http://tcrn.ch/9Zfmvz #
- Received a newsletter from Shopping.com entitled "Your Reviews Can Help Stop Animal Cruelty!". Weird tactic to engage users to write reviews #
- New example of MS Pivot: http://bit.ly/aHnTjK It's nice when the dataset is loaded… but loading times seem too long for mainstream usage #
- "Pivoting" http://bit.ly/cjEZMK to be related with Hunch re-focus ( http://bit.ly/aEgRVm & http://bit.ly/bycjk8 ) (via @rww) #
- Visa Announces Rightcliq: Like Evernote, but for Shopping http://bit.ly/a8IcZK #
- "Visualizing Facets" http://bit.ly/9qLQZK Another great article on the Endeca blog… #ux #userexperience #
- RT @briansolis: Reading "Social Shopping Draws Teens" by @emarketer http://bit.ly/bFQtAi (via @siva_v_kumar) #
- "Google Products ouvrira t'il en France en septembre ?" une des questions du quizz estival de @danielbroche http://bit.ly/awfAJ2 :) #
- Error Message: Google Research Director Peter Norvig on Being Wrong http://bit.ly/a70Oq0 #
- RT @clementcollin: Discovering LESS. LESS extends CSS with variables, mixins, operations and nested rules. Great! http://lesscss.org/ #
- Mapping People to Products: Hunch & GetGlue http://rww.tw/cw5mKv #
- Google To Launch Deals Site? http://bit.ly/9zZDC1 #
- How Online Retailers Can Leverage Facebook’s Open Graph http://bit.ly/aPh1Zu #
- " #
- RT @marissamayer: Interesting article – I like the parallelism with signage. @markitecht http://tumblr.com/xtsf0u2c6 =) #
- Metrics-Driven Design http://bit.ly/c89DHP #
- RT @JosianLondon: Interview MD Europe Shopzilla about user reviews: http://www.internetretailing.net/category/de/ #
Pick your code coverage tool in Sonar 2.2
By default, Sonar embarks two tools to calculate code coverage by unit tests on java projects : Cobertura and Clover. But last week, we also released plugins for two other coverage tools : Emma and JaCoCo. Both plugins are available in the Sonar Plugin Library. So I thought it would be a good time to compare all of them and share the results with the community.
(13 April 2010) 1.9.4.1
(3 March 2010) 2.0.5312
(13 June 2005) 0.4.0
(4 June 2010) Type of instrumentation Source code instrumentation Offline bytecode instrumentation Offline bytecode instrumentation On-The-Fly bytecode instrumentation Java 1.4+ 1.3+ 1.2+ 1.5+ Line hits yes yes yes yes Branch coverage yes yes no no (but planned) Process within Sonar Instrumentation
Compilation
Execution
Report generation
Report parsing Instrumentation
Execution
Report generation
Report parsing Instrumentation
Execution
Data reading Execution
Data reading
To compare results and performance of those tools I’ve used following projects:
Lines Statements Lines of code Classes Tests Sonar LDAP Plugin 0.1 925 201 459 8 9 Struts 1.3.9 114621 21896 50080 518 323 Commons Collections 3.3RC1 64447 12402 26558 412 13023And here is code coverage results:
Clover 2.6.3 Clover 3.0.2 Cobertura 1.9.4.1 Emma 2.0.5312 JaCoCo 0.4.0 Sonar LDAP Plugin 0.1 Line coverage 91.9 91.9 88.8 86.7 88.0 Branch coverage 73.4 73.4 75.0 N/A N/A Struts 1.3.9 Line coverage 15.7 15.7 15.4 14.8 15.4 Branch coverage 14.6 14.6 12.8 N/A N/A Commons Collections 3.3RC1 Line coverage 82.5 82.9 82.1 81.1 82.4 Branch coverage 78.7 78.8 78.6 N/A N/AAnd finally I’ve made three measures of time of Sonar analysis for each combination of project and tool with clean Sonar database (which means 54 builds on my Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz). For this I’ve used Maven 2.2.1 with Java 1.6.0_20 and Sonar 2.2.

Measy, a quiz-based decision engine for shopping
Measy is an almost 1 year old shopping decision engine that relies on a quiz-based system to help shoppers identify the best product for their needs. Those quizzes are really interesting alternatives to classic faceted navigation that most shopping engines use to let users filter down products; in a way, they are similar to the Hunch assistants except that the questions and recommendation engine are not built by the community, but rather through editorial work, I guess.
Measy is currently limited to a few categories (Digital cameras, DSLRs, E-Readers, HDTVs, Netbooks, Smartphones). Quick review of the DSLR category :)
- The first question is about price, and relies on slider to define max price. Classic.
- The next questions are written with the “how important is…” pattern. How is important is brand? How important is size? How important is ease of use? … For each question, four values are available: “Don’t care”, “Slightly important”, “Important”, “Very important”.
- Choosing “Slightly important”, “Important” or “Very important”, you get complementary information or question… The “How important is brand?” option lets you choose your favorite brands using checkboxes. Behind the “How important is ease of use” question, you can define your level of expertise (from beginner to expert) using a slider…
- When you are done filling the quiz, the best product match is displayed, with a global score + scores for each question. Other results can be browsed ; and feature-per-feature comparison tables, along with price comparison and reviews services, are available.
Overall, I like the quiz idea and the natural speech used in the quiz (vs. the wording usually found in faceted navigation to describe facets). For sure, it’s difficult to please experts with such quiz. As such, I think that classic faceted navigation on large range of filters is complementary for experts. An interesting UX challenge would be to mix the quiz idea, faceted navigation and to some extent buying guides into a compelling user interface that could serve the needs from beginners to experts inside a product category.
The "how important is brand" question, with checkboxes to choose prefered brands
The "how important is ease of user" question, see how the sentences about Ergonomics and Menu system are written: natural speech improves empathy with the site.
The "how important is shooting in different situations" question, with checkboxes to choose common usages.
Result page
Sonar in the news
Welcome to the roundup of blog posts and pages that mentioned Sonar last month…
Jouez les Docteurs Love, apprenez à nettoyer du vieux code
By Le Touilleur Express, 28 July 2010
La vie d’un développeur ce n’est pas toujours de travailler à la création d’une nouvelle application. Au contraire nous serons souvent amené à faire ce que j’appelle de l’Archéologie. Cela veut dire entrer dans du code écrit il y a quelques années, être capable de faire fonctionner une vieille application, et surtout, être capable de la moderniser sans l’abimer. J’ai regroupé quelques outils et quelques pratiques apprises ces dernières années, mais n’hésitez pas à compléter.
Zoom sur… sonar, pour automatiser la vérification de la qualité du code java
By Guillaume Saint-Raymond, 28 July 2010
La qualité du code est souvent le parent pauvre des projets en entreprise et, pourtant, celle-ci a un impact sur la productivité. Sonar est le tableau de bord permettant de suivre l’évolution de la qualité des sources au fur et à mesure de la vie d’un projet.
Maintaining High Quality Code with Sonar
By RJ Salicco, 27 July 2010
Is your app so brittle that if you stare at it for too long that it may break causing an all weekend outage?
Does your app contain smelly dead code?
Are your code review sessions a waste of your time?
Android and Sonar
By Brett Dubroy, 21 July 2010
Continuing from the Android and Continuous Integration note, we’d also like to hook up our metrics gathering tool (Sonar – http://www.sonarsource.org/) into our CI builds of our android applications on Hudson.
Technical Debt and the Boogie Monster
By Joel Tosi, 19 July 2010
Growing up as the youngest child meant that my closest brother (6 years my elder) terrorized me with threats of the boogie man coming to get me. It was a rather effective tactic – how to deal with the boogie man wasn’t well known, and the internet was just a glimmer in Al Gore’s eye.
Twitter Weekly Updates for 2010-08-01
- For Travel Planning, Search Engines May Not Be Your Best Destination http://selnd.com/aRud00 #
- “If Information Arch. is the spatial side of information, I see content strategy as the temporal side of the same coin” http://bit.ly/brsduu #
- Yelp Gears Up To Take On Groupon, Starts Testing Local Deals http://bit.ly/c0upws #
- Kaboodle’s PopPicks: One part Gilt, One part Threadless http://bit.ly/cPXhmF #
- So many articles about defining your Content Strategy these days "How to Create a Web Content Strategy For ur Company" http://bit.ly/cOWVjb #
- "We’ve been missing the pleasurable elements of Web design for too long" in "Emotional Interface Design" http://bit.ly/9nbPbd #
- RT @digimindci: Engaging On Social Networks: Competitive Intelligence Implications | Social Media Today http://bit.ly/9GAWK4 #
- RT @TechCrunch Amazon Now Taps Into Facebook For Social Product Recommendations http://tcrn.ch/93ReF5 #
- Email beats Social Media for Customer Attention – is it true? http://bit.ly/cOP6Ah #
- Firefox 4.0b2 makes me want to switch back from Chrome to Firefox… Let's see how both browsers will evolve in the next months… #
- Bing – Camera Scanning On The IPhone App http://bit.ly/cYZzhT #
- "As our work becomes more about emotion less about usability, time to delight might become a metric with real meaning" http://bit.ly/bEBmOK #
- Blekko seems promising… http://bit.ly/bLj5gy #
- Search strategy I didn't know: "title rewriting to boost perceived relevance" http://bit.ly/aPs22S #
- Terrible pictures :( :( http://bit.ly/bt9OZv #
- Blekko: New Search Engine Lets You “Spin” The Web http://selnd.com/bVK9ht #
- Groupon Launches Deal Personalization, Opens Door To (More) Explosive Growth http://bit.ly/brMiXw #
- A New Way to Get More Clicks from (Google) Product Search http://bit.ly/deaC7r #
- Imagine if Hunch engine could be plugged onto the new Facebook Questions… "Facebook as Empathy Engine" http://bit.ly/9C7vQK #
- SEOmoz | 7 Cutting Edge Web Design Trends (that Can Actually Improve SEO): http://bit.ly/bgHLjn #
- RT @PriceGrabber: Which next-generation @PriceGrabber logo do U prefer & why? #1 http://yfrog.com/87ip8pj #2 http://yfrog.com/n3639j #
- Good example of real-time community management with #PriceGrabber contest to choose its new logo #
- RT @nicolasjornet: La marque Facebook au plus bas http://bit.ly/aPItTc #
- When Good SEO Becomes Bad Information Architecture http://selnd.com/aWBNIR #
- Apple Patents Travel, Hotel and Fashion Applications http://bit.ly/cRRMcr #
- RT @BettyJoeFox: Shop by Color: Visual Shopping Search Engines: http://bit.ly/cJge1V (via @dfbrule) #
- RT @bduclaux: Check out our new realtime hotel availability check – now on Twenga Travel http://www.twenga.fr/voyage/ #
The new Hunch homepage: a perfect example of emotional design
I love the new homepage for non-logged users on Hunch… For me, It’s a perfect example of emotional design, a term that I have discovered through two recent articles (“Time to delight” and “An Event Apart: Emotional Interface Design”). Quick review of this homepage:
- A strong tagline: “Hunch personalizes the internet” with an asterisk that refers to an explanation text to have a better understanding and to explain the promise of Hunch…
- In the explanation text, note the “How do we personalize the internet? (glad you asked!)”… I like the ton of voice: casual, a bit humoristic, it develops the empathy with the site… Great!
- Visual representation of what the tagline means, with hot colors.
- A proeminent (yet pretty low in the page) yellow box with the call to action: “Answer 20 questions to build a taste profile” and Twitter/Facebook login options (but no custom Hunch option: this one is hidden behind the “Sign in > Create account” links; strange).
- Then there is a huge gap with other links displayed at the bottom of the page. I suppose it means: no distraction on the page, scroll down if you want more; and if you want more, you are not the average user.
- In the “help” section of those bottom links, there is a “serendipy” link which leads to a list of searches. Sounds like a SEO trick, but again I like the “serendipity” anchor text: it simply feels “human” !
Twitter Weekly Updates for 2010-07-25
- Bing Cashback: Don’t Leave Your Piggybank On The Table http://bit.ly/95wFkv #
- RT @TechCrunch WeShop Blends Q&A With Purchase Data To Socialize Shopping History #
- Faceted Navigation: Typical Structures for Values http://bit.ly/bjxP9R #ux #userexperience #
- Universal Search: A Huge Opportunity For European SEMs http://selnd.com/aojZtw #
- apnoti.com – the new social shopping portal! http://bit.ly/bE8iUt #
- Soap.com and the Online Supermarkets of the Future http://bit.ly/8ZDOrg #
- RT @siva_v_kumar: TheFind Pioneers New CPA Program for Retailers with Mercent http://bit.ly/dtToMU #
- Whaou, big deal ! Introducing the Endeca User Interface Design Pattern Library http://bit.ly/9LC9Yx #ux #userexperience #
- I like the "solution elements" section in new Endeca pattern library. See example for faceted nav: http://bit.ly/dBjl2D #ux #userexperience #
- I like this way of designing! "Design Standing Up" http://bit.ly/d83ArT #ux #userexperience #
- Ohmydeal veut devenir le Kelkoo des offres d’achat groupé http://bit.ly/c8ecKl #
- Companies Lack Customer Experience Competencies http://bit.ly/cSxK3e #
- Meaningful Differentiation – A Key to Improving Conversion http://bit.ly/cBZhjg #
- "Release Early, Release Often" http://bit.ly/bafjvM Google Chrome going more agile, interesting move for a desktop app … #
- Amazon Customers Now Order $1 Billion of Products Per Year via Mobile http://bit.ly/dwR5pr #
- Combating availability bias http://bit.ly/dihBwt #ux #userexperience #
TheFind tweaks its sharing/personalization options
As a follow-up of its May release that introduced Facebook login and a new “My Store” feature, TheFind has just released tweaks to its sharing and personalization options. Quick review:
- Sharing options via Facebook, Twitter and email are now available on every page and on every offer.
- The options to filter results by location or by preferred stores are now available in the same place: a new horizontal tab navigation enables the user to switch from “Shop the web” to “Shop nearby” and “Shop my favorite stores”. More logical, nice execution!
- The offer display has been tweaked to have preeminent “Save to favorite products / brands / stores” options. I think this part can be improved: having three stars disseminated in the offer display is a bit disturbing.
- There are some tuning to be done though: the “Shop my favorite stores” option doesn’t seem to work on product pages (reachable through “Find the best price” links). Also, there is a remaining “Shop my favorite store” module displayed below the results that is confusing: shouldn’t it be removed now there is the “Shop my favorite stores” tab on each page?
The “Shop the web” result page:
The “Shop nearby” result page:
The “Shop my favorite stores” page when no store has been selected yet:
Refreshed offer display with sharing options and ability to mark favorite products / brands / stores
Bing Shopping will become a free program
Microsoft has officially give details about the future of Bing Shopping once its cashback will be stopped on July, 30th. With no surprise, the new Bing Shopping will become a free program, similar to Google Product Search. All the details for merchants are available on a “List your product catalogs on Bing for free” page. Interestingly, this page also contains hints regarding the future of Bing Shopping in terms of user experience:
In addition to current Bing Shopping features like consumer reviews and ratings, and Visual Search, we’re continually improving the Bing Shopping experience to help shoppers discover products and compare offers. Future planned enhancements include a more streamlined Bing Shopping experience, improved shopping scenarios for expanded, targeted reach via social, mobile, and local, and more integration with Bing.com.
[...] The Bing Shopping program product catalogs will display within the Bing Shopping experience similar to how Bing shopping cashback product catalogs displayed. This is where consumers make online purchasing decisions with tools to compare products, opinions, and prices. We also have plans to broaden the display of Bing Shopping program product catalogs within Bing.
Google Product Search will force retailers to provide unique identifiers through feeds
In a post entitled “Improving the Product Search experience”, Google has announced it will require unique identifiers to be provided through data feed for specific categories (emphasis is mine):
Over the past year, we’ve launched a number of exciting features on Google Product Search. Users can now access YouTube videos, product reviews, and other information from a single page about a product – what we call a “product page.” (For example, see this product page for a Canon Rebel camera). Users appreciate this information, and we want to make sure your product offers are included on these product pages. To do this, we’ll need your help – starting in late August, product offers in the Electronics, Books, and Media categories from US merchants may not appear in Product Search if your data feed does not include the necessary unique product identifiers, such as MPN, Brand, GTIN/UPC/EAN or ISBN. We will make similar changes to Product Search in the UK and Germany at a later date.
This may sound anecdotal, but for me it is an important announcement:
- When using the search of Google Product Search, this will ensure there won’t be any detached offers from the corresponding product, which is an important findability flaw that is underestimated by most shopping engines (how to ensure the offers displayed in a product page contain the best deal for that product?).
- If Google succeeds at forcing merchants to give codes (and it will for sure), it’s clear other CSEs will follow (if retailers can give codes to Google, then they can give them to other CSEs as well). This is especially true in Europe where it has always been difficult to get reliable codes from merchants. For those CSEs that will follow Google, matching offers and products using codes will be far more reliable than using text analysis matching algorithms, so the quality of product page will increase (no more accessories wrongly attached to a product).
- If this first step is successful, we can imagine Google pushing those new rules to other categories; and progressively enable product clustering on most categories (similar to what Bing Shopping currently offers).
Offers detached from corresponding product and leading to findability flaw in current Google Product Search:
Sonar 2.2 in screenshots
The Sonar team is proud to announce the release of Sonar 2.2. As usual, this new release includes numerous improvements, bug-fixes and also brand new features that we believe are worth stopping your daily work for a few minutes to review. Those features can be divided into three categories :
- Favourites resources
- Filters homepage
- Plugin classloaders
When you are working in a company that makes an intensive usage of Sonar, the project(s) you want to monitor can be quickly lost among hundred of others projects. Favourites makes it possible to flag those projects but also modules, packages and files. You then get quickly an overview of those resources at any time.
To use this feature, the user must be logged into Sonar. Resources can then be flagged by clicking on the star icon available in the “Dashboard”, “Components” and “Filters” pages :
![]()
Once a resource is flagged as a favourite, it is automatically displayed in the “My Favourites” tab in the homepage :

The Sonar homepage had several drawbacks when Sonar was intensively used :
- Displaying the page took too much time with more than 500 projects
- Only root projects were displayed
- There was no way to quickly get a list of resources according to some criteria. For instance, the list of projects whose technical debt ratio is greater than 10%, the list of Files whose complexity is greater than 300…
- The Treemap was too small and so not usable with many projects
- There was no way for a user to customize the homepage
The new “Filters” page allows to overcome those limitations :

Of course, this feature comes along with configuration capabilities :

Plugins are now executed in independent classloaders. The main advantage is that plugins can declare and embed their own dependencies instead of being limited to libraries provided by Sonar. As a direct consequence, Sonar no longer depends on Maven Checkstyle and PMD plugins but now directly embed Checkstyle and PMD libraries.
To find out more about Sonar 2.2 and the 63 issues that have been fixed, you can read the release notes or maybe you prefer to download it to give a ride. Have fun !
Twitter Weekly Updates for 2010-07-18
- Reflecting on the Demise of Bing Cashback Shopping http://bit.ly/cHSeJ2 #
- Extractiv Launches "Semantics as a Service" Platform http://bit.ly/bA2XKu #
- What If Customer Experience Has No ROI? (Part 2) http://bit.ly/cYIfPM #
- sounds interesting… RT @jaymyers: reading about mahout http://bit.ly/kPEzQ – Introducing Apache Mahout #
- RT @theystolemynick: ces symboles standards utilisables pour remplacer des icônes texte : http://bit.ly/doGUDW #
- Oportunista attempts to break Spain’s mobile coupon barrier http://bit.ly/c7kpZt #
- Impressed by the new Cooper site – http://bit.ly/SOBZ6 – those guys really rock! #ux #userexperience #
- Google Stiffening Up Product Listing Requirements http://bit.ly/bR9HvS #
- 2010 e-tailing Group and PowerReviews Social Shopping Study Reveals Trends Shaping the Future of Ecommerce http://yhoo.it/abjm21 #
- Why does French official sites always have scalability issues at launch?? Remember geoportail.fr and now http://france.fr/ … #
- RT @Kelkoo_es: Kelkoo.com se lanza en Beta en los Estados Unidos, más info: http://prensa.kelkoo.es/kelkoo-extiende-su-site-a-ee-uu.html #
- Kelkoo launches a beta version of its search engine in the US market http://bit.ly/cQCuEh (via http://bit.ly/b7UfUp) #
- KELKOO EXPANDS INTO USA AS COMPANY FOCUSES ON BUILDING GLOBAL BRAND http://bit.ly/chBep0 #
- When Did You Last Re-Recruit Your Team? http://bit.ly/bg0gyb #
- Top 10 Things Customers Expect from Your Online Store http://bit.ly/91Q8KW #
- Google buys Freebase. Will live & stay free but don't think it is good sign for the future of this project http://bit.ly/boReG5 RT @jaymyers #
CD Survey: What practices do developers use?
The survey I’ve been writing about (raw results here) was intended to give us speakers at the continuous deployment webinar (Timothy Fitz, Jez Humble, and myself) some background on the attendees. I’ve saved the best (most informative) question for last: what practices do attendees use in software development. Here is the data:
Some thoughts:
- Business-based operations metrics. One of the key insights of continuous deployment is using business-oriented metrics to monitor operations instead of the more natural (for programmers, anyway) technical metrics. If you expect 50 sign-ups per minute and the rate suddenly dips to 20/minute after a deployment, it’s time to roll back. The practice is not in common use.
- Kanban versus iterations. Iterations still dominate, even though the additional flexibility of kanban is a better match for continuous deployment.
- Pair programming. For all the complaints I hear about pair programming, I would have expected this number to be lower than 25%.
- Test-driven development. 50% is higher than I would have expected. Adoption of TDD is excellent preparation for teams wishing to deploy more frequently (see my commercial screencasts for more details).
- Continuous integration. I expected this number to be higher. CI was the first practice from Extreme Programming to spread widely, but, at least among this audience, it is not pervasive.
- More than 75% of teams test manually before deployment. This is a sensible practice until the defect rate is brought down and the operations infrastructure made robust in the face of errors, but I expect the number to drop as teams mature in their application of continuous deployment.
Change generally happens on a time scale of decades. Mass production and then lean production each took upwards of fifty years to become widespread. I don’t mean to be overconfident, but the picture above (skewed as it is by selection bias) paints a picture of software development that is substantially different than common practice twenty or even ten years ago. There’s still a long way to go until software development pours out the stream of value it is capable of, but we’re making progress.
Commercial plugs: Check out my series of screencasts on intermediate-level test-driven development, $25 for four episodes. If you run unit tests for Java in Eclipse, check out JUnit Max, the continuous testing plugin, $50/year until August 1, 2010.
CD Survey: How often do you commit code changes to the shared repository?
Today’s question is, “How often do you commit code changes to the shared repository?”
One of the essential practices of continuous deployment is that everyone stays very close to the mainline, typically by checking progress into HEAD frequently. This requires developers to be careful to only make changes that are safe and to only reveal functionality when it is ready for real users. The change of task sequence this requires is an acquired skill, but once mastered results in a low-risk development style.
The data shows that many projects are checking in very frequently:
The question needs followup, as it doesn’t ask whether there is a single mainline that people continually integrate with, and which direction the integration goes.
Tomorrow is the final question of the survey, which asks which practices folks are applying.
Commercial plugs: Check out my new series of screencasts on intermediate test-driven development. If you run unit tests for Java in Eclipse, check out JUnit Max, the continuous testing plugin.
Props to Chartpart.com for the lovely front end for Google Charts.
CD Survey: How often do you run unit tests?
Running functional tests generally takes longer than running unit tests, so as expected, most people run unit tests more frequently than they run functional tests:
I was a bit surprised at how many people are running tests on every change, but that’s good news for JUnit Max, which shaves seconds off the delay waiting for feedback from tests. If those delays happen a hundred times a day, the cumulative effect of a tool like Max can be substantial. I’m not sure what to make of the teams that run unit tests daily or weekly. I’d like to talk to such a team to understand more about their process.
Unit testing wasn’t explicitly addressed by any of the presenters at the Continuous Deployment webinar, I think because unit testing is assumed when you’re deploying on a short cycle. I don’t recall who said it first, but the model I use is that the defects leaving any stage are proportional to the defects entering that stage. No matter how good your functional tests are, defects leaving the programmer’s desk need to be rare if the software is always going to be ready to deploy.
CD Survey: How often do you run functional tests?
Following up on the continuous deployment survey question about frequency of deployment, the question for today is, “How often do you run functional tests?” Here is the data:
What I take from this is that there are a considerable number (~30%) of people using continuous integration in the poll audience. The ~10% of people who have brought functional testing into the inner loop of coding is also a bit surprising, although we do it to great effect while developing JUnit. Another surprise to me is seeing that the majority of these projects get feedback from functional tests every day.
All the panelists (Jez Humble, Timothy Fitz and I) agreed on how essential automated functional testing is to applying continuous deployment. I think of it as a stack of filters, each removing defects–personal habits, social processes (like pair programming or reviews), unit tests, and functional tests. If the functionality flowing from the whole stack is high enough quality, then continuous deployment is possible.
Manual testing has a place in projects applying continuous deployment, just not on the critical path to deployment. It might seem like a big step to remove that last human “sanity check” before deployment. If it seems like a big step, then you’re likely not ready. Keep working on the filters to improve the deployability (is that a word?) of each one’s output. When you heard someone say, “Why are we checking this by hand? We never find anything,” then you’re ready.
Next question: how often do folks run their unit tests?
Commercial plugs: Check out my new series of screencasts on intermediate test-driven development. If you run unit tests for Java in Eclipse, check out JUnit Max, the continuous testing plugin.
CD Survey: Deployment Frequency
In conjunction with the Leaders of Agile webinar on Continuous Deployment I hosted yesterday for SD Times, I ran a poll asking attendees about various of their development activities. I’ll be posting a short piece about each question, the answers we got, and the webinar material that connects with that question.
My co-presenters were Timothy Fitz of IMVU and Jez Humble of ThoughtWorks. Timothy talked about continuous deployment in a large web/client application with ~50 developers while Jez covered CD for IT applications. Both made a nice contrast to my experiences with CD for individual or pair projects, and immediately addressed the “sure, but it won’t scale” objection. My thanks to Timothy, Jez, and Alan Zeichick of SD Times for their work setting up and delivering the webinar. (I’ll post here when a recording is available.)
For the poll, the questions were posted two days before the webinar. We had ~200 responses out of the 1100 registrants and 430 attendees. Beware of extrapolating too far from the data because the poll suffers from both selection bias and an amateur question author (me). However, the responses do provide some idea of how at least a slice of our industry works.
The first question I will cover from the poll is, “How often do you deploy to production?” That’s the fundamental measure of continuous deployment, at least as narrowly viewed (more about that later). Here’s the raw data:
Deployment cycle starts with the orange slice for annual deployment at the bottom right. Going clockwise from there, the three biggest slices (quarterly, monthly, weekly) take up most of the chart. Completing the circle, there are almost as many people deploying on every commit as deploying annually, so continuous deployment already has significant traction.
One of the surprises of the webinar was Jez Humble’s flexibility with regards to how far towards real deployment Continuous Delivery (his phrase and the title of his forthcoming book) needs to go. His strategy is to take the rapid iteration that is made possible in development by Extreme Programming and gradually extend it down the deployment pipeline, even if that stops short of real actual live deployment with real actual live users. My general preference is to work the other way around. I like to get the whole team–business, development, and operations–working with the same rhythm, then gradually increase that rhythm. There’s no right or wrong approach, it’s just interesting to see the contrast.
Next question: how often do you run functional tests?
Commercial plugs: Check out my new series of screencasts on intermediate test-driven development. If you run unit tests for Java in Eclipse, check out JUnit Max, the continuous testing plugin.
Sonar in the news
Welcome to the roundup of blog posts and pages that mentioned Sonar last month…
Use Sonar to Develop a Quality Feedback Loop into the Build Cycle
By Brian Chaplin on ServerSide, 29 june 2010
The number of business defects in an application tracks with the number of technical defects. More technical defects normally means more business defects. This means that technical defects can be used as a metric for the overall quality of a development approach. Sonar is a great dashboard for tracking code quality at the project and file level. But how can it be used to as part of the daily workflow?
Making the Most of Maven: Nexus, Hudson, Sonar
By Joel Confino, 15 June 2010
Maven is a build tool. I like Maven because it supports dependency management, consistent builds and a modular code base. But if you are just using Maven without using Nexus, Hudson, Sonar you are really missing out on a lot of goodness. Nexus is a Maven repository manager, Hudson is a CI server, and Sonar is a code metrics server.
Google Summer of Code 2010 with Sonar team – first steps
By Evgeny Mandrikov, 7 June 2010
As I promised in previous post, that progress of my work on Google Summer of Code 2010 would be available publicly – here is a brief overview of what was done for Sonar IDE project, what we have now and what expected in nearest future.
The Code Quality game
By Ricki Sickenger, 4 June 2010
Most programmers think they can recognize good code and a lot of them think they produce good code, but the sad truth is that not a lot of programmers actually do. Between time constraints, feature creep, and laziness, programmers hardly ever end up producing super quality code.
Code-Metriken auf dem Prüfstand
By Sandro Ruch, 4 June 2010
Wie lässt sich die Qualität von Code bestimmen? Welche Kriterien sollen dafür hinzugezogen werden? Eine mögliche Antwort könnte sein: “So gut wie die Abnahme-Testresultate des Kunden”…
Changing a project’s artifact id in Sonar
By Oliver Gierke, 2 Jun 2010
Sonar is a great tool to take care of code quality in your software projects. I use it heavily to monitor the open source projects I am involved with. When working on getting Hades published into Maven central I had to polish it’s pom.xml and felt the need to align the parent project’s artifact to our chosen OSGi compatible package notation for artifacts
Code Quality Management Tool Sonar Provides Design and Architecture Metrics
By Srini Penchikala on InfoQ, 1 June 2010
The new version of open source code quality management tool Sonar provides design and architecture metrics. Sonar 2.0 introduced the analysis of design, architecture and object-oriented metrics for Java applications. And Sonar 2.1 version, which was released recently, supports the detection of unused methods.















