HN user

chromakode

1,336 karma

https://chromako.de

[ my public key: https://keybase.io/chromakode; my proof: https://keybase.io/chromakode/sigs/nFpAsIHIVcgbEadoZp9xiJARI42gFf02iXmRm3k6seo ]

Posts12
Comments166
View on HN
JPEG Compression 4 months ago

The DCT is a cool primitive. By extracting the low frequency coefficients, you can get a compact blurry representation of an image. This is used by preload thumbnail algorithms like blurhash and thumbhash. It's also used by some image watermarking techniques to target changes to a detail level that will be less affected by scaling or re-encoding.

I made a notebook a few years back which lets you play with / filter the DCT coefficients of an image: https://observablehq.com/d/167d8f3368a6d602

Ton is a personal hero of mine. When I was a kid, I wanted to be a 3d animator because of Ton. I discovered Blender in the early 2000s as a kid. It was my first exposure to digital art tools because it was free. When Blender open sourced in 2002 it was a massive gift to kids around the world like me. (Ton was kind enough to reply to an email of mine at the time thanking him!)

Ton and Blender have brought so much value to the world by making world-class creation tools available to everyone. Blender is one of the most successful open source projects of all time -- going from an underdog project notorious for difficult to use UI to a polished, ubiquitous, industry shaping tool. And never losing sight of the art; it still brings a huge smile to my face when Blender ships another Open Movie. Nearly ~25 years later, thank you again Ton.

Sounds like a good time to engage a professional coach or therapist, if you haven't already. Particularly to deep dive on the questions asked at the end of the post. In my experience, I often stalemate these kinds of internal debates on my own, but having a second player in the mix got me out of the gridlock.

Migrating out of this mess caused me downtime.

Squarespace's domain panel crashed with a nondescript error when I tried to update nameservers prior to transferring out, and they shut off the Google nameservers as soon as the transfer went through on their side. To add insult to injury, Squarespace makes you wait 5 days for a transfer, with no way to expedite -- and in my case, they waited 6 days, taking me offline on a Friday night. This was the worst experience I've ever had using a domain service.

My favorite part:

If you develop a new program, and you want it to be of the 100% possible use to the public, the best way to achieve this 100% is to make it 1000% free software which everyone can redistribute and 100% change under 100% these terms.

Keybase always performed crypto on-device using their open source client written in Go. What not-your-keys not-your-crypto setup are you referring to?

April fool's at xkcd is a special occasion where external folks join xkcd to build an experimental interactive comic.

Edit: I've updated the first para of the post to hopefully clarify this better

Funny story -- when I was working on the xkcd Machine comic, I actually used the ZFS snapshots to rescue data. I accidentally blew away some early physics prototype code and fished it out of /.zfs/snapshot.

Agreed. DOM started as a prototype and I stayed on it primarily for dev speed due to momentum (and some React DX things -- I checked out the Pixi React binding but decided not to go down that rabbit hole). It's amazing how efficient Pixi is!

We gave each ball different physical properties. Yellow balls are light and have lots of air drag. Green balls are massive. Red balls are very bouncy. This allows physical sorters to be designed.

Yep! It requires ESM, which had other knock on effects in my codebase, IIRC with Lexical. I needed to hack around this a bit for Deno's module system as well (using esm.sh to preprocess Lexical) but it was a much nicer DX.

I got thoroughly frustrated with Deno on a side project for similar reasons (leaky node compat abstractions, kludgey interop between code that does IO the Deno way and Node modules, immature Deno stdlib, undermaintained Deno libraries, spooky bugs). I lost a lot of time to figuring out how to make things work the Deno way.

Then I spent a day switching my codebase back to Node. I was struck by how much worse my code got. The Deno code made use of niceties like top level await and import maps. I needed to resort to a bundler to dedup instances of Y.js between my backend and Lexical. The Deno libraries tended have cleaner APIs (e.g. Oak vs. Koa).

After I took a step back, I scrapped the Node rework and accepted my misgivings with Deno, for now. Going back to Node was kind of like playing an older game; the graphics were great at the time but now that I've seen what a 2023 backend Typescript codebase looks like, I don't want to go back.

I had my first serious medical procedure a year and a half ago, which required a rare specialist. My insurance, Anthem Blue Cross, covered everything, and called and mailed me ahead of time confirming my hospital stay at UCSF was approved and in network. So, YMMV.