Cristo

Writing Your First Reddit Bot: A Gentle Introduction to Web APIs

Wed 22 October 2014

If you can install modules from Pypi, then you are my intended audience. If not, you can delve into Python with some of these great resources.

You need Python 3.3+ and pip.

I hit up Reddit every morning at 8:02am. For those two minutes after my alarm fires ...

Read more

Unbuffer Stdout: Deploying Python with Systemd

Sat 04 October 2014

I’ve been running the Reddit bot Gracefulcharity for somewhere close to a year now. And until now it lacked a good deployment story.

I had previously tried to run it under supervisord, a feature rich Python process manager. But when setting it up, I couldn’t get logging for ...

Read more

Text to speech mp3s for Fanfiction.net

Tue 25 March 2014

Ever since my first Kindle broke, I’ve had a version of this script knocking about to replace its TTS functionality. It takes a url to a fanfiction.net story and spits out nicely tagged mp3s.

It breaks pretty much every time fanfiction.net updates ...

Read more

Twee Mode for Emacs

Mon 24 March 2014

Twee is the command line variant of Twine, a piece of software to write and publish CYOA-style stories to the web.

Twine is a GUI editor where you can visualise and manipulate the relationships between different story chunks on a graph. It’s a neat piece of software. But ...

Read more

Backup Reddit Posts

Thu 20 March 2014

Most of the writing I do online takes the form of Reddit comments. And most of the interesting things I discover (and later forget) usually worm their way into one post or another.

So I wanted full text local search of my Reddit comment history. Scraping Reddit comments is fairly ...

Read more

Keylogger for XWindows

Sun 16 March 2014

Any sufficiently privileged user can connect to X and read all keystrokes. So if, for example, this script is running as the currently logged in user, it can read that user’s keystrokes when they type in their passwords.

There’s the easier way to get user passwords, of course ...

Read more