4 min read

Weekly Update: v2023.6.5

Weekly Update: v2023.6.5

I was in Vermont for the US Memorial Day weekend, and it was glorious. My son loved it, I loved it, my wife loved it, and it was a nice, relaxing (mostly) weekend. I think I'm going to make a more concerted to unplug on weekends when I'm away from home.

That being said, I came back Tuesday night, so last week was a short week.

I went down a deep rabbit hole when I realized Mercury's login page background had changed. They use a canvas element to make a very subtle moving background. I tried to reverse-engineer it... but didn't actually get it working.

What I discovered:

  • They use React Three JS in some places in their app. Not sure it's here, though.
  • There is a WebGL2 context.
The WebGL2RenderingContext interface provides the OpenGL ES 3.0 rendering context for the drawing surface of an HTML <canvas> element.

To get an object of this interface, call getContext() on a <canvas> element, supplying "webgl2" as the argument:
GitHub - stegu/webgl-noise: GLSL procedural noise functions compatible with WebGL
GLSL procedural noise functions compatible with WebGL - GitHub - stegu/webgl-noise: GLSL procedural noise functions compatible with WebGL

I'll come back to this a little later. I think the right play will be to get a noise function working first, then tweak it to get it closer to theirs.


This was probably not the best use of my time, but I love finding these small subtle ways to make your product feel better. Every little bit of someone using your product adds up to what the experience means. IMO, these things win people over in the long run. Yes, you need your product to be useful. Yes, it has to be solid. But spending time on making it magical has a powerful return. Plus, it's a great way to hone your craft.

And as I've said before, I like these little magical moments. I think it's fun to make the app feel really, really great.  


In the past, I've talked about reiterate.so and wingedwords.com I think.

But, after much reflection, I don't think those are going to happen. Instead of spreading my focus across several different apps, I'm going to try and centralize it all around the "A Bit of SaaS" brand.


I don't have a strong brand right now. That's okay! I'm a small fish in the big ocean. If I am building random SaaS apps, they won't help build a strong central brand.

And I think that's what I need to do first. One place people go, one place that I own. And something that's beyond my name so that it can grow bigger than a single person.

So both the above-mentioned apps are going to be components of a larger project.

A Bit of SaaS is an project accelerator.

I've created a private monorepo for this project. It contains several projects (20 workspaces!) One of them is Lotus, my new component design library. I'm currently building out components and also sharing them on YouTube.

I want the entire thing to be open source in the future, but I don't want the entire monorepo to be open source. I came across a GitHub Action that will sync repos together that I think I'll try.

The idea is that any file change to the Lotus project in the monorepo will be synced to a public version of it.


I'm waiting on content to finish up the website for one of my clients. Hopefully, that'll happen this week. I also want to chat with them about extending or updating my contract; see if there is any interest there. They are a fun group of people, and I think they need some help with engineering.

I need to send out the statement of work (SOW) for phase 2 of the migration project. That will be a smaller project than initially thought, and the final cost will reflect that. Should still be a good project, though.

I've had a couple of leads come in via my network for some new gigs. We'll see if any turn out to be concrete and if I want them. I'm approaching my target for the year, but making some extra cash would be nice. Especially in this economy! Whatever that means.

The Week Ahead

This week I want to:

  • Ship my video on email confirmation.
  • Send out the SOW for phase 2 of the migration project.
  • Ship a second YouTube video.
  • Lotus: Release TextField and sub-components
  • Foundry: Add Prisma

Daycare has already closed on me, which means I need to scramble to find daycare help, and it's a mess. Very frustrating. Hopefully, that doesn't derail me too much.