I can’t praise Amazon Web Services enough. They make it so easy to create and manage instances of your server images in the cloud. Given that Procinity is in its infancy, we’re currently only using an EC2 Small Instance, along with an Elastic IP, Block Store and S3 for all static web content.

A couple great plugins for FireFox have proven invaluable:

They’re by no means bug free but make life much easier than working with AWS from the command line.

Written on September 12th, 2008 , Amazon Web Services, Dev & Test

All the development I’ve done to date for Procinity has made use of Struts 2, Freemarker for templating, Hibernate for persistence, and Spring for dependency injection. I’m really liking the way all this hangs together. Some of the plus points, in my view:

  • Unit testing is a breeze. Using a dependency injection framework like Spring makes testing the units as true units a pleasure.
  • The code naturally separates nicely along MVC lines.
  • The code is genuinely easy to maintain. I can set it aside for weeks, forget all about it, and quickly pick up where I left off when I return. I wish I could say the same about what I’m doing in J2ME.

Some things I’m not so sure about:

  • Hibernate occassionally uses a few more queries than I would if I were putting together the same queries by hand.
  • Between Struts 2 and Spring, I occassionally feel like I’m up to my eyeballs in XML configuration.
  • Struts 2 does not seem geared towards RESTful URLs. I am using the SmartURLs plugin to avoid “.action” suffixes and the like, but still, framing URLs as actions like Struts 2 does seems contrary to the resource-oriented approach of REST.
Written on July 16th, 2008 , All, Dev & Test, Tech

apple-iphone-3g

I can’t express enough how underwhelmed I am by the recent announcement of the iPhone 3G. I honestly thought the second generation iPhone might be appealing enough for me to make it my regular phone, but with such glaring feature omissions I will be saving it for times of desperation.

For me what really kills it are the following:

  • Poor camera and no video. 2 megapixels just doesn’t cut it. With 8MP camera phones that are video-capable launching in Europe this summer it’s hard not to fault this.
  • Lack of Bluetooth support. Yes, the iPhone 3G supports Bluetooth, but only for certain devices and it lacks stereo Bluetooth and support for many hands-free in-car systems. Not to mention that the device doesn’t support Bluetooth file transfers. Ouch.
  • Still no support for multitasking. Argh.. Jobs claims this is to preserve battery life, but what a frustration. I often have many apps open at a time on my Nokia devices and find it hard to imagine that I could function otherwise.
  • Hopefully the next iPhone will hold more promise. Power smartphone users demand better than this.

    Written on May 7th, 2008 , Gadgets, Mobile

Well it’s finally arrived– my last day at SQS. The crowd at BP joined me for a bout of drinking at 1802 which was a fine way to be seen off, if a little hard on the head today. They also picked me up a couple fine bottles of cognac and rum and so it seems they want to keep me that way. :-)

On Monday it’s day 1 as Procinity Ltd. May the fun begin!

Written on April 25th, 2008 , Dev & Test, Tech

After much heart wrenching inner debate, this week I put in my 4 week notice to SQS. Now is the right time for me to set out on my own venture and see where that takes me. And so begins the journey– my business partner and I will be working on location and proximity-based products for the web and mobile devices. The company is called Procinity, though our first product will go by another name.

Written on March 21st, 2008 , Dev & Test, Tech

Yesterday I gave a day-long introduction to Agile software development to a sold out class room at the SQC Ireland conference. The basic thrust of the day was to expose the attendees to all the basics of Agile with a focus on the principles of XP, a tour through the Agile game, and demonstrations of some of the tools used for acceptance testing.

The group were actually a little more experienced than was expected, which was fantastic as it gave us an opportunity to explore some of the more interesting concepts of Agile development. Particularly for me, I wanted to give a quick run down of one of the newer tools on the acceptance testing block, GreenPepper.

Written on March 5th, 2008 , Agile, Dev & Test, Tech

