Python Programming, news on the Voidspace Python Projects and all things techie.
Resolverforge: Download Modules on Demand for IronPython and Resolver One
I've implemented a client-side module that allows you to specify what modules your code 'requires'. After user-confirmation, a required module that isn't available will be downloaded and on the import path. This is intended for use with Resolver One, but should work with any IronPython code where Windows Forms is available (just the message box is used currently).
Modules are downloaded from whichever repository you specify, which defaults to www.resolverhacks.net/resolverforge.
The code to use Resolverforge looks like:
You can specify your own repository, so that you can make modules available on the internet or an intranet instead of having to keep dependencies with your spreadsheets. This is an early implementation (which works of course!). Resolverforge downloads modules that are individual Python files and doesn't support versioning. It will also one day gain a website counterpart that will allow users to create projects and make them available for download. For the moment you will have to make do with the modules I've put up, which are mainly aimed at Resolver One.
Resolver Hacks Updates
Resolver One is a great program, but it can be hard to explain to people why it is radically different from existing spreadsheets. Giles Thomas recently presented Resolver One at the Lang.NET 2008 conference, and we got some great feedback as a result. They are summarised in Resolver Systems News. My favourite is this one from Laurence A. Lee. It starts "FINALLY! Someone from a Company that truly "gets it"!! YES, YES, YESSSS", and continues:
we were using Excel Spreadsheets to mock up all sorts of Business Logic for the Financial Sector, and we noticed a huge gap in our development process. It took a week to mock up all that business logic in Excel, and then it took 6 MONTHS for a software development team to take that spreadsheet, play with it for a while, and try to implement that Business Logic Module in hand-written code.
This is exactly the space that Resolver One fills.
Anyway, I added three new pages to Resolver Hacks. The first two are snippets:
- Spreadsheet Module Directory - Resolver One obeys the IRONPYTHONPATH environment variable, which can be very useful.
- The Main Module - a hack that gives you access to the spreadsheet objects from inside module code.
The third article is so special it deserves its own blog entry...
ALT.NET UK Unconference
Two weeks ago I attended a.NET conference in London. The conference was organised by "the community", and was an an open spaces conference. This means that there was no preset agenda and the point of the conference was to discuss whatever subjects were the closest to the hearts of those attending.
The .NET community is in an interesting position. The community has traditionally been quiet, tending to follow wherever Microsoft leads. This has changed in recent years (even in the two years that I have been using .NET), and at the forefront of this has been the ALT.NET movement. ALT.NET is a movement amongst .NET developers who want to push beyond 'conventional development' and are interested in 'progressing the art'. A definition of the ALT.NET movement, which has a strong element of agile development, from David Laribee who first coined the phrase:
- You're the type of developer who uses what works while keeping an eye out for a better way.
- You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc.
- You're not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc.
- You know tools are great, but they only take you so far. It's the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principles (e.g. Resharper.)
Many Python development have no interest in Windows development, much less .NET development, but it should come as no surprise to them that the .NET world has many intelligent developers who are interested in furthering their craft. These people have a strong interest in dynamic languages, web frameworks like Ruby on Rails and the real world application of agile development practises like pair programming, test driven development and iterative development.
Folk came from quite a distance to the conference - from Newcastle, Germany and even Israel . There were about sixty people there in total and it was great to see so many .NET developers who actively use agile practises in one place.
I had a good time at the conference and met some great people. I learned some interesting things from the discussions on agile development, particularly aspects of agile development that we don't yet practise at Resolver. We don't yet do retrospectives. This is where you spend time as a team going over the work in the previous iteration . Our velocity (actual time taken for user stories divided by estimated time) is pretty steady at 0.5, but we sometimes have stories that go wildly over-estimation and retrospectives would be helpful in diagnosing what happened. I also learned a bit about BDD, which is interesting but hasn't greatly shifted my testing mindset .
One of the aspects of the conference that disappointed me was the discussion on testing strategies. I'm extremely interested in different approaches to testing, but the problems faced by C# developers are often irrelevant to IronPython development! Although they do face a lot of similar problems, like how much and when to mock, they use different frameworks and have to fight the compiler in ways that Python programmers just don't.
The conference was held on Conchango's premises, and one of the best parts of the conference was using their table football.
Hmmm... is it a bug or a feature?
From the after conference mailing list chatter, here are a couple of links on Planning Poker (the estimation game for user stories):
|||Well, specifically Ian Cooper, Alan Dean and Ben Hall.|
|||Called 'sprints' by those using scrum, which is confusing to me as 'Sprint' is used with a different meaning in the open source development world.|
|||Though I suspect Roy had ulterior motives for being in the UK...|
|||Andrzej Krzywda has been trying to shift it for a while, based on his experiences with RSpec executable user stories.|
New House, New Desk, New Computer
I'm still settling in after moving house. We've only moved half a mile down the road (closer to the train station and the red light district), and its our first house that we've bought. It needs a fair bit of work, but along with the new house I have a new office, new internet connection, new computer and new desk.
Apparently L-shaped desks aren't so good for pair-programming, but I don't do much of that from home. I recently blogged about wanting a new computer, and how the new Apple Mac Pros were looking pretty good. I've just made the jump. Max recently blogged about switching from Windows to a Mac Pro (and I nicked the image from him):
It really is a beautiful bit of kit. Memory is upgraded and new hard drives added by sliding out trays. I've added a raptor hard drive, and partitioned it in two. I moved Mac OS X onto one partition (using Carbon Copy Cloner) and 64-bit Vista on the other. This machine gets a 5.9 for everything under Vista Windows Experience Index except for the gaming graphics where it only scores a 5.4. With boot camp I can choose which OS to boot into. Unfortunately Parallels doesn't support 64-bit OSes (which I didn't realise), but having parallels installed does give you read-only access to any NTFS drives you have installed.
I managed to migrate my 32-bit Vista install from my Macbook by exporting it with parallels transporter and then copying it across. You can network two Macs by connecting them with an Ethernet cable (it doesn't need to be a crossover cable) and enabling file sharing. You will save yourself some grief if you configure your firewall to allow this of course.
I still haven't migrated my desktop environment fully onto the Mac yet. I need another graphics card to support three monitors and they are expensive for the new Mac Pros. Speaking of proprietary devices, the keyboard is amazing. It comes with a USB extender cable for the keyboard. I wanted to use the extender with another device, and it has a notch on it so that it can only be used with the Mac keyboard! The notch does make connecting the keyboard easier, but a proprietary USB extender is taking things too far...
This work is licensed under a Creative Commons Attribution-Share Alike 2.0 License.