This blog hasn’t received a lot of love recently, there are various reasons for it, but I intend to change that, as well as give my blog more frequent posts going forward.

For this reason, this blog is moving, the new URL is blog.recursivity.com, and you will also have to update your RSS Readers to point to this feed.

There are a number of reasons for the move, one is a fresh start to focus more intently on thoughts on writing excellent software, and the tools that I like to use to do so. The other is to get a better, more professional looking domain and also greater control over how I can customize my blog than what WordPress is able to give me.

So, repoint your bookmarks and feed readers, and hopefully I’ll be able to give you more interesting content going forward.

Well, it’s been a very, very long time since I last made a Wicket RAD release, but I finally got around to make one. Not much has changed, except for updates to work with Wicket 1.4.7 and a removal of the table generation component, which frankly wasn’t very good.

The new repo-location that you’ll need is: http://recursivity.s3.amazonaws.com/repo/

The form-generation bit is available at with org.wicketrad/wicket-rad-core/0.8 and the JPA utilities for Open Session in View stuff is at org.wicketrad/wicket-jpa/0.8

..hopefully I got all the repo stuff correct, though you’ll struggle to view anything but the specific files, as the repo is hosted at Amazon S3

Geek media has made a lot of noise of how the iPad will kill the Kindle, but I think they are entirely missing the point – Amazon’s Kindle isn’t threatened as long as Amazon make sure they embrace open standards.
Why?

My take on this is very simple: the Kindle is a bookshelf replacement, the iPad is a netbook replacement. Two completely different things. The iPad has a glossy, backlit screen – if you try to read books for too long on it, I’m pretty sure your eyes will tire. The iPad is supposed to bridge the gap between smartphones and laptops, and will probably do it greatly, I for one intend to get one when they are released.

But the Kindle on the other hand has a special screen, using something called “eInk”. As an owner of a Kindle DX, I can say it works great: it makes it easy on the eye and reminds a lot of reading on regular black and white paper. For me, I’ll use a Kindle to read books, and an iPad for laid back internet use in the couch. The Kindle is a superior reading experience, and with it’s 10 days of battery life compared to 10 hours for the iPad, it’s good enough to last a long haul flight.

My guess is that despite all the salivating and knee-jerk reactions over the iPad and its impact on publishing, my money is that the iPad and Kindle will happily co-exist, each carving out its own niche.

Long time since my last post.. Though recently I have been exploring different API’s for Amazon Web Services, and found two excellent, complimentary API’s that should be at the top of your list when you interact with AWS

JetS3t – Amazon S3 Java API
JetS3t can be found here. It’s an excellent and fully featured API for dealing with S3 storage. The documentation and sample code is also excellent and should cover most cases you should want to look at.
For Maven dependencies, all you need to add is the following dependency:

<dependency>
<groupId>net.java.dev.jets3t</groupId>
<artifactId>jets3t</artifactId>
<version>0.7.2</version>
</dependency>

..of course, keep a lookout for version updates, this was the most recent one at the time of this writing to my knowledge.

Typica – API’s for the rest of Amazon’s Web Services
I’ve been using the Typica API’s for interacting with SimpleDB and Simple Queue Service, it also has API’s for managing EC2 instances and the rest of Amazons cloud offering. Documentation is ok, but not quite as good as for JetS3t. Finding the Maven dependencies was a bit more work, but eventually found them, with the following settings:

<dependency>
<groupId>com.google.code.typica</groupId>
<artifactId>typica</artifactId>
<version>1.6</version>
</dependency>

Also added the following repository to the repositories section of my pom.xml:

<repository>
<id>ibiblio</id>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</repository>

Hope this saves a bit of time for others!

So, you’ve painstakingly introduced Spring into your application, used great care to create a valid XML configuration, use dependency injection to avoid coupling and use interfaces rather than implementations, and..

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.blabla.Bean] is defined: expected single matching bean but found 2: [thisBean, thatBean]

