Home of (some of) my various projects.

How Many Zebras Are In Your Data Center?

Den Antares - 08 Nov 2024

In a fit of insanity, you decide to get a tech job. After some searching you find a company desperate enough to hire someone with no experience.


"I'm thinking we'll start you out taking care of the zebra," the manager said. "That'll be a good way for you to get up to speed and learn how we do things."

"The zebra?" you ask.

"Yeah, the zebra. I'll show you," the manager turns and starts leading you down a hallway.

"What's that?" you ask again.

"What? The zebra. You know, a zebra."

"Of course! A zebra," you answer, understanding this must be a technical term everyone is expected to know already.

The manager leads you past the accounting desks, the customer service desks, a prestigious cubicle for a director, the IT desks, and finally into the datacenter. There's rows of tall black cabinets full of equipment, but the manager continues past them, leading you to a room near the back.

He opens the door and you follow, finding yourself facing a zebra, black and white stripes and all. Straw covers the floor, feed and water troughs are visible along one wall, and another features a double door open to a yard.

"Meet Zarzoni, our zebra," the manager introduces you, before launching into an explanation of feeding schedules.


The next day

You start settling in. Zarzoni seems to be a friendly zebra (he lets you pet him at least), you get a desk not far from the zebra pen, and none of your friends can say their company has a zebra. However, you begin to have questions...


Later that week

"But what, exactly, does Zarzoni do?" you ask. "The zebra pen and yard look like they cost a fair amount, so obviously the company must have some important use for him."

"He's a big part of our maintenance processes, you'll see at the end of the week," the manager explained. "I'll have the maintenance team give you a walk-through."


Next Monday

"But why do we need Zarzoni for the weekly maintenance?"

"Didn't they show you cleaning out the yard, stocking the feed, all that stuff?" The manager seems puzzled.

"Yeah, but if we didn't have a zebra we wouldn't need to do any of that."

"There's a ton of things that wouldn't work without Zarzoni! For one, our cleaning procedure is to remove zebra dung from the pen each day, and do you have any idea how hard zebra dung is to buy?" The manager shakes his head, as if reliving a terrible meeting with purchasing. "Way easier to produce it in-house."

"But if we didn't have a zebra-"

"Look, you're new here. You'll see how it all fits together once you learn the ropes."


A month later

"I'm just saying there's a lot of zoos. Maybe Zarzoni could make zebra friends - he might be happier there," you argue. Zarzoni hasn't invited you to a single meeting, so you're firmly on his side.

"You don't realize how much we've put into setting all this up - we had to find the right diet, the right schedules, learn how to work with zebras. I spent most of last year meeting with contractors to get the right habitat set up! Facilities nearly drove me mad over getting the exterior door to the yard put in. No," the manager said, "we need Zarzoni here."


10 years later

"And that will bring our capacity to 8 zebras, completing phase 2 of the expansion plan," you bring up the final slide as you finish your presentation. "Any questions?"

"Uh, I have a question," the new guy asked. "What, exactly, do the zebras do?"

"Look, you're new here," you answer. "I'll have the maintenance team give you a walk-through when they do weekly maintenance. It'll make sense once you get used to our process."

Navigating the Passkey Minefield

Den Antares - 22 Oct 2024
How I felt taking on the passkey minefield. This pic might have some AI text artifacts, but passkeys have rough edges to so it fits!

If you've ever used SSH keys to log into a remote shell and thought "This is so simple and easy, and private keys never have to be transmitted thanks to public key cryptography! Why don't we use this for logging into everything?" you're in luck: you can now set up your web site to accept logins based on public key cryptography and never have to store passwords. Unfortunately, the "simple and easy" part is a work in progress. Hence, the minefield.

What's a "Passkey"?

Passkeys are public-private keypairs designed for logging in to web sites.

Passkeys are created when a user registers one on a web site. They're tied to the domain specified at registration, and aren't reused on different sites. When created, the public key is saved by the server for recognizing the user on future visits.

The private key is saved by the client software. It may be saved in an OS cloud service and tied to the user's Microsoft/Apple/Google account, or it may be saved in a password manager (1Password advertises support, though I haven't tested it), or in a hardware key such as a Yubikey.

On return visits, the client and server communicate to verify the authenticity of the private key. Depending on how a key was set up, the client may require the user to select from available keys or enter a PIN.

Overall, when set up well, this can create a streamlined and secure login - visit page, tap on prompt / enter PIN, and you are logged in! No SMS codes, no begging users to install a password manager, and you don't have to store passwords! Sounds good, but the bad news starts when you try to implement it...

Continue...

First Paraforge Test Release

Den Antares - 08 Sep 2024

I have published the first semi-functional versions of Paraforge to npm! (0.1.0 was published on 2 Sep 2024.) This is the very first test model that I used for most of the early development.

An Ancient Lego Castle

Den Antares - 08 Sep 2024
Overview of the castle

I have an old 3D model based on a Lego castle that I made as a kid, which I frequently use as a test model. Lately I've used it a lot to test the 3D viewer I'm making for Paraforge, and I hope to translate it to a Paraforge script soon. I even uploaded it to VRChat a while back!

Based on the commit logs for my old personal site it looks like I first posted it online on 4 Mar 2016. Since then I've used it for a lot of debugging - the multitude of breakages that happen when updating Three.js, the intricacies of iOS compatibility with accelerometer events, the numerous breaking changes with new Three.js versions, new security requirements and breaking changes in the gamepad API, Three.js rearranging everything down to the meaning of color values, learning web components, and whatever Three.js decided to break lately.

Now I'm making a web site (mainly so I have somehwere to demo Paraforge), so naturally the first post I make is for the old castle.