Daniel Bae

Software developer and Computer Science student at UCLA. I built Latch, a remote desktop over Tailscale, and Bruin Clubs, a directory of every UCLA student group, and I send patches to other people’s projects, including rclone, Sunshine and NVIDIA’s GPU Operator.

Résumé (PDF) Email me

Los Angeles GitHub LinkedIn

Selected work

The Latch window on its Machines tab: four machines on a tailnet, this Mac shared, a Windows PC reached through a relay, a sleeping PC that Latch can wake, and a Linux machine.

Latch

A desktop streamed full screen over Tailscale. Mac, Windows, Linux and a VPS container run the same Rust app; each lists the others, connects to them and can share its own screen. Tailscale is the network and the identity check: a machine answers only peers signed in to the same account.

Language
Rust, five crates
Size
30,232 lines, 259 tests
Releases
16, latest 4.1.1 on Oct 2, 2026
License
GPL-3.0-or-later

How it is built: Latch Source of Latch on GitHub

The Bruin Clubs home page, headed “Find your people at UCLA.” over a club search box and a line on what it covers.

Bruin Clubs

It lists 1,863 groups, the whole official registry plus the 249 clubs, teams and ensembles that only exist on a school’s or UCLA Recreation’s own pages. A Go server on the standard library and SQLite renders each page in about a millisecond, behind a Cloudflare Tunnel with no port open to the internet.

Reach
1,400+ users in three weeks, 62% from search
Language
Go and Python
Size
About 13,000 lines, 112 tests
Live since
September 2026

How it is built: Bruin Clubs bruinclubs.org

Smaller projects

  • cairn

    A small OCI container registry for blobs, manifests, tags and referrers, with a SQLite index. Passes 75 conformance tests; oras works against it unmodified.

    Go · MITSource of cairn on GitHub

  • twitch-vod-pipeline

    Records a Twitch stream in chunks and hands an editor a never-re-encoded master, its proxy, a word-timed transcript and a chat-backed report. Python standard library only.

    Python · MIT · PyPI vodpipeSource of twitch-vod-pipeline on GitHub

  • star-loop

    An autonomous coding loop: each iteration starts with fresh context, and an independent verifier re-runs the project’s own tests before any “done” claim is accepted.

    Rhai · Grok Build · MITSource of star-loop on GitHub

  • These sites

    danielbae.me, bardbro.com and RUNE, served from six containers on one small ARM VPS behind a Caddy edge that only Cloudflare can reach.

    Caddy · Docker · Next.jsHow they are served

  • Five commands for CI

    jsonlcut, modwhy, envcheck, waitready and envdiff: each does one thing, writes JSON when asked, and exits 0 for yes, 1 for no, 2 for usage.

    Go · MITOn GitHub: the Go repositories

  • twitch-message-creator

    An offline, ad-free replacement for a popular single-message generator: Twitch-style layout, custom colours and badges, exported as a 2× PNG in the browser.

    JavaScript · MITOpen it: twitch-message-creator

Open source

122 pull requests merged into projects I don’t maintain since September 2026. Most are small fixes; 22 are the same small change, a private vulnerability-reporting link in the issue chooser. Some of the projects:

  1. rcloneGo · 60,000+ stars
    FTP connections that fail with a non-FTP error are discarded instead of being returned to the pool, closing a reported bug.
  2. SunshineC++ · 42,000+ stars · the streaming engine Latch runs on
    Three fixes: automatic router port mapping works with MiniUPnPc 2.2.8 and later, mDNS on Linux advertises only the addresses it serves, and an abandoned pairing session no longer blocks the next device.
  3. GoReleaserGo · 16,000+ stars
    A clear error when a moved repository redirects release uploads, instead of a confusing failure.
  4. NVIDIA GPU OperatorGo · 2,900+ stars
    The bundle pins vgpu-device-manager to its multi-architecture index digest, so the right image resolves on every platform.
  5. dbmateGo · 7,400+ stars
    Environment-variable usage documented in the README, closing a long-open issue; “Applied” is logged only after a migration section succeeds.
  6. Karpenter for AWSGo · 7,700+ stars
    kubectl examples for inspecting NodePools, EC2NodeClasses and NodeClaims, in the docs.

