Interview questions for your new employer

Hacking

Following on from my previous post about how to avoid major development speedbumps, here’s a list of interview questions to ask when they think they’re interviewing you and you’re actually interviewing them. You want your employer to help you do your job, right?

  1. Are you using GitHub? Within that, how close to GitFlow are you? Having experienced an awful version control system, this is key. GitHub is really flexible and gives you enough rope to hang yourself in the foot. A fun thing is commenting commits correctly. Google it.
  2. What’s your branching strategy? How long do you expect a branch to live?
  3. Branch lifetime should be of the order of a day. Any longer than that, have a quiet word with your SCRUM master.
  4. How automated are your deployments? Do you create .rpms/.debs? Packages make deployments and rollbacks so much easier. Add YYYYMMddhhmmss to the name so you can keep track of them, or a build number so you can identify them.
  5. Which CI system do you use? If not Jenkins, why?
  6. Test automation is great. It builds, runs tests and creates modules. And anything else that makes your life easier.
  7. What’s your test automation like? It’s part of CI, right? Do you measure test coverage?
  8. CI is also a good time to run code hygiene tests like pylint or perlcritic even if you have them on your commit hook.
  9. How is your test data managed? Do you create a temporary database and populate it or do you have one database and run your tests within a transaction?
  10. Security? How close to the developers is this managed? Separate security departments are often understaffed. Do you keep an eye on the OWASP top ten? Are you religious about escaping strings when composing SQL queries?
  11. How close to continuous delivery are you? How long do rollbacks take? Do you use something like Ansible or puppet to manage your systems? Bonus points for terraform. How fungible are your live servers?
  12. How loosely coupled is your architecture or is it a big ball of mud? This is another thing that burned me recently. With mod_perl potentially going away in some form, parts of the system could have been moved to a new framework.
  13. What other tools do you have and who chose them? Are you running popular systems for monitoring or code review or some open-source system that might wither on the vine?
  14. Are you agile? Do you do SCRUM or KANBAN? Do you have a SCRUM master and a product owner? So many teams think they are agile when they’re merely doing some agile type things sandwiched in a blob of waterfall.
  15. Who authorises changes? Do the developers do it or do you have a separate approvals board? It’s so much better to have decisions made at the lowest level by team members than to be farmed out to some remote change approvers.
  16. What system monitoring do you have? What is your average time to fix?
  17. What is your ticketing system, and why isn’t it JIRA? Does your SCRUM master visualise progress and use all the tools to measure the team performance. Does your SCRUM master measure project velocity?

So there you have it. How to extend an interview beyond the allotted time.

Did I miss anything? Comments, as always, welcome.

Efficient programming

Coming out of a job where I was working on a 20-year old Perl codebase, I’ve got some burns to get off my chest. I’m reading “Accelerate” by Forsgren, Humble and Kim which claims to have scientific backing for what makes for efficient development in a team. In my recent experience:

  1. Use decent version control. To me, that means GitHub. Use a branching strategy to code each branch to a JIRA. Make the branches short-lived, preferably a day. GitHub is stateless. Diffs are resolved at merge-time when pull requests are made. Under NO circumstances use something like Perforce. That is like putting a large speed bump under a low slung car. It’s stateful. Mapping a repo into your filesystem is a pain. Rewinding commits is a royal pain. Ugh.
  2. Release often, releases should be easy. A marker of a high performing team is how frequently they release software. A release should not be confined to one person on the team and take half a day.
  3. Great balls of mud are hopeless. We’ve been writing new software as microservices for a while now, and more recently bundling them up in Docker containers (and if you’re really advanced then using Kubernetes). In the Perl world that means using a framework such as Mojolicious, Catalyst or Dancer with excellent modules like the Template Toolkit for the view and DBIx::Class for the model and not v1 of view software that’s barely been touched for years and v2 exists. It also highly bound to Apache and hard to use elsewhere.
  4. Ongoing support for mod_perl in Apache 2.x is ongoing. It’s already been abandoned in Apache 1.x so I would note that software is doomed at some point.
  5. Be very careful layering software upon software. Or using features that make things opaque. Oh, and having magic variables and not documenting them. For example, you have Puppet. That’s great. Why not layer Heira on top and render most of the puppet documentation useless. Or use a templating system that magically calls in a hierarchy of other templates. Oh, and where does that database handle come from? Somewhere in the bowels of that page startup. Not sure which module.