Yesterday a Philips Living Colors that I’d purchased on Amazon.co.uk arrived. This is one cool lighting device! It is an LED lamp that is capable of displaying up to 16 million different colours at different brightnesses and contrasts. It comes with a remote control that allows you to set the colour, brightness, etc to suit any mood.

It’s got a great party trick, too– rotating through it’s full spectrum of colours. How to put it into this mode was not easy to learn as it was hidden away in the manual, but it’s pretty fantastic. I can’t wait to use it at my birthday party next month.

Written on January 14th, 2008 , Gadgets, Tech

I’ve now perfected my streaming audio solution, which works great for parties. It consists of three components:

  1. Apple Airport Express: my stereo is plugged into this and my laptop streams music wirelessly from across the living room to the device.
  2. Laptop: Out-of-the-box the airport express only works with iTunes, but I prefer to use WinAmp for some purposes. I use the WinAmp Remote Speakers Plugin to allow this.
  3. Nokia N95: I use this as my remote control for WinAmp. I’ve installed Bemused on my N95 and my laptop, which allows me to remote control WinAmp over Bluetooth. Super handy.
  4. This appears to be working well, though Bemused does occassionally fall over. It’s all worth it for when your party guests realise you’re controlling the tunes from your mobile phone, though. :-)

    Written on June 28th, 2007 , Gadgets, Tech

Last night QCon offered an after-hours chance to hear Martin Fowler and Dan North speak on the topic of the “Yawning Crevasse of Doom,” more recognisable to us as the communication gap between the business and development. The talk began at a very pedestrian pace and I was soon fearing that this seminar would yield nothing new or stimulating, but this proved unfounded.

Dan and Martin used an analogy of a ferry man and a bridge builder to illustrate the trouble in communication. In the case of the ferryman, an analyst is used as a conduit between business and development with the risk that too little is communicated or communication is inaccurate. Also to its discredit, this is a slow, “low bandwidth” form of communication. The bridgebuilder, on the other hand, allows direct contact between the business and techies, thereby enabling tight feedback loops and frequent, “high bandwidth” communication. Obviously, building bridges is the preferable scenario.

The topic of domain driven design came up, with Fowler stating that it’s been around for some time but only now coming into popularity. Evolving a project-wide “ubiquitous language” is indeed an important concept and one that Fowler stressed. Business people should be speaking the same language as developers and testers. Fowler then brought the concept one step further, stating that even technical aspects of a project can affect communication. Programming languages was the example, which Martin suggested can impact the ubiquitous language and communication on a project. One of his current “hobby horses” of the moment is domain specific languages, which are “little languages” that are intended to solve problems within a given domain. (VBA for Excel is an example of one of these, basically a domain-specific version of VBScript!) See a Fowler talk on this topic here.

For his part, Dan North focussed on the increasing importance of soft skills in making software development work. He brought up the importance of usability testing and how this is something we should definitely be testing for, as per the context-driven testing school. He also mentioned interaction testing and ethnography, which involves direct study of the way people use a system. Off-shoring came up, and Dan made the comment that the only distributed model he’s seen work is the one whereby teams of business analysts, developers and testers are still co-located together. Across a project, one such team might be onshore, another might be offshore.

Fowler closed by asking the largely development audience to think about each of their technical challenges and what they mean for communication. “How does this affect the bridge?” He asked. It’s an interesting line of inquiry.

The place was literally crawling with ThoughtWorkers and a post-session visit to the bar provided a good chance to catch up, as we at SQS have worked with them before at Egg and Barclays, among other places.

http://www.infoq.com/presentations/Fowler-North-Crevasse-of-Doom

Written on March 17th, 2007 , Agile, All, Dev & Test, Tech

Today marked the first day of one of London’s newest and most anticipated technology conferences, QCon. Today was the first tutorial day of the conference, with a morning session on JMX and an afternoon session on Test Driven Development. The crowds weren’t huge, but they had come from all over Europe and as far as Saudi Arabia. I had a great time at both sessions. Here’s my rundown of the two.

Session I: JMX with Simon Brown

