Skip to content

Instantly share code, notes, and snippets.

View program-analysis.md

Program Analysis, a Big Happy Family

The idea behind program analysis is simple, right? You just want to know stuff about your program before it runs, usually because you don't want unexpected problems to arise (those are better in movies.) Then why looking at Wikipedia gives you headaches? Just so many approaches, tools, languages 🤯

In this article I would like to give a glimpse of an overarching approach to program analysis, based on ideas from abstract interpretation. My goal is not to pinpoint a specific technique, but rather show how they have common core concepts, the differences being due mostly to algorithmic challenges. In other words, static analysis have a shared goal, but it's a challenge to make them precise and performant.

Code is meant to be executed by a computer. Take the following very simple function:

fun cantulupe(x) = {
@xmnlab
xmnlab / MetaDSL-Example.ipynb
Created May 25, 2020
MetaDSL-Example.ipynb
View MetaDSL-Example.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@brendanzab
brendanzab / weird-core-language.md
Last active Aug 12, 2020
🚧 A graph-based core for a dependently typed language. 🚧
View weird-core-language.md

A graph-based core for a dependently typed language

Abstract

An overly-ambitious attempt to re-think the core calculus of dependent type theory by basing it on graphs as opposed to lambdas, Π-types, Σ-types, etc. The hope is that this might allow us to investigate dependency more closely, and allow us to refine programs to target different environments in an easier way than with traditional programming representations.

Introduction

@dylanscott
dylanscott / update_docker.sh
Last active May 30, 2017
Travis Update to Docker 1.13
View update_docker.sh
#!/usr/bin/env bash
set -euo pipefail
sudo sh -c 'echo "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main" > /etc/apt/sources.list.d/docker.list'
curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add -
sudo apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-get update
sudo apt-get -y install "docker-engine=1.13.1-0~ubuntu-$(lsb_release -cs)"
@jasongilman
jasongilman / atom_clojure_setup.md
Last active May 24, 2021
This describes how I setup Atom for Clojure Development.
View atom_clojure_setup.md

Atom Clojure Setup

This describes how I setup Atom for an ideal Clojure development workflow. This fixes indentation on newlines, handles parentheses, etc. The keybinding settings for enter (in keymap.cson) are important to get proper newlines with indentation at the right level. There are other helpers in init.coffee and keymap.cson that are useful for cutting, copying, pasting, deleting, and indenting Lisp expressions.

Install Atom

Download Atom

The Atom documentation is excellent. It's highly worth reading the flight manual.

@cvrebert
cvrebert / css_regression_testing.md
Last active Mar 17, 2021
Survey of screenshot-based CSS testing tools
View css_regression_testing.md

Currently considering https://github.com/webdriverio/webdrivercss


Core Goals:

  • Can test in up-to-date versions of all major browsers
  • Can test on up-to-date versions of all major OSes
  • Can test in IE9 (because Bootstrap v4 will support IE9+)
  • Don't want to have to setup/maintain our own cluster of VMs running all the necessary OSes (and all the versions of Windows)
  • Workflow for management of reference/baseline/norm screenshots
@gfredericks
gfredericks / with-local-redefs.clj
Last active Jun 27, 2019
thread-local version of with-redefs
View with-local-redefs.clj
(defn with-local-redefs-fn
[a-var its-new-value func]
(cast clojure.lang.IFn @a-var)
(alter-meta! a-var
(fn [m]
(if (::scope-count m)
(update-in m [::scope-count] inc)
(assoc m
::scope-count 1
::thread-local-var (doto (clojure.lang.Var/create @a-var)
@wsargent
wsargent / docker_cheat.md
Last active Dec 17, 2020
Docker cheat sheet
View docker_cheat.md
@impressiver
impressiver / raven-config.html
Last active Jun 13, 2021
Raven.js configuration for logging JavaScript exceptions to Sentry (https://getsentry.com/). Without the added ignore options, you'll quickly find yourself swamped with unactionable exceptions due to shoddy browser plugins and 3rd party script errors.
View raven-config.html
<!-- Raven.js Config -->
<script src="{{ JS_PATH }}/lib/raven.js" type="text/javascript"></script>
<script type="text/javascript">
// Ignore list based off: https://gist.github.com/1878283
var ravenOptions = {
// Will cause a deprecation warning, but the demise of `ignoreErrors` is still under discussion.
// See: https://github.com/getsentry/raven-js/issues/73
ignoreErrors: [
// Random plugins/extensions
'top.GLOBALS',
@AkashaThorne
AkashaThorne / gist:3430820
Created Aug 23, 2012
TheEmpath repping 4over with class
View gist:3430820
~ #node.js
[20.16.16] < TheEmpath> so
[20.16.34] < TheEmpath> anyone else have a hot programmer girl in their office? o____O
[20.16.42] < Lorentz> I wiiish
[20.16.48] <@Nexxy> not appropriate.
[20.16.57] »¡« Signoff caaakeeey: #Node.js (Ping timeout: 260 seconds)
[20.17.32] < joshwnj> yeah guys, grow up
[20.17.38] < jerrysv> Nexxy: olynode was fun, you should have gone
[20.18.03] < TheEmpath> my boss came by and said "Here, a new subodinate" and its a very attractive female. the otherwise painfully quite engineering room suddenly came to life and its a problem :X
~~~~~~~