In summary, I’d say be aware of the speedbumps. How can you improve them?

Ron Weasley’s worst Australian spider nightmare

spiders

Macksville resident Melanie Williams was also shocked by a swarm of spiders climbing the outer wall of her home as they fled for higher ground. “I occasionally see spiders around the place but never anything like that, it was just insane,” she told the ABC.

The spiders outside her home were “horrific” but her neighbour told her there were twice as many inside his garage, she told Guardian Australia.

https://www.theguardian.com/environment/2021/mar/22/horrific-swarms-of-spiders-flee-into-homes-and-up-legs-to-escape-nsw-floods

Poor Ronald.

Bird Friendly Coffee

Bird & Wild coffee

I had no idea this was a thing. Apparently, even our daily cup or two (or several) a day of coffee is helping to screw up the planet. Mass-produced coffee is produced in nice, highly productive rows of coffee plants, which sadly gives a habitat for a quarter of the number of species of birds as when coffee is grown in the shade of mature trees. So we need a bird-friendly coffee.

According to the RSPB:

Shade-grown means that the coffee grows more slowly, requires less water and the need to use any invasive fertilizers or pesticides. This in turn supports greater biodiversity and ensures that the forest in which it’s grown sustains a healthy ecosystem.

And according to Cornell University:

“Over recent decades, most of the shade coffee in Latin America has been converted to intensively managed row monocultures devoid of trees or other vegetation,” Amanda Rodewald, a co-author of the study who is the Garvin Professor and senior director of the Center for Avian Population Studies at the Cornell Lab of Ornithology, said in a statement. “As a result, many birds cannot find suitable habitats and are left with poor prospects of surviving migration and successfully breeding.”

Today, most coffee sold is sun-grown under little or no shade because sun makes coffee bushes grow faster and produce more coffee. This loss of tropical forest biodiversity to a row monoculture harms resident rainforest birds along with their migratory cousins so they all are disappearing along with their rainforest homes. This simple connection between habitat loss, pesticides and fertilizer pollution to intensive coffee farming methods was the impetus for Smithsonian conservation scientists to create the strictest agricultural certification criteria for coffee: their Bird-Friendly certification requires that coffee is organic and that it meets strict requirements for both mature canopy cover and the type of forest in which the coffee is grown. Bird-Friendly coffees are guaranteed to support bird habitat, in addition to fair and stable prices for coffee producers, healthy environments for local communities, and equal access to markets for Bird-Friendly coffee producers.

So there you have it. By having that supermarket, mass produced coffee, you’re helping destroy the planet. Good work! I’ve just bought 1.2kg of their coffee. Sorry, Tesco.

RSPB: https://www.rspb.org.uk/our-work/rspb-news/news/stories/bird-friendly-coffee-wins-ethical-award-top-spot/

Bird and wild coffee: https://birdandwild.co.uk/collections/all-products

Sun-grown vs. shade-grown coffee.

Podcast Marketing

Podcast marketing. From www.freepik.com.

Someone asked me to investigate what goes on behind a podcast and especially podcast marketing. I went down a rabbit hole. This is a summary of the various tips I came across.

Soft Stuff of Podcast marketing

There are a million podcasts, what sets you apart? Is your podcast sticky – what keeps people coming back?

Is your podcast valuable – what do people gain? Is it worth someone’s while listening to it? Can you get them to do podcast marketing for you?

Will your content change their lives in any way? I listen to Brian Cox. He won’t change my life but he’s interesting. I listen to Jim al Khalili. He’s a good communicator

Is your podcast unique? Do the broadcasters have distinctive voices? Do they have experience in the field and can elucidate their points?

Be patient. It can take 6 months to build an audience.

Have awesome guests. Then leverage your guest’s audience. That’s good podcast marketing.

Go on other podcasts (you have expertise, right?).

Collaborate with similar brands.

Solicit feedback. Most broadcast media let you have real-time comments. Later broadcasts still let you leave comments.

Have calls to action. Don’t let your podcast just be passive. Involve your audience. It doesn’t have to be The Great British Bird Watch. Something smaller, local and relevant.

Create a regular release schedule (and therefore a planned calendar of guests). Spam all the academics and figureheads in your area and get them to participate with their specialties. Build a calendar.

The show shouldn’t be explicit marketing for your products or services.

