(no subject)

Five of us just had our second session of MegaTraveller. Yes! I found an RPG running in Greymouth. The GM and one player were in a game that ground to a halt (after 100+ sessions) about ten years ago. They want to get it going again, so the plan is to link this new game into the old once the characters are up to that level. That's expected to take some time. Sessions are 4 hours or so every fortnight.
Collapse )

Caught by the old 'SQL injection' trick

Opps, just got caught out by this, which reminded me of the above xkcd comic. Luckily this happended in testing, thanks to a Mr O'Connor in my data set. He will now be known as Mr O\'Connor. Anyone else with similarly dangerous characters lurking in their name will be mangled in the same manner.

BASIC to batch to Delphi to PostgreSQL to Python and back again.

The old DOS/PDS BASIC app I've been working on for the past 20 years or so (with some breaks to do other stuff) was purely Microsoft PDS BASIC (and a little MS-DOS batch language) until recently. Now parts of it are in Delphi, some of which contain SQL queries, since it's now also a front-end for a PostgreSQL database running on a Linux server, with python scripts doing some processing on that data. That makes 5 languages I had to code for, not including the HTML generated by python cgi-scripts on the server. It's rapidly becoming a Tower of Babel.

Delphi (+ZeosLib) is nice for making a pretty Windows UI for your SQL database and as command-line middleware between BASIC and the SQL server. PostgreSQL is like playing Zork with databases. Python is effectively concise..
The server side of the same project has involved Debian with bind, dhcpd, lighttpd, iptables and ulogd - in addition to the aforementioned PostgreSQL and Python.

Busy. Very busy, but having fun too.

Scriptomatic Version 2.0 - filing under "unexpected humour"

Next week's fun interfacing project is talking to a voicemail system. Like the PBX with the MCP last week, it's talking TCP/IP and I'll probably hit it with Delphi/Indy. Unlike the PBX, I don't have the actual device in my secret programming lair*. For the testing, I might have to hook up remote access to a PC on-site. Anyway, the vendor did manage to provide some DLLs and example code... in VBSCRIPT!

Thinking it'd be fun to have a play with this VBScript code in a debugger, I asked the friendly search at MSDN. All the results mentioned there was a VBScript debugger but said to search MSDN for it. When you search MSDN, all the results mention a VBScript debugger but say to search MSDN for it. After extracting myself from the timeloop with my trusty sonic screwdriver (vodka, orange and loud rock music), I tried a Google and found ScriptOMatic 2.0.

It isn't a VBScript debugger but I still like it because it's evidence that within Microsoft there are a bunch of people messing about without much managerial supervision. Exhibit (A) these great release notes...

Actually, our original plan was to emulate the Coca-Cola company, which a few years back released New Coke, a product that met with almost universal disdain. Needless to say, things looked grim, but then some unsung genius at Coca Cola had a brainstorm: they suggested that the company do nothing more than bring back the old Coke, now christened Classic Coke. And guess what? It was a huge success! We figured, OK, we’ll do the same thing. We’ll write a piece of software that nobody likes and release it as New Scriptomatic. We’ll let people grumble and complain for awhile, and then we’ll bring back the old Scriptomatic (or Classic Scriptomatic) and everyone will love it! We’ll be heroes, and – best of all – we won’t have to do any work.

In the end, though, we decided to create a brand new version of the Scripotmatic, one that actually worked: Scriptomatic 2.0. And to celebrate the release of this new utility, we decided to hold a make-believe press conference. Here’s the transcript from that press conference:

There's more but you'll have to try ScriptOMatic 2.0 yourself. Windows Genuine Advantage(R)(TM) or a stamped, self-addressed envelope with a recent toenail clipping required.

*guarded by a cheeky weka, a bossy elderly white duck** and kamikaze wood pigeons.
**the duck is currently on summer leave but be warned, she lives nearby, and I have photographic evidence that she and her minions are working on a clone army.

"With the information I can access, I can run things 900-1200 times better than any human."

I've been writing Delphi code to log data from an ethernet-TCP/IP connected PBX. People make calls, the PBX sends out a line of text with the details. We used to log this on the serial port, but serial ports aren't cool anymore. An Indy client component seemed to be the best way to do this, so I coded and drew forms for an app. Since the PBX had not been delivered yet, for testing, I made an Indy server app which needed some kind of greeting message to send to the client. Obviously this should be "Greetings, program." Little things like that help to keep you sane. Later, the PBX arrives. It's about the size of a large old-style desktop PC, with six modules. What should be the name of the module that controls everything?

There is no way I'm going to hook that thing up to a laser. I'm not even going to turn my back on it.

End of line.