Monday, December 19, 2005

General Contractors

My Finetix colleague, Chris, just reminded me of the lunchtime conversation we had a few days ago with one of our good friends from RiskFocus. It got me thinking about an interesting model for development.

Think of what a General Contractor does when you do construction on a home. He gets (hopefully) the best-of-breed specialists to perform certain functions. He has one company to do the foundation, another to do the framing, another to do the electrical wiring, and another to do the sheet rock and spackling. Each of these tasks is done efficiently by the tradesman, and then it is understood that they move on to another construction job.

I am wondering if anyone has followed this model in developing systems. A "General Contractor" gets the best consultants around to perform a specific specialist task, something that they do best. The job lasts for one month, and then the contractor moves to a different development job. There would be a specialist to write the framework, a specialist to plug in the security and entitlements, a specialist to write the Web Services and fix any interoperability issues, a specialist to write the calculation engines, and then a GUI specialist to plug in a front end. Each member of this well-oiled team would be versed in the various interfaces and abstractions that the other members of the team use, so that the security specialist would come in, and know immediately where to hook in his stuff to various parts of the framework.

The members of the team would rotate amongst the various specialties so they do not end up getting tagged as a master in only a single discipline.

I have never seen this model being used, but I would be curious if anyone has ever tried it.

Your comments are welcome.


©2005 Marc Adler - All Rights Reserved

Sunday, November 27, 2005

The Wall Street Stack

It has been done plenty of times on Wall Street..... what I call the Wall Street Stack.

I just came off of a large project where I architected (yet another) one. I am current involved in one now. So are plenty of other people that I know in other companies.

Everyone's trading applications seems to be the same. Here are the standard elements:

1) The UI layer. The UI layer is usually designed around the Model-View-Controller pattern. It generally uses some third-party UI suite, such as Infragistics, Component One, or Syncfusion.

2) The UI usually contains an Outlook-style navigation bar on the left side. On the right is usually an MDI-ish area. There are multiple tabbed controls, each containing a grid control. The grid is a respresentation of the underlying business objects.

3) Filter criteria that is used to filter the results on the grid. The filter UI is usually placed on the same panel as the grid and consists of a number of comboboxes and edit fields that represent dates and static criteria. Filters can usually be translated into an SQL statement.... a dataview-like pattern can be applied to the underlying model to produce a filtered view.

4) User preferences and workspace persistence. Users can save the layout of the workspace, and load the layout when they log onto a new session from any machine.

5) Entitlements by role. Entitlements control various aspects of the UI, such as what menus, toolbar buttons, and controls are available to the user.

6) A Data layer that sits between the UI layer and the middle-tier. The data layer can contain a business facade, smart business objects (that are decorated with .NET attributes), a data access layer (contains a reference to the cache), and service providers that interface with a database and/or a middle-tier. The data layer can communicate with the middle-tier in both synchronous and asynchronous fashion.

7) Middle-tier (usually Java-based) that accesses the underlying database. Communication with the middle-tier is through some variant of XML (usually SOAP). (Sorry, .NET middle-tiers have not caught on yet in Wall Street ... I cite projects at Lehman, Wachovia, Citicorp, Goldman...)

8) Schemas shared between the client and middle-tier.

9) Subscription to asynchronous events, usually by some mechanism as a message bus (Tibco RV or EMS), or Smart Sockets (which is now owned by Tibco). When something happens to the underlying data, the middle-tier will broadcast an event to all of the clients that are hooked up to it. Each client has something that I call a "service agent", which is like a web service in reverse. The service agent receives the subscription event, and propogates the evented data up the chain.

10) A rich event manager. The event manager can be thought of as a mini-Tibco that resides totally within the client. The event manager should support wildcarding.

This stack is being implemented over and over again. The closest thing that I have seen to a corporate standard is the OCEAN framework that Goldman has.

There has to be a vendor who can commercialize this stack and sell it across the various financial companies. Anyone want to start a company with me????

As an aside, the Microsoft Composite Application Block bears close watching. However, it is only available for .NET 2.0. Many of the current .NET-based projects are still using 1.1.

©2005 Marc Adler - All Rights Reserved

The Wall Street Stack

It has been done plenty of times on Wall Street..... what I call the Wall Street Stack.

I just came off of a large project where I architected (yet another) one. I am current involved in one now. So are plenty of other people that I know in other companies.

Everyone's trading applications seems to be the same. Here are the standard elements:

1) The UI layer. The UI layer is usually designed around the Model-View-Controller pattern. It generally uses some third-party UI suite, such as Infragistics, Component One, or Syncfusion.

2) The UI usually contains an Outlook-style navigation bar on the left side. On the right is usually an MDI-ish area. There are multiple tabbed controls, each containing a grid control. The grid is a respresentation of the underlying business objects.

3) Filter criteria that is used to filter the results on the grid. The filter UI is usually placed on the same panel as the grid and consists of a number of comboboxes and edit fields that represent dates and static criteria. Filters can usually be translated into an SQL statement.... a dataview-like pattern can be applied to the underlying model to produce a filtered view.

4) User preferences and workspace persistence. Users can save the layout of the workspace, and load the layout when they log onto a new session from any machine.

5) Entitlements by role. Entitlements control various aspects of the UI, such as what menus, toolbar buttons, and controls are available to the user.

6) A Data layer that sits between the UI layer and the middle-tier. The data layer can contain a business facade, smart business objects (that are decorated with .NET attributes), a data access layer (contains a reference to the cache), and service providers that interface with a database and/or a middle-tier. The data layer can communicate with the middle-tier in both synchronous and asynchronous fashion.

7) Middle-tier (usually Java-based) that accesses the underlying database. Communication with the middle-tier is through some variant of XML (usually SOAP). (Sorry, .NET middle-tiers have not caught on yet in Wall Street ... I cite projects at Lehman, Wachovia, Citicorp, Goldman...)

