Python Programming, news on the Voidspace Python Projects and all things techie.
Blogging & the Internet of the Future
Hmmm... I've just passed over four hundred entries in this blog. The first was almost exactly eighteen months ago, and I'd been using Python for about eighteen months as well (since around July 2003). Blogging is often in the media as a force on the rise, but it's hard to gauge how much this one has achieved; beyond being an enjoyable timesink.
Over those eighteen months this blog has grown from less than ten page views a day to around five hundred . That hardly makes this a world changing blog, but does make an impressive curve on a graph.
One tangible thing that I can point to is our latest job hire at Resolver. I mentioned that we were hiring (post filled by the way...), and someone saw and applied for the job. When he starts I'll say a proper hello to Christian.
Anyway, as I pointed out in my second post, blogging about your blog is the ultimate in navel gazing. So from second post to second life; time to try and bring some semblance of a point to this entry.
Blogging gets regular mentions in the press as an ever rising force in the 'new media', whatever that might be. There are blogs that have great influence, and the borderline between blogging and journalism blurs at the margins. Many of the blogs with the widest readership are political blogs, so I guess a programming blog is never going to be up there with the big hitters .
Some people are betting their futures on blogging. One of these is Robert Scoble. A high profile recently-ex-microsoft employee, he is now working with a video blogging firm. He's betting that the wave that started with blogging and moved onto podcasting, is going to continue with video blogging.
He is also interested in Second Life, the 3D virtual world in which you can build things, interact with people and create objects with programmed behaviour. Their is a virtual economy, where the currency is Linden Dollars. In order to own land (a prerequisite to doing anything interesting), you have to buy Linden Dollars. Although the game looks interesting (I've taken a ride in a flying car, and flown with strange creatures amongst the treetops), I don't have the time to invest in the game to make it worth the monthly expenditure.
3D Virtual reality is inevitably the future of computing. This is inextricably tied to the internet, any virtual experience without companionship is a poor kind of fake reality to escape to. Second Life is merely a pale reflection of what is to come, but computing power, programming techniques and the communication infrastructure (internet) need to evolve together to make this happen.
What wasn't at all clear to me, was any idea of how the internet as we know it was going to morph into a world of worlds where we all merrily fly and commune together. Second Life is an island of virtuality in a resolutely two dimensional internet, which is only just beginning to crawl from it's origin as a medium for transmitting text .
Robert Scoble makes a plausible suggestion in a post on not getting second life. He suggests that the humble hyper-link could provide the cross-over point between the normal internet and 'content' hosted inside Second Life. Bloghud is the first manifestation of this.
Galleries, podcasts, shops, virtual experiences; all of these and more could draw you into Second Life... and you may never escape.
|||That includes page views of all the archive pages. A large proportion of my readers come via Planet Python and the occasional mention on The Daily Python-URL. The Voidspace Website as a whole averages around three thousand unique visitors a day.|
|||I have no interest in politics personally. I think that the system is inherently flawed due to man's nature, but that democracy is better than any of the other alternatives out there. Anyway enough of that...|
|||The internet is still largely built on http transmission of html documents. In both cases the ht stands for Hyper-Text, meaning text with links.|
Reasonable Password Policies
Well it's 4am and I can't sleep, the perfect opportunity to put a new article online.
Chip, PINs, Passwords and Security Codes
Sometimes problems arise not because a system is unsafe as designed, but because the system is insecure. The system was originally safe, but it is no longer safe because it is insecure. The insecurity may arise because people find they cannot understand or work with the contradictory security policies of the many organisations with which they have to deal. This article discusses one aspect of security (passwords) that many people find difficult and suggests an alternative approach.
|||Who just happens to be my father.|
Luckily another team have started a new translation. What they have done so far is at :
|||Hey, I had a salient reminder of the need for backups recently when I lost a USB key. That was a lesson I thought I'd learned nearly twenty years ago when programming the BBC Micro.|
Movable Python Demo
There is now a demo version of Movable Python available for free download :
This trial version is a portable development environment created with Python 2.3.5. It is setup to expire on 29th December 2006 . It pops up a dialog every time it runs and launches a file. It has no other restrictions. If you find this annoying, then the full distributions are really cheap, especially the Python 2.5 one.
Now that I have my build process nailed I should be able to build fresh demos for updated versions very easily.
|||A bit longer than the last one...|
IronPython News (and stuff)
There have been a few interesting developments in the world of IronPython.
IronPython 1.0 RC1 Released
IronPython is out of beta.
Unless issues are uncovered (a couple of minor bugs have already been reported), IronPython is about to become 1.0 final. This doesn't mean development stops though as there are plenty of things still to do, including porting more CPython modules and addressing performance issues. (Although RC1 is quite a bit faster than Beta 9, which in turn was slower than previous versions.)
There are also two areas where IronPython could shine, but currently doesn't :
IronPython (PythonCodeProvider) for ASP.NET
In this thread Dino Viehland explains that there is a 'sort-of' solution at the moment, but the IronPython team are not sure how possible it's going to be to take that forward.
Writing classes with IronPython and using them from C#.
Although you can generate assemblies from IronPython code, (IronPythonConsole X:SaveAssemblies source.py saves an executable), you can't yet access Python classes from C#. I'm a bit hazy on this, but I think it is planned for future releases. Your assemblies (will) obviously still depend on IronPython.dll.
Icons and Consoles
Since the last beta (or so), the IronPython binary has come with two executables; ipy.exe and ipyw.exe. These allow you to run scripts with and without a console, in the same way that python.exe and pythonw.exe do on Windows.
In the current distribution, IronPython now has funky icons for ipy and ipyw. They're not as good as the new Python icons, but hey.
The IronPython homepage has finally changed. It now has a placeholder telling you to visit the new IronPython home on CodePlex.
This may seem like a minor issue, but IronPython.com is the first result google returns on searches for ironpython. The fact that that page hadn't been updated since 2004 was a barrier to adoption as it looked like a dead project. It was also an embarrassment to us at ResolverSystems, it looked like we were developing with a dead language.
There is now a google archive of the IronPython Mailing List. This should make it easier to search the list, as well as providing (another) web interface for reading the list.
It has entries from July 22nd.
If you post via the web interface, your google account will need to be subscribed to the IronPython list or your post will be held for moderation.
There are two pieces of 'news' , which are totally unrelated; but I'm going to shoehorn them into this post anyway.
Secondly, a while ago I suggested that some of the optimisations that compilers use could be applied to Python byte-code. For example inlining functions. Almost certainly nothing to do with me, but someone has implemented function inlining and suggested some other optimisations :
Why stop at function inlining? Would static constant evaluation be useful? Compile-time resolution of constants? Pull-up of loop invariants? Loop unrolling?
Thereâ€™s a definite speed advantage to be had. The simple case above runs around twice as fast even with my sub-optimal inlining. Note that I didnâ€™t have to implement any crazy frameworks like PyPy or psycoâ€”this will work on ordinary Python code running in any Python implementation.
It's effectively a toy implementation though, looks like we'd better hope that the PyPy JIT compiler arrives...
|||Actually more like smug navel gazing than news, but heck I'm going to tell you anyway.|
IronPython & Windows Forms, Part VII
This article has moved.
You can find the whole tutorial series at IronPython & Windows Forms.
First there is an improvement to StandOut 3. As well as providing logging and verbosity levels from the Python level, it now implements a software unbuffered mode. You can fetch it from :
Once a few more things are out of the way, there will be a well overdue release of Pythonutils.
|||I haven't fully tested with Python 2.5, but I needed to move a from __future__ ... statement to get it to work at all.|
An Object Shaped Future
This is an article that looks at what it means when we say that Python is a high level language. It also looks at the direction that computers are heading, and which programming languages and paradigms can survive into the future :
If you haven't already explored, there are lots more articles on Python and programming in the Articles Section of Voidspace. There are more general computing and technology related articles in the Technology Section.
If you feel like exploring, you may also be interested in a few of my writings on the Voidspace Page; not forgetting the rest of the site of course.
Spider's Silk & Movpy New Features
I've been very busy with Movable Python in the last few weeks. There is still a lot more to do. I'm in the process of bundling all the interpreters as a single package, allowing you to test programs with all major versions of Python from a single tool.
Due to oversight on my part the Python 2.5 Distribution wasn't public. This has now been rectified.
There is also the small matter of documentation to write. In the meantime I have several articles to post, I'm itching to write the next in the IronPython Tutorial Series and have a backlog of blog entries to make. rest2web, Firedrop and ConfigObj also have updates waiting in the wings. sigh
I'm going to take a break from Movable Python and just give you a quick roundup of some of the new features.
But first, a word from nature. I've just been out in the garden (well, a patch of concrete really). A spider has woven a web in a slightly inconvenient place by the backdoor. I don't inevitably brush into it as I go out, but almost every time. It is strung between a wall and some metalwork, about six foot across; made by a creature less than a quarter of an inch across. Wow
Last time I went out my arm brushed against the main thread and deflected it a few inches. It didn't break and I could feel the force of the thread pushing back. It was only just visible, yet incredibly strong. I'm impressed. Anyway, that has nothing to do with the rest of the post, fascinating though it may be.
New Features in Movable Python
Movable Python 2 is a very different creature from the last version. As well as providing a portable distribution of Python, including all the system DLLs you need and ensuring they are on the path for the interpreter, it includes tools to make it a full development environment. The bundled IDE is now Pythonwin from the pywin32 package .
It is also a useful programmers tool. Firstly any program can be setup as an interpreter to launch programs for. For example, it makes a convenient launcher for IronPython without having to associate .py files with it :
The programs that you choose as interpreters need not be Python interpreters, they can be any executable, batch file, or even Python script :
This means that Movable Python can act as a GUI front end for any program, allowing you to pass command line arguments. It will directly launch executables and batch files. You may never need to use the command line again.
You can also configure the working directory scripts are run in :
We have used this for running our test suite with a custom IronPython interpreter at Resolver Systems. By using your normal Python install as Python interpreter (Movpy can pick up on it automatically), Movable Python provides a great way of launching your Python programs.
Scripts (or programs) you run are available from a drop down list (Movpy itself is horizontally stretchy to make this more convenient) :
As well as other features, like being able to enable Psyco for Python scripts, quick launch buttons and running programs in their own directory, Movpy can also log the output of Python scripts to files  :
There are lots more improvements on the way, but that's a quick rundown of the new features.
If you purchase the Python 2.5 distribution before Python 2.5 final is released, (as well as supporting the future development of Movable Python) you get it for a bargain price of only £3.99 (less that ten dollars), and still get all updates for the next year.
Visit the Movable Python Download Page for access.
|||SPE for Movable Python will soon be available as a separate download.|
|||One of the next updates will enable the logging feature (and Psyco) for scripts run by a normal Python interpreter as well as those run by the Movable Python interpreter.|
This work is licensed under a Creative Commons Attribution-Share Alike 2.0 License.