Skip to content

Instantly share code, notes, and snippets.

View emilypi's full-sized avatar
🥝
hot girl summer

Emily Pillmore emilypi

🥝
hot girl summer
View GitHub Profile
@emilypi
emilypi / base.hs
Last active September 6, 2024 05:43
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleContexts #-}
module MyLib where
import Data.Kind (Type)
-- This is how we're normally write a recursive list data structure
--
data List a = Nil | Cons a (List a)
@emilypi
emilypi / modding.md
Last active August 1, 2023 15:58
Moderation Principles that actually scale

General Moderation Principles

I recommend a few basic principles for moderation that I've enjoyed over the years. Hopefully it will preserve both everyone's sanity on the mod team, as well as the sanity of the people whom moderation decisions affect. This is the first time moderating large communities for some of you, and this kind of thing isn't spelled out, so here:

  1. USE A LIGHT TOUCH. Unless discussions are explicitly toxic (in the therapy-speak sense, a flamewar is going on between individuals, hate-mongering is rampant etc.), the only moderation policy that scales is a light touch. You cannot, and I need to stress this, dictate the course of conversation by applying force. It simply never works out. The discussions are alive in a sense, and will carry on in other threads or over a period of time between individuals regardless of what you do.

  2. DON'T BE CHRONICALLY ONLINE. While moderation discretion is the basis for individual decisions, we should never find ourselves consistently pol

@emilypi
emilypi / tea.txt
Created July 28, 2022 16:33
Teatism
Info for beginners:
Different kinds of teas and how they're different
https://en.wikipedia.org/wiki/Tea_processing
https://web.archive.org/web/20190321060054/https://www.teadiscussion.com/types/index.php
WHERE DO I BUY TEA?
>Places to avoid
Teavana (overperfumed, expensive, shit quality), starbucks (same shit), any place that sells lots of flavored tea that isn't french.

Cabal Updates

State of the Cabal

Cabal has been going through some changes over the past 6 months. COVID-19 left a major impact on the status of maintenance for Cabal and cabal-install. Due to various life events, routine maintenance fell on the shoulders of a single individual, resulting in a Cabal-3.4.0.0 and cabal-install-3.4.0.0 release that took a human toll. As a result, the library and the tool were left without a primary maintainer as of its release. I mention these things, because they're a nasty part of the OSS process, and it's good to be aware of them, but I'd also like to highlight in particular why Cabal (resp. cabal-install) has had such a rough time over the past few years. Cabal (resp. cabal-install) is a very difficult library to maintain, and carries with it a deep burden in terms of legacy code (the breadth of GHC's supported by the library stretches back to GHC 7.6, released in April, 2013). It also, historically, has had a very colorful history in terms of the ease of contri

{-# LANGUAGE NoImplicitPrelude #-}
module Homs where
(.) :: (b -> c) -> (a -> b) -> (a -> c)
g . f = \a -> g (f a)
-- the class of covariant functors
class Functor f where
fmap :: (a -> b) -> f a -> f b
-- laws: fmap f . fmap g ~ fmap (f . g)
@emilypi
emilypi / math.el
Created April 13, 2021 21:38
Mathy keybindings
;;; Code:
(global-set-key (kbd "M-g a") "α")
(global-set-key (kbd "M-g b") "β")
(global-set-key (kbd "M-g g") "γ")
(global-set-key (kbd "M-g d") "δ")
(global-set-key (kbd "M-g e") "ε")
(global-set-key (kbd "M-g z") "ζ")
(global-set-key (kbd "M-g h") "η")
(global-set-key (kbd "M-g q") "θ")
(global-set-key (kbd "M-g i") "ι")
-- monoids
type Unit = ()
type a × b = (a,b)
type a → b = (->)
class Monoid a where
mempty :: Unit → a
mappend :: a × a → a
@emilypi
emilypi / graded1.hs
Last active December 26, 2020 17:32
Graded semigroups/monoids/groups - two versions
{-# language FlexibleInstances #-}
{-# language DefaultSignatures #-}
{-# language RankNTypes #-}
{-# language MultiParamTypeClasses #-}
{-# language QuantifiedConstraints #-}
module Data.Group.Graded where
import Data.Functor.WithIndex
import Data.Group
import Data.Map (Map)
{-# language TypeOperators #-}
{-# language PatternSynonyms #-}
{-# language MultiParamTypeClasses #-}
{-# language FlexibleContexts #-}
{-# language FlexibleInstances #-}
{-# language ViewPatterns #-}
module Sub where
import Control.Lens

Managing Haskell

blah blah blah more things here

From my experience fundraising in Haskell, companies who use it all seem to have suffered from the same two flavors of problem:

  1. A rockstar comes in, dumps mindblowing code everywhere that dazzles the rest of the team and fools the product leads with pseudo-productivity until the rockstar leaves or finally wakes up. Cue the rest of the team death-marching for the next year or few years as the team attempts to juggle feature additions with excising or unraveling the impenetrable yarn-tangle of semantic misdirection.

  2. An especially productive senior or team lead spends their time on refactoring and generally spinning their wheels with respect to product delivery, and then fails to deliver on time, or at all. Cue the rest of the team struggling to keep up with the refactors. The team's knowledge of the state of the product suffers, confusion about goals sets in, the senior/lead effectively becomes an anti-team player, throwing curveballs at the rest o