Find files larger then 50M and show their size, last access date and path:
find . -size +51200k -printf “%p %Ar %Ad/%Am/%AY ” -exec ls -lh {} \; | awk ‘{print $10,$5,$14}’
Twitter has decided it’s time to ditch all those hairy arsed developers who are apparently confusing users by displaying tweets in non standard ways, using different terms for twitter actions such as favourite (that should have been favorite? but that’s spelled wrong!) and worse of all, playing fast and loose with their privacy. Apparently users are confused by the multifarious nature of tweets exposed to them in different parts of the internet. Oh dear, doesn’t bode well for the future of humanity. How do they cope when they’re on holiday and they have to go into a different supermarket, where the tin of beans is on a lower shelf? “There are no beans!” they cry, so twitter would have us believe. “Purchase two for one the sign says”. According to twitter, the hapless user must seek a supermarket assistant and cry “I want to buy two tins of beans for the price of one but it only says I can purchase them! What does purchase mean? Can’t I just buy them instead?”. (more…)
I’ve installed the Agile Stack of JIRA, Bamboo, Fisheye and Crucible and started the first code review, which is proving to be useful. We also got our first green build from Bamboo on the project so the tests are coming round nicely, in time for the 0.2.0 release next week. Must say, Crucible is really handy for conducting code reviews

I’ve been looking into a weird Spring testing error from this code:
MockMultipartHttpServletRequest req = new MockMultipartHttpServletRequest();
req.addFile(new MockMultipartFile("file","test1.html","text/html", fi));
req.setContentType("multipart/form-data");
req.setMethod("POST");
req.setRequestURI("/en/uploadaction");
handlerAdapter.handle(req, response, controller);
which threw this exception:
java.lang.AbstractMethodError:
org.springframework.mock.web
MockMultipartHttpServletRequest.getFiles(Ljava/lang/String;)Ljava/util/List;
Turns out I was using spring-mock-2.0.8 when in fact I should have been using the new Spring test dependency:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.0.5-RELEASE</version>
<scope>test</scope>
</dependency>
When you’re managing a small agile project it’s quite easy to get out of touch with the codebase and you only get an idea of problems on the horizon when one of the team asks a question about their code that starts alarm bells ringing. Perhaps they’ve found some mince on Google and hacked it into a class to solve a small problem. It might be small to them but it may also affect the application as a whole. So you have to keep on top of what’s happening out there in code land.
One of the best ways to do this is via code reviews where you can peruse recent commits and comment on dodgy looking code, for the developer to pick up and either defend or change. Sometimes it just needs a bit of steering in the right direction.
I do like analogies, especially ones to do with mountain guiding! Something like Crucible is your code quality compass. When you’re being assessed to be a Mountain Leader, for example, even if it’s not your turn to do the navigation, you have to keep on top of what’s happening and where the group is going. At any time, you are expected to be able to point to the map and state in a clear and confident manner, “we are here!”. Similarly, you need to be able to know where you’re going in order to head off potential problems, like a big cliff.
So it is in agile software development. You need to keep on top of the code that is being committed before you end up scratching your head and wondering how on earth you ended up here. In Crap Code Gulch, instead of at the summit of Golden Code Hill!
Code reviews are therefore your Code Compass and something like Crucible is your GPS. Use it to navigate your project through the swamps!

There are many names for the people involved in an agile project, from UI designers, to testers, coders, customer facing folk and all that but what I’ve learned is there needs to be someone who can point in the right direction. This is especially important when you have young and inexperienced developers on the team. They’re enthusiastic, keen to learn and brim full of initiative. It’s all you can do to keep them occupied and interested. Quite often they’ll reach the end of a Story and start looking for something to do. This is because you’ve started off too slow, trying to find the right velocity for the team as you haven’t worked together before. Other times they’ll come up against a problem which they haven’t seen before and start Googling for a solution. Spring testing methods are a good example. They’re quite obscure and if you haven’t mocked spring controller testing before it can be a steep learning curve. Unfortunately, Google does not enforce quality on its search results and you can find the project filling up with basically crap code harvested from the net. (more…)
Had some considerable trouble compiling GPAC on OS X PowerPC. Compiles fine on Intel but on PPC it barfs with the error:
ld: cycle in dylib re-exports with /usr/X11R6/lib/libGL.dylib
collect2: ld returned 1 exit status
Hunting around I found Apple’s explanation and this is how I compile on OS X PPC:
export LDFLAGS="-dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib: \
/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib"
./configure --prefix=/gpac \
--disable-wx