Sunday, August 23, 2009

Best of this Week Summary 17 August - 23 August 2009

  • Here's a basic list of software architecture review guidelines. You can definitely also use it as a starting point for your documentation, or to see if your documentation is covering it all.

  • Shame on me: forgot to mention last week the VMWare acquisition of SpringSource! Basically the CTO says "the aim of this acquisition is to provide a comprehensive platform as a service (PaaS)". Here's a view on it from a technical level by Adrian Colver (SpringSource), and here's one from Frank Cohen.

  • Potential cloud "dangers" described during Black Hat USA 2009.

  • And related to the previous one, here's a short summary with interesting results on stress testing the Amazon EC2, Google AppLogic and Microsoft Azure cloud solutions. Bascically, the performance quite varied and response times varied by a factor of 20! And good to know: on Google AppEngine, any task can not last longer than 30 seconds!

  • Need to know "everything" about Java Generics? Then this large PDF Java Generics FAQs - Frequently Asked Questions is for you. Think you know everything about Generics? It still might be for you. For example, do you know what this says: "Enum<E extends Enum<E>>"? Or can you follow this one: "Can I use the type parameter of an outer type as part of the bounds of the type parameter of an inner type or a method?"? :)

Saturday, August 15, 2009

Best of this Week Summary 10 August - 16 August 2009

  • Always interesting the Gartner 2009 Hype Cycle. For example, Web 2.0 is already on the way up again, while microblogging (e.g Twitter) is starting its downward trend.

  • Code review tools Review Board: "is a powerful web-based code review tool that offers developers an easy way to handle code reviews. It scales well from small projects to large companies and offers a variety of tools to take much of the stress and time out of the code review process." Downloadable.

  • Great description on how full-scale Scrum was applied at a JTeam project. It includes answer to the why and what went well and what can be improved. Also shortly the used technologies are described (Spring, Spring WS, Spring MVC, JPA, JExcelApi, Apache Commons for FTP, iText for addresslabels with bar codes, jQuery and Google Maps, Mockito (see this post on why they switched from EasyMock), MockFTPServer and Subethamail Wiser for email integration testing. Again, great that they share this publicly.

  • Discussion of the quality assurance/testing challenges to be addressed with a SOA adoption, recommended best practices, and lessons learned.

  • More or less a beginner's introduction to the Java Collections framework and algorithms. Sample chapter from "Core Java 2, Volume II - Advanced Features 7th Edition". Uses CircularArrayQueue and LinkedListQueue as examples (how often have you used those two? ;)

Sunday, August 9, 2009

Best of this Week Summary 3 August - 9 August 2009

Sunday, August 2, 2009

Best of this Week Summary 27 July - 2 August 2009

  • "A discussion on the lifecycle processes of SOA governance, how SOA governance can become more mature, and how a maturity model can be used to support this growth, and the role of the architect in SOA governance, providing some practical guidelines for architects in a maturing SOA environment."

  • Two great interviews with Jeff Davis about his "Open Source SOA" book, recently released. The first interview has mainly questions about the book itself. The second interview has quite some questions about stuff not in the book. A free excerpt of 1 chapter of the book is also available for download! The book itself describes many open source SOA products, helping you in selecting the right one and how/where to use it. Btw, CEP = Complex Event Processing. See for more here.

  • jQuery 1.3 optimisation & advanced tips including example code on: unbind(), live()/die(), Ajax Queue and Ajax Sync, and Namespaces.

  • Summary of implementations of the Builder pattern suggested by Joshua Blog during JavaOne 2007. Note that it is different from the GoF pattern.
    Related: interview with Joshua Bloch with many tips and best practices, most referring to Effictive Java 2nd Edition. E.g: generics, enums, annotataions, wildcards, lazy initialisation, strange things about Java.

  • Kind of obvious observation (but still worth mentioning :) viewpoint on scalable web architectures and application state: don't store everything in the database, but treat (and "store") application state, cached data, and persistent data differently, using dedicated tools to manage these.

  • This week Wicket 1.4 has been released.

Sunday, July 26, 2009

Best of this Week Summary 20 July - 26 July 2009

Sunday, July 19, 2009

Best of this Week Summary 13 July - 19 July 2009

  • Pretty basic SOAP monitor (proxy) that allows you to edit SOAP messages before sending them on. Does not support a proxy (yet).

  • IBM recently released Milepost GCC (website has styling from 1998 ;), a "compiler which analyses the software and determines which code optimizations will be most effective during compilation using machine learning techniques. Experiments carried out with the compiler achieved an average 18% performance improvement. The compiler is expected to significantly reduce time-to-market of new software, because lengthy manual optimization can now be carried out by the compiler." Related to that is also the Collective Tuning wiki, dedicated to developing self-tuning computing systems.

  • ZeroTurnaround "has released the results of their "Java EE Containers - Heaven or Hell" survey. Using responses from 700 respondents, they cover topics such as: containers most often used on large projects, fastest container, redeploy times and annual costs of redeployment in a series of charts and calculations. Both the charts and raw data are made available for your own analysis."

  • Looking for petabyte and beyond scale storage? The opensource project Ceph might be an option: it is a distributed network file system designed to provide excellent performance, reliability, and scalability.

  • Several basic and advanced JPA implementation patterns can be found here.

Sunday, July 12, 2009

Best of this Week Summary 06 July - 12 July 2009

Saturday, July 4, 2009

Best of this Week Summary 29 June - 05 July 2009

Sunday, June 28, 2009

Best of this Week Summary 21 June - 28 June 2009

  • Misunderstandings of Domain Driven Design described. DDD = "Domain Driven Design is an approach that describes the approach to designing the business layer".

  • A Google site dedicated to deploying Google Apps in an enterprise (more than 100 users).

  • Which on is the best of these agile methodologies: Scrum or Kanban? Differences and similarities are described. The unsurprising answer: it depends on the situation :) My conclusion: Kanban has less "rules" to follow and thus might be a better suit for experienced agile developers.

  • A handy opensource Java library (no i18n yet) for showing real user friendly times, like "in 3 minutes", formats you see on many social sites like Digg and Facebook: PrettyTime.

  • And what is your programming personality style? For me it's DoerHighlevelSololiBeral...

