InfoQ: Using DRY: Between Code Duplication and High-Coupling – DRY is an important principle, but abusing it can generate problems such as increased coupling and reduced readability. The lesson here is that no matter how great a principle is, it should not be used disregarding other good programming practices.
Three Laws of Good Software Architecture | Javalobby – The issue with architectural decisions is that they effect the whole system and/or you often need to make them early in the development process. It means a lot effort if you change that decision a couple of months later. From an economic standpoint architectural decisions are often irrevocable. Good architecture is one that allows an architect to make late decisions without superior effect on efforts and costs. Let's put that on record.
Simple Offline Data Synchronization for Mobile Web and PhoneGap Applications – In this article, I describe a simple data synchronization strategy that uses the device’s (or browser’s) SQLite database. The implementation currently leverages the Web SQL API (even though the W3C is no longer actively maintaining the spec) because both iOS and Android support it, but they don’t support IndexedDB, the official alternative
InfoQ: Cloud Foundry: Design and Architecture – Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
Bowler – RESTful Scala Web Framework – Bowler is a RESTful, multi-channel ready web framework in Scala with a functional flavour, built on top of Scalatra and Scalate, with Lift-JSON doing the heavy JSON lifting
gwtmodernizr – A Modernizr clone for Google Web Toolkit – Modernizr is a great js library that detects if your browser offers native support for a number of CSS3 and HTML5 features. The idea of this project is to port Modernizr to GWT and make this feature detection possible from within your GWT code.
Make a Flexible Architecture Now, Perfect it Later | Javalobby – When you start a project , there are plenty of tough questions that depend on the application you are writing, but by layering your code and ensuring that functionality takes place only in well defined points which you can alter or relocate, you ensure that your code remains able to change based on architectural decisions and business demands.