Posts in 'coding'

What’s new in EMVLab

I set up EMVLab back in 2009, along with my former colleague, Mike Bond. We set out to provide useful tools for people working in payment systems development and research, and based on feedback from users I think broadly speaking it’s done its job. I’ve kept it up and running, but there have been some features which are now showing their age.

In the past few months I’ve moved the site to a dedicated virtual machine in UCL (resolving some reliability and performance problems), but this also gave me an opportunity to update some other aspects that I’ve long been putting off. This post summarises these updates, as well as some of my future plans.

HTTPS availability

EMVLab is now available over HTTPS, thanks to Let’s Encrypt. At least for now I am not re-directing HTTP to HTTPS or using HTTPS-enforcing measures like HSTS. This is because one of the principles behind EMVLab was that it should require the bare minimum in terms of browser capability. Workstations in some payment systems companies are incredibly locked-down and so features like Javascript might not be available. I don’t know of any specific instances, but I …

Fixing slow startup of mc on Mac OS X using dtruss

I sometimes use Midnight Commander (mc) as a file manager. It’s widely available, is text based so works over SSH, it’s quite capable, and it’s very fast. However on Mac OS X something has changed (I’m not sure exactly what) that results in mc 4.8.14 taking about 10 seconds to start. If you just want to fix this problem skip to the end, or read on for how I found the solution.

A great tool for debugging all sorts of problems on Mac OS X is dtruss, which prints out details of the system calls a program makes. dtruss itself is just a script using the powerful DTrace framework, but if dtruss does what you need it’s a lot easier to use than writing your own DTrace script.

Normally to debug program you would just run dtruss program and look at the output. However using dtruss to debug interactive text-mode program problems is a bit tricky. The first problem is that dtruss, like all DTrace scripts, needs root privilege to run (and mc’s problem goes away when run as root). The second problem is that the output of dtruss will be obscured …