8) Schemas shared between the client and middle-tier.

9) Subscription to asynchronous events, usually by some mechanism as a message bus (Tibco RV or EMS), or Smart Sockets (which is now owned by Tibco). When something happens to the underlying data, the middle-tier will broadcast an event to all of the clients that are hooked up to it. Each client has something that I call a "service agent", which is like a web service in reverse. The service agent receives the subscription event, and propogates the evented data up the chain.

10) A rich event manager. The event manager can be thought of as a mini-Tibco that resides totally within the client. The event manager should support wildcarding.

This stack is being implemented over and over again. The closest thing that I have seen to a corporate standard is the OCEAN framework that Goldman has.

There has to be a vendor who can commercialize this stack and sell it across the various financial companies. Anyone want to start a company with me????

As an aside, the Microsoft Composite Application Block bears close watching. However, it is only available for .NET 2.0. Many of the current .NET-based projects are still using 1.1.

©2005 Marc Adler - All Rights Reserved

Sunday, November 13, 2005

Full-Layer vs Bottom-Up Reachitecture and Scrum

Mission
To reengineer a credit derivates trading system using Scrum. (30-day sprints)

Findings
The existing application is somewhat monolithic, with direct database access from the UI layer, and business rules embedded in the UI.

Things to consider
1) The users want to see visible functionality after each sprint. We need to rearchitect, but our refactoring must not affect the current UI.
2) We need to implement new structured products after the 3rd sprint.

Question
Would you rearchitect from the bottom up and devote each sprint to deliver a fully-tested foundation layer, working your way up until you hit the UI layer? Or, would each sprint consist of implementing the entire stack with ever-increasing functionality?

I would love to hear your opinions.

©2005 Marc Adler - All Rights Reserved

Microsoft Discovers Scrum

http://developers.slashdot.org/developers/05/11/13/0545244.shtml?tid=109&tid=8

©2005 Marc Adler - All Rights Reserved

Friday, November 11, 2005

Bovine Memories

Posting about my Microsoft contract brought back some interesting memories.

When I started the Microsoft contract to write some GUI-based management tools for their new SQL Server, Microsoft and IBM were still putting the finishing touches on OS/2 Presentation Manager. So, I started writing the software using an internal Microsoft character windowing system called COW .. short for Character-Oriented Windows. This was the only user interface system that MS had for OS/2. (Remember, SQL Server started life as an OS/2 product.) COW was used most notably in OS/2's LAN Manager. I forgot what the API was like, but I still have all my COW libraries and docs on 5 1/4" floppies in a filing cabinet... I just can't bear to part with those disks!

I used to get these 100 lb boxes shipped to me every week from Microsoft. Tons of manuals for SQL Server, OS/2 PM, LAN Manager, OS/2, etc. Thankfully, these went into the trash can a few years ago.

My manager on that consulting contract, Bob Muglia, is now a bigwig at Microsoft. He just got another bump in rank in the most recent corporate restructing at MS.

My experience with giving MS a fixed-price contract taught me that time-and-materials is the only way to go! It didn't help that Microsoft was in a big pissing match at the time with Sybase.


©2005 Marc Adler - All Rights Reserved

Wednesday, November 09, 2005

Just Who Do You Think You Are! (Part 4)

The left episode left Marc writing Windows-based equity workstations for Goldman by day, and packing word processors and text editors at night. (Because the ME Text Editor was one of the first 50 applications written for OS/2, Marc got to go down and show the editor at the IBM OS/2 booth at 1988 Spring COMDEX... learning OS/2 turned out to be a good move, as we shall see in a minute.)

Two opportunities came along at the same time that Marc could not pass up. Marc's wife was a Cobol/CICS for Drexel Burnham at the time (remember Michael Milkin???). Somehow, her boss's boss found out that there was a developer who was writing Windows software for Goldman at the time, and developer who could be enticed away for a certain sum of money. In addition, a new development manager who had just been hired by Microsoft had been looking for an OS/2/PM developer who could help him write software for his new group. Marc could not refuse either, so he accepted both!!!

So, now it was writing a DOS and Windows trading system for Drexel, and helping Microsoft write software for a product that they had licensed from Sybase and renamed.... SQL Server. Marc also started writing articles for Microsoft Systems Journal, which was run by the great Tony Rizzo, bless his soul!!!

Believe it or not, the Drexel contract was the more interesting of the two by a longshot! The problem was that, whatever was written for the Windows version of the trading system had to be replicated on the DOS version as well.... the traders had laptops that could not run Windows very well.

So, Marc had an idea..... why not write the Windows-based trading system in C, using the Windows API. And, for the DOS version, use the same API. This involved reimplementing the Windows API in a DOS library. This led to another product.... the Magma Extensible Window and Event Library... or MEWEL for short.

Next chapter.... MEWEL kicks Magma Systems into high gear....

©2005 Marc Adler - All Rights Reserved

Gentile Pair Programming

http://samgentile.com/blog/archive/2005/11/08/32084.aspx

©2005 Marc Adler - All Rights Reserved

Let the Traders Have Some!

In the good old days, when I was designing trader workstations for Goldman and Drexel Burnham, we use to have close interaction with the traders themselves. We were in an Extreme Programming mode by necessity. Traders were giving us constanmt feedback, and we were able to stand over their shoulders while they traded so we could see how they interacted with the data.

Nowadays, the development staff is usually isolated from the traders... we get our specs from the Business Analysts. Not only that... you often get screen layouts from the BAs too! This often results in Windows apps that look like the old CICS screens... miles and miles of edit and comboboxes, modal interactions, etc. The traders don't mind... they are used to spending a good portion of their days in Excel, or they are used to the austere look of a Bloomberg terminal.

