Debugging rst2pdf and pygments

I create my slide decks from ReStructuredText, which is a text markup format. Working this way makes it easy to add into source control, fast to work with, and also accessible since I don't use a mouse or other pointing device so traditional slide deck creation programs are kind of difficult. Text-based wins every time for me. While working on a new slide template, I ran into some difficulties and had to figure out how to inspect what was going on. I seem to struggle with this every time so I am writing my troubleshooting guide here for when I need it next. Continue reading

The Microphone Is Your Friend

This post is an adaptation from an email I sent to a friend who is doing their first few conference talks. I was asked to share more widely so here it is

The microphone is your friend, honestly :) Even if you think you can be heard, there are some definite benefits to using a mic if it's available:

  • you actually can be heard
  • even people with less-than-excellent hearing can hear you
  • the video recording can hear you as well
  • you now have the option to employ some vocal variety: exclaiming, pausing, stage whisper ... it all adds interest and colour to what you are saying

There are a few different types of mic and each one has its own quirks! Continue reading

So You're Thinking Of Submitting A Talk

I've been a conference speaker for a lot of years now, which doesn't make me an expert but it does mean that people ask me for advice pretty regularly! With the Call for Papers open for PHP North West at the moment (awesome conference, first weekend in October, CfP at http://conference.phpnw.org.uk/phpnw15/call-papers/), I've taken this question a few times. Here's my advice in a nutshell:

  • Think about what's interesting that you could share with other developers. The key here is that the people listening should go away with something useful, rather than just the impression that you're awesome
  • Write it down. You don't need to write the talk before you submit - just a title and an abstract will do. The abstract should be one paragraph, maximum 200-250 words
  • A great abstract says why this topic is vital, what cool things will be covered, who should come and what they will learn. I'm paraphrasing but those are the basics!
  • Submit your abstract to http://helpmeabstract.com/ to get feedback from some lovely volunteers who will help you (bookmark the gist and keep revisiting it, the system doesn't notify you or anything ... yet. Pretty sure you can submit patches while procrastinating on a slide deck though)
  • Did you get this far without submitting? That's normal :) Remember that your community needs new voices. Each of us is ahead of *someone* on the path, you absolutely don't need to be the expert to have something to offer to the rest of us. So please, submit :)

Notify New Relic of Jenkins Deploys

I'm a fan of Jenkins as a build server, and on one particular project we've also started using New Relic (I haven't figured out how to blog fun things about New Relic without sharing graphs of client applications which doesn't seem like a cool thing to do). New Relic has a feature where you can notify it when you do a deployment, and it shows on the graphs a line marking when that happened, which is super useful for correlating performance changes with code changes.

new-relic-deploy

Continue reading

Code Reviews: Before You Even Run The Code

I do a lot of code reviewing, both in my day job as principal developer and also as an open source maintainer. Sometimes it seems like I read more code than I write! Is that a problem? I'm tempted to say that it isn't. To be a good writer, you must be well-read; I believe that to be a good developer, you need to be code-omnivorous and read as much of other people's code as possible. Code reviews are like little chapters of someone else's code to dip into.

Over time I've developed some particular processes that I find helpful when reviewing code. In particular, I often surprise people at how much review I do before I run the code. Sometimes I grab the branch so that I can use my local diff tools, but I don't actually execute code until I've established some basic facts. This post is a little insight into what's happening in this not-running-the-code-yet zone. Continue reading

Count Changed Lines in Git

I have a favourite set of switches to git log, but today I wanted to answer the question "You deleted how much code today?" so I thought I'd share how I did that

git log --numstat will show you how many lines were added (first column) and removed (next column) per file, kind of a more scientific version of the --stat switch. And if you're thinking of scripting this to gather stats, try it with --oneline as well, it's easier to parse.

Scaling and Sizing with PDFJam

I find myself needing to take a PDF, output it at a specific size, and have the result offset to the top right hand side of the screen. To achieve it, I needed a few new switches to my good friend PDFJam, so I thought I'd share my command!

pdfjam --suffix converted --papersize '{1920px,1080px}' --scale 0.4 --trim "-6cm -1cm 13cm 8cm" slides.pdf

The --suffix is instead of giving an output filename, whatever you feed in ends up with the suffix in its filename. This is very handy because I use this command in a script and only need to pass in one variable. The --papersize isn't a switch I have used before either but you can set exact sizes for the final output which is nice. The --trim switch can also be used to set --clip=true to remove the trimmed space from the document if desired.

I find PDFJam a very handy tool but with not nearly enough blog posts and code snippets around, so I'm dropping my command for future reference (yours as well as mine!).

Vimdiff and Vim to Compare Files

At the moment I'm working on a tricky project where two similar projects diverged. Very similar things happened to them both, but not quite the same things - and now we're merging the codebases to give us as much common code as possible. All this simply serves to set the scene of exactly what I was doing spending a whole day with large code diffs - I had to look up a few things so I thought I'd capture them while I can remember. Continue reading