Preparing for The Spring Experience
Next week I'll board the plane from Panama City to Miami to attend The Spring Experience in Fort Lauderdale.
These are my picks from the various tracks.
- An Introduction to Domain-Driven Design
- The Building Blocks of Domain-Driven Design
- Using Dynamic Languages with Spring
- Code Organization Guidelines for Large Systems
- Spring (Acegi) Security with Ben Alex
- Applying Domain-Driven Design in the Enterprise with AspectJ
- System Integration Testing with Spring
- Beyond Low-Hanging Fruit: Domain Object Access Control
- Myth Buster: Spring is XML Hell!
- Rapid Fire Session - Terracotta for Spring
- Meeting Requirements through Acceptance and Stress Testing
- Real World Rules Engines - Why You Should Care
- Spring, Hibernate, and JDBC Integration Patterns
I hope to bring back a lot of inspiration for my current project and my team here in Panama. Domain-Driven Design sounds quite interesting. Of course I can't miss the session about Spring Acegi Security as I've started to write a book about this topic.
iTunes U - what a great idea
Rumors: Apple Tablet
Hopefully it's true. I would really love to use such a tablet for reading documents, news feeds and all the other things for which a real laptop is a bit too heavy to hold for a long time.
Over the weekend, Smarthouse reported that Apple had built a tablet PC prototype that was being costed out by several Taiwanese companies.
(The Unofficial Apple Weblog (TUAW) in Rumors: Apple Tablet)
When Bubble 2.0 will burst
This sounds about true:
[..] Web 2.0 is nothing more than an aftermarket for Google. Startups slicing little bits of Google's P/E ratio, acting as sales reps for Google ads, and getting great multiples for the revenue they generate by fostering the creation of new UGC to place ads on.
There is so much else skilled developers can do instead of trying to create one more me-too web property, yet another web framework or yet another "solution" for developing the software for web properties faster than ever before. In the long run only solid things prevail. But I guess the outlook of getting rich quick is the most attractive element of any gold rush.
Marching music - again - at 3 am in the morning
Yesterday I wrote about the sounds of marching music that we were forced to listen to at around 8:30 pm. We didn't know what to expect by the crack of dawn. Around 3 am we woke up to the heavy sound of marching music and couldn't believe it.
The explanation given to us later by Antonio is that this is a local tradition called "las dianas". The music is played by firefighters.
Once again: marching music
Interrupting a developer considered harmful
Dmitri Zimine has a hypothetical story of how interrupting a programmer for a two hour emergency request needed to close some sale can actually waste two weeks.
[...]
Agile development is supposed to be about agility. It's supposed to mean that you can change plans quickly. It's not supposed to be about rigid programming teams who are so slavishly devoted to their Two Week Plans that they can't rearrange their schedule a bit to serve the needs of the customer.
Has nobody noticed that the example was about a sales oriented interruption and not about something needed for an ongoing project of an existing customer? Most business people will misunderstand this form of agility. They will interrupt programmers any time just to make a prospect happy. But prospects are not yet paying customers and therefore the damage is real.
Sales and development (in some cases R&D) should be separated. A good idea is to have people available for technical pre-sales support. But these should not be the same guys who develop the company's product or work on another client's project.
Agile or ad hoc?
In the vast majority of cases where these phrases are used, agile has mistakingly been used to mean that the development process in use is ad hoc or even non-existant. It's not hard to get to the bottom of what people mean by agile, particularly in interviews, with a few simple questions.
(Simon Brown in Agile or ad hoc?)
That's certainly correct. I'd like to add that agile development requires a team of truly senior developers who have experience with all the tools they need to use. And you need to have a management that accepts let you do your thing during a Scrum sprint.
From what I can see is that you slide into ad hoc development when you did not plan well or can't plan, e.g. due to lack of a specification. So the only solution you have is to start and try. It's probably not in compliance with pure agile development, but while your customer or your management trusts you, go along and create the missing spec on the way. A little bit down the road you will have an opportunity to implement a more formal - aehm I mean agile - process.
What I'm saying is that Scrum sprints require you to plan. And if you don't know what to plan, because you are not sure what you should create, because you lack domain knowledge and there is no product owner or on-site customer available, then you will have to substitute that with your own creativity and imagination.
In the end I believe that's still agile development.
Update: It's very important that you record everything you learn during the ad hoc phase. It's not so much development what you do during that phase. It's more research and experimentation while building some prototype(s) along the way.
Make it look like it's their idea
At the end of the day though, i find that the best way to get them to do what you want, is to make them feel like it was their idea in the first place. That's probably the most valuable trick to learn. I know that seems like we lose the credit for the catch but we're engineers right? We usually don't get recognition unless something goes terribly wrong:)
(Rick Marry in a comment to How do you get open source frameworks past the red tape? )
That's very well said. It is indeed the most valuable trick you can learn in order to prevail in many situations in the corporate world. Although some developers or engineers might want to disagree at some point we all are sales people as well. Probably as a true consultant you are more a sales person for ideas than you are an engineer. So your people skills and your ability to circumvent blockades is a key element for doing your job well.
Replacing DRM With A Music Tax Is Incredibly Stupid
Why are some people always asking the government to step in to solve a market challenge?
[...] mandatory monthly tax in the European Union on broadband Internet and mobile phones of around €4/month that allows consumers to download and consume all the music they want without DRM. Payments will be made to rights holders according to popularity of music - if a song is very popular, it will get a higher percentage of total fees collected.
(TechCrunch in Replacing DRM With A Music Tax Is Incredibly Stupid)
Where is the problem? The customers will decide what they want to spend their money on. And in the case of the music industry artists and customers will decide upon the faith of the record labels, which are just distribution platforms for the product artists create. The artists needs to decide how he wants to reach his audience and what his goals are. And as a customer I do the same. I don't want anybody to tell me how and where to buy a certain product. I vote with my money and choose whatever suites my needs. If there is a match between my needs and what artists provide we have a win-win situation.
Now that I'm living in Panama I'm quite happy to fulfill my entertainment desires in iTunes where I can buy what I'm looking for. But probably I'm not supposed to do that, because I'm not located within the US market. ;-)
Hackers Zero In on Online Stock Accounts
It's been only a question of time:
Hackers have been breaking into customer accounts at large online brokerages in the United States and making unauthorized trades worth millions of dollars as part of a fast-growing new form of online fraud under investigation by federal authorities.
(washingtonpost.com in Hackers Zero In on Online Stock Accounts)
Maybe using a proprietary client software for that kind of application is not a bad idea after all. It will need to communicate with the server over some kind of remoting protocol, but that communication can be encrypted.
There is another problem:
One way is by placing keystroke-monitoring software on any public computer in a library, hotel business center or airport.
Probably the login for such critical application should require an external device where the user enters a PIN or key of kind. German banks have been offering such a solution for home banking, but unfortunately not a lot of people were willing to buy the devices. Another drawback is that the user won't have access to his account on the road unless he carries a laptop and the device. But a little inconvenience is better than to loose a large amount of money.
Überprüfung der eigenen Stimmabgabe bei elektronischen Wahlen
Die einzige Möglichkeit, die Stimme sicher zu zählen, bedeutet, die Stimme von Beginn an kryptographisch eindeutig zu markieren, um sie damit später wieder sichtbar und für alle verifizierbar zu machen. Aber dann ist die Stimme zwangsläufig nicht mehr anonym, da mir ein Zugang eingeräumt werden muss, um den Inhalt meiner Stimme zu überprüfen.
(Tim Pritlove in The Lunatic Fringe » Blog Archive » Das Dilemma der elektronischen Wahl)
Bei einer Papierwahl kann ich nicht nachprüfen, ob meine Stimme korrekt gezählt wurde oder nicht. Sobald der Wahlzettel in der Urne ist hat er meinen Einflußbereich verlassen.
Das feature der kryptographischen Markierung ist allerdings eine nette Idee. Würde es doch zum ersten Mal eine Überprüfung der Stimme durch den Wählenden ermöglichen. Wenn Nachrichten über falsch gewählte Stimmen nach einer Wahl auftauchen, könnte man so sicherstellen, daß zumindest die eigene Stimme richtig zugeordnet wurde. Wenn das Hunderttausende tun, wäre eine weitere Kontrollinstanz da. Das ist doch eigentlich eine wünschenswerte Sache.
Wenn ich die Stimme überprüfen kann, können andere mich zwingen, ihnen diesen Weg ebenfalls zu öffnen, womit ich erpressbar werde. Wenn Druck auf mich ausgeübt werden kann, ist die Wahl nicht mehr frei. Die Anonymität oder die Freiheit bei der Stimmabgabe aufzugeben ist nicht akzeptabel.
Man könnte die Möglichkeit des Zugangs und die Gültigkeit des Zugangsschlüssels zeitlich beschränken und die Schlüssel anonym aushändigen. Im Wahllokal wird überprüft, ob ich im Wählerverzeichnis stehe. Dort bekomme ich meinen Kryptoschlüssel und kann mit dem z.B. bis zu 36 Stunden nach der Wahl meine Stimme überprüfen. Niemand kann wissen wer welchen Schlüssel erhalten hat.
Mit welchem Zweck würde mich jemand erpressen wollen? Mir fällt da nur ein, daß ich meine Stimme ändern soll. Bloß sollte diese Möglichkeit natürlich nicht gegeben sein, weil es ja dem Konzept der Wahl an sich widersprechen würde. Wenn die Stimme in der Urne ist, habe ich gewählt und kann mich nicht mehr anders entscheiden.
Ein anderes Problem könnte sein, daß jemand von mir eine bestimmte Stimmabgabe erwartet und so überprüfen könnte, ob ich mich wunsch-/auftragsgemäß verhalten habe. Hier in Lateinamerika ist es recht üblich, daß Politiker in Armenvierteln Stimmen kaufen. Meistens sind die Leute aber clever, nehmen das Geld, gehen zur Wahl und füllen einen ungültigen Stimmzettel aus.
Wenn ich aber meine Stimme nicht bequem via Internet überprüfen kann, sondern dazu dieselbe Prozedur wie bei der Wahl selbst notwendig ist, wird es unmöglich für einen Dritten Druck auf mich auszuüben. Die Wahl bleibt geheim, weil der Dritte nicht bei der Überprüfung anwesend sein kann.
Die Möglichkeit für einen kurzen Zeitraum zu sehen wie ich gewählt habe und notfalls Einspruch einlegen zu können halte ich generell für attraktiv.
Angela Merkel kündigt umfangreichen Überwachungsstaat an
Ich persönlich bin ja schon ein wenig verzweifelt, weil es den meisten Leuten scheinbar nicht in die Birne zu kriegen ist, dass totale Videoüberwachung zwar eine totale Überwachung bringt, aber letztlich an der Sicherheitssituation wenig ändern wird. Technisch sind wir nicht mehr sehr weit entfernt von automatischen Erkennungssystemen, die in den von modernen, hochauflösenden Kameras gelieferten Datenströmen ohne Probleme in Echtzeit einzelne Personen nahezu fehlerfrei herausfinden werden. Ab dem Moment, wo kein Personal mehr zur Überwachung benötigt wird, ist dem Missbrauch auf allen Ebenen Tür und Tor geöffnet und wenn man sich das Geschwurbel von unserer ahnungslosen Kanzlerin anhört verlässt mich jegliche Hoffnung, dass die Politik diesem Treiben auch nur irgendeine Grenze setzen wird.
( in The Lunatic Fringe » Blog Archive » Angela Merkel kündigt umfangreichen Überwachungsstaat an)
Meiner Meinung nach ist es nicht so, daß Politiker oder andere Machtpersonen nicht verstehen wovon sie reden. Es ist eher so, daß sie ganz gezielt eine bestimmte Wirkung entfalten wollen. Im Falle von Terrorismus entsteht dadurch nur eine fatale Kombination. Der Terrorist erzeugt Angst in der Bevölkerung, die dann die Politiker dazu bringt auf das Sicherheitsbedürfnis der Leute zu reagieren. Leider arbeitet dabei der Politiker dem Terroristen in die Hände, macht sich gewissermaßen zu dessen Werkzeug.
Bloß frage ich mich was will ein Terrorist eigentlich bewirken? Normalerweise werden Menschen immer von irgendeinem persönlichen Vorteil getrieben. Naja, nicht immer, aber oft. Doch bloß wo liegt für einen Terroristen der Vorteil? Sicherlich glaubt nicht jeder die Storz mit dem Paradies voller Jungfrauen und außerdem gibt es ja auch eine Menge Terroristen, die überhaupt nichts mit dem Islam zu tun haben.
Statt mehr Beschneidung von mit viel Blut erkämpften Bürgerrechten sollte nach den Ursachen für die Zunahme von Terrorismus gesucht werden, um den Auslöser des Problems zu beseitigen.
Am Rande mag ich erwähnen, daß es zur Zeit eine Menge Sinn macht in einem kleinen Land zu leben, welches durch seine geringe Bedeutung und geringe Bevölkerungszahl gar nicht interessant genug für Anschläge ist - und außerdem gar nicht die Kosten für solch eine totale Überwachung aufbringen könnte.
Leading a mixed language development team
This week I decided to join the development team of my client RealWorld Systems here in Panama for a long-term involvement. After providing consulting services for the company for a few months I felt that joining the team would make sense and I appreciate the offer made to me by RealWorld's president.
We are developing a trading system for the financial services industry in Java using tools and technologies such as Spring Framework, ActiveMQ, Lingo, Hibernate, Eclipse - to name just a few.
The team consists mostly of Panamanian developers, which provides an interesting challenge of its own for me. The official language in Panama is Spanish. So we do our planning sessions and team discussions mostly in Spanish, but we write comments in code, documents and our JIRA issues in English, as our management and the other part of the team is not fluent in Spanish. Daily Scrums with the whole team are done in English so that everybody can understand what's going on.
But I can tell that this mix of languages is not easy to handle for everybody. I'm very grateful to my Colombian wife Nazli for teaching me Spanish in all the years we are together now. Without my Spanish language skills leading such a team would be much harder. English is the dominating language in software development, but that doesn't mean that everybody is absolutely fluent speaking it or has equal access to information provided in English. So it's very helpful to speak the native language as well.
Actually I made the same experience before in my home country Germany. Many German software developers understand English quite well, but you really need to be able to think in the language in order to understand the deeper meaning of documents or books you read or to be able to not only follow, but contribute to technical discussions. English from school usually isn't enough for that.
Real-Time Collaboration: ConceptShare and Thinkature
Techcrunch and Ajaxian report about two visual collaboration solutions: ConceptShare and Thinkature.
Technically such applications are quite interesting and the ability to collaborate online is compelling. But has anybody a solution for a very human problem? How do you get people to collaborate, to share ideas and contribute something meaningful?
It seems that a certain mindset is required to collaborate via such tools. Or maybe it's that these tools surface something else. Have you ever been in a lengthy meeting where everybody is talking and talking, but the conversation doesn't move forward and there is no point to anything. Somehow people don't seem to mind that the meeting is just a complete waste of time. In some cases meetings are platforms for persons who love to hear their own voice and impress others verbally, but - and herein lies the problem - without much substance.
Now with collaboration tools you can see who really adds value to a team or company. A word is spoken quickly and there is no record afterwards. But when it's required to think and really reflect onto what other people have collaborated earlier, then you can see who is just smoke and mirror and who has something of value to offer. Probably those who think profoundly will prevail. That would be good.
So what makes people use these tools effectively? What makes them reluctant?
Maven IDE
As many developers do I use Eclipse as well. It's a very powerful IDE. There is a large number of plugins available and the community around the IDE is quite active. But Eclipse has some limitations when it comes to integrate Maven into it. There is a very good Maven2 plugin available, but when your project grows into a multi module project, then you'll learn about some limitations. You can work with Eclipse and Maven can generate your IDE configuration files (mvn eclipse:eclipse). But as Eclipse lacks true support for hierarchical projects, you have either check out each module as a project or you'll end up with workarounds.
What am I talking about? Think about this multi module project:
+- big-project +- src | +- site +- module1 | +- src | | +- main | | +- java | | +- resources | +- pom.xml +- module2 | +- src | | +- main | | +- java | | +- resources | +- pom.xml +- pom.xml
With Eclipse you would check out module1 and module2 and have mvn eclipse:eclipse generate the .project and .classpath files for you. The result is that you have two Eclipse projects, but you can't edit the pom.xml of the parent project, neither can you edit its site.
With the M2Eclipse plugin things are a bit better. You can checkout the whole project and the plugin's builder will dive into each module and read its pom.xml. It will even resolve the projects internal dependencies to the Eclipse workspace instead of looking them up in your local .m2 repository. But be careful. You should use the plugin built from source as the latest released version won't work very good for a multi module project.
But - and that's the workaround I was talking about - you will have to set up source folders for all your modules and that might create classpath conflicts. You might want to use a different log4j.properties file for unit tests and place that in your module's test/resources. If you make test/resources a source folder - you want that - and main/resources as well ... boom ... you'll up with two log4j.properties files and the first one found will win. Not good.
Apparently there are a few limitations as to what the developers of the M2Eclipse plugin can do about that for now.
Now there is an alternative. The Netbeans IDE, although not yet widely used, has undergone quite a metamorphosis in its life. If I remember right version 4 introduced Ant as the primary build system instead of creating a proprietary solution. The plugin Mevenide switches Netbeans to Maven2 as its primary build system.
I've just tried it for a few minutes. So that's not a real evaluation. But it looks very promising. Nice is as well the integration of Continuum so you can control it from within Netbeans.
Get paid to receive Spam
Boxbe, an email service that charges marketers to email its users, launched this week. The idea is you use your Boxbe address (mine is lizg@boxbe.com) to sign up for throwaway services and lists. If someone uses the address to email you, they are given the option of paying a fee (mine is set at 10 cents, of which I receive 75 percent) or completing a test to prove you’re a human (a captcha). So basically, the fee will only come into play for mass marketing emails.
How nice - isn't it? Who in their right mind wants to get paid for receiving Spam. I don't want any Spam at all. Probably I will never understand how advertising can work, if it's sooo annoying. They more a company annoys me with their advertising the less likely I am to buy their product. Am I the last person who searches the market actively when I want to buy something?
Flag Day in Panama City
November is the month that starts the holiday season in Panama. November 4th was Flag Day with a huge parade, which started around 9 AM and lasted until about 7 PM. It was the second parade in a row. They have bands with trumpets, but most of all, drums, drums and more drums. In fact you might get a bit deaf, if you stay too long ;-)
Check out a few of the pictures from November 4th. What's interesting to me is that you don't see any of the upper class Panamanians participate. They usually spend the long weekend (November 3rd until 6th) in their beach houses or fincas in the countryside. All the people from the poor neighborhoods fill the streets and have a good time enjoying the show put on by the bands.