UI design has advanced over the past few years. Let the developers stand over a trader for a while. Let us see how they put a trade together. Let us try to make things easier for them.

©2005 Marc Adler - All Rights Reserved

Tuesday, November 08, 2005

Index and Bespoken Tranches

In the credit derivatives trading system we are building, we need to add support for various structured products. Two of the products are index and bespoken tranches. Other instruments that we will eventually have to implement are NTDs, CDOs, and CDO2.

We all know what a Credit Default Swap (CDS) is, right? It's a form of insurance that someone takes out on a company. One party (the buyer of the insurance) pays a periodic premium to a counterparty (seller of the insurance) for insurance on an underlying instrument (bond or other credit instrument). If there is a "credit event" on the underlying (ie: a company goes bust, misses an interest payment, or the CEO runs away to Bermuda with his secretary), the seller of the insurance must pay the buyer a certain sum of money, known as the "recovery rate". The CDS has some parameters, such as the seniority (who is first in line to get paid in case the company goes belly up), the tenor (how long the buyer has to pay the premiums for), and the notional (the value of the underlying instrument).

There are Indexes on CDS's. We can create our own index, such as the bonds of all of the American auto manufacturers. Or, we can use an exchange-manufactured index.

CDS indices are so popular that there is a CDS index on the Dow. The most widely-traded CDS index is the one for North American Investment Grade instruments. It accounts for over 80% of the CDX volume that is traded.

So, now we know what a CDS Index is. On to Tranches....

A Tranche is a certain level of risk. According to Investopedia:

Tranche is a term often used to describe a specific class of bonds within an offering wherein each tranche offers varying degrees of risk to the investor. For example, a CMO offering a partitioned MBS portfolio might have mortgages (tranches) that have one-year, two- year, five-year and 20-year maturities.

For the above-mentioned index, there are 5 tranches. The Equity tranche covers the first 3% of losses on the credit instruments. The Mezzanine tranche covers from 3-7%. The two Senior tranches cover 7-10% and 10-15% respectively. The Super Senior tranche covers the last 15-30% of losses.

Index Tranches are for active traders. A Bespoken Tranche is one that is put together on the wishes of an investor. It is usually created for long-term investment.



©2005 Marc Adler - All Rights Reserved

Monday, November 07, 2005

Wife + Chaos = Scrum

My wife has inherited this credit derivatives project which seems to be in a huge mess.

She is curious about Scrum, and wants to know if it will bring order to her chaos.

She and her colleagues at the Tier-1 powerhouse have been invited to the Finetix Scrum breakfast on Nov 30.

©2005 Marc Adler - All Rights Reserved

Sunday, November 06, 2005

Be Afraid ... Be Very Afraid

Looks like there are enough serious bugs in the first release of Visual Studio .NET 2005 to make me question recommending it for use (not that any of the tier-1 banks that we deal with are likely to jump with both feet into barely-released software).

Too bad .. we can really use generics on the current project, where we would like to implement strongly-typed caches of various trading instruments.

©2005 Marc Adler - All Rights Reserved

Tuesday, November 01, 2005

I Got the Clearcase/UCM Blues

Sitting here, suffering from ClearCase/UCM .... we have probably lost several hours of work because of UCM troubles.

Deglan warned me about UCM ..... and anything that makes you long for the sweet embrace of SourceSafe must be a new form of pain.

©2005 Marc Adler - All Rights Reserved

Sunday, October 30, 2005

Groupism vs Individualism

Debate on Groupism vs Individualism on the Yahoo Scrum Development Group.

©2005 Marc Adler - All Rights Reserved

Scrum Puzzlement

After the first week at my new client, I have a burning desire to learn more about the Scrum world and apply it to the client. I found out that Yahoo Groups has a group called 'scrumdevelopment', and I have aggregated their feeds to RSSBandit.

I admit that I am new to Scrum. As a development manager, I had always practiced an XP-style of development. Fast iterations, constant feedback, daily meetings, etc. But never the kind of communistic approach that Scrum encourages.

There are two things that I heard about Scrum before coming to Finetix.

1) Scrum is having a hard time being adopted by Wall Street companies.
2) Scrum is much better suited to new development than to enhancing an existing project.

There are two reasons why I see an issue with Scrum and Wall Street companies. First, the inability to commit a team to a Scrum without distractions from anyone outside the team. It is difficult to dislodge a team from attending to daily production problems. It is difficult to tell a revenue-producing trader to leave a team alone while they are in the midst of a sprint. It is hard to tell a team member to skip all of the various classes that they are signed up for.

The second reason is more important. In case you have not heard, Wall Street gives amazing bonuses. And, bonuses are usually ties to individual accomplishments. The tenure of a developer at a Wall Street company is a relatively short stay, and you had better believe that a developer wants to load a resume up with as much individualism as possible.

As far as the issue of using Scrum for existing projects, how do you dislodge a team from support issues on the existing product? How can you have them concentrate on new development when a trader is calling you, screaming about a feature that is broken?

One nice thing is that our manager is very enthusiastic about Scrum. It has worked nicely for a Finetix team in London, but they have been doing new development.

I have a lot to learn about Scrum. The people at Finetix will be amazingly useful in helping adapt to this new way of thinking. I am all ears! And, if it is successful with my project, then perhaps it can be used on my wife's project as well, where she has run into the exact scenario as I have with my new client.


©2005 Marc Adler - All Rights Reserved

Saturday, October 29, 2005

New Finetix Website

Finetix launched a new website. Lots of case studies on their.

We had a launch party at the Finetix NYC office. Steve brought out the good scotch.

Next time, boys, have some Guinness on hand! No more of this lite-beer crap! And have some Bailey's and Jameson's so we could indulge in a few Car Bombs.

(I was introduced to the Car Bomb in 2003 while playing at the annual Colorado MahlerFest, and the orchestra never sounded better!)

