Skip to content

Instantly share code, notes, and snippets.

View shhyou's full-sized avatar
💭
Alive

shuhung shhyou

💭
Alive
View GitHub Profile
@shhyou
shhyou / acm-firefox.md
Created August 24, 2026 06:26 — forked from haeberlein/acm-firefox.md
Fix ACM Digital Library Loading Times in Firefox

Fix ACM Digital Library Loading Times in Firefox

Problem

The ACM Digital Library currently loads very slow in Firefox. This seems to stem from a lot of :has() selectors used in their CSS stylesheet.

Fix (uBlock Origin)

If you have uBlock Origin installed, you can add the following filter under the "My filters" tab:

@shhyou
shhyou / ErrorReflectionDemo.idr
Created July 14, 2026 07:33 — forked from david-christiansen/ErrorReflectionDemo.idr
Error reflection demo from today
module ErrorReflectionDemo
import Language.Reflection
import Language.Reflection.Errors
import Language.Reflection.Utils
%language ErrorReflection
data Col = BOOL | STRING | INT
#!/usr/bin/env bash
set -euo pipefail
# just some sanity checks to make sure the arguments make sense
if ! test -f "${1}"; then
echo "usage: ${0} <file>"
exit 1
fi
file="${1}"
@shhyou
shhyou / GluedEval.hs
Created December 2, 2025 02:01 — forked from AndrasKovacs/GluedEval.hs
Non-deterministic normalization-by-evaluation in Olle Fredriksson's flavor.
{-# language Strict, LambdaCase, BlockArguments #-}
{-# options_ghc -Wincomplete-patterns #-}
{-
Minimal demo of "glued" evaluation in the style of Olle Fredriksson:
https://github.com/ollef/sixty
The main idea is that during elaboration, we need different evaluation
@shhyou
shhyou / Makefile
Created August 12, 2023 05:33 — forked from favonia/Makefile
Agda homework grading
AGDA_FILES=$(wildcard *.agda)
TEX_FILES=${AGDA_FILES:.agda=.tex}
PDF_FILES=${AGDA_FILES:.agda=.pdf}
MONO_FONT=DejaVu Sans Mono # FreeMono is another choice
PYGMENTS_STYLE=tango
GRADED_XOPP_FILES=$(wildcard *-graded.xopp)
GRADED_PDF_FILES=${GRADED_XOPP_FILES:.xopp=.pdf}
.PHONY: all
@shhyou
shhyou / plot-snip-pasteboard-overlay.rkt
Created September 15, 2022 05:20 — forked from Metaxal/plot-snip-pasteboard-overlay.rkt
A simple standalone program using overlays with plot-snip in a pasteboard, and switching with the zooming feature
#lang racket/gui
(require plot
pict)
;;; Author: Laurent Orseau
;;; License: [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) or
;;; [MIT license](http://opensource.org/licenses/MIT) at your option.
;;; See in particular this blog bost:
;;; https://alex-hhh.github.io/2019/09/map-snip.html#2019-09-08-map-snip-footnote-2-return
@shhyou
shhyou / keybindings.json
Created July 12, 2022 19:50 — forked from jtanx/keybindings.json
Visual Studio Code disable MRU tab switching
[
{
"key": "ctrl+shift+tab",
"command": "workbench.action.previousEditor"
},
{
"key": "ctrl+tab",
"command": "workbench.action.nextEditor"
}
]
@shhyou
shhyou / bind-it.rkt
Last active March 11, 2022 07:36 — forked from wilbowma/meow.rkt
#|
building syntax objects
cpu time: 106 real time: 112 gc time: 45
expanding
cpu time: 16063 real time: 17360 gc time: 2152
building syntax objects 2
cpu time: 116 real time: 126 gc time: 50
expanding
cpu time: 15898 real time: 16583 gc time: 2231
@shhyou
shhyou / T.agda
Created November 6, 2021 00:23 — forked from L-TChen/T.agda
Normalization by evaluation for System T with the normalization proof and the confluence proof
{- Coquand, T., & Dybjer, P. (1997). Intuitionistic model constructions and normalization proofs.
Mathematical Structures in Computer Science, 7(1). https://doi.org/10.1017/S0960129596002150 -}
open import Data.Empty using (⊥)
open import Data.Unit using (⊤; tt)
open import Data.Nat using (ℕ; zero; suc)
open import Data.Product using (_×_; _,_; Σ; proj₁; proj₂; ∃-syntax)
open import Relation.Binary.PropositionalEquality using (_≡_; refl; sym; trans; cong)
infix 3 _-→_ _-↛_
@shhyou
shhyou / racket_tips.md
Created August 29, 2021 20:18 — forked from sschwarzer/racket_tips.md
Racket tips and tricks

Racket tips and tricks

These are extracted from discussions I triggered on the Racket Slack. Thanks to everyone who participated in the discussion threads! :-)

Conversion to boolean

Use (and value #t) to convert a value to its boolean equivalent.

Entering a module in the Racket REPL