Whine about getting more subscribers in your podcast.

Make sure your podcast has a good strapline.

Hard stuff

Have you got a good recording quality? Drape lots of blankets around or mattresses. A lot of the sciencey podcasts I watch or listen to have people in their attic rooms and the sound is really echoey. Don’t do that. Equally, have a decent microphone. The one on my PC laptop is pretty bad, the one on my Apple headphones is pretty good.

Put your unedited podcasts on Patreon (@robinince does this). You might want 30 minutes out into the public domain, but you might get 60 minutes of content from your guest. Let people pay for access.a

Got a decent editor for audio? I’ve seen Audacity recommended. Apparently it records too.

Do you want your podcast to be audio or video? If it’s video, convert video to YouTube. Do live broadcasts then upload to YouTube in perpetuity. Pro zoom is up to £480/year. There’s always Microsoft Teams.

Start with three episodes. (People hate finding only one). This popped up in a couple of listicles I read. Apparently, people hate finding a good podcast with only one episode.

Get an optimised web site. https://www.buzzsprout.com/ seems cool. $12 for 3hrs per month. I’m sure there are more out there. The site should be SEO optimised.

Promote on social media (@robinince is big on twitter). While we’re talking money, look at HootSuite for posting to many channels. The professional version for posting to up to 10 social accounts is £39 per month.

Edit: https://anchor.fm/ appears to be a decent place to host, is free and owned now by Spotify.

Obviously you should have an RSS feed but I’ve found that less than useful. For me, most useful is an email with a link to the podcast with a calendar gizmo so it goes in my diary, URL and all. Also, I hate secret podcasts that send me the URL shortly before they go live. Why are they trying to hide their podcast?

Put the podcast page URL in your email .sig. That way, any time you send an email, your podcast gets out there.

Create an email newsletter. (I think this is important). A lot of the museum podcasts I view/listen to prompt me from their mailing lists. Mailchimp is the gold standard but there are others. The classic original is mailman. Many of the podcasts I listen to, I listen to because I’m prompted by an email.

Sell merchandise maybe if you have a strong visual brand. Cafépress has worked well for us.

Look at analytics. These guys seem switched on: https://castos.com/understanding-podcast-analytics/ $190-$490 their service comes in at per year.

Got a photographer on the team? (Instagram can be a good channel).

It looks like that for me, the Apple podcasts app is the nexus for me, but there are lots of other PodCasts out there that don’t fit that format. Expecially scheduled ones.

Submit to podcast aggregators and directories:

  • iTunes (allegedly drives 70% of podcast traffic)
  • Spotify
  • Google Play
  • TuneIn
  • iHeartRadio
  • SoundCloud
  • Podbay
  • Podtail
  • Overcast
  • Stitcher
  • Podcast Addict
  • PodcastLand (your podcast is automatically listed here if it’s in iTunes)
  • Castro
  • Podcast Republic
  • Downcast
  • Podcasters’ Support Group
  • Bello Collective
  • Podcasting Technology Resource Group
  • TuneIn
  • Podcast Hackers (this is our group – join us!)
  • /r/podcasts on Reddit
  • The New York Times Podcast Club
  • Podcasting (Meetup)
  • Producing Podcasts (Apple)
  • Podcasters’ Hangout

Cardiff Wetlands

I’d found out about the Newport wetlands and after a kerfuffle on Reddit, found there was a Cardiff Wetlands down in the bay. We went and had a mosey. That was disappointing. It’s a patch of land inside the barrage, probably left over from a dock back in the day. Despite the enthusiasm of the signposts, the wildlife was disappointingly vanilla: ducks, swans, tits, crows, magpies and so on. The air was reassuringly noisy, but if there were exotic birds, they were shy. It’s worth a little walk. Once. Enjoy some pictures.

previous arrow
next arrow
previous arrownext arrow
Slider

Compiling a Java project with Maven

Totally unfamiliar territory for me. I have a Maven install unpacked. How to get Jenkins to see it? Answer: go to Global Tool Configuration, and set your Maven installation to *not* install automatically, then set MVN_HOME to where your install is. Simple!

Brexit

The day after the vote when the result was revealed, my reaction was incandescent and aghast. How could 52% of the people who voted be so daft? Turns out it’s a common delusion. My acceptance speech as leader of an independent political party:

“My Lords, Ladies and Gentlemen,