©2005 Marc Adler - All Rights Reserved

Just Who Do You Think You Are! (Part 3)

In our last episode, Marc was left without a company to market his famed Unix-based word processor, WPScribe. The company who was in charge of marketing it had blown the company's monetary resources on the excesses of the mid-80's.

Marc was a Unix hack at that time.... even though he wrote a word processor (and, also, a spreadsheet for Unix, WPSpread), he loved ready through line upon line of the Unix kernel.

A small but growing company based on Long Island came a callin' .. their name was Computer Associates. Fresh off their buyout of SuperCalc, they were trying to come up with a window and application management system for all of their future applications. You see, CA envisioned themselves at the time as a software development company, even though very few things (if any) were developed by them. Marc was interested in the notion of working on this project, but he would have to do it all on the IBM PC and MS-DOS! (By the way, the window manager project was cancelled on the day that Microsoft announced Windows...)

Marc took the challenge.... and in the process, ported the word processor over to DOS. However, there was no marketing organization set up to sell the beast. At the time, a movement called Shareware had just gotten underway, and had some momentum. So, Marc decided to release the word processor as a shareware product, selling it for $35 a copy and renaming it "New York Word" (to give it sort of an urban feel).

The word processor did very well in the shareware marketplace, selling several thousand copies. The initial price was $35, but Marc, who was now doing Windows consulting on Wall Street, tried to dissuade people from buying it by raising the price to $47. That only convinced people that the product was now $12 better than it was before.

The largest shareware distributor at the time was an organization called PC-SIG. They decided to embark on a big marketing campaign by highlighting several shareware program. The gist of the ads was to draw a characterture of the author of the program, write a little blurb, and show off the ad in magazines like PC Magazine and PC World. So, if you have old copies around, you can find a drawing of Marc with an elongated face and a lot more hair than he has now!

Now that Marc had a word processor, he needed a nice text editor to go along with it. So, New York Word was stripped down, several programmer-friendly features were added, and since Marc was into compilers, he put together a C-like macro language with which you could program the editor. The editor was called ME, short for Magma Editor. The unique thing about this editor was that it came with full source code, the first commercial text editor to be marketed that way. Advertisements in magazines like Dr. Dobbs Journal and Computer Languages followed, and the editor was launched to an unsuspecting public.

So now, Magma Systems was born. It consisted of Marc doing his Goldman Sachs gig during the day, and packing boxes full of editors and word processors at night. And, occasionally fielding the tech support call from Europe at 3AM in the morning... people who had no idea that the clocks were different when you crossed over the Atlantic.

The best is yet to come....


©2005 Marc Adler - All Rights Reserved

Friday, October 28, 2005

Flying to BTV

Supposed to be a beautiful day on Saturday. Taking the Cessena 172 up to Burlington, Vermont. I think it's too late in the year to experience the full Vermont foliage from the air, but nevertheless, a beautfil flight up the Hudson! Coming back at night, so I get to put in some required nighttime flying hours.

©2005 Marc Adler - All Rights Reserved

Tuesday, October 25, 2005

Dueling Household

My wife, the superstar Wharton grad who walks on water, started at a new client yesterday. She is managing a large team doing a rewrite of an existing credit derivatives system for a Tier-1 financial powerhouse who is not the same Tier-1 that I am currently consulting for.

Their technology is 100% Java.... not surprising, since all of the architecture has been done by a very Java-centric major consulting firm.

Dinner conversation should be very interesting for the next few months.....

©2005 Marc Adler - All Rights Reserved

Monday, October 24, 2005

A Scrumptous Meal

Finetix is holding a Breakfast Seminar on Scrum. This is from my colleague's blog:

In association with Ken Schwaber, we are holding a Breakfast Seminar on Nov 30th 2005 in mid town Manhattan, This 2-hour session is targeted to business and IT professionals working in Wall Street. The team of the breakfast is introduction to Scrum with examples and Case Studies of client projects and experiences. If you are interested in attending, please register by sending an email to: marketing@finetix.com

©2005 Marc Adler - All Rights Reserved

Sunday, October 23, 2005

New Project Starts

Monday, Oct 24 is the start of a new project. The reengineering of a credit derivatives workstation for a tier-one bank.

We will try to introduce Scrum to the New York office of this bank. I think that they will be receptive towards it, given the success of our counterparts in the London office.

.NET front-end, Java middle-tier, Sybase database. Web Services between the tiers.

This is the second major project that I will be involved with that involves a Java middle tier. At least .NET seems to be getting some major traction within financial services. I just hope that Microsoft doesn't mess things up too badly when they introduce Visual Studio .NET 2005. I have read internal reports from Microsoft employees that claim that VS 2005 is a dog.

Too bad that WCF has not been back-ported to .NET 1.1. We could probably use it on this project for some of the workflow components. We are probably going to look at NxBRE and JxBRE for a cross-platform rules engine.

Wish us luck.

©2005 Marc Adler - All Rights Reserved

Friday, October 21, 2005

My favorite new tool - RSS Aggregator

This is going to make it a lot easier to keep abreast of all of the blogs.....

RSS Bandit

Curse you, Finetix, for getting me into the blogsphere!!!

©2005 Marc Adler - All Rights Reserved

Smart Meat Escapes

Ward Cunningham has left Microsoft for the Open Source world. He is moving over to Eclipse.org. This is certainly going to be felt in Microsoft's Patterns and Practices group.

©2005 Marc Adler - All Rights Reserved

Wednesday, October 19, 2005

Pair Programming

There is a camp at Finetix that advocates the concept of Pair Programming. I am not convinced, having seen it fail miserably at a former client. However, with a number of people at Finetix having been successful at PP, I am willing to give it another try.

