Projects

Every project links to its code. Any number here comes from a benchmark committed in that repo, so you can re-run it yourself.

Built from scratch

FIG. 01 · parallax-kv

DISTRIBUTED SYSTEMS · GO

parallax-kv (opens in new tab)

A three-node Raft key-value store built from scratch: PreVote, ReadIndex, persist-before-send ordering, snapshots, a durable WAL, a gRPC runtime.

GoRaftgRPCPorcupinedeterministic simulation

A deterministic stress harness ran 2.9 million client operations through partitions, crashes, message loss, delays, and snapshot churn. Zero safety violations, and zero Illegal verdicts from the linearizability checker.

Specifications

272 w/sdurable writes · c=8
41 msp99 latency · c=8near-worst-case write time
2.9Mclient operations checked

Notes & limits

The first bug the harness caught was in my own election-safety check, not in consensus. Not built: production snapshot scheduling or chunked streaming.

3 nodes · soak: 6 simulated clients, virtual time · throughput: localhost, c=8, 4 KiB fsync p50 ≈ 0.89 ms · measured 2026-07-13

FIG. 02 · accretion-db

STORAGE ENGINE · RUST

accretion-db (opens in new tab)

An embeddable LSM-tree storage engine: CRC-framed WAL, group commit, memtables, block SSTables, bloom filters, size-tiered compaction. The crate root forbids unsafe code, so the engine has no unsafe blocks by construction.

RustLSM treegroup commitcrash consistencyproptest

Fault-injection and property tests confirm that acknowledged writes survive simulated crashes. Benchmarked against sled, which wins every matched comparison on this host. Reported rather than omitted.

Specifications

~29xWAL-bound group commitgain from batching log writes
878 µsfdatasync p50median durable-write flush

Notes & limits

The ~29x group-commit figure is WAL-bound. Compaction runs synchronously under the write lock, which caps full-engine throughput.

16-byte keys / 100-byte values · ext4 on NVMe · Xeon 8488C · measured 2026-07-13

FIG. 03 · lodestone

VECTOR SEARCH · RUST

lodestone (opens in new tab)

A vector search engine built from scratch in Rust for embeddings and RAG retrieval. An HNSW proximity graph and an IVF-PQ compressed index sit over hand-written AVX-512 distance kernels with runtime feature dispatch.

RustHNSWIVF-PQAVX-512 SIMDRAG retrieval

On 50,000 128-dimensional vectors on a single core, HNSW reached 0.976 recall@10 at about 31,800 queries per second, about 33x the exact brute-force search at that recall, and 9 to 33x across the 90%+ recall band. The baseline is the honest catch: it runs in parallel across all 48 vCPU while the search runs on one, so the two sides of that ratio are not core-for-core.

Specifications

0.976HNSW recall@10top-10 search accuracy
~31.8Kqueries/sec · 1 core

Notes & limits

IVF-PQ trades accuracy for footprint: 0.975 recall@10 at 16x memory compression. Single machine, single core. Not built: distributed sharding.

50,000 x 128-d · k=10 · search on 1 core, brute-force baseline on 48 · Xeon 8488C · measured 2026-07-16

More projects

Unsupervised Domain Adaptation for Sentiment (opens in new tab)

MIT License

DistilBERT with a gradient-reversal DANN for unsupervised domain adaptation across Yelp, Amazon, Twitter, and Reddit. Labeled source-domain examples train the sentiment head; unlabeled target-domain text trains the domain head.

The committed CSV is a smoke-scale artifact, so this page quotes no accuracy numbers. The full figures live in the linked repo's team report.

PyTorchDistilBERTgradient reversal

Quantum NLP research (FIRE) (opens in new tab)

GPL-3.0 License

Four-person research project, co-built and open-sourced. My role was dataset preparation, experiment integration, and project documentation.

The repository compares optimizer and ansatz variants in exact noiseless simulation with documented methodology.

PythonJupyterDisCoPyQiskitpytket

Generative AI & LLM experiments (opens in new tab)

MIT License

Hands-on generative-AI notebooks. The core is a retrieval-augmented generation (RAG) pipeline built stage by stage in LangChain, from tokenizers through chunking and embeddings to retrieval and QA chat. Alongside it: Streamlit/Gradio LLM apps and GAN/VAE architecture studies in PyTorch.

Each notebook isolates one idea.

LangChainRAGPyTorchStreamlit/Gradio

Professor rating prediction (opens in new tab)

MIT License

Predicts a professor's average star rating on PlanetTerp from the text of student reviews (VADER sentiment plus review count), without ever using the star ratings as features.

Two text-derived features in a plain linear regression explain about 79% of the variance in ratings.

Pythonscikit-learnVADERNLP

Survey response analysis (opens in new tab)

MIT License

Cleaning and statistical analysis of a multi-wave survey dataset: a reusable cleaning function, then chi-squared hypothesis tests with Bonferroni correction probing what actually shifts people's answers to moral-judgment questions.

PythonpandasSciPyhypothesis testing

Gender perception study (opens in new tab)

MIT License

Does swapping the genders in a moral-judgment scenario change how people judge it? Chi-squared hypothesis testing on gender-swapped survey scenarios, with the method written down.

Pythonpandaschi-squared

Weather vs. attendance study (opens in new tab)

MIT License

A statistical study of attendance against local weather: per-group detrending, WMO/NWS rain classification, Welch's t-tests, then a rain-plus-wind regression.

PythonSciPyregression

This site (opens in new tab)

MIT License

The page you're reading: a multi-page React + TypeScript + Vite site on GitHub Pages. It prerenders to static HTML, works without JavaScript, and won't deploy if a fact check or Playwright assertion fails.

React + TypeScript + Vitefact-gate in CIPlaywright-verifiedno trackers

Get in touch

I'm looking for Summer 2027 software engineering internships and new-grad roles. Email is the fastest way to reach me, and I can send a full resume on request.

Email meivanwang8989@gmail.com