I'm an experienced C and Perl programmer and systems administrator, interested in large scale ruthless automation of systems. These are random musings about stuff I'm doing or thinking about.
Practical Software Development Article 12: Another use of TEFEL - Go-style Interfaces in C
In August 2019, I wrote a new PSD article about my TEFEL: Tool-Enhanced Features for Existing Languages technique:
How to add Go-style Interfaces in C via Dynamic Linking and two TEFEL tools
Practical Software Development Article 11: TEFEL: Tool-Enhanced Features for Existing Languages
In July 2018, I wrote a new PSD article on a newish idea of mine called:
TEFEL: Tool-Enhanced Features for Existing Languages
PSD Article 10: Use Automation Wherever Possible - build tools to help you program
A few months ago, I wrote another Practical Software Development (PSD) article:Use Automation Wherever Possible - build tools to help you program.
Gitlab and gitolite
I now maintain a Departmental Gitlab service, and have been working out how to archive “old” Gitlab projects, users and groups, preserving them on a readonly Gitolite system. This has involved the excellent Gitlab API, also digging into the Gitlab Postgres database, and writing numerous Perl scripts to extract information from Gitlab, and convert Gitlab information (and repos) into Gitolite format.
httpoxy: building custom Apache2 packages
Just built and released a new version of Apache2 for use where I work (where we need to apply a few locally written patches to generalise suexec) in order to fix the httpoxy vulnerability. Took the latest Ubuntu Apache2 source package with the httpoxy vulnerability fixed, and automatically applied our suexec patches to it, generating a local package. Released it to a test webserver, checked that it worked and fixed the bug, then released it to 5 other Departmental webservers. Good afternoon’s work.
My Perl course got cancelled
A while ago, the Perl course that I gave every January to second year undergrads got cancelled, because “Perl is not modern enough”. Clearly someone’s not heard of the “Modern Perl” Renaissance!
Sigh, so stupid that we’ve chosen Brexit, but sadly having asked a question of the British people, and received the answer, you can’t unask the question - or ignore it. So now we’ll be leaving the EU. New Prime Minister, new Cabinet, it’ll be interesting to see what happens in the next few months.
How to Crash ZFS on Linux: Glob Snapshots over NFS
Building an experimental online backup system on Linux, using
rsync and ZFS snapshots to build a time machine like “past versions
of your files”. Sucks up 15TB of home directories and shared volumes,
then exposes the readonly results over NFS. ZFS on Linux has only
just got the ability to share snapshots via NFS, and we’ve found that
globbing across multiple snapshots over NFS reliably crashes the
online backup fileserver (nfsd threads go into D state and the NFS client
hangs, over time more and more nfsd threads go into D state).
To work around this snafu, I’ve built a tiny RESTful API web service that
runs on the backup fileserver, receives a path such as ~dcw/blah or
/vol/blurgh, discovers all distinct versions (in all snapshots) of that
path by globbing across all snapshots locally on the server, and reports
the distinct version paths via a JSON report.
These things are sent to try us!
Banning Strong Encryption: sign the petition against it
I’ve just signed the UK Government petition against Prime Minister David Cameron’s recently reported idea of banning strong encryption in order to
“ensure that terrorists do not have a safe space in which to communicate.”
While that sounds laudable, reading deeper into his idea
there is a spectacularly naive implication behind the Prime Minister’s
words that strong encryption may be rendered ineffective for bad people
(like terrorists) without rendering it equally ineffective for the
entire internet, allowing authoritarian governments to repress their citizens even more than they do at present, etc.
One example of a cryptography expert’s reaction
to the UK PM’s proposals may be found here:
Is this the latest incarnation of the perennial favourite of dumb politicians, the Evil Bit? see https://en.wikipedia.org/wiki/Evil_bit
Shared Norms of C Programming: followup
Ok, I’ve created a draft article discussing this idea of individual or shared norms of C programming, not quite finished yet, but available here:
Also I’ve started a LinkedIn discussion about this, good comments already coming in. It’s still an open question whether each C programmer’s personal lists of safety tips can merge together in any useful sense to form a shared knowledge base. Let’s see:-)