Thursday, May 18, 2006

Peer-to-peer financing: Back to the future?

An interesting article on InformationWeek talking about a new (or is it old?) way of loaning money:

Peer-to-peer finance sounds like a concept born to be ridiculed. Finance demands oversight and networking through peers rather than a central authority, suggests a fundamental rejection of institutional scrutiny.

Call it a cautious rebellion. In February, Prosper opened what it calls "America's first people-to-people lending marketplace." It's a site that helps users borrow and lend money among themselves without the involvement of banks. Though the company says it hasn't been around long enough to disclose its user base, it claims to host over 1,000 active loan listings and 800 active groups.

"The tools and technology that are in place now for the first time allow for this sort of direct person-to-person marketplace," says Larsen.

This goes back to the way things used to be, Larsen explains, when one neighbor supported the business of another neighbor. It's a model that, he believes, has a lot to recommend it. "There was a really strong sense of obligation and accountability and reputation within a small community," he says, "which actually made repayment of debts more reliable and less risky."

The idea advanced by these companies is that by eliminating the middleman--banks--individual lenders, or groups of them, earn a higher rate of interest than conservative investment options such as certificates of deposit, and borrowers get a lower rate of interest than would typically be available from traditional financial institutions.

This could be an option for those people that don't like the current market trend of banks securitizing their loans and selling them on to investors, thereby disconnecting the borrower from the orginal community based lender. It probably won't be a big market, but it is always good to have options.

Tuesday, May 16, 2006

Realtime Java - Nearly there!

An interesting article on Sun's recent implementation of JSR-1 Java Realtime System (JRS) (finally!).

One of the interview questions I like to ask of anybody who has any sort of real-time systems experience on their resume is simply: How do you define real-time? I like to define something like: operations that must run within a bounded timeframe - not sooner, not later.

In Java the garbage collector behaviour (or the memory allocation pattern of the application, depending on your point of view), where major collections can freeze the application for seconds at a time, is the biggest inhibitor to real-time behaviour.

JRS provides the following real-time infrastructure:

  • Direct Memory Access. Does provide some bounds controls over raw C pointers.
  • Async communications. Including for events from outside the JVM.
  • Memory Management. Including the new immortal memory space (lasts for as long as the application, not subject to garbage collection).
  • Real-time threads. Priority levels that are strictly enforced.

While more helpful infra is now there, one trick I've always used to make applications more real-time (in both Java and C++) is to allocate as much of the application's total memory needs as possible when the application firsts starts up. This involves pre-loading any reference data and trying to "recycle" objects instead of allowing them to be garbage collected. A good library that is built along these thoughts is the excellent Javaloution. JRS would be even better if it incorporated some of these memory management ideas.

Thursday, May 11, 2006

Hardware cheaper than C++ programmers

I had an interesting discussion with a potential client yesterday. Many financial companies program their analytics libraries in C++, either for legacy reasons or because you can do some interesting optimizations using pointers and other C/C++ constructs. This client's infrastructure was written entirely in Java and deployed on a grid. He told me that the JVM hotspot optimizations were pretty good and that simply adding another blade to the grid was cheaper than hiring a C++ programmer to squeeze out that extra bit of performance.