New Year - Toooo much work

- 29 min read - Text Only

The new year, 2025

Another year has come and gone, and unfortunately not with as much writing as I had hoped. Instead, I gained new skills and refined existing skills.

New year's image collage

Reflecting on last year

Right after working myself ragged for FurSquared, I got introduced to VR Chat. For those not in the know, it is far closer to what "The MetaVerse" promises than any of Meta's own products. Which is to say: You can be with your friends and meet new people, while appearing how you want to your peers.

The 3D Metaverse

The social vibe I feel from social VR like this is similar to furry conventions—where people accept you for what you want to be or be seen as, instead of the body one wears in the world.

It was a nice way to relax after work and left me feeling happier than burning hours away on an anime series like "Reincarnated as a potato, I'll use my hash-brown powers to level up" (this title is made up, yet a lot of them sound like this.)

Yet, I could not merely "play" VR Chat. I continued to experience dysphoria in how I was represented inside. To overcome this, I gradually developed my skill set in 3D sculpting, retopologizing, weight painting, rigging, creating blend shapes, and texturing within Blender. That isn't all though.

To appear in VR Chat, which runs on the Unity engine, I have to use the Unity SDK to create my own avatar package that VR Chat's SDK will validate and upload. Within this package includes animations, configurations, shaders, textures, meshes, constraints, and other metadata that make an avatar work within the social game.

VR Chat enables a lot of creativity and uniqueness by exposing much of their engine. At the same time, this exposure makes it difficult to perform well, especially in larger events like Furality.

snake-in-my-computer-ai
Not every part of the engine is exposed. What I can upload is restricted. For example, I cannot upload custom scripts. There are workarounds for limited things by using lights and shaders.

I do try to keep my avatars performant in public-ish events. Not everyone does. Many that run around in poorly performing avatars lack the skills to improve what they've bashed together from online assets. There is a healthy set of public avatars available, though any customization requires the account owner to use Unity to upload avatars.

Dysphoria is a significant blocker for several that want to use VR Chat and lack the drive to develop these creative skills.

yes-i-have-a-sticker-for-everything
I am glad that I had the energy and drive to develop a new creative skill set. Perhaps one year, you'll see animated 3d stickers on my website.

Every week, folks get together to show off what they've added and improved on their avatar. It is a culture of creation, rather than consumption.

Mark Zuckerberg launches Horizon Worlds in France and Spain with an eye-gougingly ugly VR selfie. Meta's metaverse ploy is surely dying in the dark.
Photo included with tweet

In a culture of mass consumption, the best we can hope for is that someone with the artistic freedom and budget creates enough high fidelity avatars with enough customization to fit most people's sense of self identity.

Wow. Mark Zuckerberg basically got cyberbullied so much over his company’s metaverse graphics that he announced an update.
Photo included with tweetPhoto included with tweet

I think that may be what's limiting VR Chat, besides the price tag of VR. We'd have to shift away from mass consumption to individual creation and expression. Otherwise, we end up in the world depicted by The Congress (2013).

The moment June began, I had to pause all my 3D work. I still attend VR events, I just haven't been as creative now that my dysphoria had been managed.

Planning, designing, problem solving

The FurSquared Convention staff took a hiatus for the last few months, and now it was time to get back in gear.

A few new changes: we needed a better task management system. Plane was our answer. We also needed a way to share team email accounts while auditing who responded to emails. FreeScout was the answer.

While not so robust as using Ansible to update things, stuff is working and with a tolerable cost per month.

Shortly thereafter, FurSquared's legal entity got Non Profit (501(c)(3)) and Charity status (509(a)(2)) with the IRS. Subsequently we moved everyone to Google Suite org accounts and are leaving behind personal accounts.

welcome-take-a-seat-wherever
This migration is somewhat ongoing, especially with historical records. And, not everyone is consistent about using their org account when they should be.

We met up in August at the hotel to discuss what will happen in the next year and what needs to improve. I took many notes during 2024's convention setup and execution, which has been distilled into the following series:

Since I set up Plane, I have created over one hundred and sixty tasks across Dealers and Registration technology. With a mix of must have, want to have, and dependency relationships, all this planning enabled two additional tech staff to contribute to the launch of Dealers.

my-job-here-is-done
I wouldn't have been able to do this if not for my professional role, which is a combination of team lead, people manager, project manager, and staff engineer.

Breaking ground with Vendors

Throughout August, eighty hours went into figuring out a lightweight declarative form schema, which would enable the ambitious goal of reimplementing Google Forms through database configuration.

hot-sweaty-fan
It was way too much work. I wish I had learned of NextJS earlier and did this in NextUI. It would have looked better and been far quicker to implement.

I broke ground while traveling to and from DEF CON.

Resorts world informing guests about a hacking convention

I may write more about DEF CON later. If you are curious, I live-posted the presentations I attended to my fediverse account (@cendyne@furry.engineer).

Store credit card numbers? No. Do not.

Media attached to toot, no description available

Thankfully, I took a break to go camping. I can say without a doubt that cell reception in state parks is terrible and trying to do VR while tethering in a tent as it is raining is a bad time.

