PhD Candidate in Pure Mathematics
Research: Number Theory · p-adic Chabauty–Coleman methods
I am a PhD candidate in pure mathematics working in number theory, with a focus on p-adic Chabauty–Coleman methods. Alongside research, I build high-performance software (primarily in Haskell) and write educational material in abstract algebra and probability. I have written 100k+LOC of Haskell.
My current research direction centers on p-adic methods for studying rational points, especially Chabauty–Coleman style techniques.
I am particularly interested in extending Chabauty–Coleman methods using \(p\)-adic differential equations, aiming to broaden the scope of problems where t…
The goal of this project is to build our own parser library from scratch.
You will understand how monads work by building your own Parser monad! and its actually useful + beautiful!
The first step is to understand what a ‘Parser a’ means
a value of type ‘Parser a’ is a ‘runnable computation’ that can consume a String or a part of String, and produce a value of type ‘a’ along with the remaining unconsumed String.
newtype Parser a = Parser { runParser :: String -> Maybe (a, String) }i.e. if it succeeds, it consumes part of the input String and produces a value of type ‘a’ along with the remaining unconsumed String. If it fails, it returns Nothing.
for example, we can d…
$$
% For comments
\definecolor{amethyst}{rgb}{0.6, 0.4, 0.8}
\definecolor{atomictangerine}{rgb}{1.0, 0.6, 0.4}
\definecolor{burgundy}{rgb}{0.5, 0.0, 0.13}
\definecolor{byzantine}{rgb}{0.74, 0.2, 0.64}
\definecolor{caribbeangreen}{rgb}{0.0, 0.8, 0.6}
\definecolor{carrotorange}{rgb}{0.93, 0.57, 0.13}
\definecolor{cinnabar}{rgb}{0.89, 0.26, 0.2}
\definecolor{darkcoral}{rgb}{0.8, 0.36, 0.27}
\definecolor{darkpastelpurple}{rgb}{0.59, 0.44, 0.84}
\definecolor{dodgerblue}{rgb}{0.12, 0.56, 1.0}
…
This is the script I used for postgres boilerplate: setup a new database for your app in a second owo
APP_USER="user"
APP_DB="user_db"
APP_DB_PASSWORD="password"
cat <<EOF
…{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE PatternSynonyms #-}
{- |
This executable is a small interactive tour of /h-raylib/:
* How to open a window and drive the renderer ('beginDrawing'/'endDrawing').
* How to draw 2D primitives (fills + “strokes” via *Lines* APIs).
…The following setup guide is produced by chatgpt, I will try it and verify it, modifying the parts that are not correct.
This is a from-zero → working demo → shipping build checklist for getting raylib + Haskell (h-raylib) running on Windows, and packaging your game so users can run it by double-clicking.
Core idea:
h-raylibtypically vendors the raylib C sources via the package build, so you usually do not need a separate raylib installation. What you do need is a working Haskell toolchain + a working Windows C toolchain.
Your shipped game will look like:
MyGame/
…## Categorical Van Kampen Theorem
### Fundamental Groupoid
The **fundamental groupoid** $\Pi_1(X)$ of a space $X$ is a groupoid whose objects are the points of $X$ and whose morphisms are endpoint homotopy equivalence classes of paths $x\to y$.
* $\Ob(\Pi_1(X)) = X$
* $\Hom_{\Pi_1(X)}(x,y) = \{ x \to y \}/\sim$
There are some obvious properties:
…
Lead a session: the presenter may not fully understand the topic but leads us to learn together, for example by reading together, watching together, and solving exercises together.
In a session, participants are expected to work hands-on, think with the leader, discuss the questions, and solve exercises / small projects together.
Give a talk: The presenter has some understanding of the topic and give a 15~60 minute talk on it
focusing on the core ideas and understanding
make sure the non-experts can follow most of the talk
give exercises / projects / challenge if possible
You can easily resize a btrfs partition without going to live ISO.
Check how much space is left unused:
sudo btrfs file usa /
sudo btrfs file resize / -32g # any size you wantsudo parted /dev/nvme..../unit GiB
print
…References:
A synthetic approach to Markov kernels, conditional independence and theorems on sufficient statistics
Markov category gives a way to write probability theory that is ‘decoupled’ from a particular implementation (i.e. discrete distributions, continuous ones, or general measure theoretic ones). It is an interesting abstraction where you use morphisms to talk about random variables.
A markov category is a semi-cartesian symmetric monoidal category \((\mcC, \otimes, 1)\) that supplies cocommutative comonoids.
The means:
Want to say something? You can do it here! owo