I wonder how much PP has taken hold at CapMarkets companies. Not much, I would think. If you have experience with PP, both positive and negative, I would love to hear it.

All I know is that my programming partner had better use spaces and an indentation level of 2 :-)

©2005 Marc Adler - All Rights Reserved

Pair Interviewing

We have started to do pair interviewing in my current job. One of the best interviews that I ever had was a CSFB, where I was in a room with 6 people for a 2 hour grilling. One person would ask a question, I would answer, then another person would pick up on that thread and delve deeper.

I am certainly an advocate of team interviews... for some reason, I think that it is less stressful for a candidate to be in a room with several people, realizing that he does not have to bounce from person to person, giving the same recap of his career over and over again. It also gives the interviewers a chance to feed off of eachother, and to see how the other person conducted interviewing at other jobs. Between my colleague and I, we have probably interviewed 500 .NET candidates over the past few years.

Interviewing hint of the day - If you are a .NET developer, please know what a ViewState is.

©2005 Marc Adler - All Rights Reserved

Just who do you think you are! (Part 2)

While doing my PHD studies at NYU, I was teaching computer science at Baruch College (part of the City University of New York system). I bumped into one of my old college buddies in the halls.... he was going for his MBA at Baruch. He told me that he and two friends were going to quit ValueLine and form their own company. He wanted to know if I might be interested in writing one of the first word processors for Unix.... I would write it, they would market it, and we would share the profits. Sounds good.

So, after about 7 months of slaving over my dining room table with my trusty Zenith CRT and 300 baud modem, I managed to crank out a respectable word processor.... Initially named WPScribe. We showed the product at the very first Unix Expo in New York in October of 1984.

The newly formed company did not last long. The profits that we made were consumed by the founders on the excesses of the 1980's. This left me without a marketing arm for my word processor (which, thankfully, I had the foresight to copyright in my name).

What would become of Marc and his word processor? Stay tuned for more...

Copyright ©2005 Marc Adler - All Rights Reserved

Tuesday, October 18, 2005

I am playing marimba on November 26

If you are around Maplewood, New Jersey on November 26....

I will be playing marimba on Mark Asch's Rondo for 13 Musicians on this concert:


November 26, 2005 at 8PM
Music Composed by Mark Asch and Joseph Trapanese


MACS is a new series that celebrates local composers. Each evening will present music composed (and in some cases performed) by 2 composers, who will be in attendance at the performance to discuss the pieces being peformed. MACS is funded in part through Meet the Composer’s Creative Connections Program.


©2005 Marc Adler - All Rights Reserved

Just who do you think you are!

My trip through the world of IT has been a long and strange one. Some of you have wondered about the man behind the curtain. I will attempt to give some of the bullet points of my 20 year career in IT, a tiny bit at a time.

Here we go.. first installment....

1) Education
PS 117 - Briarwood, Queens
JHS 217 - Briarwood, Queens
Stuyvesant High School - NYC
(BS) State Univ of New York at Albany - double major in CompSci and Music
(MS) University of Arizona - Tucson, Az
(post grad work) - Courant Institute of Mathematics, New York University

The post-grad work was actually an attempt to get my doctorate in Computer Science, but NYU turned out to be a terribly wrong choice of schools. I was saddled with an advisor who had not published in 20 years. I saw that most of the PHD students had been there for 5 years or more, and I did not want to be free labor for a non-publishing professor. So, I bolted...

...Part 2 next

Friday, October 14, 2005

Thoughts on the Interview Process

I have probably interviewed about 200 people alone in the past year for positions.

Since I usually join a company at a technical manager/team lead level, and hence, I am in a position to hire people for various positions within my teams, here are my thoughts about how I envision the ideal interviewing process:

1) Make sure that candidates are adequately screened. I spent the other day interviewing a candidate who could not write an event handler for me. Candidates should be given a test before speaking to a technical resource within my company.

a) Regarding tests: Multiple-choice questions that deal with nuances of syntax are usually a poor indicator of a candidate's analytical and interpersonal skills. That being said, it takes time to grade each test. A multiple choice test is easy for our recruiters to grade, whereas giving a test with more subjective questions can consume time for our technical resources to grade.

We can certainly use a combination of the two.

Each of the senior .NET resources in a company should decide on the 10 questions that we would most like to see a candidate answer. Every candidate knows how to write a singleton by now. We need to test their experience with real-world coding situations.

2) Once a person has performed adequately on the test, he should be given a going-over by the HR staff for interpersonal skills. If I have a person on my team, I want that person to be articulate in a meeting... if a person cannot be understood easily, then he will be tuned out by other people in the meeting. I don't want any shrinking violets on my team. I want someone who can defend his ideas in front of a committee. I would like a person who will tell me to bugger off if I am completely wrong in my architecture. I would also like to be able to take a person out for a martini after work to unwind!

3) After passing through this step, then they should be passed on to a junior .NET technical resource for a perfunctory interview. This would be a test of the candidate's knowledge of .NET and C# syntax and concepts. I want all questions to reflect real-world experience.

4) After passing through the junior resource, the candidate should then be given to the senior .NET resource who is likely to manage the candidate on his first project. When I was hiring .NET resources in my previous job, I mandated that the candidate should be checked out by two .NET resources before getting to me.

5) The candidate should then be given to one of the senior business managers for a final fitness check.

We are all exhausted after a day of work, and none of us are in the mood to interview. We get easily irritated when we interview candidates who have no business being there. We get easily irritated if we have to work hard to understand what the candidate is saying.

What I want to ensure is that any company that I work for has the highest caliber to people in its employ.

©2005 Marc Adler - All Rights Reserved

Tuesday, October 11, 2005

The Night of the Living Config Files

My colleague Pinakin blogged today about config file hell in his project.

