My keycaps have improved!

After a lot of trial and error, I finally realized if you put more resin in the bottom of the two part mold, you’ll avoid the massive air bubbles. Now I can consistently make keycaps without gaping holes (and without a pressure pot).

Here are my “cucumber mint” and “watermelon” keys.

keycaps on keyboard

keyboard close up


Recently, we’ve been talking a lot about video games with our friends. It reminded me 11 years ago I made a game for the Nintendo DS Lite.

I don’t have any of the assets anymore except for these two screenshots:

title screen

game screen

It was neat to learn about all DS Lite hardware and thinking about processors and CPUs. Reminds me a little of Android development.

I’ve been watching the L2K tutorials on Youtube to learn to cast keycaps.

While the tutorials are fantastic, I had to watch several times to compile a list of materials. I’m starting from scratch so I needed to acquire everything.

For the Two-Part Silicone Mold

For the Resin Keys

  • Polyurethane resin (I accidentally got epoxy resin, but they have similar properties)
  • Resin dye (any solid/mica dye or a liquid dye)
  • Mold release (see above)
  • Sand paper (to polish the keycap bottom)
  • Pressure pot (I don’t have one but the videos strongly recommend this)

General supplies

  • Graduated syringes (you’ll need to mix 1:1 ratios for silicone and resin; catheter tips are better than Luer locks or needles)
  • Disposable containers (I’m using plastic egg cartons and other household plastic refuse)
  • Stirrers (any small stick will work)


I recently started casting keycaps as a quarantine hobby.

I’m making one a day.


I’m pleasantly surprised the quality of the mold registration. It captured the matte texture on the tops of the keys while keeping the sides smooth and shiny.

I’m using a two-part silicone mold made with L2K adapters. Since my keyboard has DCS sculpted keys (every row of keys is shaped differently), I’ll need to make a mold per row.


The keycaps are susceptible to giant air bubbles. I’m taping the mold to release trapped air but I might purchase a pressure pot in the future.


Once I master the fundamentals, I’ll attempt to make embeded keys like Jelly Key.

This post could also be titled “How to Set Up a Load Balancer in Front of Heroku” or “How to Set Up a Static IP Address on Heroku Without Add-ons.”

I work in East Africa, and data is fairly expensive for our users. A lot of telcos provide zero-ratings so that the owners of the service can choose to pay for the cost of the data instead of the users.

Zero-rating deals are typically scoped to a given IP address instead of a URL. If a service provider hosts a site, which points to, they’ll need to arrange a zero-rating deal for

We’re launching a new Web service on Heroku. I’d like to route traffic from a domain through to Heroku. Normally I’d follow Heroku’s Custom Domain Name guide, but because we’re providing zero-ratings I’ll need the client to interact with a specific IP address instead. My DNS needs to point to that specific IP address instead of to a Heroku subdomain.

I’m relatively new to networking, but after stumbling around for a while here’s what I set up.

I’m using HAProxy as a load balancer running on the server with the designated IP address. I set up SSL bridging following the HAproxy infrastructure layout guide.


The client accesses, which resolves to the HAProxy server. The proxy forwards the request to Heroku, receives the response, and sends it back to the client.

Here are some specific configuration details:

  1. Create an A record in DNS pointing from your domain to the HAProxy server, which has your designated zero-rated IP address.

  2. Specify the HAProxy back-end to point to your app’s subdomain on Heroku:

  server MY-APP ssl check cookie sni req.hdr(Host)
  1. Meanwhile, on Heroku’s side, associate your subdomain with the app:
$ heroku domains:add

And you’re done!

While debugging this system I noticed that my application code was issuing 301 Redirect responses when I hit, sending me to I initially thought that this was a result of mis-configuring something, but it turned out that those redirects were being issued from application logic, not by HAProxy or Heroku (which doesn’t perform redirects).

Aside from that brief redirection confusion, this configuration has worked pretty well! It might also be useful if you’d like more fine-grained control when setting up your static IP address than you’d get from a paid Heroku add-on like QuotaStatic or Fixie.

An alternative implementation: It’s also possible to set up SSL pass-through. However, that requires giving your SSL certs to Heroku. Since I already had an ACM (automated certificate management) system, I wouldn’t have been able to auto-renew those certs on Heroku. And since I also already had a working HAProxy instance to build on, manually renewing certs for Heroku seemed more complicated than the solution presented above.