Utter fail. The issue in this case is using the @Autowired annotation to autowire an implementation of an interface that has two different implementations. Rather than using a named attribute on @Autowired, or using the variable name on the bean to resolve which of the two beans to use, Spring will just spew out a stacktrace in this case.

In this particular instance, the whole point of dependency injection and using interfaces is made null and void by Spring itself.

You might think isn’t so bad, you can work around it (and you can), but what if you have a number of Spring configs, some of which are provided by jar-dependencies that you do not maintain the code for? Oh, the pain.

I’ve said it before, and I’ll say it again: I loved Spring 3 years ago. Not so much anymore. It has become a straight replacement, with all the inherent complexity of old school J2EE/JEE containers.
In most cases, you won’t need Spring, the pain isn’t worth it, especially when you start dealing with several layers of autowiring and multiple xml-configs. At this point Spring because more of a roadblock than a help.
Using the “new” keyword, or wiring stuff together in Java-code is perfectly acceptable. After all, the Spring XML configs and annotations are as much code as Java code is, with the difference that you’ll only catch issues at Runtime rather than compilation time.

My current contract is coming to it’s end next week, meaning I will be available for new engagements.

However, I’m only looking for work that can be done remotely and flexibly, because I will be on the road a fair bit over the next month or two (got a flexibly outlined itinerary). When I’m not home, I will be staying in places with good and stable internet access, so that part won’t be a problem.

So what can I do? Well, as you might gather from my LinkedIn profile, my main background is within Java and systems integration.

However, I believe I can probably be of most use to people looking for a quick turnaround in building advanced, but limited in scope webapps with Apache Wicket, as an example, I built the SVNsite Subversion hosting service last year in about 10 days, utilizing Wicket and Amazon’s Web Services infrastructure with PayPal based payments.

In other words, if you’re looking to quickly build a small webapp based on top of Amazon Web Services with a payment solution, I’m your guy, because I already have a lot of ready-made boilerplate code from previous projects.
I’m also quite proficient at Scala (prefer it over Java), and I’m pretty handy (if not an expert) at Cocoa/Objective-C for Mac OS X and iPhone development.

Considering I need some flexibility, small fixed price projects, “bits and pieces” type work and a few hours here and there are not a problem, In fact I’d prefer it to give me time to have a look around in the places I’m going to visit. I’ll probably be reasonably priced as well, considering you’ll be getting a senior top-notch, highly productive developer/architect for your money.

If you think I could help you, ping met at wille.faler(at)infonatural.com

Here is the video of the Kanban talk I did last week. Unfortunately, it seems to have lost the first 10 minutes or so of the talk, resulting in the background to the talk being missed. Also, the short pauses I make are not because the cat got my tongue, I was accommodating people who entered late. :)

The slides I used are also available here as a pdf.

I’m holding a talk on first impressions of a team moving from Scrum to Kanban at Skills Matter in London this Wednesday (25th of November) evening. Sign-up, it’s free. ;)

Waste is pervasive in todays society: in companies, in the public sector, in organisations large and small. It’s a shame, because there is a very simple decision criteria for any action or use of any product/framework that is universally useful in almost any situation where a productive pursuit is at hand.

It is simply a question you should ask. Does your action or use of a given product or framework:

  1. Add value
  2. Subtract value
  3. None of the above

If the answer is anything but 1), you are wasting your efforts. If something does not add value to the outcome you are looking to achieve, it is waste.

Always be adding value. And always cut out waste where ever you see it.

A friend and I where jokingly playing around with the idea of “Conditions of Dissatisfaction” as an alternate to Conditions of Satisfaction.

Maybe the idea isn’t so bad after all as a gimmick to avoid scope creap and keep focus on delivering minimum marketable product: With Conditions of Satisfaction there can sometimes be an urge to throw in everything and the kitchen sink in how they are defined. I’ve seen CoS spanning several pages.

Using “Conditions of Dissatisfaction” and asking “What would really piss you off if the feature was lacking it?” might promote a more minimalist, functional approach.

It started out as a joke, but maybe it is worth picking for ideas as a concept.

Next Page »

Follow

Get every new post delivered to your Inbox.