Monday, January 25, 2010

Maxim 5: No queue should be allowed to grow without bound

All queues in your system must have a finite bound on their length, otherwise you risk consuming all memory available to your process and crashing. It's not just queues that should not be allowed to grow without bound, but also all resources including strings, should have an upper bound. Setting the upper bound is sometimes a delicate business, but set it must be.

Maxim 4: Webservice client should keep a query log

Webservice client libraries should maintain a log of every service call they made, the time it took to make the call, the success code of the call, the number of retries, backoff, the error code if there was one.

It goes then without saying that Webservice server library should also keep a service log of all the calls they recieved, error codes, time to service etc.

Maxim 3: The default build should build your library and nothing else

You default build target should build the minimal project artifact, e.g. jar, .deb, .so. It should not run fortify, findbugs, unit tests etc. Leave a target called all for that. Let the continuous build system build those targets, don't bother humans with them.

Saturday, January 23, 2010

Maxim 2: Encrypt sequence numbers

Don't hand out sequence numbers to your clients. Instead hand out encrypted versions of the sequence numbers if you must give them a sequence number.

Friday, January 22, 2010

Maxim 1: Zero pad numbers in strings

If you store a number in a file name or any string really, then zero pad it. Why? Because some system will want to sort it alphabetically and well if you don't zero pad it then your numbers will not be in order.