Every pull request, listed The same search on GitHub

Security

I’ve done Hack The Box since June 2024 and write up retired machines on RUNE.

Certification
Certified Junior Cybersecurity Associate (CJCA), July 2026. Twenty modules, then a graded exam attacking five company servers and triaging alerts in an Elastic SIEM, written up as a pentest report.
Machines
Full administrator control of 39 of 42 intentionally vulnerable practice servers.
Standing
Top 850 of 4.3M+ users in September 2026; a member of HackIndex, a team ranked #8 worldwide.
Notable
A server-side request forgery flaw in a simulated AWS environment, used to take EC2 metadata-service keys and pivot through SQS and CodeBuild to full control of the host.

The write-ups on RUNE

Writing

Build notes and Hack The Box walkthroughs from my blog, RUNE.

  1. DEADFACE CTF 2026: every challenge, solved

    Step-by-step solutions for all 61 DEADFACE CTF 2026 challenges, from steganography and OSINT to memory forensics, VoIP decryption, Android and iOS reversing, and ROP.

  2. You Wouldn’t Git It: invisible ink in a meme’s comment section

    DEADFACE CTF 2026, OSINT, 125 points. The git history is a decoy. The flag is hidden in Unicode tag characters inside a comment on a social-media post, and a short decoder reads it.

  3. Indexing every UCLA student group

    Why UCLA’s official registry lists only part of the student groups on campus, and how Bruin Clubs merges the rest into one dataset.

  4. These sites are static files

    How bardbro.com, danielbae.me and RUNE are served: a tiny Caddy container per site, an edge that accepts only Cloudflare, a CSP that allows only its own origin, and a counter that reads the edge’s log.

  5. Latch: Tailscale as both the network and the identity check

    How Latch uses one tailscale whois call to decide which machines may talk to a PC, and what pairing, clipboard sync, the relay and releases look like on top.

  6. Analytics from the access log

    How the visitor numbers on these sites are counted: a Go program follows the edge server’s access log, hashes each visitor for one day, and renders a page, private to me, with no script, no cookie and no address kept.

All posts on RUNE

What I work with

Languages
Go, Rust, Python, C and C++, JavaScript, Bash, SQL
Infrastructure
Linux, Docker, Oracle Cloud, AWS (EC2, IAM, S3, SQS, CodeBuild), Tailscale, Cloudflare, GitHub Actions, Caddy, systemd
Latch’s relay and node, Bruin Clubs, these sites
Security
Penetration testing, web application security, privilege escalation, Active Directory, Elastic SIEM, incident response, Content-Security-Policy and mutual TLS on the serving side
Hack The Box, these sites
Desktop and media
egui and wgpu, the Moonlight protocol, VideoToolbox and OpenH264 decoding, Opus audio, Sunshine, FFmpeg
Latch, twitch-vod-pipeline
Web and data
Go servers on net/http and html/template, SQLite and Postgres, server-rendered pages, Python data pipelines, the OCI distribution spec
Bruin Clubs, cairn, this site’s analytics
Delivery
CI on three platforms, unit, UI-snapshot and security tests, tagged releases with self-update, PyPI, deploys with health checks and rollback
Latch, Bruin Clubs, twitch-vod-pipeline
AI tooling
Claude Code, OpenAI Codex, Gemini, Grok Build; I review generated code and gate it on automated tests before merging
star-loop

Education

2026 to 2030
University of California, Los Angeles. B.S. Computer Science, Samueli School of Engineering; expected June 2030.
Since 2024
Mentor on Exercism, a free, nonprofit coding school: 26 learners through line-by-line code reviews, and 144 published solutions in nine languages.

Contact

Email me about internships or research.

danielbae@ucla.edu

Résumé (PDF)