Skip to content

Instantly share code, notes, and snippets.

View inanna-malick's full-sized avatar

Inanna Malick inanna-malick

View GitHub Profile
@inanna-malick
inanna-malick / eval.rs
Last active July 17, 2022 06:57
in haskell idioms, fused ana and cata - based on https://gist.github.com/Gankra/db892282bc7d579a0afe83c965f2320b
pub fn generate_layer(x: Box<ExprAST>) -> Expr<Box<ExprAST>> {
match *x {
ExprAST::Add(a, b) => Expr::Add(a, b),
ExprAST::Sub(a, b) => Expr::Sub(a, b),
ExprAST::Mul(a, b) => Expr::Mul(a, b),
ExprAST::LiteralInt(x) => Expr::LiteralInt(x),
}
}
pub fn eval_layer(node: Expr<i64>) -> i64 {
@inanna-malick
inanna-malick / transitive_frontier.rs
Last active January 1, 2021 05:04
Simple tool for inspecting how transitive dependencies make their way into a cargo workspace
#!/usr/bin/env run-cargo-script
//! requires `cargo install cargo-script`
//!
//! ```cargo
//! [dependencies]
//! guppy = "0.6.2"
//! structopt = "0.3.21"
//! serde_json = "1.0"
//! serde = "1.0"
//! toml = "0.5"
@inanna-malick
inanna-malick / build_output.md
Last active March 30, 2020 18:37
rust phf bug minimal example
inanna@inanna-x1-carbon:~/dev/phf_bug_demonstrator$ rustup default 1.40.0
info: using existing install for '1.40.0-x86_64-unknown-linux-gnu'
info: default toolchain set to '1.40.0-x86_64-unknown-linux-gnu'

  1.40.0-x86_64-unknown-linux-gnu unchanged - rustc 1.40.0 (73528e339 2019-12-16)

inanna@inanna-x1-carbon:~/dev/phf_bug_demonstrator$ cargo build
   Compiling phf_bug_demonstrator v0.1.0 (/home/inanna/dev/phf_bug_demonstrator)
    Finished dev [unoptimized + debuginfo] target(s) in 0.14s
@inanna-malick
inanna-malick / ana.rs
Created September 17, 2019 16:16
terrible idea - anamorphism is not idiomatic in rust. I think I need to use refcell (mut pointers up/down tree)
//stack-safe anamorphism (unfolding change). Builds a tree layer by layer.
pub fn ana<X>(f: impl Fn(X) -> Tree<X>, seed: X) -> FixTree {
let mut instructions: Vec<Option<X>> = vec![]; // depth first, Some == add child w/ seed, None == back a level
let mut path_to_root: Vec<&mut Vec<Box<FixTree>>> = vec![]; // pointer to children of focused node
// ^ this breaks it, requires multiple borrows... drop this in a gist (or use refcel, rain says to do so)
let root = f(seed);
match root {
Tree::Leaf(n) => FixTree(Tree::Leaf(n)),

Am I spending my neuroplasticity wisely?

I’ve been setting up structured journal entries recently - quick morning notes, weekly and quarterly retrospectives, etc. As part of this I’ve been curating a list of questions to help self-assess how I’m doing at any given time.

Some of these questions are simple bio-maintenance checklist entries: how’s my diet? Am I getting enough sleep? Are my cholesterol and triglyceride levels normal? Have I been getting enough vitamin D? Have I been doing resistance exercise recently? Cardio?

Then come some less concrete questions: have I been keeping myself intellectually engaged? Have I been engaging in some regular form of artistic creation? When’s the last time I did something nontrivial just for the fun of it? Aside from work stuff, when’s the last time I finished a project? Speaking of work, how are things there? Attempts to answer that question could fill multiple blog posts, so for now I’m going to focus on a specific angle pointed out by

@inanna-malick
inanna-malick / XResources
Created April 3, 2018 22:29
nixos vm config stuff
URxvt.scrollBar: false
urxvt*termName: rxvt
urxvt*font: xft:uushi:pixelsize=16
urxvt*boldFont:
urxvt*background: #000000
urxvt*foreground: #666699
urxvt*cursorColor: #6699CC
urxvt*colorBD: #CCCCFF
!Visiblue
@inanna-malick
inanna-malick / zshrc
Last active April 26, 2017 06:41
zsh for home meerkat minibox
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH=/home/pk/.oh-my-zsh
#needs to be before theme
POWERLEVEL9K_MODE='awesome-fontconfig'
# git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
@inanna-malick
inanna-malick / vimrc
Created January 23, 2017 20:29
dotfiles
" install plugins. (requires running :PlugInstall)
" Specify a directory for plugins (for Neovim: ~/.local/share/nvim/plugged)
call plug#begin('~/.vim/plugged')
" Make sure you use single quotes
Plug 'altercation/vim-colors-solarized'
Plug 'scrooloose/nerdtree'
Plug 'scrooloose/nerdcommenter'
Plug 'scrooloose/syntastic'
@inanna-malick
inanna-malick / function_vs_partial_function.scala
Last active February 4, 2016 04:14
{n => n + 1} and {case n => n +1} are almost but not quite the same thing
scala> val f: Function[Int, Int] = { n => n + 1 }
f: Function[Int,Int] = <function1>
scala> val f: Function[Int, Int] = { case n => n + 1 }
f: Function[Int,Int] = <function1>
scala> val pf: PartialFunction[Int, Int] = { n => n + 1 }
<console>:10: error: type mismatch;
found : Int => Int
required: PartialFunction[Int,Int]
@inanna-malick
inanna-malick / pusher.scala
Last active August 11, 2016 00:27 — forked from gre/pusher.scala
Using Pusher API with Play framework in scala for publishing events
//send messages via Pusher API in play 2.4
import play.api.libs.json.{ Writes, Json }
import play.api.libs.ws.{ WSResponse, WSClient }
import play.api.libs.ws.ning.NingWSClient
import java.security.MessageDigest
import java.math.BigInteger
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
import scala.concurrent.{ ExecutionContext, Future }