This brought a chuckle to me. We went through precisely the same thing at the last project. For one part of our system, we were forced to use a framework that was built by an outside consulting firm that had done some work for my client, a big financial powerhouse. This framework used the service locator paradigm to manage services. Each service had its own XML-based config file, complete with the absolute paths to all of the various DLLs encoded. This outside company also had the nasty habit of changing the namespaces of the various assemblies with each major release of the framework. Needless to say, every major release brought some headaches on our side as we scrambled to find all of the various assemblies that were no longer loading.

We saw some mistakes in the implementation of this outside framework. If you are writing systems that use the service locator pattern, there are some things that you need to be aware of.

1) Sequencing. Certain services must be loaded before others if there are dependencies between services. For example, if you have a logging service, and this logging service uses an exception-handling service if the log file cannot be created, then the exception handling service must be loaded in prior. A mistake that this framework made was to read all of the service agent configuration info into a hashtable and then iterate through the hashtable to instantiate each service. Well, hashtables are iterated in a quasi-random fashion, so you can certainly run into sequencing issues as you instantiate each service.

2) Default behavior. If a "non-crucial" service cannot be loaded, do you abort the program? For example, if the logging service cannot be loaded, just turn off logging (unless the business requirements are such that logging must be always functional due to auditing rules). Do something reasonable if as service cannot be loaded. Don't just come back with a cryptic error message. I have spent more time tracing Assembly.Load() errors than I care to imagine.

Finally ... Bought a Laptop

Finally ordered by laptop. I was originally going for the Asus Z71V, but got talked into the Z70VA. It's a half-pound lighter that the Z71V, and has that fantastic-looking chasis. Here is what the configuration looks like:

Star (Asus) Z70VA
System + Carrying Case + AC Adapter
Z70Va CARBON FIBER COMPOSITE CHASSIS W/ 15.4in. WSXGA+ / 128MB ATI X700
Optical Drive Z70VA DVD/RW
Intel Pentium M 760 Processor 2.00 GHz W/ 2MB CACHE/ 533fsb
2GB DDR2 533MHz SO-DIMM
Mobile 100G 5400rpm hard drive
XP PRO
Intel 2915ABG Wireless Mini PCI NIC

This model got some great reviews on www.notebookreview.com.



Monday, October 10, 2005

Koders.Com

Interesting site... searches through .25 TB of source code (in a variety of languages).

http://www.koders.com/

Sunday, October 09, 2005

Laptop Redux - Asus

The Dell D810 that I am looking at wil cost me $2674, including $150 for sales tax and $24 for "handling".

A former colleage has been using and recommending laptops built by a company called Asus. These are strinkingly beautiful notebooks, and according to my friend, are fairly rugged road warriors.

Asus are only sold through resellers. I priced out a system that is similar to the Dell D810, but with an upgrade to an Intel 760 M processor (the D810 that I chose comes with a 750). It was only $1950. Shipping is $14, and they do not charge tax.

I think I will get the Asus Z71V. It seems to be a popular model, and comes recommended on www.notebookreview.com.

Friday, October 07, 2005

NHibernate

I am reading docs on NHibernate, an O/R mapper for .NET (it comes from Hibernate in the Java world). This is one of many O/R mappers available for .NET. The main impetus for learning NHibernate is that Hibernate seems to be the defacto standard on the other side of the fence. Since Finetix is a hybrid .NET/Java shop, I figure that I will come up against Hibernate eventually on our projects in the financial space.

