VAT calculations
There's been an interesting discussion over at Smurf on Spreadsheets about the consequences of the UK government's temporary VAT rate reduction. For the benefit of non-UK readers, VAT is basically the british sales tax (it differs a little in implementation from a simple sales tax). It is currently 17.5%, but as a reaction to the financial crisis, it will be reduced to 15% from 1 December 2008 until 31 January 2010 inclusive. Whether this makes sense as a matter of economic policy is, of course, highly contentious. But this is a technical blog so I'll stick to its effect on spreadsheets :-)
Ironclad 0.7 released
Excellent news from my friend and colleague William -- he's released version 0.7 of our Ironclad project, a library that allows you to use the useful C extensions that have been written for CPython (Python's reference implementation) from within IronPython (Microsoft's version for .NET -- the version we use at Resolver Systems).
William has many caveats about how far there still is to go, but this new release is tantalisingly close to being ready for alpha testing. Huge chunks of numpy, the numerical Python library for doing difficult maths with large data sets, now work. This is fantastic stuff -- close enough that we're now seriously considering having it as an option (with an explicit note that it's not ready for production use) in the next release of Resolver One -- or at least the one after that.
[Update] The redoubtable Michael Foord, another friend and colleague, has written a much better and more detailed post about this release on the IronPython URLs blog.
Resolver One plug
A quick plug: there's only one day left to get Resolver One at the old price!
As of midnight (GMT) tomorrow, the discounted price for Resolver One 1.3 will come to an end, and the price will rise from $199 to $399. If you want to get your copy at the old price, you should buy now...
Affective robots
I wouldn't normally link to the Daily Mail (whose politics I dislike), but when it's my fiancee and her work being profiled...
Do one thing and do it well
It's all change at Resolver Systems.
Best. Video. Ever.
Cats and robots. What more does a meme need?
Book meme
Via the unofficial planet python, specifically Grig Gheorghiu:
- Grab the nearest book.
- Open it to page 56.
- Find the fifth sentence.
- Post the text of the sentence in your journal along with these instructions.
- Don't dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.
Here's mine, from A Vertical Empire by C. N. Hill (a history of the british space programme):
"All this wrangling cannot have helped the progress at Saunders Roe, or the prospect of trying to sell it to the German Air Force."
Meh. Not terribly exciting. I should have gone for the cool book :-)
Recovered!
In early 2007, I had a nasty DB issue on my web server and (I thought) lost the first year or so's worth of posts to gilesthomas.com -- including the history of my attempts to automate my backups using s3sync, which are inexplicably popular :-). Even worse, the subsequent restarting of post IDs meant that Google Reader stopped noticing updates to the website, leading to a number of readers thinking I'd gone quiet.
Today, I found an old backup, and I've managed to merge it in with the recent posts -- so hopefully all of these problems are now fixed. There's a risk that some RSS readers might mark a lot of old posts "unread", so apologies if it looked to you like I'd just made a few dozen new posts.
All should be well now.
[Update] I've checked Google Reader and it looks like posts are feeding through again. w00t!
I came for the article, I stayed for the comments
An OK but somewhat oversimplified post on short selling leads to a fascinating discussion on the topic from market practitioners. Well worth reading to the end, you'll wind up holding at least two irrefutable but mutually contradictory opinions about the issue...
Why use IronPython?
I just posted this on the Joel on Software discussion board, in answer to someone's question about using IronPython for their new company. Hopefully it will be of interest here.
We've been using IronPython for three years now with a lot of success. The great thing about it is that it allows you to benefit from Python's syntax while getting most of the advantages of .NET:
- All of the .NET libraries are available.
- UIs look nice. I've never seen a pure traditional Python application that looked good, no matter how advanced its functionality.
- We use a bunch of third-party components -- for example, Syncfusion's Essential Grid -- without any problems.
- Reasonably decent multithreading using the .NET libraries -- CPython, the normal Python implementation, has the problem of the Global Interpreter Lock, an implementation choice that makes multithreading dodgy at best.
- We can build our GUI in Visual Studio, and then generate C# classes for each dialog, and then subclass them from IronPython to add behaviour. (We never need to look at the generated code.)
- When things go wrong, the CLR debugger works well enough -- it's not perfect, but we've never lost a significant amount of time for want of anything better.
Of course, it's not perfect. Problems versus using C#:
- It's slower, especially in terms of startup time. They are fixing this, but it's a problem in the current release. This hasn't bitten us yet -- all of the non-startup-related performance issues we've had have been due to suboptimal algorithms rather than language speed. However, it you're writing something that's very performance-intensive, you may want to look elsewhere.
- No LINQ yet.
- If you're considering IP then you presumably already know this, but dynamic languages have no compile-time to perform sanity checks on your codebase, so problems can come up at runtime. We write all of our code test-first and so we aren't impacted by that. However, if you're not writing a solid amount of test code (and if you're not, you should :-) then you might want to use a statically-typed language.
Problems versus using CPython:
- No cross-platform. Linux or Mac support is one of our more frequently-requested enhancements, and it will be a lot of work to add. The reason for this is that many third-party .NET components -- for example, the Synfusion grid -- are not "pure" .NET; they drop into win32 for certain operations, I assume for performance reasons. This means that if you use them, your application won't run on non-Windows .NET platforms.
- No use of CPython's C extensions, like numpy (a numerical functions library). This has hit us pretty hard, so we're working on an open-source library to interface between C extensions and IronPython -- however, it's still a work in progress.
Hope this was of some help.