Kristian Glass - Do I Smell Burning?

Mostly technical things

Universal Greeting Time (UGT)

From http://www.total-knowledge.com/~ilya/mips/ugt.html

UGT […] states that it is always morning when person comes into a channel, and it is always late night when person leaves. Local time of any member of channel is irrelevant.

Great convention for groups of people who spend time travelling across timezones.

Unfortunately the habit sticks, and now I find myself having to explain an oddly-timed “good morning”!

Serverless: Nice Idea, Terrible Name

All problems in computer science can be solved by another level of indirection

David Wheeler

I love a nice layer of abstraction.

Filesystems let me just put files on a drive without concerning myself with explicit allocation and disk geometry. TCP clients let me just make a request without concerning myself with packet retransmition, re-ordering, and on-wire representations. Logic gates let me think about digital circuitry without concerning myself with voltage levels and capacitance.

What these abstractions don’t do is explicitly deny the existence of what they abstract away.

Nobody Likes Naked Pings

Ever received a voicemail or text message that says nothing other than “call me”? You got a “naked ping” – a context-free request for response / attention / action.

From https://blogs.gnome.org/markmc/2014/02/20/naked-pings/:

The naked ping should be Considered Harmful, for at least two reasons. The first is that it conveys no information. The recipient of your ping, like you, is a Busy Person. They may be in the middle of something requiring intricate thought, and should not be interrupted for anything less than fire, flood, or six figures of revenue. Worse, you may forget why you pinged someone; when, four hours later, your victim gets back to IRC and responds to you, you will be disrupted in turn trying to remember what was on your mind in the first place.

Postgres for Ladies

Someone started selling a book titled “Postgres for Ladies” on Amazon (now removed).

On the plus side, it received some well-deserved snark in the reviews that was both amusing AND on point:

But when my wife wanted to learn to use [Postgres], she just couldn’t wrap her head around it. Personally, I think it was due to stress at work; computational modeling of disease transmission takes a lot out of a girl.

I’ve created a database with all of our finances, for example. It includes our expenses, and every month she adds in her income from work. She’s even managed to automate the process of removing $.23 from every dollar she earns, just like her employer does.

On the minus side, presumably someone thought the book was a genuinely good idea :(

Dependency Versions Matter

You wrote some code. It uses a library, libfoo.

libfoo is not a thing in stasis, a little island of perfection birthed into an ideal of perfect form and function.

libfoo has a version, because libfoo changes as features are added and bugs are fixed.

You do not “depend on libfoo”, you depend on some specific version of libfoo, with its behaviour at that time.

Cover Letters: Always Send One

Younger-me believed a bunch of classic “naïve engineer fallacies”, like “marketing is a waste of time, it’s all about technical superiority”. One of them was “Cover letters are a waste of time! They should be able to tell my suitability from my CV alone!” (somehow I still believed this despite having a very short CV).

Younger-me was wrong, very wrong.

Send a cover letter. Please.

The Book of Armaments - Tools for Better Python

This is a long-form version of a talk I was invited to give at PyDiff (the Cardiff Python meetup) last year The audience was an exciting range of people, from professional software engineers, to mathematicians who’d written their first Python a few weeks prior.

Tools for better Python

There are things that will help you write better Python that are not Python-specific, like practice, good posture, documentation and empathy. These will help you be better at almost everything you do.

There are Python-specific things that will help you write better Python. However you may find them less useful in other areas of life…

Python’s ‘Surprise’ Imports

There was some code, it looked a bit like this:

1
2
3
from django.utils import timezone

start_date = timezone.datetime(2015, 1, 1)

Django recommends that you use, for example, django.utils.timezone.now to ensure you always get “the right now” (i.e. timezone-aware). So you might, as with the code example above, extrapolate that timezone.datetime(2015, 1, 1) will give you a timezone-aware “1st of January 2015” datetime object.

This is not what happens. You get a naïve datetime object. Why?