- CT: Category Theory
- FP: Functional Programming (typically meaning more pure functional programming)
- TFP: Total Functional Programming
- TDD: Type Driven Development (e.g. via Idris or Agda)
- TT: Type Theory
- PLT: Programming Language Theory
Sure, Github wins on the UI. Hands down. But, despite my initial annoyance with Gerrit when I first started using it almost a year ago, I am now a convert. Fully. Let me tell you why.
Note: This is an opinionated (on purpose) piece. I assume your preferences are like mine on certain ideas, such as:
- Fast-forward submits to the target branch are better than allowing merge commits to the target branch. The reason I personally prefer this is that, even if a non-conflicting merge to the target branch is possible, the fact that the review/pull request is not up to date with the latest on the target branch means feature branch test suite runs in the CI pipeline reporting on the review/PR may not be accurate. Another minor point is that forced merge commits are annoying as fuck (opinion) and clutter up Git log histories unnecessarily and I prefer clean histories.
- Atomic/related changes all in one commit is something worth striving for. Having your dev
A few months ago I set this up and here is the write up on it since yesterday, while talking to a fellow Linux user, they found it intriguing.
Any URL I click in Slack, Signal desktop app, or launch via terminal actions should launch into the correct sandboxed, user-profile web browser instance (in precedence order):
https://github.com/<workorg>.*should open in theworkFirefox profile
| inline def CURRENT_YEAR = 2025 | |
| opaque type CurrentOrFutureYear <: Int = Int | |
| object CurrentOrFutureYear: | |
| inline def apply(n: Int) = | |
| inline if (n >= CURRENT_YEAR) n: CurrentOrFutureYear | |
| else compiletime.error("Given year is in the past") | |
| inline def make(inline n: Int): Option[CurrentOrFutureYear] = | |
| Option.when(n > CURRENT_YEAR)(n) |
Similar to ansible command but allows you to use any command that will work in your shell. Not tied to specific
configuration management tooling, just SSH and your default shell on remote systems. Just works. I <3 it :)
Runs commands across potentially many machines. Allows you to organize your servers/VMs/instances into groups very easily.
| #!/usr/bin/env bash | |
| # Purpose: To create a bootable (USB) drive on OSX | |
| # Note: For a NixOS 14.12 ISO (~330MB) to a 512MB USB drive, the last step (rsync) took over 3 minutes. | |
| declare -r platform="$(uname -s)" | |
| if [ "${platform}" != "Darwin" ]; then | |
| >&2 echo "Error: This will not run on ${platform} (anything other than Darwin." | |
| exit 1 | |
| fi |
| # 2007 Copyright Susan Potter <me at susanpotter dot net> | |
| # You can read her software development rants at: https://www.susanpotter.net/software/ | |
| # Released under CreativeCommons-attribution-noncommercial-sharealike license: | |
| # http://creativecommons.org/licenses/by-nc-sa/1.0/ | |
| namespace :memcached do | |
| desc "Restart the Memcache daemon" | |
| task :restart, :roles => :app do | |
| deploy.memcached.stop | |
| deploy.memcached.start | |
| end |
| module Main (main) where | |
| import Data.Unit (Unit) | |
| import Data.Maybe (Maybe (..)) | |
| import Effect (Effect) | |
| import Effect.Console (log) | |
| main :: Effect Unit | |
| main = log "hello world" |