Archive

Archive for June, 2008

Today’s game formation

June 19th, 2008 makii Comments off

Here the formation for today’s game Germany vs. Portugal:

Formation Germany vs. Portugal

Categories: funny Tags:

Birds

June 16th, 2008 makii Comments off

Seems there crashed some Trading Birds…

Poor Birds…

Categories: Common Tags:

Web 2.0 Banking?

June 13th, 2008 makii Comments off

Being incorporated in a bank (again), I just wonder how all this web development stuff around me continues to evolve. Working for a financial information website, being taken over by a bank was pretty hard to avoid eventually, but of course might benefit both parties involved.

The more I’m eager to see what kind of web applications the new guys want to do with their web-banking and -trading applications now they have aquired an internet company. Now with the first wave of integration of the two web sites passed pretty smoothly, and the rebranding and accomodating redesign of the two websites rolled out, we’re ready for furthermore tasks to accomplish. Let’s see what comes next.

Interesting in this context is a article by finextra I stubled over at cometdaily. The article tells about X topics I want to comment A survey by WorkLight which questioned 1000 facebook users,

  • whether or not they’d want or use Web 2.0 widgets or applications for their day-to-day online banking in Facebook or other launchpads
  • whether they would consider switching to another bank to get such features.

The main message is

New research has found that around half of Facebook users would use Web 2.0 applications for online banking, while a quarter would even consider switching banks to obtain Web 2.0 services.

The switching part is the one my boss would be especially interested in I guess.

The article goes on:

Commenting on the survey findings, David Lavenda, VP, marketing and product strategy, Worklight, says: “To lose a quarter of your customers to competitors who have provided secure Web 2.0 banking would bear a significant impact on existing business. This is particularly true at a time when financial services companies are struggling to retain and acquire customers in a market that saturated with new competitors and countless new offerings.”

That’s true. In my experience numbers of new customer are much more interesting to management than the figures of the current customers’ activity. As you gain new customers, a certain percentage will have a fair amount of activity in trading and other products, another just won’t. These shares, once established, are rather stable. Clearly, the more new ones you get, the more active customers will be there.

Well, despite I like fancy Web 2.0 applications like Google Mail, and I clearly can see the point in gaining a customer base by offering nifty tools, but integrating my account statement and credit card bills into a portal like Facebook… Are they insane? Especially facebook is a nice platform for staying in contact with your friends, and doing froody Web 2.0 community stuff, whatever it is. But sharing financial spendings like that in a community, especially in this one sounds like a red rag, doesn’t it?

But surely there seems to be a market for this. We only have to take a look at Pages like wesabe or mint. Users can sync up somehow their account statements, credit card data and other stuff, get in analyzed, charted and stuff. The feature set sounds really nice, knowing one and for all where all the hard-earned money goes til the end of the month. Tagging spendings at certain locations, getting recommendations where to get this type of commodity cheaper or better elsewhere and discussing financial decisions with peers in the same situation.

Someone should do something like that here in Europe or Germany. It’ll be hard though, as for one, here in the old world it’s not so common to buy your take-away coffee or a pack of chewing gum with your credit card, so it’ll be hard for us to get the kind of complete and detailled listings like shown in the wesabe merry-go-round. On the other hand sharing financial data on this level with people I don’t know … I don’t know if there are a lot people here which will accept that easily. On the other hand we share every kind of information on the net: What music do I listen to? Where did I go party last weekend? What’s the best indian restaurant in town? Why not anticipate where I spend my money from my bills and compare them to the ones of other people?

What do you think?

Categories: Technology, Web, Work Tags: ,

Tradingbird – Features

June 13th, 2008 makii Comments off

Finally, TradingBird goes GA!

You guys ask for features? Here are my $ 0.02:

  • You offer a ranking of diversified portfolios which have to comply with certain rules of engagement. Now why not offer diversified rankings for assets or orders, too? If a user is only interested in items which comply to this rules of the diversified ranking, it would be nice to have the ability to select the buys, sells and holdings which associate with these portfolios.
  • Already mentioned by others, without this feature the trading form is most inconveniently: When selling assets from my depot, the number of pieces I own should be transfered to the sell-from.
  • Minor issue: If I’m not mistaken, the default sort in a lot of views like my depot positions is by asset name, descending. Descending means Z-A… This should be changed to ascending sort order I guess.
  • Missing resource entry As you can see in this image, when I’m logged in and go to the depot rankings of my contacts, the page title reads “startMyContactsRankings.jsp#BROWSER_TITLE“. Guess someone forgot to update a resource bundle…
  • Typo A minor typo on the next page, transactions of my contacts, the browser title reads: “Wertpapier-Transaktionen bet Tradingbird [...]

So far my current suggestions.

Categories: Common Tags:

How to survive a discussion of principles

June 11th, 2008 derlanders Comments off

