2023-10

  • I/O Error Handling Gracefully with Monad Transformer

    The monad transformers is design to stacking monad to represent complex effects in Haskell. The transformer and mtl package provides a set of monad classes to help combining (stacking) multiple monads together. In real world applications, I/O is unavoidable, and its tricky to execute stacked monad in the IO monad.

  • 2023-09

  • Pipeline Model Parallelism in LLM Pretraining

    Pipeline model parallelism is a technique which is aimed to make training extremely large neural network models possible by splitting the model in the layer dimension and running each stage on a different device. This is the key technique used to train the state-of-the-art large language models (LLMs).

  • 2023-03

  • eBPF Doable and Undoable

    eBPF is a powerful tool for Linux kernel tracing and observability. Compared with kernel module, eBPF is more flexible and easier to develop and deploy. However, eBPF lacks many key features that kernel module has, and cannot be used as the replacement for kernel module framework.

  • 2022-02

  • Compiling to WebAssembly

    WebAssembly, a relatively new and rapidly-evolving low-level language, is designed as an assembly language that run on the Web, and gains support from all major browsers. High-level languages like C++ and Rust can use WebAssembly as a compilation target to be deployed to the web.

  • 2021-06

  • End-to-end Argument in System Design

    The “End-to-end argument” says many functions in a communication system can only be completely and correctly implemented with the help of the applications at the end points. Cases in beyond distributed systems, like the fix for CEEs, are also amenable to the argument.

  • 2021-05

  • eBPF 101 Tooling and API

    eBPF can be programmed using one of many frontends available, e.g., LLVM, BCC and bpftrace, from lowest- to highest-level languages.

    The LLVM compiler supports BPF as the target and higher-level languages, like C can be compiled into BPF. BCC and bpftrace internally using LLVM to compile C or its own higher-level language into BFP.

  • 2021-04

  • Hello World using the eBPF

    eBPF is a in-kernel register-based virtual machine that is capable to executing native-fast JIT-compiled BPF programs inside the Linux kernel with access to a subset of kernel functions and memory.

  • 2019-06

  • GSoC 2019 Round 1st Evaluation

    It’s time to summarize current progress during the first round of GSoC 2019. I have finished a tool to indexing event logs into SQLite at a relative acceptable speed and worked out a prototype that can leverage SQLite to reduce the burden of memory management for large eventlog files, achieving the goal of the first round in my original proposal.

  • Einstein Summation Convention

    The Einstein summation convention, introduced by Albert Einstein, is a notational convention that represents summation over a set of indexed term in a formula, achieving notational brevity. With Einstein summation convention, many common linear algebraic operations on multi-dimensional arrays can be represented in a simple fashion.

  • 2019-04

  • Notes on Gtk2Hs

    Gtk2Hs is a GUI library for Haskell, based on GTK+, for creating graphical user interfaces. This page records some (trivial) notes about GUI programming in Haskell with the Gtk2Hs library.


Subscribe via RSS