I wasn’t sure exactly what to expect out of this seminar as I was only vaguely familiar with JMX before today, however this turned out to be a really interesting session. JMX is a set of Java management extensions that allow an application to report back various different metrics to the JConsole management console or a bespoke console/application. These can be things like how many concurrent users are accessing a system component, how much memory is being used by the components, the Java heap size, or the CPU utilization of each java process within a JVM. It can also return values of properties or variables and allow users to action class methods via the console (e.g. to start or stop a service).

Dan stated that JMX is best used to instrument coarse grained architectural components in this way. He instruments Java applications for London-based banking clients using JMX primarily so that they can be monitored in production.

Simon’s blog can be found here: http://www.simongbrown.com/blog/

Session II: Test Driven Development with Erik Doernenberg

Unfortunately, Martin Fowler was not on hand for this tutorial as promised but it was still an interesting session. We’re all pretty familiar with Test Driven Development by now– the practice of writing unit tests before authoring source code– and really I had been curious to see how Fowler addressed the topic and pick up tips for SQS Agile training.

Erik started with the premise that primarily a design technique that allows developers to focus on delivering only what’s required and thinking about how best to model their application. Naturally, it has the additional benefit of producing lots of unit tests! Fortunately this session went a little further than your average TDD session. We started with the basics (writing tests, then producing source code). We quickly advanced to the more interesting topics, and one became a recurring theme: state verification testing versus behaviour driven testing (i.e. the TDD classicists vs. the mockists). Older techniques such as using stubs or making state-based assertions are popular and still have their place. However newer techniques such as mocking, which make assertions about an object’s implementation, can also be useful. There was some discussion of the pros and cons but Erik was careful not to place himself too firmly in either camp. The outcome was, as with many things, that the context should drive which to use and when. Martin Fowler has an interesting article on this.

Another purpose of this tutorial was to talk about software patterns that lend themselves to TDD. A natural one to open with is the red-green-refactor pattern, which simply involves writing failing tests, then making them pass by developing the appropriate source code (i.e. causing the status of your build to go from red to green), and finally refactoring to improve on your code. Erik recommended checking in the code once everything was green and then giving yourself a strict time limit to refactor so that you didn’t waste time going nowhere. The object mother pattern also came up, which can be used to generate elements of tests as needed. The dependency injection pattern also reared its head, it being the practice by which a class’s dependencies (more accurately resource providers) are injected via the constructor. This makes the class inherently more testable as dummy objects can be easily passed in to it.

Erik also recommended not testing private methods through public ones that may interact with them, but instead to use protected methods instead of privates and keep your tests within the same package (this would put them within the same scope). Test coverage came up, and Erik said he thought it was of particular value for teams learning TDD and commented that the aim was for it to be increasing in such cases. For experienced TDD teams, he was not so sure of the value. He was certain that it was not a good thing to become too obsessed with it and not to advocate 100% coverage.

Some other points:

  • Copying test code is a no-no in Erik’s view. Test code should vary greatly and copying could mean you mistakenly end up with a very homogenized test code base.
  • easyMock is an alternative to jMock which may improve on it to some degree.
  • We briefly discussed domain driven design and ubiquitous language. UL basically states that the business language should match the development language. An interesting thing came up: what do you do when the business language is not English? This can cause problems as IDE’s and programming languages don’t lend well to non-English languages, though it was mentioned that you can get around Java’s reserved word restriction on “class” by placing an umlaut over it, i.e. “cläss.” It certainly does look cool, as Erik pointed out!
  • Symmetry in design- that natural symmetries should appear in application code. A simple e.g. would be that if a class has a setter for a property it should also have a getter.
  • We were all entertained when Erik’s MacBook crashed mid-presentation.

Lecture slides will eventually be posted on Erik’s blog: http://blogs.doernenburg.com/

Written on March 14th, 2007 , Agile, All, Dev & Test, Tech

richardrauser.com is proudly powered by WordPress and the Theme Adventure by Eric Schwarz
Entries (RSS) and Comments (RSS).

richardrauser.com