Learning Org Mode

Since hearing about org-mode on the web many years ago, I always meant to give it a spin. I only ever found one two problems:

  1. Time - Life eh?
  2. It's a mode of Emacs for which I'd also have to learn (again time)

So I recently set about solving both shortcomings, as painful as it was to dismiss all the effort I put in to my vim muscle memory over the years. The tough part usually is finding good documentation that is both easy to read and follow.

Favourite Podcasts

Over the last while I’ve been collecting wonderful podcast episodes from the hundreds of hours I’ve listened to. I’ve even workshopped some of my favourites with colleagues and friends (they all approve!). Luckily a neat service called HuffDuffer allows you to create a personalised feed from episodes spanning any podcast you see fit. All you need is a direct link to the MP3 or indeed any format audio file.

So here it is, my favourite episodes spanning many podcasts. Mostly I love good stories, with unexpected twists. I suppose you could simplify that to “Surprise and Delight”. Be prepared to be entertained, surprised and delighted…

Python 3 In-Memory Zip File

In Python, BytesIO is the way to store binary data in memory. Most examples you’ll see using zip files in memory is to store string data and indeed the most common example you’ll find online from the zipfile module is zipfile.writestr(file_name, "Text Data"). But what if you want to store binary data of a PDF or Excel Spreadsheet that’s also in memory? You could use zipfile.write() (designed to take binary data) but then you can’t specify a filename (since our in-memory file was never written to a location on disk). The reason for this is simple: for a web request or for a test case, you shouldn’t need to store any files on disk.

The year of self hosting

Over the last month or so, I’ve come to embrace my home server setup and how powerful it can be. Here I have this small little Intel NUC Server, for which I promised myself I would do lots of cool and interesting things with.

The first thing I’ve hosted is Plex. I’ve used Docker Compose to bring up a Plex Docker container, with:

The way it works is this:

Scraping Data from your Bank in Python

As part of my previous posts, I talked about ledger and plain text accounting. The only part missing is that you need a method to import transactions from your bank. For this I have been doing this by hand, bi-weekly. I would have to do the following:

  1. Log in to online banking
  2. Go to the transactions page
  3. Select the date range for transactions I needed (double check last date of transaction in ledger at this point)
  4. Download the Microsoft Excel format file that wasn’t in the proper format
  5. Convert this Excel file into a CSV file that matched my import format (watch the dates, is it YYYY-MM-DD or DD/MM/YYYY?)
  6. Finally import the CSV file into ledger
  7. Check the balance matches between my online banking and ledger

Sounds like a lot of work right?

Slack Bots for Work

In a previous post, I mentioned how I get notified of the restaurant menu via a Ruby script. Recently I’ve moved to a totally different product area and the main communication channel we use is Slack. Naturally enough, I ported the Ruby code I wrote, and it now posts the menu every day to our Slack channel.

This also got me thinking of what other information would be handy to have. I scouted around for ideas and came up with an obvious one: reminder of the bus times to and from the office. So here’s my bus times notification slack bot:

Run Command on SSH Login

Do you need to run a command on SSH login? There are a lot of solutions on the web for this, but most of them are very complex. I stumbled across this easy method of using the authorized_keys file, simply add command="ls -l" (replacing ls -l with something a bit more useful like tmux or screen) in front of the key fingerprint. This also means you can have different commands for different keys if you choose.

iOS Shells, Prompt vs. Mosh

I’m a big fan of the shell and the productivity it brings, you can have a text editor, command to run a server and more within easy reach. I use a shell at work, at home and on the go. On the go could be using my iPad or iPhone. One of the first SSH clients on iOS was iSSH, which I used many years ago. After this, Panic released a professional class application called Prompt. Prompt is what I’ve happily used for the last few years, but the 10 minute background process limit is a constant pain. Just a quick switch away for a few minutes, and you have to reconnect. That’s fine once or twice, but when it happens many times it seriously slows your productivity.

Plain Text Accounting

For the last few years, I’ve always wanted to budget properly and see where my money was going. But like all habits that are good for you, looking after your finances takes time, care and attention. I started off by researching the market for budgeting software. A lot of the prepackged software out there was very US-centric, including Quicken, Microsoft Money and Mint.com. I eventually settled on and bought a license for You Need a Budget, because: it had a budgeting methodology, very good Euro support and was cross platform with Adobe Air. YNAB lasted me well for a few years, with its pretty graphs and ease of expense entry. I even liked their much pared-down companion iOS app at the time.

Newsfast MSc Project in UCD

As part of my masters degree in University College Dublin, we undertook a group project which focused on building a technology product. I’m very proud about how we ran the project, so I’d like to give an overview of it here! The product is a technology news application, which personalised your news feed based on your interests. I like to think of it as Facebook meets Techmeme meets your favourite RSS news feeds!

Page 2 of 24