The Slip
![]()
The Slip is NiN super cool new album. In addition to being a great release, The Slip is released with a Creative Commons license - which means you can share the album with your friends, put it in your podcast or remix it.
I have found a couple of amazing "remixes" of some of tracks included in Year Zero (previous release) and The slip which you can download here.
The Slip can be downloaded here here (requires email registration). Read a review here
Many of the songs from NiN's latest realeases are available for download as multitrack audio files so it's easy to create your own versions of the songs. Check out what other people are doing att http://remix.nin.com/
Skull
I just had to record this one ![]()
Studying the great works
An old colleague of mine, Joakim Sundén has written an excellent blog post on the importance of reading books (ok, from the point of view of a software developer). It's in Swedish but very nicely written and I can only agree with what he says. What baffles me is that so few developers in this industry read something (other than their own code). Few read articles, blogs or other people's code. And even fewer read books. I know, time's scarce. We all have families, hobbies, etc. Agreed. But if that's the case, then you should do it on your free time. If you are a person who is interested in a 9 to 5 job, I recommend that you have a career switch. Software development is not a field where you can just go to work. It requires a great deal of effort and agility to keep up with it.
We are in a profession where we are dead if we don't keep learning. To me being a software programmer is like being on a treadmill. You cannot afford to stand on a treadmill when it's on; you get thrown away. And that's exactly what happens the minute we quit learning in software development. Learning is something extremely important. And learning by taking a course, it's just one way of doing it. You could attend good conferences and symposiums definitely, but again all of those require budget, no doubt about it and we certainly must do that, but what's important is: that is something we're going to do a couple of times a year. That doesn't mean that we learn only a couple of times a year. So what do we do about learning? I want to talk about this as iterative and incremental learning. In other words we can not afford to learn something huge and large in just one day. We did this as students, cramming before the exam; we certainly shouldn't be doing that as professionals. - Venkat Subramaniam
One way to force ourselves to keep reading, learning is to do this within an organization. An example is to organize "brown bag sessions" where different people volunteer to be the lead in different discussions. You should be able to find at least one or two people that are interested in this kind of setup. Get them going, get management involved, arrange a few sessions and see what happens.
Just as we are interested in iterative software development we should be equally (or even more) interested in iterative learning. What did you learn today? Are you learning anything it at all? This should be a sign that tells all of us that it's time to get a new job
It's not easy but my personal goal is to become one of the mythical 5%
In my experience those in the 5% must struggle to get there, and struggle to stay there, and it's the process of continuous learning that makes the difference. - Bruce Eckel
We could compare software development with writing poetry. Mark Strand said that how good you are depends on how many poems you've written in your life. How do you get good at it? By writing poetry all the time. By reading relevant literature. By studying great poetry works.
Push vs pull systems
I attended a presentation (again arranged by Valtech, thanks guys) by Mary and Tom Poppendieck. They wrote the award-winning book "Lean Software Development: An Agile Toolkit" in 2003 to explain how the lean principles from manufacturing offer a better approach to software development. Overall it was a good talk about how to avoid waste by "stopping the line": fix the defects write away, otherwise they will never get fixed or it will happen too thus increasing the cost of the system.
In the last part of the talk they commented that they had interviewed hundreds of projects that that they had seen that 60% of the code/features in a push-scheduled system are never used. This is one of the roots of the suffering in software development, according to Tom.
Why are most projects (apparently) using push systems? At least to me it seems that a pull system like kanban style (which responds to real-world demand or orders and forces the upstream process to respond) is much more logical. What about "push" project managers with no technical expertise whose only task is to track progress for different tasks? IMO that role seems pretty illogical as well. That's also waste.
JPA tip
A fairly common JPA anti-pattern is retrieving an object from the database before deleting it. For example, as documented here.
This is not so efficient as the implementation is actually issuing two statements (select and then delete) which is wasteful. The right way to do it is to use
This just issues the delete statement.
Seam in action
I just received an email letting me know that I've been recommended for reviewing Dan Allen's upcoming book "Seam in Action". Cool!
I'm looking forward to reading the first chapters of the book
Ride the darker wave
JFokus rocked
![]()
JFokus is over. For 2 days Stockholm was the center of the Java universe. I missed the tutorial day but from what I heard it was great. The conference day was definitely worth it with a whole bunch of interesting talks. Some highlights:
Web 2.0 development with Java
Stephan Janssen talked about the hard life of an Ajax developer and showed how Flex can make RIA development easier but above all much cooler. Very nice demos (next gen Parleys) and to top it all off a glimpse of what you can do with Java FX. According to Stephan in a year or so JavaFX will be as groovy as Flex. If you haven't looked at Parleys I think it's time you do so.
Qi4J
Java framework pioneer Rickard Öberg showed a brand new programming model based on the concepts of DDD and AOP. Always a pleasure to listen to Rickard, definitely one of the smartest guys on the Java planet. I was kind of surprised to hear that he "only knows Java". More people should read Evan's book and understand the concepts.
Evolution with Grails
Good introduction to Groovy on Rails. If you are using Spring MVC or Struts 2. Why not use Grails? It's a bit slower (for now) but it's definitely much more fun and it takes much less code to develop apps using Grails. At least it can be a great idea to start using Grails for prototyping or when you need to do something fast (always?). Strong typing combined with scripting, productivity-boosting features like closures and without all the boiler plate. And above all Groovy is fun.
Seam Maven Archetype for Tomcat
I'm going to present Seam for a group of developers who are new to JSF and since I'm going to do a bit of live coding I thought that I needed a proper Maven archetype (no EJB btw) that extends Seam's parent pom and that includes the Tomcat plugin (in order to deploy/undeploy from Maven). Since IDEA has built in support for Maven the only thing that I need to do is import the project, start Tomcat (and HSQLDB) and start coding.
I uploaded the archetype to my web server so all it takes to install it is to type:
mvn archetype:create -DarchetypeArtifactId=seam-tomcat-archetype -DremoteRepositories=http://www.manuelpalacio.net -DgroupId=net.newinstance.seamdemo -DartifactId=seam-tomcat-demo -DarchetypeVersion=1.0-SNAPSHOT
The archetype generates a project similar to the one that you'd get if you used seam-gen but with the exception that it includes a context file (as in the JPA example in the Seam distribution) specific for Tomcat (by the way this file is used by tomcat to create the application context and to create a datasource) and the pom includes the maven tomcat plugin.
In order to deploy the application to Tomcat, you need:
- Tomcat running
- HSQLDB running
Maven archetypes
To create a Maven archetype the first thing that you need to do is run a mvn command as specified here in the last step.
After that you can customize the contents of the generated archetype-resources directory (possibly copying files), and archetype.xml (the archetype descriptor). The last step is to install the archetype in the repository. It's quite messy to have to work with archetype.xml directly since you need to make sure that all of the archetype's files are listed there. So I wrote the following Groovy script that scans the archetype-resources directory and generates the appropriate XML.
It takes 3 parameters: input dir, output dir (without the end "/") and the artifact id (same as the artifact id in that you use to generate the archetype skeleton in the first place, refer to the maven archetype guide).
Aside node
I know, Maven sucks. But it's become a standard for a lot of people and it's becoming ubiquitous. But there's hope and some smart people are trying to improve it.
Unthinkable futures
![]()
These are excerpts from a list of "unthinkable futures" as developed by Brian Eno and others out of an internet conversation some years ago. If you like Eno's works I'd recommend getting "A year with swollen appendices". It's a fantastic book, full of smart thoughts. Truly the work of a "drifting clarifier". Did you know that Brian created the "Microsoft sound"?
Mass outbreaks of allergies unexpectedly solve all our transportation problems by confining almost everyone to their sealed residences. Telecommunications stocks soar
A highly successful new magazine - Ordinary People - focuses only on people who have never done anything in particular to deserve attention
News is understood to be a creation of our attention and interests (rather than "the truth") and news shows are redesigned as "think-tanks," where four interesting minds from different disciplines are asked the question, "So what do YOU think happened today?"
Later, four uninteresting minds (chosen from the pages of Ordinary People magazine) are asked the same questions
A microbe engineered to eat oil slicks evolves a taste for rubber. Transport grinds to a halt on burst tyres. People stay home and have sex more, but condoms crumble routinely. World population doubles in six years
The commonly held notion that it is correct to surround children with love, security and affection suffers a serious decline in credibility when it becomes apparent that kids reared thus are entirely unequipped for a world that is cruel, dangerous and insecure. Enlightened parents begin experimenting with new forms of toys: teddies with sharp teeth, building bricks with abrasive surfaces, mildly toxic crayons, unsafe play areas
Manufacturers of underwear finally realize that men have different sized balls
Some of the legendary Oblique Strategies could be applied to software development as well





Recent Comments- Antonio Garcia on JBoss Seam tutorial: Part 7
- Antonio Garcia on JBoss Seam tutorial: Part 6
- arzu on JBoss Seam tutorial: Part 1
- Viacheslav on JBoss Seam tutorial: Part 6
- rakesh on JBoss Seam tutorial: Part 2