Once the database schema tech was evaluated, we had sign in with Google, and I got the form technology put together, two others joined in building out the Vendors application.

I got a reasonable two to three hours of volunteer contribution from two tech staff each week. I set both up for success by providing detailed task descriptions, unblocked them so at any point they could contribute without waiting, and at times mentored them as they touched this new technology.

bicycle
It would never have been delivered on time if I operated at the pace I expected the rest of the team to.

A task describing email send functionality

There's a reason why I've recorded thirty nine hours into "Project Management". Enabling others to do effective work with minimal risk to the time table requires ruthless attention to detail.

With a mere two to three hours a week to work with, I had to minimize how much time each spent reestablishing their mental context. Every relevant detail and recommendation relevant to the objective was accessible and proved effective given the circumstances. If they spent two hours warming up to the task, they would never get it done, and they would not feel like they contributed. Instead, by paying off the design cost myself and predicting what they'd need to know to achieve the goal, I've enabled these two to succeed.

Next up, I went to Big Little Fur Con, a convention where I meet most of my west-coast friends. For the last two years it has operated on the weekdays, which significantly reduced its attending population. While this unfortunately prevents those without available PTO to attend, it has improved the accessibility and pace of the convention.

Coni in suit surrounded Among Us crew, some with cat ears

An idea struck me for registration that I could not let go of while I was spending time with friends. On the way home, my flight got delayed and I missed my connecting flight. With all that downtime I created a tokenized input. Now we can compose strings of pronouns without letting someone choose "attack helicopter".

This UI has been stewing in my head for months. Finally it is out.

Two weeks later, we reached a point where all must-have tasks were complete and I could sign off on its use in production.

I am so relieved. The furry work project Ive been doing for the last 3 months is finally live!

Dealer / Vendor signups are now available at vendors.fursquared.com

Get ready to spook n scare

Dealers den apps now open!
content

Registration 3.0

Without even a week off, I began working on registration. I forked the work done for the vendors application, started a new schema, and removed all the vendors specific code from the fork and immediately worked to replace the one-off alpine apps I wrote in 2022.

An absurd amount of rubber ducks in a jacuzzi

A brief intermission with Aquatifur, which operates at an indoor water park resort. Though, my rooming arrangements did not include this option and other room related issues made it difficult to enjoy the convention.

break-windows
The Aquatifur website appears to be down at the time of writing. Not sure what's up with that.

A dog on a dance floor posing

Basing it on the dealers foundation turned out to be a good move. Registration is a scanner-assisted data-entry workflow and I had plenty of reference material for functional server side JS with Hono and my own form framework.

Around this time, Next.js was a serious consideration at work and I began investigating it. Truly, I wished I started with NextJS in June. It would have been far easier to make a pleasant application with it than what I ended up with.

As I do Next.js foundation building at work — on top of supporting, leading, and mentoring my team — I feel the choice I made with registration was appropriate. The vendors application foundation is suitable to rapidly add features to and operates well in a low-bandwidth environment like registration.

Registration needed a few more things though before feature work could begin. While it will be mobile friendly, it will predominantly operate on 16:9 touch-screen laptops. Lots of big screen buttons and gutters for information on both sides.

A POS like interface showing what products to give someone

Then came attendee lookup.

A search form for attendees

Rather than implement the happy path up front, I prioritize the fallback first: manual input.

tick-tock-time
I'm on a timeline! If anything falls through, including my own health, I need to be confident that the deliverable can perform the bare minimum of what's expected.

As if on a speed run, I reimplemented 2022's check-in applications in record time. Swag, Check In, Refunds, Cash Vouchers, and even reimplementing the customer facing registration frontend.

And then Midwest FurFest came!

Registration finally met and exceeded expectations for attendees. The line continued to move consistently to the point where people complained they could not play their Nintendo Switch in line.

When I reached the station, I was processed in 45 seconds. A majority of that time was me signing a form saying I received my badge. I suspect this is used as evidence in the case of a chargeback.

trapped-behind-glass
My only critique is that crowd control heaped people onto the middle stations and left the stations at the very ends under utilized.

Swag was handled better by separating concerns. A bag with key items was picked up at one table and inside was a voucher to pick up a shirt at another table. The first table: five stars. The last table: two out of five.

Once again, the shirt crew was under staffed and lines formed behind it. Without any crowd control, some even lined up thinking it was the way out of registration.

Jacobi and Jenga

I had a lot of fun and at the end I was really out of it. I unintentionally left my backpack with my belongings in a public space with friends and came back with some chapstick, only to realize I left it there in the first place.

A dark toothy fursuit head is next to a faded polaroid

Oops, I just set myself up for a short term burn out. All this work, furry work, and then intense and continuous social interaction left me inoperable.

Two weeks pass and I'm only managing to get my day job done. Everything is ahead of my own schedule, so it isn't a stressor.

Dealers finally picking up again gave me a second wind and I worked on HID input scanning.

Great news is that the vendor system that I planned out and developed with the help of Roury and Cale has finally achieved its mission