I have been using a home-grown O/R layer for the past 2 years on all of my .NET projects. It uses custom attributes (as opposed to NHibernate's use of XML files) on classes and properties in order to generate calls for a back-end data provider. The providers can be SQL Server, Oracle, ODBC, OLE DB, and Tibco/JMS messaging.

The last project that I architected used an O/R mapper called Castor on WebLogic 8.1. It was recommended that I use Castor, as some people had trouble getting JaxB to work with WebLogic. And, I am happy to say that Castor worked out just fine on this project.

(What happened to Microsoft's ObjectSpaces?)

Mini-Microsoft

I must have my head up my rectum to have not noticed the Mini-Microsoft blog that is causing such a sensation. My Finetix colleague, Matt, keeps me on my toes with all of the great sites that he mentions in his blog. I had no idea of all of the negative feelings about MS from within its ranks.

For the record, I did consulting for Microsoft back in the late 1980's and early 90's, even being a contributing editor for their MSJ magazine for a while. Even back then, Microsoft was fairly cheap with the buck. They liked to work off of fixed-price contracts, and tried to get me to put in more functionality under the radar screen (ie: more features for no money). However, it was great to be involved with Microsoft during the salad days.

However, writing for MSJ was a different story. Great rates for articles. Plus, Tony Rizzo and Eric Maffei used to treat the NYC-based writers like royalty. I even got to have dinner with Bill Gates (more on that in a later posting). What a great crew of people! Charles Petzold, Ross Greenberg, and Greg Comeau. Miss you guys!

Wednesday, October 05, 2005

Free FIX Message Engine for .NET

Anyone doing FIX messaging? Need a free FIX engine for .NET? Need source? Then look at QuickFix.

(Looks like the boys from ThoughtWorks are involved to some degree with QuickFix.)

If you are involved in FIX or building ECNs, you may be interested in the free FIX Journal. All of the back issues are archives online in PDF format.

Tuesday, October 04, 2005

SQL Server 2005 Service Broker

Yesterday, I watched an MSDN webcast on the new Service Broker in SQL Server 2005. Sounds like an interesting feature which could possibly take some business away from Tibco for small to medium sized apps. Here is how Microsoft describes it:

With Service Broker, a feature in Microsoft SQL Server 2005, internal or external processes can send and receive guaranteed, asynchronous messages by using extensions to Transact-SQL Data Manipulation Language (DML). Messages can be sent to a queue in the same database as the sender, to another database in the same SQL Server instance, or to another SQL Server instance either on the same server or on a remote server.




Previously, in order to get notifications from SQL Server, you had to rely on something like SQL Notification Services. I am glad to see that async messaging has been promoted to a first class citizen within SQL Server.

Where can you use something like the Service Broker?

Assume that, in an organization, your Windows Smart Client app needs to be informed when certain reference data has changed in a legacy database. For example, let's say that your desktop app needs to be informed when PeopleSoft adds a new employee to the HR database. If the backend database is SQL Server 2005, then you can use the Service Broker to push async messages out to a message broker on the server. The server can then transform the message and broadcast it to interested clients.

This kind of architecture is ideal for applications that rely on server-push technology and smart caching on each client. With this kind of system, each client maintains its own cache of reference data and only gets notified of deltas to the reference data.

Dell Laptop Reduction

About two weeks ago, I was shopping around for a laptop that I could use for development. I settled on the powerhouse Dell Latitude D810. With all of the options that I wanted for the system, the price tag came out to a whopping $2680.

I left the item in my cart for a few weeks, hoping for a discount to appear on the system.

Lo and behold... when I checked my cart this morning, Dell gave me a $180 discount off of my laptop.

Which got me to thinking....

If you price out a system from Dell and leave it in your shopping cart for a while, will Dell automatically discount it after a few weeks in order to motivate you to buy? Or, is it just coincidence that they gave me a $180 discount to round down my final cost to an even $2500?

Aeroflex Airport


One of the prettiest airports in the world. I flew in there the other day and practiced some crosswind landings. If you come up short, you end up in one lake... too long, and you're in the other!

New Scams With Body Shops

Almost all of the independent consultants that I know go through brokers (aka "body shops") for their work. These places find you work, and take anywhere from 10% to 50% of your daily rate for their commission. In the times that I have contracted out through brokers, I have never had a problem getting paid. The best of the shops took 12% off the top for their commission, and they paid exactly on time.

From what I have been hearing, there is an alarming trend amongst bodyshops now, especially with the brokers that concentrate on workers with H1B visas. The trend is to not pay the final bill that the consultants submit.

Many H1B consultants do not have the facilities to persue these consulting firms. If the amount owed is undr $5000, then they can go to Small Claims Court, but the wait is at least several months. If the amount is large, then a lawyer will have to persue the claim in Civil Court, and usually the amount that the lawyer receives out of the deal (a 30% cut) will not justify the attorney's time.

My brother-in-law is a lawyer in New Jersey, and he told me that the frequency is increasing in the number of these type of cases. He advises one thing - do not sign an arbitration clause in your contract. It will cost you upwards of $10,000 to bring a matter before an arbitrator, and there is no provision in the law to recoup the money spent on arbitration. So, it is likely that you might spend more money on the arbitration process that the monies that you recoup from the consulting firm.

Another thing to be aware of --- be careful of brokers who only call you from cell phones. Make sure that the broker has an actual, physical office that you can visit. My guess is that some brokers are using commission-based freelancers to pour over resumes on Dice. Several times per day, I get a call from some lady named Smitha or Geeta who is on a cellphone and asking me if I want to work in Cleveland for $35 an hour. You can be sure that these people will take at least $5 an hour from your rate.

I am a full-time employee of my consulting firm. In these times, it feels safer that way!

Monday, October 03, 2005

ScrumWorks

Finetix is a major player in the Scrum community. Scrum is a methodology of software development that has its roots in Agile/XP. One thing that we are trying to do is promote the use of Scrum within the Wall Street community. It will be an uphill climb, given the extreme politcal nature of most financial shops.

My new team is going to use Scrum in order to develop the new system. Finetix colleague Matt posted about a tool called ScrumWorks that is used for tracking Scrum-based development.

http://danube.com/scrumworks/

They have a free evaluation license for 60 days, and you can request a free license after the 60 day period.

(Standard disclaimers apply .. no, I am not a shill for this company, merely an interested evaluator)

New Jersey Code Camp

The very first New Jersey Code Camp is taking place on October 15, 2005 at the Microsoft and IBM Consulting offices in Edison. Complete and total geek-out for the entire day!

http://www.njcodecamp.org/

See you there?

Sunday, October 02, 2005

Best WinForms Control Suite?

I have been dying to use the new Microsoft Composite Application Block (CAB) in my new architecture. Unfortunately, it's only geared for .NET 2.0.

While browsing the CAB forums, I came upon this thread:

http://www.gotdotnet.com/codegallery/messageboard/thread.aspx?id=22f72167-af95-44ce-a6ca-f2eafbf2653c&mbid=c09776ca-f94c-4c83-a80c-75d381cabdd6&threadid=c8c5f320-5d5f-4906-b727-afce8e724e62

It seems that the DevExpress suite of controls has a pretty enthusiatic following. I have only used Infragistics and Syncfusion in applications that I have architected. Looks like I will have to check out DevExpress as well.

Friday, September 30, 2005

Standard Settlement Instructions (SSI)

Looks like I might need a refresher on Standard Settlement Instructions (SSI). I haven't worked with these beasts since I was doing FXNet for Citicorp. Here is a brief document:

http://www.isda.org/c_and_a/pdf/SSI-Best-Practice-Statement.pdf

ISDA is the International Swaps and Derivatives Association, and is the organization that governs the trading of credit derivatives. You'll be sure to hear more about ISDA in future installments.

DTCC's Deriv/Serv for CDS Matching

http://derivserv.dtcc.com/

DTCC Deriv/SERV, a new matching service that is rapidly gaining industry acceptance as the preferred solution in derivatives post-trade processing, brings automation,standardization and greater certainty to this market forthe first time. Using existing mainframe-to-mainframeconnections the Depository Trust & Clearing Corporation has with firms, DTCC Deriv/SERV’s process is conducted in real-time, highly automated, and identifies errors for correction immediately.

Article on Credit Derivatives

My, how the market for Credit Derivatives has grown!

http://www.wallstreetandtech.com/showArticle.jhtml?articleID=169500449

For those of you who are new to credit derivative swaps:

CDSs are bilateral financial contracts in which one counterparty, the protection buyer, pays a periodic fee, typically expressed as a percentage of the notional amount, in return for a contingent payment by the protection seller following a credit event of a reference entity, usually a corporation. Payment is made when an issuer's credit event, such as a bankruptcy, occurs.

It sounds like an insurance policy, and in many ways, it is. Except, insurance policies cannot be traded, either individually or in baskets. Many financial institutions are using CDS's to manage risk.

There was an article that I read in the New York Times not long ago that proclaimed risk managers to be the new rock stars of Wall Street. More boring than Gordon Gecko, but definitely important post-2001.

(Credit Derivatives Technology is one of the specialities of my new employer)

Microsoft Certifications

Even though our company has some fantastic developers and architects, we are a bit light in the Microsoft Certification department. Many of the great technical people that I have run into on Wall Street do not have Microsoft Certifications, mainly because..... well, they are too busy at work to persue it. As a long time consultant, I have never been asked by a potential client if I was certified.

Nevertheless, certification does seem to have some benefits, mainly in terms of marketing your organization. Microsoft likes to see an organization with a certain percentage of certified employees before they will allocate you "partner" status.

Has anybody found certification to be worthwhile? Does the time spent in preparing for the exams resulted in any substantial gains for you or your organization?

Thursday, September 29, 2005

Tibco EMS and Financial Companies

The last project that I headed up used Tibco EMS as the messaing system. The major financial company that I did this project for has an enterprise license for EMS, and is deploying it throughout the entire organization.

Tibco has created .NET assemblies for EMS. Since Tibco EMS implements the Java Messaging Service (JMS) spec, we have have a slew of .NET developers who are going to be exposed to JMS. Windows programmers who have be confined to using MSMQ in the past are now going to have to deal with a slightly different paradigm.

Before diving headfirst into JMS, it is best to get familiar with the Best Practices and AniPatterns associated with JMS. To help you along, here are some sites:

http://www.precisejava.com/javaperf/j2ee/JMS.htm

(Chapter 6, Bitter Messages, of Tate's Bitter Java AntiPatterns book)
http://www.manning-source.com/books/tate2/tate2_ch06.pdf

Doing request/response is a bit tricky. Read about it in this article:
http://java.sys-con.com/read/49089.htm

Wednesday, September 28, 2005

Email notifications from OWA

When we are at a client's site, we need to use Outlook for Web Access (OWA) as the interface to the Finetix Exchange server. I am totally used to Yahoo Messenger's Taskbar-based notification mechanism for Yahoo Mail. Yesterday, I searched the web in hopes of finding a similar kind of Taskbar-based notifier for Exchange mail.

I finally found one. If you are tired of constantly checking your OWA mailbox for new email, then download this little ditty:

http://www.asaris-matrix.com/sweber/playground/Downloads/NewMail.zip

This will monitor your Exchange inbox and display a notification icon in the Windows Taskbar when new mail arrives.

Interviewing Mode

Four people are coming in today to interview for a position on my team. The requirements are heavy C#/WinForms experience, architectural skills, and a small understanding of finance. In my old job, I probably interviewed at least 100 people for 2 similar positions, and we could not get a decent hit. The client ended up hiring a .NET superstar away from one of the Wall Street brokerage houses.

One of the main problems is that recruiters will doctor a candidate's resume so that it appears that they have WinForms experience. So, a typical line on a candidate's resume will read something like this:

I did an entire web-based .NET application using C# and WinForms.

With the advent of websites like www.techinterviews.com, everyone knows the standard .NET questions. I would like to hear what your favorite .NET, C#, and architecture questions are. Feel free to post a comment.

Tuesday, September 27, 2005


First Days at Finetix

I have just left my job as the head of the .NET practice at an 1100-person consulting company, and I have just joined a boutique, high-end consultancy named Finetix LLC. Finetix specializes in financial workstations, and seems to have a very good reputation amongst various Wall Street companies. I was a bix anxious in joining them, so I did my due dilligence, and wrote to every Finetix employee that I could bring up on Google. Amazingly, not one of the former employees who wrote back had one negative thing to say about Finetix. Not one!

My first project is to work on rearchitecting a credit derivatives system for a major financial player. There is an employee-based team on the ground already at this client, and they have done some up front architecture. I hope I am not too late!

They are taking a huge legacy Excel application and making it the typical three-tier application. The app will have a .NET front end (Infragistics-based), and will use Web Services to communicate to the Java server. I sincerely hope that, in the very near future, financial companies throw both feet into the water and do a complete end-to-end .NET solution. Microsoft needs to do a better job of convincing legacy Wall Street players that .NET servers offer comparable performance and (ducking and hiding) security to Unix-based servers.

The team has chosen Liquid XML to map their schemas into PONOs and POJOs. (Plain Old NET/Java Objects). I went to the Liquid site, and unfortunately, they don't have any eval copies. If I decide to take my standard MVC-based approach, I wonder if I can still use datasets for the underlying data representation for the data models., and use common XSDs between ther Microsoft MSDatasetGenerator and Liquid's PONO generator.

I am also hoping to get some exposure to the Spring.NET framework, which my counterparts in the London office are using. Today, I am playing around with Spring.NET. I haven't experienced the nirvana of Aspect-Oriented Programming yet, but I am sure that my colleague Deglan will show me the way. Some of the concepts in Spring are remarkably similar to the last project that I architected, so the concepts are certainly not foreign.


Musical Note : Meshuggah at the Starland Ballroom in New Jersey on October 11th.