What’s a code quality meta tool? It’s a tool that lets you orchestrate many linting and formatting tools to operate on an entire project which may contain many languages. Examples include tidyall (which I maintain), pre-commit, lefthook, husky, overcommit, and precious (my new project in this space). It’s worth noting that only tidyall and precious describe themselves as being focused on tool orchestration. The others all describe themselves as systems for managing Git hooks.
One of my favorite bloggers, Scott Alexander of Slate Star Codex, regularly publishes predictions for the year. Here are his predictions for 2020. I thought it’d be fun to make some predictions of my own, following the same rules and a similar format. In 2021 I’ll rate my predictive success and maybe make some more predictions. Rules (copied from SSC): all predictions are about what will be true on January 1, 2021.
Sorry, couldn’t resist the pun. First, a bit of background. Tidyall (aka Code::TidyAll) was first released in June of 2012 by Jon Swartz. It’s a code quality meta-tool that orchestrates other code quality tools. With a single configuration file you can enable many different tools for a single project. By “code quality tools” I mean both pretty printers and linting tools. Each tool is supported via a plugin, implemented as a Perl class, that knows how to talk to that tool.
As part of my ci-perl-helpers project I generate a whole bunch of Docker images. Specifically, every time I push to a branch (including master) or a tag, I make 96 images. There is one base image and then one image for each specific version of Perl (5.8.9, 5.10.1, 5.12.0, etc.) plus a blead image. For each version of Perl I build a perl binary with and without threads. Obviously the number of images will only grow over time.
If I had grandchildren … GC: “Grandpa, tell us about the plague times of 2020.” Me: “Well, I guess you’re finally old enough to hear the real story of what we lived through. It was a dark, dark time. I saw a man gut another man for a square of toilet paper. A woman burned her closest friend alive over a disinfectant wipe. If you had hand sanitizer you were a king among men.
Added on 2020-02-12: For reference, I’m 6'7" (200cm). I added BMI numbers whenever I mention my weight to clarify this. Don’t worry, I’m not promoting anything. I have no diet plan or supplements1 to sell you. At my peak weight some time in the past I weighed 305 pounds (BMI 34.4), according to the scale at my doctor’s office. As of recently (I think yesterday) I’m down to around 218 (BMI 24.
I’m working on what I plan to be the next version of my Perl CI Helpers project and it will break any existing use of said project. Fortunately, I’ve been tagging releases and you can easily pin your consumption of the project to a specific tag! If you want to pin to the last release, you can do this in your config like this: resources: repositories: - repository: ci-perl-helpers type: github name: houseabsolute/ci-perl-helpers ref: refs/tags/v0.
Yesterday I released a trial version of Code-Tidyall. This version contains a change based on a PR by Kenneth Ölwing that (I hope) prevents tidyall from munging line endings when it processes a file. The problem the PR fixes can occur when you have a file with Unix line endings and you run tidyall on Windows. Most tidyall plugins that do tidying (as opposed to linting) will open the file and rewrite it using Perl.
When my great-grandmother was growing up in the Outer Lumbago Republic she’d often … Just kidding. Here’s the recipe without twenty paragraphs of irrelevant SEO-optimizing blather: Ingredients Olive oil 2 medium onions 1 bag of vegan ground beef (Gardein, Beyond, you choose) Some spices you like 16-24 ounces of frozen carrots, corn, and peas 1 tub of vegan cream cheese of your choice 12 ounces of cream of something soup (I like Imagine Foods Creamy Broccoli) 1 big ol' bag of tater tots (Ore-Ida Extra Crispy are good) 1 package of vegan cheese shreds (Parmela and Daiya both work) Instructions Chop the two onions and sautee them in olive oil until they are browned.
Many years ago, Travis CI was the only game in town for FOSS project CI, because it was the only service that offered unlimited free builds for FOSS projects. Many projects took Travis up on the offer, and I set up testing for all of my Perl projects there. Switching to CI was a huge improvement for many projects across many languages, and I hugely appreciate the impact Travis has had on my FOSS work.