We are now in the privileged position of having got rid of the Tories and their austerity agenda and are now in a position to move this country forward again. BTW, The word Tory derives from the Middle Irish word tóraidhe; modern Irish tóraí; modern Scottish Gaelic Tòraidh: outlaw, robber or brigand, from the Irish word tóir, meaning “pursuit”, since outlaws were “pursued men”.

David Cameron’s ill-advised referendum to save the Tory party disenfranchised 48% of the population, and in the subsequent years and we have since been fed a steady stream of lies by leaver politicians and press.

Unlike the squirrels in leavers heads, I treasure the pillars of being in the EU. I like having free trade with 27 other countries. I like that the Good Friday agreement, which ended what was, in other words, a civil war, is enshrined in an open border. Northern Ireland has come on in leaps and bounds. My neighbour will probably go back to Switzerland or Germany if the university research funding dries up.

The bullshit about the “unelected beaureaucrats” is exactly that. We elect MPs to the European parliament and we get a veto over any legislation. We have rejected remarkably little.

I like the fact my human rights are enshrined by law. The Tories in their Brexit panic threatened to do away with it.

I waited in vain for the £350 million a week for the NHS. The Tory promises of more police or more money for the NHS doesn’t even make a dent in the damage done by ten years of austerity. Turkey was never going to join the EU, more’s the pity.

If you Google “leaver lies” you’ll find plenty of collated lists. If an unworkable Brexit had gone through, I’d have been off to Asia.

So anyhow, here’s to a future of being part of one of the largest free trade areas in the world, Schengen and the Euro.”

Homoeopathy

Homeoepathy[1] is one of the banes of my life on Quora. There’s a fair chunk of people, mostly in India but not limited to, who think that sugar pills or water cure diseases or cancer. So much wrong. Let’s examine the evidence. I’ve also blogge about it before.

From Wikipedia: Homeopathy or homœopathy is a system of alternative medicine created in 1796 by Samuel Hahnemann, based on his doctrine of like cures like (similia similibus curentur), a claim that a substance that causes the symptoms of a disease in healthy people would cure similar symptoms in sick people. Once you’ve diluted it so there’s nothing of the original left and bashed it against a leather-bound book on each dilution of course.

Remember, this was from an era when a placebo was better than seeing a doctor. You stood more chance of surviving by having a drink of water. The ludicrousness of Homoeopathy was illustrated by the group of people who all took an overdose, obviously with no ill effects. In the UK, the NHS is trying hard to phase out its use. Sadly, the future king of the UK is still a sucker.

That’s not to say Homoeopathy can’t be dangerous. A chap ended up damaging his liver when his “remedy” turned out to contain alcohol. Quackwatch is always worth a read on the subject. I’ve previously pointed out the Smithsonian article that 1800 studies that say it doesn’t work.

The final entertainment is the occasional attempted rebuttal by a homoeopath. Apparently, I’m in the pay of Big Pharma (I wish) or I believe everything I read on the internet.

[1] And now I can spell it right! Thanks Grammarly!

Getting started with Amazon AWS

So this is all about getting started with AWS. I’ve been using AWS tangentially for about five years, almost always EC2 instances, so not really pushing the envelope. I’d really like to get my head round serverless and lambdas but I’m having a bit of a conceptual problem trying to work out a use case to do at home.

I have done the Udemy “AWS Certified Cloud Practitioner Practice Exam” which was quite frankly brutal, demanding 90% for three papers. First time through each I got 70-80% which I thought wasn’t too shabby but obviously not good enough for their arbitrary cutoff. The second time through I got >90% which was nice.

The biggest takeaway I have is once you’ve created a root account, create a user account and only give it only the privileges it needs. Security you know!

This is the list of white papers I’ve ingested to far. I hope it proves useful.

AWS Overview

https://d1.awsstatic.com/whitepapers/aws-overview.pdf

This is the motherlode. If you want an overview of all available services on AWS, this is the place to start. For us in the perl world, that’ll be git, CI/CD pipelines and EC2/Fargate. If you’re jiggy, docker too. At this point for most of that, I like Gitlab, especially since M$ took over github.

AWS Well Architected Framework

This takes the overview one step further. Apparently as you partition your app vertically, VPSs are the trick. Security again.

https://d1.awsstatic.com/whitepapers/architecture/AWS_Well-Architected_Framework.pdf

