Software anti-patterns

Python – Don’t be afraid of the dark

You may have an enormous ball of mud written in Perl but there are many benefits to introducing a new language like Python or Go:

  • The communities are vibrant
  • It’s easier to hire someone
  • They can do everything Perl can do

Documentation – Have some

  • Do not strip the comments from the code. That reminds me of WWII UK when signposts were removed to confuse the enemy.
  • Have documentation for each sub saying what the inputs are, the outputs and if you have a god object, what the side effects are.
  • Have documentation, preferably in POD in the code that reflects precisely what the code does. You can do lots with this. And test it.

Don’t have an overly complicated branching strategy

  • Don’t have a main branch that isn’t main/master.
  • Have a branch for each story.
  • Have branches for releases.
  • Do gitflow, it’s simple.

Jumphosts – They’re a PITA

  • Don’t be SO paranoid about security
  • Are you so locked down you have to ssh through a jumphost? And the jumphost won’t do ssh forwarding?
  • That breaks so much: no sshfs, no remote editing in your chainsaw of choice.
  • For bonus points, the dev machine can’t see the git repo. Please. I don’t like coding with a paper bag on my head.

CI on commit – Do it automatically

  • Once you have tests, run the CI pipeline when the code gets committed.
  • Preferably deploy (CD) that branch to the/a dev machine.
  • It exercises your deployment process. Remove a speed bump.
  • Deploy to dev and scheduled to test. It’s a computer: automate it.
  • Make friends with Docker. It makes life SO simple. Having laptops able to see the database is a BIG WIN.
  • Keep your dev database up to date.

No tests – a classic

  • Write your code so it’s testable. Don’t do everything through a God object. Have subs that have defined inputs and outputs.
  • When using Test::Perl::Critic::Progressive (or equivalent) to make sure your code isn’t getting worse, you’ll probably need to copy t/.perlcritic-history into and out of the artefact store between each run.
  • Can your CI machine see a test database? If not, you’re entering mocking hell.
  • Tests provide code examples. This is good.
  • Put the tests on a pre-commit git hook. Remember to chmod +x it.
  • Graph the progress if you can.

Recruiters suck

As a freelancer for a long time, I have had periodic contact with recruiters from one-man “headhunters” to large, multinational agencies. I have to say my opinion can’t be lower.

As a freelancer for a long time, I have had periodic contact with recruiters from one-man “headhunters” to large, multinational agencies. I have to say my opinion can’t be lower. This is a collection of my postings to LinkedIn expressing my frustration with the market and an expansion of this blog from 2018.

I believe in the EU soon, jobs will have to show salary bands. This cartoon expresses my opinion on negotiating rates:

Or a variant on the rate discussion:

Mind you, I could go for this salary range:

Or this one:

Not sure I fancy this one:

I love job ads:

“Full-time · Entry level”

“…is looking for an experienced Python Developer…”

This is also a classic:

I also hate job ads that ask you to fill in your job history as a web form. It’s on my CV you twats! Also, forms that ask for cover letters. I conducted a poll on various social media platforms. As it turns out, 0% of recruiters I polled admitted to reading cover letters. I admit, I have sent the odd cover letter that ChatGPT has helped me with. Still no result.

Another good two things that get my goat. Firstly, recruitment seems to have been invaded by our friends from the Indian subcontinent; many of them have strong accents and I often have difficulty understanding them. “Send me an email”. Secondly, where the recruiter has a terrible phone connection. I’m in a city. I know my reception is great. If I’m in my flat then my phone is bonded to my WiFi. But SO many recruiters sound like they’re talking white noise, and again are hard to hear.

Please don’t ask me to submit a video with my application.

Please use a grammar checker. I use Grammarly. The free version is fine. Don’t do this:

“Due to large scale growth my client are currently recruiting multiple Platform Engineers to be based in there central London office .”

Or this:

“Do you agree to us holding and using your personal information for the purpose of recruitment for this roles”

Or especially this:

“Strong communication skills, with eexcellent spoken and written English.”

This is a classic. I’ve had a fair few agents with contracts half a country away, demanding two days a week in the office. That’s a no from me.

This phone introduction is a classic:

“Hi, this is David Hodgkinson.”

“Is that David?”

Also:

