20190923

Read

  • How Did Things Go Right? Learning More from Incidents at Netflix: Ryan Kitchens: https://www.infoq.com/news/2019/07/netflix-learn-from-incidents/. Good ideas. Often no root causes, there’s much to be learned from successful system interactions / migrations, keep an eye on how hard people have to work to keep the system up. Many pointers for further reading.

Jenkins

I’m learning more and more about Jenkins pipelines. Really cool. Today I created a job whose purpose in life is trigger other jobs with certain parameters set as part of an end-of-sprint delivery pipeline. The script {…} and build {…} directives were particularly handy. This trick is to keep everything as simple as you possibly can.

My current convention is to name jobs that should only be run by other jobs (not people) using lower-case-words-separated-by-hypens.

20190918

Learn

Read

  • Property based testing : https://increment.com/testing/in-praise-of-property-based-testing/. An interesting idea. Generalize some of the tests we right to describe sets of input, not specific examples. (An specific example passing doesn’t necessarily tell you whether your behaviour is right. You may have missed a case that would produce an error.) Is this fuzz testing?

20190916

Read

  • Bit of a memory refresh working with docker. Containers run as root. Mounting a dir into a tools container to generate output stored in the file system saves data as root. This was making Jenkins unhappy. 🙂
  • I create env variables in Jenkins to be able to use values across all stages (I can compute its value in a stage script {} block)
  • I can pass parameters around from the Jenkinsfiles. Sometimes pragmatism trumps security and other concerns.

Learn

20190915

Learn

  • Mounting an already primed Maven cache into a Maven build container makes a build much faster. Skips the dependency fetch step because they’re already there. It does require that you have a stable container host that builds run on … (Appropriate for ec2, ecs, but not Fargate. Spot or no probably doesn’t matter. The local .m2 cache can be rebuilt by the first build run on an instance.)

Read

  • https://www.hostedgraphite.com/blog/incident-postmortem-template : Summary, what happened, what went right, what went wrong, how are we going to improve. I like this framework!

20190914

Learned

  • Jenkins pipelines have 2 maps available: params, currentBuild that are hydrated by Jenkins itself and installed plugins on a job run

Read

  • https://www.schneier.com/blog/archives/2019/09/more_on_law_enf.html : More about intentionally adding backdoors to security tools. (This is still being talked about! Madness!)
  • https://technology.riotgames.com/news/down-rabbit-hole-performance-monitoring : keeping an eye on avg frame rates across game client releases by various dimensions. Process of finding the key metric to watch from a user’s point of view is neat.
  • https://jenkins.io/doc/book/pipeline/getting-started/

20190913

Learned

  • Certain kinds of environment variables can be initialized in groovy script before a pipeline definition in Jenkins. These vars can be used in the pipeline like params and things defined in the environment {} block. (Been spending a bit of time with Jenkins lately. 🙂
  • Maven is pretty cool. Starting with a generated project gets you lots of stuff for free … a file system layout, test and packaging strategies, dependency loading, hooks into various build lifecycle stages.

Read

  • Finished Data and Goliath. Excellent book! (What’s next. :))

20190910

Learned

  • Developer experience is so important. Getting this right feeds directly into velocity and happiness.
  • Not all secrets are equally important to keep hidden at the cost of user experience.
  • What’s the simplest thing I can do that will get me closer to my goal. Do that.

Links

  • https://thedailywtf.com/articles/The-Speedup-Loop
  • https://charity.wtf/2019/09/08/reasons-not-to-be-a-manager/