Jenkins on AWS

In a good chunk of the contracts I’ve done, the developers have been good boys and written tests, but there was no way of automatically running them. Jenkins fixes this. Better still using the Perl TAP output formatter we can get a nice graph of the number of tests increasing. If you like, you can run Bamboo or GoCD but I’ve not had happy experiences with either of these.

https://docs.aws.amazon.com/aws-technical-content/latest/jenkins-on-aws/jenkins-on-aws.pdf

Practising Continuous Integration and Continuous Delivery on AWS

Taking Jenkins one step further. In an ideal world code gets committed to master and then gets made live. Your process may vary. Oh, and database versioning is Hard. I’m reliably informed squitch is the one for this.

https://d1.awsstatic.com/whitepapers/DevOps/practicing-continuous-integration-continuous-delivery-on-AWS.pdf

Development and Test on Amazon Web Services

More on the subject.

https://d1.awsstatic.com/whitepapers/aws-development-test-environments.pdf

Overview of AWS Cloud Adoption Framework

Similar overview.

https://d1.awsstatic.com/whitepapers/aws_cloud_adoption_framework.pdf

AWS DevOps

Taking a more DevOps approach to AWS.

https://d1.awsstatic.com/whitepapers/AWS_DevOps.pdf

DevOps for startups

More on the subject of DevOps.

https://blog.thesparktree.com/devops-for-startups

Docker

Now we start getting to the docker meat. I’m not sure how applicable this is to a clunky monolithic Perl framework. I dockerised a simple Catalyst app and it was HUGE. Back to CGI.pm?

https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-basics.html#docker-basics-create-image

Deploy Docker containers

Now we get to the meat.

https://aws.amazon.com/getting-started/tutorials/deploy-docker-containers/?trk=gs_card

Cost optimisation

A common whinge I’ve heard is that unless you’re careful and out of the free first year tier, is that suddenly your AWS usage blooms into thousand of pounds a month. Having been charged £15 a month for static IP I can well believe it.

https://d0.awsstatic.com/whitepapers/Cost_Optimization_with_AWS.pdf

Considerations for the Beginner Serverless Developer

Epsagon have a good trove of blogs too.

https://epsagon.com/blog/considerations-for-the-beginner-serverless-developer/

The Most Popular Deployment Tools For Serverless

https://epsagon.com/blog/the-most-popular-deployment-tools-for-serverless/

5 Ways To Gain Serverless Observability

https://epsagon.com/blog/5-ways-to-gain-serverless-observability/

Yubl’s road to Serverless architecture — Testing and CI/CD

https://theburningmonk.com/2017/02/yubls-road-to-serverless-architecture-part-2/

Serverless observability, what can you use out of the box?

https://theburningmonk.com/2018/04/serverless-observability-what-can-you-use-out-of-the-box/

Our Journey from Heroku to Kubernetes

Kubernetes land is still a mystery to me. Every way I’ve tried to approach it, from linux to Mac I’ve been thwarted. Oh well, one day it’ll be mature enough and actually work for me.

https://www.salsify.com/blog/engineering/our-journey-from-heroku-to-kubernetes

AWS custom runtime for lambda really works: How I developed a lambda in Perl

Now we get to some interesting stuff. It seems hideously convoluted to be but still. It’s a Perl lambda!

https://medium.com/@avijitsarkar123/aws-lambda-custom-runtime-really-works-how-i-developed-a-lambda-in-perl-9a481a7ab465

An alternative Perl lambda

A different approach.

https://github.com/moznion/aws-lambda-perl5-layer

Using the AWS Serverless Application Model (AWS SAM)

https://docs.aws.amazon.com/lambda/latest/dg/serverless_app.html

What Is the AWS Serverless Application Model (AWS SAM)?

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html

Considerations for the Beginner Serverless Developer

https://epsagon.com/blog/considerations-for-the-beginner-serverless-developer/

Serverless and startups, the beginning of a beautiful friendship

https://aws.amazon.com/blogs/aws/serverless-and-startups/

So that’s what I have so far. I think most of the time, we’ll go EC2 and then RDS. I’d put Cloudflare on the front unless I particularly needed a Route53 feature. Serverless is still in the land of dragons and Perl isn’t spectacularly well supported. I’d like to see a world where the code pipeline is under Amazon as well as horizontal scaling with the load balancers.