Me: Hi, it’s David Hodgkinson

Recruiter: Hi, this is Anand Prasad from xxx. How are you.

Me: I’m good.

Recruiter: I’m good thanks.

I didn’t ask you.

Don’t get me started on Applicant Tracking Systems. They’re up there with throwing half the CVs into the bin because they’re the unlucky ones. I can actually do the thing you think I can’t do.

Please don’t send me a link to book an interview slot and then there are no slots available.

Please don’t advertise a job that’s then filled internally.

Please have a direct dial number to your desk, with caller ID so when you hang up after a couple of seconds of static I can call you back.

Please don’t ask for references before the offer stage. Giving you new business opportunities is not my job.

Please don’t change the job requirements between advertising and the interview.

When you call me, tell me where the job is, whether it’s hybrid/remote and how much it is offering. I don’t want to know if you’re married, how many children you have and how little sleep you’re getting.

Please don’t send me rejections for jobs I’ve not applied for.

Please, if you say you’re going to send me the job spec, actually send it.

Please keep your own website up to date. That saves you even sending me the job spec.

My name is not Gordon.

So that’s a lot of what I’ve culled from my LinkedIn. Please feel free to comment below or on the social medias. The best comments will be included here.

Free Lunchtime Concerts

A local meetup did free lunchtime concerts but when I tried to snag a ticket, they we all gone. Turns out, this didn’t matter as they let people in without tickets and anyhow, when the concert started there were always a few free seats. I went ahead and booked myself five lunchtime concerts for May. First up, the Concertgebouw is a magnificent building. It would be nice to see something in the big room rather than the small one.

Recorder and banjo
Recorder and guitar thing

The first week was some kind of recorder and guitar thing.

Piano and flute
Piano and flute

The second week was piano and flute.

Opera
Opera

Week three was opera.

String trio and oboe
String trio and oboe
String quartet
String quartet

Week four was half string trio and oboe and half string quartet.

Middle-eastern instruments
Middle-eastern instruments

Week five was very much in the middle-eastern mould, in some musical mode us Westerners don’t get to hear very often.

All in all, a worthwhile experience.

Dutch Weekend

This weekend, thanks to a friend from Bristol, I did a typically Dutch thing and spent a couple of hours in the sun on a boat.

A boat
One of many other boats going in the wrong direction.
A Long Straight Canal
A Long Straight Canal

We went anti-clockwise from Brouwersgracht, up the Jordaan, past the Rijksmuseum, up the side of Museumplein, across to the Amstel, past Station Centraal then back home.

The Margere Brug, the “skinny bridge”. Legend has it that two sisters on either side of the canal built a bridge so that they could see each other.

Nemo
Nemo, the science museum.
The central library
The central library, the Oba.
Station Centraal
Station Centraal

And so to home.

All in all, a lovely day even if the wind was a little nippy on the open water, despite it being a sunny 20C day. Only a little beer was consumed.

Vermeer exhibition

The Rijksmuseum is local to me so it’s churlish not to take a few hours and visit. The Vermeer exhibition sold out immediately months ago but on a tip-off from a chap on the internet, I risked going and getting a ticket from the desk inside.

The Rijksmuseum is local to me so it’s churlish not to take a few hours and visit. The Vermeer exhibition sold out immediately months ago but on a tip-off from a chap on the internet, I risked going and getting a ticket from the desk inside. It worked! I got a ticket to an exhibition that was really crowded, unlike the Geffen in LA which I mostly had to myself.

In terms of Dutch Artists, for me, Vermeer ranks top, followed by a versatile Van Gogh and a workmanlike Rembrandt. The Rijksmuseum has assembled roughly 2/3 of Vermeer’s surviving works and it was an amazing journey through a life spent painting.

Seeing a lifetime of painting laid out makes you appreciate how he progressed, but also how he used many of the same elements often: viewing through a window or curtain, lit from the left, often solo ladies with a musical instrument or focus item, occasionally a symbolic painting of a map or a cupid.

Het Straatje
Het Straatje. A street scene in Delft, possibly his aunt’s house.
Another view of Delft
The other surviving view of Delft
The Milkmaid. Note the vibrant light from the left as the maid makes, probably, bread pudding, the foot warmer at the back decorated with tiles.
Girl with the pearl earring.
And of course, the Girl with the Pearl Earring. Again, it’s beautifully lit and has excellent use of colour.

