2008-10-18
I've tired of the ugly and long URLs for this site, so I rewrote it - again - to use shorter clean URLs. Yes changing URLs is a pain, it breaks bookmarks, search indices, etc. However I've made the old URLs backwards compatible with the new ones, issuing 301 redirects if one attempts to access the old version. The ancient 404 handler is still in place to handle the really legacy flat-HTML site pages that once lived here. Hopefully this with smooth most of the broken-link hell this kind of change usually causes end-users.
The RSS feeds are probably broken though - sorry about that, please re-subscribe.
This URL change was motivated by another change, a new calculator engine being developed. The internal URL management logic through-out the site was just getting too complicated, so I threw everything out and started again.
The calculator engine is completely new. While it doesn't look a whole lot different it is vastly easier to maintain and write new calculators for. Calculators are now defined by a single class which just has to implement an interface with a few functions, most of which are just sourcing metadata about the calculator, and one which does the actual maths.
The big killer feature from an end-user point of view is support for SI prefixes in the input - no more scientific notation hell! For example you can enter 3.3 pico-Farad as "3p3" or "3.3p", similarly 5 MHz as "5M". The input parsing and validation logic is a *huge* step forward from the largely ad-hoc previous calculators. I am going to support positive and negative infinity as valid inputs where it makes sense. Input wise, they can be written as "inf" and "-inf". They should behave consistently across different calculators as I port over more and write new ones, but that means extending the maths in places to support the limiting cases.
I've also made it much easier for myself to implement complex numbers as an input primitive should the need arise.
The old calculators can't be automatically converted into the new scheme, so I'll need to convert them manually. There is over 7000 lines of code in the legacy calculator code base - conversion will take time! The legacy ones will be preserved until their functionality is moved into a modern one, at which point a redirect will be put in place to take the user to the newer implementation.
4 comments.