|
Search
Older stuff
|
|
Tech talks and presentations - the event and date given is the first time the talk was delivered:
- How to be a CPAN tester - delivered at the 2007 London Perl Workshop:
slides
- CPANdeps - lightning talk delivered at the 2007 London Perl Workshop:
slides
- Devel::AssertOS - lightning talk delivered at the 2007 London Perl Workshop:
slides
- news2mail - delivered at YAPC::Europe 2007:
HTML |
PDF |
slides
- rsnapshot - delivered at YAPC::Europe 2006:
HTML |
PDF |
slides
Phone numbers
I get horribly horribly retro sometimes ...
Web stuff ...
Perl, the language of choice ...
- As a service to authors who want to check out the quality
of modules they might want to use, along with all the other modules
that they might use, I run cpandeps,
which will show you all of a module's dependencies and their
test results;
- For a while I maintained Nathan Rosenquist's
rsnapshot filesystem snapshot
utility, and previously wrote the rsnapshot-diff utility which
is now bundled with it;
- I have a set of tools for gatewaying email and Usenet without requiring INN. The first fruits of this are here.
- My published perl modules - all are also available on the
, and also on Sourceforge
- DBIx::Class::SingletonRows
(docs) -
make rows from the database into singleton objects
(previous versions: 0.1);
- CPU::Z80::Assembler
(docs) -
a macro assembler for the Z80 micro-processor
(previous versions: 1.02 | 1.01 | 1.0);
- Data::Transactional
(docs) -
RDBMS-like transactions for data structures. This obsoletes my older
module Tie::Hash::Transactional.
(previous versions: 1.01 | 1.0 | 0.1 | THT 1.0);
- CPU::Emulator::Z80
(docs) -
a Z80 micro-processor emulator
(previous versions: 0.9);
- Number::Phone and
(docs)
Number::Phone::UK - a generic superclass for Number::Phone::* modules,
a module based on it which identifies and classifies UK phone
numbers, and a set of modules for extracting some basic information
about NANP numbers.
(see it in action)
(previous versions: 1.581 | 1.58 | 1.57 | 1.5601 | 1.56 | 1.55 | 1.54 | 1.53 | 1.52 | 1.51 | 1.5 | 1.4004 | 1.4003 | 1.4002 | 1.4001 | 1.4 | 1.3004 | 1.3003 | 1.3002 | 1.3001 | 1.3 | 1.2001 | 1.2 | 1.1 | 1.0);
- Data::Hexdumper
(docs) -
A module to make arbitrary binary data human-readable
(previous versions: 1.3 | 1.2 | 1.1 | 1.0.1 | 0.01);
- Data::Compare
(docs) -
compare arbitrary data structures. Originally by Fabien Tassin, I
am now a co-maintainer.
(previous versions: 1.18 | 0.17 | 0.16 | 0.15 | 0.14 | 0.13 | 0.12 | 0.11 | 0.10 | 0.09 | 0.08 | 0.07 | 0.06 | 0.05 | 0.04 | 0.03);
- Devel::CheckLib
(docs) -
check that you can link to a particular library.
(previous versions: 0.4 | 0.3 | 0.2);
- Devel::CheckOS
(docs) -
ask what OS and OS 'family' you're running on, or require a
particular OS.
(previous versions: 1.42 | 1.41 | 1.4 | 1.3 | 1.2 | 1.1 | 1.0 | 0.92 | 0.91 | 0.9);
- CPU::Emulator::Memory -
(docs)
a memory object for use in emulators. Also includes support
for "banked" memory.
(previous versions: 1.1 | 1.0);
- CPAN::FindDependencies
(docs) -
find which modules/distributions a module depends on
(previous versions: 1.1 | 1.02 | 1.01 | 1.0);
- XML::Tiny
(docs) -
a simple very light-weight parser for a useful subset of XML.
(previous versions: 1.10 | 1.09 | 1.08 | 1.07 | 1.06 | 1.05 | 1.04 | 1.03 | 1.02 | 1.01 | 1.0);
- File::Find::Rule::Permissions
(docs) -
an extension for File::Find::Rule so you can find files based upon
whether an arbitrary user has read/ write/ execute access to them.
(previous versions: 1.2 | 1.1 | 1.0);
- Tie::STDOUT
(docs) -
intercept data written to STDOUT and transmogrify it with functions
of your choice.
(previous versions: 1.02 | 1.01 | 1.0);
- Palm::TreoPhoneCallDB -
Parses call history databases generated by Palm Treo smartphones.
(previous versions: 1);
- Net::Random
(docs) -
Retrieves truly random data from various online sources.
(previous versions: 1.4 | 1.3 | 1.2 | 1.1 | 1.0);
- Number::Phone::UK::DetailedLocations - an add-in for Number::Phone::UK so it
can make more accurate guesses for the locations of geographic numbers.
(previous versions: 1.2 | 1.1 | 1.0);
- XML::DoubleEncodedEntities
(docs) -
fixes broken XML which has had entities encoded twice;
- Bryar
(docs) - a journalling (or
blogging) program originally written by
Simon Cozens, which I
now maintain. (see it in action)
- Games::Dice::Advanced -
simulates rolling dice, including loaded dice and dice with impossible
numbers of sides.
(previous versions: 1.0);
- Sub::WrapPackages -
wrap all subroutines in named packages, à la Aspects
(previous versions: 1.1 | 1.0)
- File::Overwrite -
overwrite the contents of a file and optionally unlink it, thus
protecting against simple file recovery tools. You
must read the section in the documentation titled 'SECURITY'.
- Class::CanBeA -
get a list of all the subclasses of a superclass
(previous versions: 1.1 | 1.0)
- Statistics::SerialCorrelation -
calculate the serial correlation
co-efficient for an array.
(previous versions: 1.0);
- Tie::Hash::Longest -
a hash which remembers its longest key and value, written in response
to this
discussion on perlmonks. ;
(previous versions: 1.0);
- Statistics::ChiSquare -
The chi-squared test. This was previously maintained by Jon Orwant.
- Scalar::Properties -
Run-time properties on scalars, originally by Marcel Grünauer, I
am now a co-maintainer
(previous versions: 0.11);
- Acme::Scurvy::Whoreson::BilgeRat -
a multilingual insult generator, which takes pluggable backends for
languages. The example plugin implements piratical insults and, like
the name of the module, is in honour of
International Talk Like A
Pirate Day. Arrrrr!
(previous versions:
1.0);
- Acme::Licence -
easily apply the licence of your choice to your code;
- NestedMap - nest map{}s
within each other, with access to outer map{}s' state from within inner
maps;
- Acme::Pony -
turns your code into an ASCII-art pony. Note that this module used to
be known as Pony, and was renamed to fit the new convention that silly
modules go in the Acme::* hierarchy. Step one of my master plan to
take over the world is now complete, as I have achieved
infamy.
(previous versions:
1.0.1 |
1.1 |
1.1.1);
- Tie::Hash::Rank -
a hash which ranks the data you throw at it.
(previous versions:
1.0);
- Tie::Scalar::Decay - scalar
variables that decay. It defaults to creating a scalar which decays
in a manner similar to radioactive decay
(previous versions:
1.0 |
1.1);
- perl-dep, a script for finding dependencies in perl code,
now at version 2 thanks to Walery Studennikov.
- I have patched infobot 0.45 to allow
'karma comments'. This needs documentation.
- I have also contributed patches to peoples' work
- Added support for "infecting" child processes to Adriano
Ferreira's
Devel::Hide
- Submitted a patch for PostScript::Simple
to support drawing dashed lines instead of just solid lines.
- Added trustme and support for tieing to Richard
Clamp's
Pod::Coverage
module. The tie support simply makes it ignore all the special
methods of tieing classes.
- Added the addr2cidr and addrandmask2cidr functions
to Net::CIDR.
- Backtick interpolation in Rick Booth's
sigmonster.
Palm stuff
- Got a Treo and want to look at your phone call records? In
particular do you want to see how long your calls were? It seems
that that incredibly complicated trick is beyond the wit of Palm,
but I can do it. See also the more
flexible perl
module version of this code.
- Download Julius Caesar's De Bello Gallico and De
Bello Civili (Gallic Wars and Civil Wars) in Palm Doc format, either
as one big file or
as seperate files. (also on
Memoware).
- All the RFCs in Palm Doc format. These
files are bzipped to save space. bzip2 is available from
the author in both source
and binary forms.
- I encoded the above using
Paul Lucas's
txt2pdbdoc
(which I have mirrored here in case
anything Bad and Wrong happens to his site.
- I have contributed to the free public transport route planner
Métro, including
data for the Napoli Metropolitana, some London trains, and updates for
London's Night Bus network.
Linux on the Libretto
- I am a Librettist. Getting a useful OS onto a Toshiba Libretto
can be a right swine because they have no built-in removable media
drives, only one PCMCIA slot, and the PCMCIA CD isn't recognised.
Here's how I got Linux
onto my Libretto 50CT
Other stuff
|