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.
Artima Developer Spotlight Forum – Dmitry Jemerov on IntelliJ IDEA 8 and RubyMine – JetBrains released the latest major version of IDEA, it's multi-language development environment. In this interview with Artima, JetBrains architect Dmitry Jemerov talks about the most significant IDEA 8 features, including improved core Java support and support for multiple languages. He also discusses JetBrains' new Ruby IDE
java.think(): 8 Reasons You Should Be Using Terracotta, not Oracle Coherence – Unlike Coherence, Terracotta is not based on Java serialization. This fundamental algorithmic difference gives Terracotta superior performance. What's more, as the size of the data set grows, the performance you get from Terracotta remains constant. Compare that to Oracle Coherence – as the size of the data you put into the cache grows, so does the work it has to do to keep the data synchronized. The result is a significant drop in operations/sec.
Java Concurrency Synchronizers « PODIDEA – Successful Intelligence – We all know that Java supports synchronization since day one through the synchronized keyword, but the limitation is that this mechanism works at the block level and is limited to a single thread at a time. A number of new mechanisms were introduced. Among them are semaphore, barrier, latch and exchanger.
Obama’s CTO: Watch out for the turf wars | Outside the Lines – CNET News – Obama will appoint the nation's first Chief Technology Officer (CTO) to ensure that our government and all its agencies have the right infrastructure, policies and services for the 21st century. The CTO will ensure the safety of our networks and will lead an interagency effort, working with chief technology and chief information officers of each of the federal agencies, to ensure that they use best-in-class technologies and share best practices.
Generation 5 » Stop Catching Exceptions! – A strategy that (i) uses finally as the first resort for containing corrupting and maintaining invariants, (ii) uses catch locally when the exceptions thrown in an area are completely understood, and (iii) surrounds independent units of work with try-catch blocks is an effective basis for using exceptions
Reverse-engineer Source Code into UML Diagrams | Javalobby – Now that we have UML diagram integrated within our build file, and also our CI job, we can ensure that our code base and the UML diagrams are always in sync. We saw how to include these ant targets in our commit builds or nightly builds of our CI jobs, and also published these artifacts as part of our post build process.
The Way I Think | Good Bye FireBug. Hello Developer Tools. – If you’re a web developer and you've ever worked on the client side then you've almost certainly used the incredible Firebug. If you work regularly in IE you may have also used the fantastic IE web tool bar. However, IE8 is the first browser to actually build one of these clever little add-ons right into the browser.
InfoQ: Fowler: Agile Vs. Lean Misses the Point – Many of the people who developed the current crop of agile methodologies were strongly influenced by lean manufacturing and the ideas behind it. This can be seen in the many commonalities between lean and agile, including: People centric approach, Empowered teams, Adaptive planning, Continuous improvement
Google Web Toolkit Blog: GWT 1.5 Now Available – We're happy to announce that GWT 1.5 is now officially released and available for download. GWT 1.5 delivers what we think are an impressive number of improvements, about four hundred issues if you're counting. We're also happy that one of those is issue 168, our most-requested feature, "Support for Java 5".
Java Reflection – Dynamic Proxies – Using Java Reflection you create dynamic implementations of interfaces at runtime. You do so using the class java.lang.reflect.Proxy. Dynamic proxies can be used for many different purposes, e.g. database connection and transaction management, dynamic mock objects for unit testing, and other AOP-like method intercepting purposes
Reading the Web – Ideas Blog – NYTimes.com – “Ideas” is a daily blog by Tom Kuntz and other editors of the Week in Review featuring brief posts on interesting articles and other stuff we've come across lately on the Web, in print and elsewhere. We’re generalists, so think of this as a grazing buffet for omnivores. Equally important, “Ideas” is a conversation, so please post your comments and e-mail us your suggestions.
Google Chrome, Google’s Browser Project – Google Chrome is Google’s open source browser project. As rumored before under the name of Google Browser, this will be based on the existing rendering engine Webkit. Furthermore, it will include Google’s Gears project.
davber does IT » Groovy: Java++ by being Java– – Groovy is actually not a brand new language, but rather an extension of Java. The difference between this extension and that of, say C++ over C is that Groovy extends Java by simplifying constructs, ridding the developer of much of the repetitive rituals
Real World Haskell – Haskell is most likely quite different from any language you've ever used before. Compared to the usual set of concepts in a programmer's mental toolbox, functional programming offers us a profoundly different way to think about software
InfoQ: Does TDD Really Ensure Quality? – Our main result is that Test-First programmers write more tests per unit of programming effort. In turn, a higher number of tests lead to proportionally higher levels of productivity. Thus through a chain effect, Test-First appears to improve productivity
InfoQ: Kent Beck on Implementation Patterns – Kent Beck is interviewed about his new book, "Implementation patterns", the relationship between these patterns and XP, problems when adopting agile and the current status of design patterns.
Enterprise Java Community: Introducing Apache Wicket – When you’re learning a new framework, it’s helpful to gain an understanding of the terms concepts, then move on to how the pieces come together. Wicket has a few core concepts to master, but once you understand them, you’ll find Wicket much more accessibl