Sunday, November 28, 2010

Quotes of the Week: Domain Driven


Domain Driven Design is impossible with a classic three layer architecture where DTOs are being shared across layers.

- Greg Young
DDD Exchange 2010

If everyone agrees that it's obviously correct:
  • that the system has layers
  • the one at the top is a website
  • the one at the bottom is a database
...then you probably don´t have much of a domain!
Note that adding an ORM layer does not magically create a domain!


Friday, November 19, 2010

Quick Note: Deliberate Discovery

BoyScratchingHead.jpg Interesting thoughts in Deliberate Discovery (and the matching blog-post) by Dan North:

  • Ignorance is the crucial constraint in software projects
  • Second-order ignorance: you are usually ignorant of how ignorant you are!
  • Embrace your ignorance
  • Optimize for learning, delivery will take care of itself
  • Get anything into production early
  • TDD might not be the best thing when you don't know what you are doing: Spike-and-stabilize - deferred test-driven testing

    ... I am awaiting the podcast.

    Wednesday, November 17, 2010

    Quick Tip: Demoing Selenium with Firefox on OSX


    Whenever I prepare a presentation that contains a demo with Selenium for web automation, I am fighting with the same stumbling blocks again and again.

    Also see my post Quick Tip: Running Selenium on OS X Snow Leopard.

    Another thing is the offline-mode of Firefox: If you don't have internet connection during your presentation, selenium-server will start firefox, but firefox will drop into offline mode from which selenium cannot run its browser automation.

    Here is a way around this:

    1. Create a Firefox profile which will then be used by selenium:
  • Start Firefox with the profile manager: /Applications/ -ProfileManager -no-remote
  • In the profile manager: Create a new profile. I called it 'selenium'. Remember the path to this profile directory that is displayed in the wizard. In my case the path is: /Users/jbandi/Library/Application\ Support/Firefox/Profiles/qd79pvsv.selenium
  • Then start the selenium server with the new profile:
    java -jar selenium-server.jar -firefoxProfileTemplate /Users/jbandi/Library/Application\ Support/Firefox/Profiles/qd79pvsv.selenium

  • 2. Configure the profile to not use offline mode:
  • Start Firefox with the selenium profile (i.e. by running selenium without internet connection).
  • Enter about:config in the location bar.
  • Create (right click) a new boolean preference network.manage-offline-status with the value false.

  • This worked for me with Firefox 3.6.12, Selenium 1.0.3 on OSX 10.6.5.
    There is a lot of info on the net about setting the preference toolkig.networkmanager.disable' to false. This did not work, I think this is only valid on Linux. Also the extension 'StayInOnlineMode' did not solve the problem.

    A trick for better demos with selenium is executing these commands on startup (in my case from java):
    selenium.getEval("window.moveTo(140, 25);");
    selenium.getEval("window.resizeTo(1000, 600);");

    This places and resizes the automated browser window and slows down the automation, so that the audience can actually see what is going on.

    However I did not manage to bring the browser window automatically to the front, it always starts in the background and I have to bring it to front manually (any tip would be appreciated).

    Sunday, November 14, 2010

    Quotes of the Week: Downfall of Agile in the Real World


    Scrum is easy, as easy as explaining push-ups... the challenge is the practice!

    - rhundhausen,
    proscrumdev brussels

    I don't read agile books. They are a waste of time!

    Agile books out there are just people telling stories about stuff. Stories are great -- love to hear them. But I can't trust the authors of most of these books to tell honest stories and learn honest lessons from them. Instead they have a theme.

    The problem is, real life doesn't have a theme.

    Agile Ruined my Life


    Agile development's primary tenants is to value people and interactions over processes and tools.

    The principle sponsors of the Agile 2010 conference are "Agile" tool vendors.

    Somehow, we've walked in a circle - yet again.

    Scott Bellware, User Stories are Temporary


    Saturday, November 13, 2010

    Getting started with NoSQL

    Screen shot 2010-11-13 at 4.08.31 PM.png

    For some time I am looking at the NoSQL movement and I am not quite getting what it is and why it is better at solving certain problems.

    There is a lot of fuss and not very competent information out there.

    Recently I was listening to SE-Radio Episode 165: NoSQL and MongoDB with Dwight Merriman. This is a very good source to get started to comprehend NoSQL. I can fully recommend it.

    This series of posts on the MongoDB blog are a good read: On Distributed Consistency. These concepts are essential to get what NoSQL is about.

    Ayende does also a good job on explaining RavenDB in episode 84 of Herding Code.

    Wednesday, November 3, 2010

    Oracle vs. Google reminds me of Matrix Revolutions

    Oracle.jpg Ha ha ha ...

    All that talk, predicions, more talk and conspiracy theories around the Oracle vs. Google lawsuit and it's meaning for Java reminds me somehow of the time right after Matrix Revolutions when everybody was speculating about the plot of the third movie Matrix Reloaded. (Why can Neo control the sentinels in the real world, why can Smith take the body of a real human, what did the architect really mean ...)

    There were actually people that spun up plots for Reloaded that were much better* than what finally turned out to be the disappointing end of the trilogy. I guess the same is true for the current wild theories where Java is heading ...

    ... somehow I suspect that the same that happened to Matrix Revolutions will happen to all the fuzz and expectations about where Java is heading: A year from now nothing will have changed substantially (Revolutions was not worthy to be connected to the first Matrix movie) and nobody will talk about it any more.

    Much ado about nothing!

    *search for neo2083

    Monday, November 1, 2010

    Book Review: Azure In Action


    I was doing a review for "Azure in Action" by Manning.

    This book is the perfect guide on your journey into the Cloud.

    If you are a .NET developer you should definitely read this book. Cloud computing is becoming a major topic for the future and the Microsoft Azure Platform is the way to go for .NET developers.

    Even when you are not going to write a Cloud application in the nearest future, you should have an idea of the principles and concepts that come with the Cloud.

    Also some of the concepts of programming for the Cloud and their difference to traditional programming can be very enlightening and can provide you a new perspective, that is also applicable in non-cloud projects.

    I can recommend this book also for developers that are not developing for the .NET platform. So far this is the best book I have seen for explaining how programming for the Cloud works and discussing the underlying concepts.
    The book shows concrete examples hot to architect and build applications for the Cloud. This is valuable knowhow, even when you build your Cloud applications on another platform than Azure.

    The book is written in a light way that makes it an easy and enjoyable read. The style is entertaining with little amusing jests spattered throughout the chapters. Nevertheless the light style is never distracting from the real goal to provide valuable technical content.

    As I said before, I think the book is very interesting, because it not only explains the technology/API but also the concepts and principles behind it.
    Two examples of this are:
  • Thorough discussion about the different storage options in the Cloud (Table Service, BLOB storage, SQL Azure, local storage, CDN). The book provides good guidelines when to choose what and shows the implications on the architecture and the design of the system.
  • The clear differentiation between web-apps (web-roles), storage and background processing (worker-roles, queues) and how to architect scalable applications with this separation.

  • Related Posts Plugin for WordPress, Blogger...