Skip to content

Instantly share code, notes, and snippets.

View sergv's full-sized avatar

Sergey Vinokurov sergv

View GitHub Profile
@LSLeary
LSLeary / GADTs That Can Be Newtypes and How to Roll 'Em.md
Last active July 28, 2025 14:33
GADTs That Can Be Newtypes and How to Roll 'Em, 2nd Revision

GADTs That Can Be Newtypes and How to Roll 'Em

I think many people know about Data.Some.Newtype⁠—⁠it uses quite a cute (and cursed) trick to encode a simple existential wrapper as a newtype, hence avoiding an unwanted indirection in the runtime representation.

But there's more to data than existentials⁠—⁠so how far do these tricks go? The answer is: surprisingly far! Let's see what other GADTs we can slim down.

Preliminaries

@probonopd
probonopd / Wayland.md
Last active December 5, 2025 05:59
Think twice about Wayland. It breaks everything!

Think twice before abandoning X11. Wayland breaks everything!

Wayland breaks everything! It is binary incompatible, provides no clear transition path with 1:1 replacements for everything in X11, and is even philosophically incompatible with X11. Hence, if you are interested in existing applications to "just work" without the need for adjustments, then you may be better off avoiding Wayland.

Wayland solves no issues I have but breaks almost everything I need. Even the most basic, most simple things (like xkill) - in this case with no obvious replacement. And usually it stays broken, because the Wayland folks mostly seem to care about Automotive, Gnome, maybe KDE - and alienating everyone else (e.g., people using just an X11 window manager or something like GNUstep) in the process.

Feature comparison

@myinnos
myinnos / TouchImageView.java
Last active June 30, 2025 12:05
Android ImageView to include pinch zooming, panning, fling and double tap zoom.
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@dpritchett
dpritchett / naur.md
Last active August 25, 2025 19:39
Programming as Theory Building

Programming as Theory Building

Peter Naur, 1985

(copied from http://alistair.cockburn.us/ASD+book+extract%3A+%22Naur,+Ehn,+Musashi%22)

Introduction

The present discussion is a contribution to the understanding of what programming is. It suggests that programming properly should be regarded as an activity by which the programmers form or achieve a certain kind of insight, a theory, of the matters at hand. This suggestion is in contrast to what appears to be a more common notion, that programming should be regarded as a production of a program and certain other texts.

@rblaze
rblaze / mersenne32.hs
Created August 1, 2011 15:40
32-bit Mersenne Twister in Haskell
import Data.Bits
import Data.Word
import System.Random
mtN = 624
mtM = 397
data MersenneTwister = MersenneTwister [Word32] Int
deriving Show