To receive applications for vendors; to give staff the tools to communicate with vendors and select those that are accepted, wait listed, or declined; to receive tax information and other confidential information only accessible to the treasurer; and to integrate with registration to receive payment for their vending area on site.

Several vendors have completed this lifecycle and it is a weight off everyones shoulders to have this all come together with minimal friction.

Your scanner support just arrived. They can't have my formats. I have special formats. Look, look with your special scanner. My format!

Though, given my timeline, I won't be able to add WebSerial support in time. HID input scanning will do for now. It works by sampling the first three inputs in a short time window and determines if there is an inhuman short and consistent duration between each keydown event. Once this determination is made, it reverts any modified <input> fields and throws up a scanning modal to capture the rest of the input.

My end of the year vacation is working out, plenty of furry work is getting done and I'm finally improving my personal space. It looks like doing work, furry work, and everything else is too much for me to be healthy. I will have to do better next year on pacing my work and not being so aggressive with my own goals.

Throughout December, I have also gotten a better understanding of the Zebra Programming Language! I can now accurately determine if a print is beyond the print head, and apply other options like peeling or cutting if there is an appropriate attachment. Aaaand, I have collected a few too many printers to experiment with.

i-dont-have-a-problem

This isn't all of them, I swear.

What am I these days?

Professionally, I focus on application and cloud security, including cryptography, AWS infrastructure, and I enjoy designing a paved path that enables others to do great work that remains secure and performant.

From 2014 to 2023, my day jobs predominantly were focused on backend environments. Here and there, I did frontend work with ancient Visual Basic 6 and AngularJS.

While implementing WebAuthn in 2023, I got it in my head that I needed a firm control of web frontend technology. If I could not achieve it without a framework, I am convinced that I will not understand it.

looking
Not everyone will go to the depths I go to understand something. Since birth, it has been part of my nature to tear things apart and rebuild them from the essential components. Going to these depths satisfies my need to learn something's essence and in doing so, retain an understanding of it throughout my lifetime.

Jacobi tearing through machines

beat-saber
There are depths I feel comfortable avoiding. For example, the math behind elliptic curves. I can apply cryptographic constructions built with elliptic curves without being able to do the calculations on paper.
screaming-inside
I did RSA on paper for university. That was traumatic.

Despite my existing emphasis, the needs of my day job and the needs of this convention have pushed me to develop and refine my skills as a frontend developer. This pressures me into towards an all-around skill set once more.

In 2025, I believe I will have a skillset to independently create any web based application I am looking to do. It is likely that I will reuse the form tech I made for other projects too.

The new year - 2025

Hooray! It's the new year!

Wow, I worked way too much last year.

Can I stop now? No?

What do I need to do to survive until the end of January?

  • New Cash registration support
  • New Cash admin support
  • More API hooks into the old backend
  • Basic registration edit form
  • CI for registration
  • Deploy new registration the first time
  • Set up bot-based deploy for registration
  • Reconnect everything and swap everything
  • CI and deploy for the attendee facing vendors frontend

What about by the convention (before February 19th)?

  • Cash-only transactions filter for attendees that commit chargeback fraud
  • Admin Sign in with mobile QR code
  • Permission reduction
  • Training videos
  • New volunteer time keeping activity
  • Emergency contact activity for security
  • Artist Alley sign up
i-am-thinking-augh-my-head

What about the day job?

By March 31st, 2025, I need to have our checkout page comply with PCI requirements 6.4 and 11.6.

Amazon checkout page, which has a distinctly different view feel from the rest of Amazon

You may have noticed a new page for Amazon's checkout. I suspect this is part of their PCI compliance work. There are no third party resources in their new checkout page. All the hosts contacted are:

  • www.amazon.com
  • m.media-amazon.com
  • images-na.ssl-images-amazon.com
  • fls-na.amazon.com

Unlike Amazon, which is its own payment processor, we have to use others like Stripe to conduct business. In order to operate under the new requirements we have to continuously audit what scripts are on our pages intended for credit card entry.

Given the monstrous mess that AngularJS is and the heaps of hacks tacked on top over the years, it is looking far more appetizing to rebuild our web experience from the checkout page and backwards. In November, I selected Next.js for that task rather than Hono, given what I learned from the ongoing dealers work.

However, to release a checkout page in Next.js, I had to redo a fair amount of foundational work, from visual components to transparent session attestation between backends to backend and frontend API integrations. Which, are going great by the way.

The rest is hooking up ALL the payment processors, determining delivery options eligibility, and other pricing finaglisms. At least, I don't have to deal with a buy now pay later capitalist scourge on society.

What about after March? Any rest then?

Probable some. Like last year, I anticipate getting back into 3D modeling again until I need to do more 2026 development. Which, I hope to write about when I do.

Okay, so you'll be so busy than you won't write for a while
oh-heck
hang-in-there
Look, I'll write when I can, and I truly want to write again soon. I'm finally out of burn out and, besides all the timelines and pressures I'm facing from the day job and the furry job, I'm actually in the mood to write again.

For example, of all the zebra printers I have, what's the best in the used market? Or those DEF CON presentations I went to?

I'm not out of things to write about. I merely need to raise writing in my priorities.