Sunday, June 21, 2009

Best of this Week Summary 15 June - 20 June 2009

  • Finally I found a good summary of JavaOne 2009 (PDF) by Frank Cohen.
    Two other pretty good summaries can be found here and here. Both are split into days, so some browsing required :)

  • This blogpost describes how's the opensource project MySQL fork Drizzle handling code contributions and testing. Some rules for the 100+ contributors are:

    • No code will be accepted that works by disabling any existing tests

    • It is not allowed to contribute code that causes a compiler warning


  • Here's a nice summary of Google Wave's architecture.

  • This week I performed a short research on tools being able to generate Java classes from XSDs. All I wanted to use it for is generate my domainmodel classes, nothing more, nothing less. No need for Java <--> XML binding/conversions. Another requirement was that the generated code should not contain any dependencies on that tool. Finally, it has to run under JDK 1.4 too :( Because of that last requirement, this summary was already quite handy. Well, I thought the research would be pretty easy, but it wasn't. Actually, in the end I didn't succeed. None of the below tools generate code that has no tool-specific imports. Do you know of any tool that should do it? Let me (us :) know in the comments! Below a summary of my findings:

    • Castor 0.9.x and 1.3: generates classes (no interfaces), with matching Descriptor classes per class that can be used to validate the created object. Imports org.castor.* stuff.

    • XMLBeans 2.4.0 generates interfaces and implementing classes. Both import xmlbeans classes.

    • JAXB 1.0 generates interfaces, implementing classes and runtime classes (haven't figured out what that is exactly). Imports JAXB classes/interfaces.

    • XMLSpy 2006 Enterprise Edition: generates classes. Looks more like you expect, "one class per type". But also needs com.altova.* imports.

Sunday, June 14, 2009

Best of this Week Summary 8 June - 14 June 2009

Sunday, June 7, 2009

Best of this Week Summary 1 June - 7 June 2009

  • Presentation from the author of POJOs in Action on running Java applications in Amazon's EC2. Shortly describes the opensource project Cloud Tools that can be used to configure Tomcat, MySQL, Apache, JMeter, (cluster) deployment etc. CT also includes AMIs pre-installed with these tools and a Maven and Grails plugin. A couple of sample deployment architectures are shown too. Tiny bit older presentation because it does not mention the AWS Management Console.

  • Of course you know YSlow, which helps you analysing your webpage load time, and then gives you tips on how to improve it. Google has just opensourced its similar tool Page Speed, but with tips based upon different insights. It's a Firefox add-on integrated with Firebug.

  • A 42 minutes presentation by LinkedIn's engineers on exploring the best available technologies which could be used to build its next generation architecture.
    "The new architecture involved using OSGI/Spring DM as the foundation because it had the right properties we were interested in. The code was migrated to a more modular paradigm using binary consumption.
    The session will demonstrate how they integrated OSGi, the pros and cons of the changes, the pain points as well as the migration strategy."

  • Open up your company's data so others can link to it: the next step in the web, and why you should care. As seen by Tim Berners-Lee.

  • Did you know about this cool feature in Java 6 SE: it is possible to make a standalone Java application available as a webservice via the EndPoint class (i.e, via its main() method). Thus: without a container!

Sunday, May 31, 2009

Best of this Week Summary 25 May - 31 May 2009

  • Facebook is now also supporting registration/login via a GMail account and OpenID, see the image below. I especially like that they've implemented it with a lightbox ("popup") so the user doesn't get as much confused anymore, as was the case in the old/standard implementation where the user is completely redirected to Google or the OpenID provider's website. Note that it is actually more "Facebook Connect" like this way! See here another example where OpenID is combined with OAuth to enable a popup login.


  • Understanding how the JVM uses native memory on Windows and Linux. The extensive article explains what native memory is, how the Java runtime uses it, what running out of it looks like (so you're not running out of heap space!), and how to debug a native OutOfMemoryError on Windows and Linux. A companion article covers the same topics for AIX systems.

  • Quite big news was of course Google's announcement of Google Wave at the Google I/O conference. It has been built with GWT. A good description can be found here. It's open source with plugin-like APIs with many integration possibilities. See the 80 minutes video for the full details. It hopes to become the replacement for email... Servers can be run by anybody. Wonder how Google is thinking of making money with it. Ads, just like in GMail? Maybe they are going to charge you for using their Wave server instances (SAAS version)? An interview with Wave's creators can be found here. And six reasons why Wave could be game-changing.

  • Eight generic best practices for scalable high performance systems.

  • Are you any of these two tools with almnost the exact same name? SonarJ is a plug-in for Eclipse that helps you validate your code against a software architecture, using static analysis (free for projects up to 500 classes). And now for the confusion: check also Sonar: enables to collect, analyze and report metrics on source code. It leverages the existing ecosystem of quality open source tools (ex. Checkstyle, PMD, Maven, Cobertura …), to offer a fully integrated solution to development environments and continuous integration tools.

Sunday, May 24, 2009

Best of this Week Summary 18 May - 24 May 2009

Sunday, May 17, 2009

Best of this Week Summary 11 May - 17 May 2009

Sunday, May 10, 2009

Best of this Week Summary 04 May - 10 May 2009

  • Reference to an AJAX framework analysis/comparison result by Matt Raible (for example known for his framework of frameworks: AppFuse). Compared were Dojo, Ext JS, GWT, and YUI. Check also the comments.

  • Beginners level host and Java performance tuning concepts.

  • Handy PHP profiler and debugging tool/library. Helps you with logging, memory usage, double includes, page execution time and database activity monitoring.

  • Nice presentation on scalable web architectures from Cal Henderson, (ex) Flicker architect. Including horizontal vs vertical, architecture, sessions, load balancing, queuing, relational data, caching, H(ighly) A(vailable) data, federation, serving and storing files, CDN, real-world examples.

  • SpringSource has created Roo, a sophisticated round-tripping code generator that should make it quicker and easier to create and evolve Spring applications.

  • Funny: how to measure code quality: WTFs/minute :)


    Via.

  • You as a developer can now go social on IBM's myDeveloperWorks, a social network spun off of developerWorks.

  • An introduction on how one could formalize a SOA using WS-CDL, including a few real-world insurance based uses.

  • Yahoo has just released a major update for their innovative YQL. "The Yahoo! Query Language lets you query, filter, and join data across any web data source or service on the web. Using our YQL web service, apps run faster with fewer lines of code and a smaller network footprint. YQL uses a SQL-like language because it is a familiar and intuitive method for developers to access data. YQL treats the entire web as a source of table data, enabling developers to select * from Internet." The update adds "Execute", with which "developers now have full control of how the data is fetched into YQL and how it’s presented back to the user. With Open Data Tables, developers can build tables that manipulate, change, and sign the URLs to access almost any protected content, allowing YQL access and combining data across a variety of different authenticated services such as Netflix or Twitter. Developers can call multiple services and data sources within Execute to join and mashup data however they desire, letting Yahoo! do the work rather than their applications. Data can be tweaked and manipulated into an optimal format for applications to consume." Another example of what is possible can be found here. Check also this article for more explanations.

Sunday, May 3, 2009

Best of this Week Summary 27 April - 03 May 2009

Sunday, April 26, 2009

Best of this Week Summary 20 April - 26 April 2009

  • The big bigger biggest (sad?) news this week was of course Oracle going to buy Sun (here's Oracle's announcement). Rod Johnson (from SpringSource) is wondering what Oracle actually did buy. He concludes luckily one of the great strengths of Java is its developer and open source community, thus Oracle does not own the future of Java. Makes sense.

    Alef Arendsen (previously SpringSource, now JTeam) wonders which company/group will be the next, since only a few large opensource bodies are left: "the Apache Software Foundation (ASF), products in the Eclipse Foundation, products carying the JBoss name and last but not least, a broad set of products under the SpringSource umbrella".

    Sun "invited Oracle president Charles Phillips and chief corporate architect Edward Screven to an employee-only town hall last Wednesday", answering employee questions. In short: Oracle loves Sun's software (Java, MySQL) and hardware, but the future is unclear for OpenOffice and Sun's cloud effort.

  • A beginners tutorial on how to integrate GWT with PHP using XML as the "bridge" between the two technologies.

  • Manage your Amazon S3 with freeware CloudBerry Explorer. Makes it for example easy to move buckets between the US and Europe.

    Cloudkick is a free tool which allows you to migrate your Amazon EC2 AMIs to to Slicehost (owned by Rackspace).

Sunday, April 19, 2009

Best of this Week Summary 13 April - 19 April 2009

Sunday, April 12, 2009

Best of this Week Summary 06 April - 12 April 2009

Sunday, April 5, 2009

Best of this Week Summary 24 March - 05 April 2009

  • How can you make sure your site can handle peak-loads? This article lists the possibilities:

    • Over-provisioning (estimating what the peak will be).

    • Under-provisioning.

    • Right-sizing: estimate for a short period in time, then scale up or down: flexible scaling and auto-scaling.

    How this can be achieved? Add a middleware virtualisation layer that helps the application take advantage of these new dynamically added resources. The article also describes in detail how to add auto-scaling to your existing application, including a description how to try it out on GigaSpaces XAP which uses EC2.

  • Quite amazing, Salesforce.com runs on only about 1000 servers (and that's mirrored, so only really about 500 servers). Salesforce has more than 55K enterprise customers, 1.5M individual subscribers, 30M lines of third-party code and hundreds of TBs of data.

  • Here's a list of criteria when selecting a SOA testing tool.

  • A nice introduction to Hibernate's second-level cache.

  • Five tips for successfully deploying Maven. Including a bunch of pros and cons in the comments.

  • On a keep-an-eye-on-this-innovation side note, Digg introduced a interesting (new?) way of a URL shortener like TinyURL, and at the same time attract traffic. Just prefix any URL with http://digg.com/, and voila, a shortened URL appears including a Digg toolbar. Below I entered http://digg.com/http://ttlnews.blogspot.com/ in the address bar:


Sunday, March 29, 2009

Best of this Week Summary 23 March - 29 March 2009

  • Need to know whether a collection is modified concurrently, which causes the ConcurrentModificationException? Check this handy wrapper solution here.

  • The second article in the Transaction strategies series. "Using examples from the Spring Framework and the Enterprise JavaBeans (EJB) 3.0 specification, explained is how the transaction models work and how they can form the basis for developing transaction strategies ranging from basic transaction processing to high-speed transaction-processing systems".

  • For the Amazon EC2 now a free AWS Eclipse plugin is available. It facilitates remote development, deployment, and debugging Java applications on Amazon Web Services.

  • Three common mistakes to avoid when implementing XML and webservices: don't make your messages too large, don't create too fine-grained services, and don't forget to create an XML schema.

  • Javascript is getting more and more important the last couple of years, so here's a bunch of best practices and efficiency tips.

Sunday, March 22, 2009

Best of this Week Summary 16 March - 22 March 2009

  • Great article by Dion Hinchcliffe with 10 emerging technologies every software architect has to know about. In short:

    1. Cloud computing

    2. Non-relational databases

    3. Next-generation distributed computing

    4. Web-oriented architecture (WOA)

    5. Mashups

    6. Open supply chains via APIs

    7. Dynamic languages (e.g Rails, PHP compared to Java/.Net)

    8. Social computing

    9. Crowdsourcing and peer production architectures

    10. New Application Models (e.g the symantic web, opensocial, widgets)

  • Elaborate explanation of managing boilerplate text (e.g. titles, button labels, prompt, error messages, tool tips) in JSF applications. This includes more advanced locale requirements, like certain text that needs to be different when shown to junior and senior users.

  • Here's a nice diagram with an overview of what activities are needed to create a website, from idea to support and everything in between.


  • Always annoyed that you have to manually close a resource like InputStreams, Connections etc? And that the first exception might be surpressed by the second in the finally block? Here's a suggested solution: the Automatic Resource Management pattern by Joshua Bloch.

  • Ten more Eclipse shortcuts you maybe didn't know...

  • Of course you've heard/read that Microsoft has released IE8 last week. Here's a bunch of tips when migrating your site from IE7 to IE8.

  • Ever need to create a UUID/GUID? Here's a few offline generators compared. uuidgen is an online UUID generator supporting version 1 and 4. A handy FAQ on UUIDs with some more depth can be found here.

Sunday, March 15, 2009

Best of this Week Summary 09 March - 15 March 2009

  • A table-based quick review of the following RIA frameworks: GWT 1.5, Laszlo 4.2, pure Javascript and Flex 3.2.

  • A short introduction on how ActionScript 3 differs (and not) from Java.

  • A wiki constructed with over four dozen architects: 97 things every software architect should know. Also now available as a book. It includes advice such as:

    • Don't Put Your Resume Ahead of the Requirements (Nitin Borwankar)

    • Chances Are, Your Biggest Problem Isn't Technical (Mark Ramm)

    • Communication Is King; Clarity and Leadership, Its Humble Servants (Mark Richards)

    • Simplicity Before Generality, Use Before Reuse (Kevlin Henney)

    • For the End User, the Interface Is the System (Vinayak Hegde)

    • It's Never Too Early to Think About Performance (Rebecca Parsons)


  • An introduction to Object Oriented CSS.

  • Sample chapter from Thomas Erl's latest SOA Design Patterns book, and an interview with him. He "talks about the main benefits of having a pattern catalog, SOA and Web services, the current state of SOA, the difference between SOA and service orientation, and the role of patterns in SOA adoption".

  • A series of five articles on setting up a Java Wicket project and implementing a frontend with it.

  • Handy piece of (alpha) software to test IE8 RC1, IE7, IE6 and IE5.5 on Vista and XP. Note that it looks like Microsoft is releasing IE8 this coming week, so get ready...

Sunday, March 8, 2009

Best of this Week Summary 02 March - 08 March 2009

Sunday, March 1, 2009

Best of this Week Summary 17 February - 01 March 2009

  • A relatively new type of mashups are so called clipping mashups. Instead of building a mashup against some official API, a clipping mashup just parses the final content in the presentation, thus including CSS, Javascript etc. Links can be rewritten, new elements injected. The presentation doesn't have to follow for example portal JSR-168 standards.
    An example use case would be that you could use it to (temporarily) fix a bug in a system (not necessarily owned by you) until the official next release comes out.

  • Eight architectural styles described. Handy overview including which one could be when appropriate.

  • Summary of migration project from JDBC to Hibernate. Valid comment at the bottom is that iBatis might be a better solution when you have to work from an existing schema.

  • Additional tips and articles for the Wicket in Action book. For example this article on how to do a partial Ajax repaint of newly created repeater items (e.g adding 1 row dynamically to a table or list with a "+" button). This in contrast to rendering all rows in a table when repainting the WebMarkupContainer as in the example described here.

  • Nice step-by-step introduction to asynchronous processing in Java 5 using Futures, ExecutorServices, CompletionService, Callback interfaces and ThreadPools. Here's part 2 where it's being used in combination with Javascript to improve the user experience.

Saturday, February 21, 2009

Best of this Week Summary 16 February - 22 February 2009

Sunday, February 15, 2009

Best of this Week Summary 09 February - 15 February 2009

Sunday, February 8, 2009

Best of this Week Summary 02 February - 08 February 2009

  • In SOA lessons learned for Web 2.0 "two experienced SOA architects look at the new world of Web 2.0 technologies with a critical eye and present five best practices that can help you be more successful in adopting Ajax, REST, and other Web 2.0 technologies as part of your SOA."

  • A quick comparison between Echo2 and GWT. Both enable you to create a rich internet application with only Java using a component-based approach. Wicket is also component based, but requires still to work with HTML; not necessarily a negative thing! For example, how will you split the work between the user interface designer and developers with Echo2 and GWT?

  • A nice extensive summary of Model Driven Development misperceptions and challenges. Five challenges and five misconceptions in total.

  • A whitepaper named "Centralized Service-Oriented Architectures without ESB" which shows how to create service-oriented architecture in a Google-like way, that is services around huge data repository, but without ESB. It is based on experience of the writers in data warehouses, Wiki and telecommunication systems. Thus, proposed is not really an ESB, but an architecture that's more like a centralised repository with distributed caching. Of course this comes with its own set of pros and cons, as mentioned in the whitepaper.

Sunday, February 1, 2009

Best of this Week Summary 26 January - 01 February 2009