Skip to content

Instantly share code, notes, and snippets.

View eborden's full-sized avatar

Evan Rutledge Borden eborden

View GitHub Profile
eborden /
Created February 10, 2023 22:19

Keybase proof

I hereby claim:

  • I am eborden on github.
  • I am nearpodevan ( on keybase.
  • I have a public key ASC59SSNtZqmjph9mOiBNF-2xlgpCzP6EQ5SpmJFbzcjWQo

To claim this, I am signing this object:

eborden /
Last active January 15, 2021 02:57
My Mom's South Philly Cheesecake


My Mother worked as a special needs teacher at Saint Catherine's school in Philadelphia. She became friends with a parent of two autistic twins. This mother was South Philly in every way. Big hair, big attitude, larger than life. She shared this recipe with my mother and it has been a staple in our household.


  • 1 lb cream cheese
  • 1 lb ricotta cheese
  • 6 eggs
eborden / haskell-extension.log
Created November 17, 2020 23:35
Failure from VS Code Haskell extension
[client] run command: "/home/eborden/.config/Code/User/globalStorage/haskell.haskell/haskell-language-server-0.6.0-linux-8.8.4 --lsp -d"
[client] debug command: "/home/eborden/.config/Code/User/globalStorage/haskell.haskell/haskell-language-server-0.6.0-linux-8.8.4 --lsp -d"
[client] server cwd: undefined
haskell-language-server version: (GHC: 8.8.4) (PATH: /home/eborden/.config/Code/User/globalStorage/haskell.haskell/haskell-language-server-0.6.0-linux-8.8.4) (GIT hash: 372a12e797069dc3ac4fa33dcaabe3b992999d7c)
Starting (haskell-language-server)LSP server...
with arguments: LspArguments {argLSP = True, argsCwd = Nothing, argFiles = [], argsShakeProfiling = Nothing, argsTesting = False, argsExamplePlugin = False, argsDebugOn = True, argsLogFile = Nothing, argsThreads = 0, argsProjectGhcVersion = False}
with plugins: [PluginId "brittany",PluginId "eval",PluginId "floskell",PluginId "fourmolu",PluginId "ghcide",PluginId "hlint",PluginId "importLens",PluginId "moduleName",PluginId "ormolu",PluginId "
eborden /
Created May 5, 2020 01:40
scrum vs Kanban

IMHO, Kanban and SCRUM attempt to achieve the same goal, throughput. However they put systemic pressure on different points of organizational breakdown.

SCRUM takes the stance that communication is where throughput suffers. Without effective communication, via iterative planning, efficiency is lost.

Kanban believes focus is the point of efficiency loss. By moving tasks through work limited stages a team gains laser focus which should encourage high throughput.

That doesn't mean that SCRUM doesn't value focus. It utilizes story points and velocity to encourage tightly focused iterations.

Nor does Kanban ignore communication. Boards communicate work status and well designed work in progress limits on your board should encourage communication and collaboration amongst team members.

eborden / FreshVar.hs
Last active September 24, 2019 22:41
Shared values that always stay fresh
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE NamedFieldPuns #-}
module Control.Concurrent.FreshVar
( FreshVar
, newFreshVar
, newPreemptiveFreshVar
, readFreshVar
eborden /
Last active May 16, 2019 14:43
Run ghcid in a monorepo via stack
project=$(basename "$(pwd)")
# build dependencies
build_deps="stack build $project --fast --pedantic --dependencies-only --interleaved-output"
# restart on changes in other packages
restarts=$(find ../. -maxdepth 1 -type d \
-not -name "$project" \
-not -name .stack-work \
-not -name . \
$ ./take-throw-test.hs
eborden / AVerbalArithmetic.hs
Last active March 9, 2018 20:44
A brute force solution to verbal arithmetic
import Control.Monad (guard)
import Data.Bifunctor (second)
import Data.Foldable (for_, traverse_)
import Data.List (nub, permutations, unwords)
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Maybe (fromMaybe)
test :: IO ()
eborden / stretch.service
Last active November 8, 2017 22:51
Insecure stretching reminder using giphy, jq and systemd timers
Description=Stretching Reminder