That’s a small sample of the paintings on show. I’d heartily recommend a visit to Amsterdam to risk being able to get tickets to the Vermeer exhibition. Having lived close to London’s museums, I can safely say this blows them away.

Climate Certificates

I recently spent a few hours getting these climate certificates. Man, that was depressing. By about 2100 we’re totally screwed. Global temperatures may well have risen by 4C and we’ll have run out of resources like fossil fuels for plastics and rare earth metals for our phones. Never mind the billion or more people who will be displaced by uninhabitable land. See Gaia Vince’s “Nomad Century” for the details in detail. And yet governments are still subsidising oil and gas exploration. It’s like they don’t want us to live.

Oil takes 5x the energy to extract than it used to and we have of it 50 years left. We only have 200 years of Uranium left.

TBH it’s really depressing and makes one want to go off the grid. Or get a job building huge numbers of wind turbines, planting trees or regrowing coral reefs. Wind, solar and water (for now) are renewable resources. We should start using them as much as possible immediately and start rationing the use of expendable resources like oil and gas. I have a Facebook group into which I drop links about climate-related stuff. Denmark is, I believe, almost net zero today. Now let’s get the USA and China to follow. If the money spent on militaries and war was spent on carbon emissions, we’d be golden.

The recent kerfuffle about 15 minute cities is a good one. I’d like to be able to walk, cycle or tram to what I need.

So remember the five Rs: Refuse (don’t buy it), Reduce (do less of it), Reuse, Recycle, Rot (make compost).

Azure DevOps cert

Six months too late, I’ve now been certified in basic Azure DevOps. Top tip: if you wholeheartedly embrace the Microsoft system it works so much better. What surprised me was that GitHub is now well-integrated. I still won’t use Azure for personal stuff since VSCode has connections to everything Open Source I use.

2022 was a crap year.

I can safely say 2022 was a dreadful year for me.

In the macro, the combination of Covid, Brexit and Ukraine conspired to make the U.K. an awful place to be. The utter stupidity of twelve years of conservative rule basically ruined the country. There are now more food banks than ever, energy has become unaffordable for many and many industries are striking to have their pay and conditions reverted to pre-Tory levels.

On the micro level, I conspired to blow up my life. One careless throwaway comment rendered twelve years of what I thought was a happy marriage null and void and it is now in the hands of her solicitors. I was made homeless and ended up camping with friends from a previous life. On the slight upside, I got a job in the Netherlands so skipped there, negotiated the bureaucracy (I hate you, Brexit) and found an apartment in basically the Camden of Amsterdam. I go into the office maybe one day a week, so there’s that.

The swimming pool I used to use is still here, and I got myself a museumkaart which is good for 450 museums here. So far, I can say Van Gogh is great, it’s sad he died so young. Vermeer’s paintings are vibrant. Banksy is inspired.

I can safely say that native Dutch cuisine is pretty awful. Asian food is plentiful and good, however. When they get round to opening it, I’ll be practically living above a Vietnamese banh mi place. Thanks to Duolingo my Dutch is coming on by leaps and bounds and thanks to market traders who speak good English anyhow, I can generally negotiate the market in Dutch.

I’m slightly annoyed that the Dutch prime minister has apologised for slavery but not for the genocide of villages of Taiwanese people.

So that’s my life now. I’ve resurrected a few friendships of survivors from the last time I was here, I’m still cranking out Perl, doing loads of corporate training and negotiating an extremely secure environment. 300 people doing what half a dozen of us did ten years ago, with an interesting mix of nationalities.

That’s my life now.

Buxton

The crescent
The Crescent

It’s a bit unfair to call Buxton a baby Bath, but it is. Built to service the spas by the 5th Duke of Devonshire it’s cute. It has a station with an hourly service to Manchester and beyond, though I suspect it had a much better service back in the day.

Buxton station
Buxton station

It has the obligatory park, lots of pubs and craft beer outlets, some decent restaurants and of course the assembly rooms in the crescent:

The assembly rooms
The assembly rooms ballroom

A pub:

A pub

If you’re in the area, it’s worth a visit.