i'm a software engineer based in the philippines, driven by curiosity and whatever i find interesting. i learn fast with the caveat of goldfish memory (which i call my context lol) and i'm usually self-motivated that i forget to eat.
this is not like other portfolios. feel free to have a look around and explore what makes me, me.
drag empty cork to move around. drag notes to rearrange them. use +/− or pinch-wheel to zoom. click any note to open it.
i turned weeks of neuroscience papers into her memory system.
W
weave
weave gives long-running agents memory, state tracking, and retrieval that can be inspected.
current benchtypescriptagentsmemory
giving an ai agent a hippocampus
i watched a kdrama about a girl who forgets everything every morning and realized my AI agent has the same condition. so i built it a brain.
wfd · 2026-02-28T02:01:00 · 14 min
what keeps me going
someone else is on the other end.
x.com
follow me on X
from avery v3github.com
Mem0
from giving an ai agent a hippocampusarxiv.org
AI Meets Brain: Memory Systems from Cognitive Neuroscience to Autonomous Agents
from giving an ai agent a hippocampus
i'm less interested in whether it's good.
how does it work?
my focus has improved and i'm not sure why.
ideally when something is coming up, whether it's work related or it's just a personal project of mine i usually let it run at the end because i need pressure to perform things.
maywritten · 2026-06-10 · 3 min
a handdrawn chart titled day in a life showing focus changing through the daymy focus has improved and i'm not sure why.my.clevelandclinic.org
lamotrigine
from my focus has improved and i'm not sure why.
noiseshape
diffusion models
watching a photo develop.
do you want me to do that?
i built an AI agent with persistent memory. now i need to figure out if it's remembering the truth or just what i wanted to hear.
wfd · 2026-03-02T09:42:00 · 4 min
the usage of ai in daily work
AI makes me faster. It also might be making me dumber. I'm figuring out where the line is.
wfd · 2026-02-28T02:01:00 · 3 min
nytimes.com
AIinduced psychosis
from do you want me to do that?⋈
“bro what happened to claude code”
— johnislarry⋈
“ah sarado”
— lxsmnsyc
multi-domain routing from a single next.js server
what i learned serving two different sites from one Next.js codebase using middleware hostname detection, rewrites, and a Caddy dev proxy.
wfd · 2026-02-28T02:01:00 · 6 min
replacing tailscale with headscale
tailscale's free tier is generous but i'd rather own the control plane. headscale is the self-hosted replacement and it runs fine on proxmox.
wfd · 2026-02-28T02:01:00 · 5 min
github.com
Headscale GitHub
from replacing tailscale with headscaletailscale.com
DERP
from replacing tailscale with headscaletailscale.com
subnet routing
from replacing tailscale with headscaleregistry.terraform.io
awlsring/headscale Terraform provider
from replacing tailscale with headscaleheadscale.net
Headscale docs
from replacing tailscale with headscale
A
atlas
atlas maps symbols, calls, tests, and history so developers and agents can ask structural questions about a repository.
current benchtypescriptsqlitemcp
Atlas: structural code-intelligence for LLM agents (an empirical evaluation)
2,239-trial benchmark across 8 OSS repos: Atlas beats a text-search baseline by +0.223 deterministic, +0.127 LLM-judge, at 42% fewer tokens.
wfd · 2026-04-19T18:00:00 · 17 min
O
orchestrator
orchestrator lets a local model read and control a live chromium page through the devtools protocol.
Stub
i haven't finished writing this yet. i publish drafts early as part of WFD 17.
i used Tailscale to access my homelab. Proxmox box, k3s cluster on top, a few services (WFD 15 covers the stack). install the client, authenticate, everything gets a stable IP, MagicDNS gives names. painless.
i didn't have a strong reason to replace it. the free tier covers 100 devices and 3 users which is more than i'll ever need. the control plane still knows every device on my network though, their IPs, their keys, and which subnets they can reach. i already had a box that could run this myself, so i did.
Headscale is a self-hosted, open source implementation of the Tailscale control plane. 35.9k stars, BSD-3 license, v0.28.0 as of Feb 2026. one of the maintainers works at Tailscale and is allowed to work on Headscale during business hours, which is about as close to an endorsement as you'll get from an upstream vendor for an alternative implementation.
what headscale is
Tailscale has two parts: the client (open source, runs on your devices) and the control plane (proprietary, hosted by Tailscale). the control plane handles key exchange, peer discovery, NAT traversal, DNS, and ACL enforcement. the clients do the WireGuard tunneling peer-to-peer.
Headscale replaces the control plane. the clients stay the same. you point tailscale up --login-server https://headscale.example.com at your instance and everything else works.
graph TD
TC["Tailscale control plane (hosted by Tailscale Inc)"] --- T1[macbook]
TC --- T2[phone]
TC --- T3[pixie]
T1 ---|WireGuard peer-to-peer| T2
T1 ---|WireGuard peer-to-peer| T3
T2 ---|WireGuard peer-to-peer| T3
graph TD
HC["Headscale (self-hosted on pixie)"] --- H1[macbook]
HC --- H2[phone]
HC --- H3[aurora]
H1 ---|WireGuard peer-to-peer| H2
H1 ---|WireGuard peer-to-peer| H3
H2 ---|WireGuard peer-to-peer| H3
traffic goes peer-to-peer between clients. the control plane only handles discovery. if NAT traversal fails, traffic routes through DERP relays (Headscale can embed its own).
DERP (Designated Encrypted Relay for Packets) is Tailscale's fallback relay. when two devices can't punch through NAT directly, traffic gets encrypted end-to-end and bounced through a DERP server. the relay can't read anything, it just forwards bytes. Headscale can run its own DERP server or use Tailscale's public ones.
feature parity
what i used from Tailscale and whether Headscale covers it:
feature
Headscale
MagicDNS
yes, split DNS and extra records
subnet routers
yes, with auto-approvers in ACL policy
exit nodes
yes
ACLs
yes, full Tailscale ACL engine with autogroups
OIDC (Google login)
yes, OIDC groups can't be used in ACLs though
Taildrop (file sharing)
yes
Tailscale SSH
yes
embedded DERP server
yes
Funnel / Serve
no, i use Cloudflare Tunnel for this anyway
network flow logs
no
multiple tailnets
no, single tailnet by design
none of the missing stuff matters for a homelab.
where it runs
it needs to be reachable for devices to find each other. if it lives inside the homelab and Proxmox goes down, nothing can reconnect. a $5 VPS would fix that, and i only have one site, so if Proxmox is down i can't reach anything regardless. LXC container on Proxmox it is.
LXC setup
Headscale is a single Go binary with no kernel dependencies, so a Debian LXC with 128MB RAM runs it fine.
100.64.0.0/10 is the CGNAT range that Tailscale reserves for device IPs. it won't collide with your LAN. every device on the mesh gets a stable 100.x.x.x address.
Headscale recommends SQLite over PostgreSQL. from the config comments: "All new development, testing and optimisations are done with SQLite in mind."
i already had a Caddy LXC handling TLS for other services so that sits in front.
routing into k8s
pod CIDR is 10.42.0.0/16, service CIDR is 10.43.0.0/16. the same cluster running the stuff from WFD 13 and WFD 21. to reach pods and services from my laptop over the mesh, one of the k3s nodes advertises those subnets as routes.
subnet routing lets a node on the mesh act as a gateway to a local network. aurora advertises the k3s pod and service CIDRs, so any device on the tailnet can reach cluster IPs without being inside the cluster itself. the traffic goes laptop → aurora (via WireGuard) → k3s network.
# may@aurora
sudo tailscale up --login-server https://headscale.pixie.local \
--advertise-routes=10.42.0.0/16,10.43.0.0/16
approve the routes:
headscale routes list
headscale routes enable -r <route-id>
the pre-auth key automates node registration. i pass it to cloud-init when provisioning k3s VMs so they join the mesh on boot.
a pre-auth key lets a device register with the control plane without interactive login. cloud-init runs on first boot, calls tailscale up --authkey <key>, and the VM joins the mesh automatically. combined with the tag:k8s ACL tag, the auto-approver kicks in and the subnet routes are approved without manual intervention.
i manage my homelab with OpenTofu and the Proxmox provider already. adding the Headscale provider means users, keys, and ACL policies live alongside the VM definitions. one tofu apply and a node exists, is registered, and has its routes approved. that felt good the first time i ran it.
was it worth it
arguments against:
Tailscale worked and i added maintenance for no functional gain
Headscale has no web UI (third-party options exist, they're separate projects)
debugging connection issues is harder without Tailscale's admin console
arguments for:
i own the coordination data
one less external dependency
the Terraform provider lets me manage it as code alongside everything else
i learned more about how Tailscale actually works under the hood
this XDA article has it right: "most people probably shouldn't" switch. Tailscale's free tier is generous and the managed experience is better. i just wanted to.