There are so many Books about more or less ingenious design patterns, engineering guidelines, modularization, framework usage etc. no one could ever afford the time to actually read one of them. The main point in all of these efforts is widely the same:

I don’t want to do more work than I have to.

Which is, in fact, the principle of all technology, up to the point where having spent efforts in technology finally frees us from the efforts of the task itself, leaving us just with the efforts of fixing that technology when (if would be nice here, but is inappropriate) it breaks and the effort of finding something meaningful to do. It unfortunately implies “If I can drive a car with three wheels, why should I bother buying the fourth?”

So why the heck can’t I just…

I mean, you get a task. Say like “Write an online application”. What you want to do is get rid of it forever. What your company wants is to get rid of it soon.

So they order you to get it done as soon as possible and you will be spending time on it forever. Face the fact.
And the first solution that would come to your mind would be: “OK, if I do this as simple as possible, I won’t be doing complex errors and be done with it quickly.” Which is a correct assumption. For one, finite Task.

This is, where multiplicity comes into play. You won’t be doing one Task in one context. You won’t be done with it, ever, either. And the first one coming after you will most probably have to do it again in a slightly different fashion. And there is a word for multiplied simplicity: Chaos.

There is a certain amount of complexity that a System will always have, defined at least by the complexity of the tasks it has to perform. There is no way to eliminate this complexity, not even with Object orientation, 4GL and UML. So what happens if you seem to have eliminated complexity is that you actually shifted it somewhere else. Which can be a good thing, once that “elsewhere” is in the domain of your customer’s organization and they can live with it. Or inside some framework voodoo.

Calling things differently or avoiding to name them at all does not eliminate complexity either. It just takes away any possibility to handle them. If your application does not have explicit Tiers (Yay! We have a one-tier application! That is only a quarter of what a 4-Tier application would cost us!) it nonetheless has implicit ones, and usually more than you would imagine. If your application does not employ a model (saved efforts incoming!) it will have an implicit model nonetheless, and even better, it will have several models describing the same thing, once that thing is used in two contexts!

We have a developer here that spent much time painting tables with fields to find implicit models for which no classes exist.

So why bother with architecture, modularization or reuse at all? I mean, even if your system starts with minimum complexity, future evolution will soon drive it into entropy anyway! And yes, this is an effect that can not be avoided by any means we here possess. Any concept of reuse requires overhead, abstraction and configurability which makes the would-be reusable component even more complex. Any concept of modularization requires much work on how these modules interact, are composed, packaged, defined and you have to do much work just finding out where to put your stuff.

Fun, isn’t it? We actually add more complexity to an already complex system, to be able to view it in a more simple way. Isn’t that ridiculous? No.

What we can do, is shift complexity away from the evolving spots. We can move it out of the multiplying part of the system, which is usually defined by the features. Since complexity is there, and cannot be done away with, we have to face it somewhere and make sure that it is faced only once. So there are complex components, difficult to understand, cryptic, like many components of software tend to become when left alone for a couple of years, but we have them in their own biotope of complexity, and most important of all, we have their complexities separated, able to be handled one at a time by different people.

It is not the aim of modules to enable old, smelly code of old to work forever, but to have clear places to cut once parts of that code fall to the teeth of time and have to be replaced. Furthermore, we have Modules to enable composition of more than one product (or variation thereof, like a staging installation) while using the same, tested implementation with a different configuration. Featuresets and other terms known to multiply are allowed their own module to keep the multiplying stuff out of their dependencies. This ist costly, but it costs less than multiplying everything in every code.

We do not produce future code that handles all possibilities of future extendsions, but we provide valid rules for extending the system, at defined places, with defined terms and common basic functionality. So then the future code may multiply and change as much as it wants, as long as we are able to handle these multiplying components at all, our basic system remains stable, in fact, it gets even more stable with each new component that uses it, and it actually stays… simple.

So everytime I drop a design abstraction for the sake of simplicity,  I should take a clear look where it actually went, because I can be sure it will bite me some time.

When I read a book about object orientation, the first argument for OO is “Encourages reuse of code”. No. It doesn’t. It enables you to do reusable components, but these do not besome reusable by just writing “Class” somewhere atop your old code.

Categories: Common Tags:

String literals

June 2nd, 2008 makii Comments off

When coding in Java, I usually try to avoid string literals in the code, especiall when they reference other software components like templates, which are filled with values in arbitrary places throughout the code. This is what I found in a project which we’re going to insource soon:

#-[ user@host ]- ~/work/project/trunk
#-[0]-> find . -type f -name "*.java" -exec grep -r "\"salutation2\"" {} \; | wc -l
24
#-[ host@host ]- ~/work/project/trunk
#-[0]-> kill -9 $SOFTWARE_SERVICE_PROVIDER

No comment.

Categories: Coding, Java Tags: ,