It was a long time ago that I ever did something with the Elf proef.
It is the algorithm that is used to calculate the check digit for Dutch bank account numbers (bankrekeningnummers) and a variation for BSNs (Social Security Numbers).
I needed it (or more exactly: a variation of it) in order to support anonymization of customer data for the DTA/OTA portions of a DTAP/OTAP environment.
So, I started reading on the Elf proef, and getting some sample data to setup some unit tests.
The 9 digit bank account number generator at Testnummers.nl generates bank account numbers – if the end digit is zero – are mostly wrong.
To start with the latter, they get it wrong because the check digit is modulo 11 (like the ISBN 10 check digit), but only numeric digits are valid. Their bank.js algorithm module tries to accommodate for that in the wrong way.
Their generated sample 290594880 is wrong because the check digit should be 10, and 10 is not a digit. Their generated number 936977590 is OK as the check digit should be zero (0) which it is.
More on their fault a bit further on. First lets concentrate on getting proper test data, and the right algorithm.
Bill Karwin (twitter, new blog, old blog, Amazon) is famous for much work in the SQL database community, including InterBase/Firebird, mySQL, Oracle and many more.
Some very interesting tips from game development that apply juts as well to general software development.
On code health:
Now I always try to dig right down to the root cause of a bug, even if a simple, and seemingly safe, patch is available. I want my code to be healthy. If you go to the doctor and tell him “it hurts when I do this,” then you expect him to find out why it hurts, and to fix that.
Though tools like SourceMonitor can help you track your code health, the best tool is between your ears.
Mozilla Labs engineer and TC39 representative Dave Herman joined us at YUIConf 2011 to give this keynote talk on the future of JavaScript, covering many of the new features currently under consideration for ES6, the next edition of the ECMAScript standard.
Many wonderful new features. Now it just need some great tooling.
[Wayback] Paweł Głowacki recently released two very interesting blog articles, together with 5 (five!) demonstration videos on how to get your mobile device to talk to a DataSnap backend using [Wayback] jQueryMobile so you get a very native look & feel UI on your mobile device without putting a lot of effort in writing a native device app.
Somehow, I have lost loads of time because many of the hits on Google show up high in the results, but do not actually help that much.
So I decided to put up a bunch of links to pages that I think are relevant, or helped me much.
This list is not definitive: please comment when you have links to better information!
Note: this list is current at the instant of the latest edit timestamp: tools might have improved (or disappeared) since then.
Opnions are mine; if you do not agree: please convince me why.
Tools
Regular Expression builder applications
Expresso – free .NET WinForms application to visually build and test regular expressions (free registraion required after 60 days of trial usage)
RegexWorkbench – free .NET WinForms application to build and test regular expressions (much more rudimentary than Expresso)
Regular Expression test applications
RegexLib tester – free on-line regular expresion tester where you can choose the client platform (.NET/ClientSide/SilverLight)
The Regulator – free .NET WinForms application to test regular expressions with built in support for RegexLib.com
The Regex Coach – free LISP Windows application to test regular expressions and tries to explain them in plain english
RegExPal – free on-line JavaScript regular expression tester (tests the client side only)
ReWork – free on-line JavaScript tester with samples in JavaScript/PHP/Python/Ruby
RegexDesigner.NET – free .NET WinForms application to test regular expressions and generate C#/VB.NET code from them (ot really a “Designer” after all and much less sophisticated than The Regulator)
RegEx for a minimum number of characters usually contain \w, which is not any character!
Better use ^(.{6,})$ than ^(\w{6,})$ if you want a minimum length of 6 characters.