Skip to content

Instantly share code, notes, and snippets.

@mbauman
mbauman / Manifest.toml
Created October 11, 2019 18:54
Fast partitions
# This file is machine-generated - editing it directly is not advised
[[AbstractFFTs]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "380e36c66edfa099cd90116b24c1ce8cafccac40"
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
version = "0.4.1"
[[Arpack]]
deps = ["BinaryProvider", "Libdl", "LinearAlgebra"]
@mbauman
mbauman / mac-bash-completion.patch
Created February 23, 2011 02:50
A patch to bash-completion version 1.3 (http://bash-completion.alioth.debian.org/). Adds completions for Mac OS X specific utilities: defaults, launchctl, open, and xcodebuild. Additionally, it properly enables killall.
diff -Naur bash-completion-1.3/completions/Makefile.am bash-completion-1.3-mac/completions/Makefile.am
--- bash-completion-1.3/completions/Makefile.am 2011-01-21 04:36:11.000000000 -0500
+++ bash-completion-1.3-mac/completions/Makefile.am 2011-02-22 22:02:25.000000000 -0500
@@ -33,6 +33,7 @@
cvs \
cvsps \
dd \
+ defaults \
dhclient \
dict \
@mbauman
mbauman / DiscourseStats.jl
Last active March 2, 2020 22:43
Cumulative discourse stats
using HTTP, JSON, DataFrames, Dates, CSV
function cumulative(dates)
start_date = Dates.format(minimum(dates)-step(dates), "YYYY-mm-dd")
end_date = Dates.format(maximum(dates), "YYYY-mm-dd")
colnames = []
cols = []
for report in ("signups", "posts", "likes", "page_view_total_reqs", "topics")
r = HTTP.get("https://discourse.julialang.org/admin/reports/$report.json?end_date=$end_date&start_date=$start_date",
["Api-Key"=> ENV["JULIA_DISCOURSE_API_KEY"], "Api-Username"=> ENV["JULIA_DISCOURSE_USERNAME"]])
using Cassette, ReplMaker
Cassette.@context NoNaN
nonnan(s, x::Number) = (@assert(!isnan(x), string(s, " returned NaN")); x)
nonnan(s, A::AbstractArray) = (foreach(x->nonnan(s, x), A); A)
nonnan(s, x) = x
Cassette.overdub(::NoNaN, f, args...) = nonnan("$f$args", f(args...))
@mbauman
mbauman / MatlabClasses.ipynb
Last active April 23, 2023 14:33
Documenting how to parse Matlab's opaque class structure for MAT files with Julia.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
julia> using StructArrays
julia> begin
g(x::StructArray{<:Tuple{String}}) = nothing
g(x::StructArray{<:Tuple{Integer}}) = nothing
function f(x)
# ok, yes, this line is fairly contrived, but this is a short-hand for
# building a partial type-instability -- something that happens frequently
z1 = Core.compilerbarrier(:type, x)::StructArray{<:Tuple{Nothing}}
z2 = g(z1)
@mbauman
mbauman / filtfilt_gustafsson.jl
Created July 7, 2014 14:10
Forward-backward IIR filter that uses Gustafsson's method.
# Forward-backward IIR filter that uses Gustafsson's method.
#
# Apply the IIR filter defined by `(b,a)` to `x` twice, first forward
# then backward, using Gustafsson's initial conditions [1]_.
#
# Let `y_fb` be the result of filtering first forward and then backward,
# and let `y_bf` be the result of filtering first backward then forward.
# Gustafsson's method is to compute initial conditions for the forward
# pass and the backward pass such that `y_fb == y_bf`.
#
begin
# Straightforward adaptation from https://github.com/JuliaPluto/PlutoUI.jl/pull/54 by @mthelm85
struct Microphone end
function Base.show(io::IO, ::MIME"text/html", microphone::Microphone)
mic_id = String(rand('a':'z', 12))
mic_btn_id = String(rand('a':'z', 12))
PlutoUI.withtag(() -> (), io, :audio, :id => mic_id)
print(io, """<input type="button" id="$mic_btn_id" class="mic-button" value="Stop">""")
PlutoUI.withtag(io, :script) do