I’ve been extremely busy with project after project in the past few months, leaving me no time to do any research and/or play around interesting things. Even though I prefer to write about what is really interesting me at a given moment, I think that writing about some smaller/simpler problems and solutions would be better […]
Archive for the 'java' Category
Everyday Tales: Anatomy of a Refactoring
Published by February 24th, 2010 in agile, case study, domain driven design, java, layers, object orientation, software architecture, software design and thoughtworks. 10 CommentsI Wish I Knew That Before Getting This Job – Slides and (Long) Notes
Published by November 24th, 2009 in agile, business, c#, components, domain driven design, domain specific languages, economics, events, java, layers, management, object orientation, software architecture, software design, thoughtworks and trends. 0 CommentsAs I said here before I was in Brazil some weeks ago to present at a conference. I had a really great time over there with some amazing people and would like to thank Caelum for their hard work in creating such a great conference. I’m making the slide deck and notes available in my […]
Don’t Trust Fake IDs
Published by October 12th, 2009 in c#, domain driven design, java, layers, object orientation, software architecture, software design and web. 5 CommentsAfter so many years I thought that this was a dead topic but recently I saw at least two reasonably experienced developers having trouble with object identity and thought that it would be good to write about it.
Most languages define some kind of equality operator on objects, in Java, for example, that is the equals […]
ThoughtWorks Away Day Presentation: Common Myths about Type Systems
Published by August 12th, 2009 in c#, clojure, groovy, haskell, java, language oriented programming, lisp, object orientation, rails, ruby, software design, thoughtworks and trends. 7 CommentsIn ThoughtWorks we get together at least once an year for a whole weekend to drink beer and do whatever people consider interesting. This year’s ThoughtWorks Australia Away Day (AKA Team Hug) was somewhere in Victoria and among other activities (and a bus crash) we had technical sessions.
I used one of those slots to do […]
Tag Clouds: See How Noisy Your Code Is
Published by April 29th, 2009 in case study, domain driven design, domain specific languages, java, language oriented programming, software architecture, software design and trends. 13 CommentsIf you follow this blog then you probably know that one of current interests is expressive design, either using Domain-Driven Design or Domain-Specific Languages. Here is a presentation about this topic.
One of the tricky things about expressive code is that it is very hard to see how noisy a code base is. What I found […]
Getting Cloudy: Clojure on Google App Engine
Published by April 8th, 2009 in business, case study, clojure, cloud computing, components, groovy, java, lisp, soa, software architecture, software design, thoughtworks, trends and web. 8 CommentsSome weeks ago I joined a handful of ThoughtWorkers invited to test the new Google AppEngine’s Java API. Unfortunately I had a project requiring a lot of attention during most of this period but once back on the beach I found some time to play around with it.
Cloudy Skies
Google AppEngine (GAE) is Google’s shot in […]
Clojure: Adding Metadata to Java Objects and Proxies
Published by February 1st, 2009 in clojure, java and lisp. 5 CommentsOne of the most amazing features of Clojure is the ability to decorate references to objects with metadata, as in the following example:
user> (def my-user {:login “pcalcado” :password “secret123″})
#’user/my-user
user> my-user
{:login “pcalcado”, :password “secret123″}
user> ^my-user
nil
user> (def my-cached-user (with-meta my-user {:cached-at (java.util.Date. )}))
#’user/my-cached-user
user> my-cached-user
{:login “pcalcado”, :password “secret123″}
user> ^my-cached-user
{:cached-at #}
user> my-user
{:login “pcalcado”, :password “secret123″}
user> ^my-user
nil
That feature makes the […]
Presentation Slides: Macros in 20 Minutes
Published by January 20th, 2009 in clojure, domain specific languages, fluent interfaces, java, language adaptation, language oriented programming, lisp, object orientation, ruby, software design and thoughtworks. 0 CommentsWe just started holding 20 minutes presentations during lunch time in the ThoughtWorks Sydney office. For the first session I gave a not-that-short talk on Lisp macros using Clojure. The slides are below.
Lisp Macros in 20 Minutes (Featuring Clojure)
View more presentations or upload your own. (tags: thoughtworks clojure)
It turns out that 20 minutes is too […]
Internal DSLs and Paradigms: Declarativeness
Published by September 17th, 2008 in agile, domain driven design, domain specific languages, fluent interfaces, java, language adaptation, language oriented programming, object orientation, software design, trends and web. 2 CommentsI’ve been experimenting a lot with Internal Domain-Specific Languages (or embedded DSLs if you prefer the classic and more accurate term) during my recent projects and by doing that I’m facing the real benefits and caveats of that technique.
One of the biggest issues with embedded languages is that is very hard to get developers’ minds […]
Layering Layers
Published by September 1st, 2008 in java, layers, object orientation, software architecture and software design. 2 CommentsMost developers I know can code an Application in three Layers -as long as those are Persistence, Business and Presentation. I find it very interesting that developers can generally use a Layer but simply can’t apply the underlying technique of Layering. People will use Layers that were created for them in some architectural archetype (like […]

