Sign in

(Jason) Gedge

@gedge.ca
74 followers 82 following 693 posts

Mental health break from social media (somewhat here, but mostly not) Be a little better each and every day 📈

PostsRepliesMedia
(Jason) Gedge @gedge.ca · 30/07/2026
Who sleeps like this?!
My partner's and my cat, sleeping on her side with her paws floating in the air.
010
(Jason) Gedge @gedge.ca · 27/07/2026
Also, one from his best pal Tobi Lütke, based on a reply to this tweet: xcancel.com/EricSThor/st...
And here's his good pal Tobi, thinking it would be a good system if the rich got more voting power because they pay more taxes 🙄

Source: https://xcancel.com/EricSThor/status/2081169480076370150#m

For accessibility, since LinkedIn doesn't allow me to attach alt text to a comment image, Tobi replied "good system" to a reply to a tweet that said this:

"Interesting... what about weighted voting proportional to the level of income tax you pay?  (no income tax paid - 0 vote, $1-100k - 1 vote, $100-200k 2 votes and so on... cap it at 5 votes for $500k+. For those that constantly complain about the wealthy not paying tax/fair share they'd have nothing to worry about right?  Why not reward representation of taxation and build a democracy around those that foot the bill?"

Tobi also had the gall to call people with pensions "dependants" and equate them to those under voting age (in the sense they shouldn't be able to vote). Tobi touts "freedom of speech" for his SaaS platform, but is okay suggesting a system that oppresses a group of people. These people like freedoms for themselves, but not for others.

All corporate capitalism does is produce privileged, clueless idiots that think they know what's best for everyone.
001
(Jason) Gedge @gedge.ca · 27/07/2026
I'm going to post a screenshot of my LinkedIn post here, because it's really hard to chunk it properly 😞 "I've decided I will boycott Rails, any 37signals product, and anything created by DHH to avoid any direct or indirect support to his platform (and ego)."
The Rails community needs to distance themselves from DHH. This bigot has been openly spraying his racist, fascist, white supremacist philosophy all over the internet. If you look up this post (and there are many other terrible ones) he shows a lack of understanding of how biological systems work, but tries to create a parallel between wolves and the unhoused.

"When wolves get out of control, you shoot them. When gypsies take over public spaces, you deport them. This isn't hard, it isn't cruel. It's the basic logic of self-preservation."

Umm, dehumanizing an entire group of people you don't vibe with isn't cruel? Creating systems to support this group of people isn't even an option you'd consider? It makes sense he wouldn't though, as here's another one from a podcast he was in (source: https://xcancel.com/davidsenra/status/2081511391656337429)

"You have an obligation, if you sell a product or service and you make a lot of money on it, to put that money back into the system. Send some of that money to the craftsmen of Italy to create you a beautiful Ferrari."

I vehemently am against this narrow view (important note, he also later refers to it as a "moral obligation"). I'm not opposed to using financial privilege to support local artisans and whatnot, but DHH doesn't even toss out the idea that you can also use that privilege to donate to causes that support and lift the less privileged. Honestly, seems like his moral philosophy is "throw the underprivileged people not like me over the fence and make it someone else's problem while I live in my fancy house, buy/race fancy cars, and spout ostensibly intellectual tantrums in my echo chamber, whilst patting ourselves on the back for doing so"

I've decided I will boycott Rails, any 37signals product, and anything created by DHH to avoid any direct or indirect support to his platform (and ego).
240
(Jason) Gedge @gedge.ca · 20/06/2026
Contestants from a joke version of jeopardy, called jeffpardy. Every contestant is named Jeff.
000
(Jason) Gedge @gedge.ca · 19/06/2026
My neighbour's kids are more politically opinionated than most adults.
Chalk-written text on a sidewalk that says "Respectfully, Trump is a bum-bum!"
000
(Jason) Gedge @gedge.ca · 30/05/2026
I wish there were a few more overlapping clues to help out a bit more, but not necessary to have a fun time (which I did!). Thank you! P.S. 14 across was my last one, and I facepalmed so hard once I finally got it (took me WAY too long...)
Finished JS crossword, all cells are green
010
(Jason) Gedge @gedge.ca · 25/05/2026
Actually ended up being not too rainy! I survived, and eating this many calories is hard. Protein, even harder.
Various nutritional targets. Primarily, 5373 calories consumed out of a recommended 5242 calories
000
(Jason) Gedge @gedge.ca · 23/05/2026
Ottawa has been having lovely weather for the past couple of weeks, and will have generally lovely weather for the next 10 days EXCEPT tomorrow morning. Guess what I'll be doing tomorrow, along with many others? ...running a marathon. Gonna be a very fml kind of day.
Hourly forecast for May 24th, 2026 in Ottawa, Ontario. Temperatures around 10°C, 100% chance of rain, and wind speeds of 20 km/h gusting to 40 km/h.
010
(Jason) Gedge @gedge.ca · 22/04/2026
Figured I'd just put it there myself
My profile with the description just being "AI Hater"
000
(Jason) Gedge @gedge.ca · 22/04/2026
TIL I'm labeled an AI Hater (achievement unlocked!) Guess my humour doesn't go over well with some folk. Errr, sorry, I mean I'm poorly disposed for "productive" conversations 😏
Labels on your account

You may appeal these labels if you feel they were placed in error.

AI Hater

Subscribes to anti-AI blocklists or otherwise seems poorly disposed for productive conversations.

Source: ‪@antiantiai.bsky.social‬
210
(Jason) Gedge @gedge.ca · 19/04/2026
Apparently we should be expecting snow, rain, and diamonds today. I hope the diamonds don't fall while I'm out running.
A screenshot from Google weather showing a cloud with a raindrop, a snowflake, and a black diamond.
000
(Jason) Gedge @gedge.ca · 17/04/2026
One fun bit is the app dash in the backend. Every branch builds up the app and pushes it to a private repository which I can deploy. Switching between app versions is a button click, followed by a near instant deploy (static content is easy to deploy, yo). This won't be the production UX though 😅
An admin page for the project I'm working on.

Breadcrumbs: home > apps > mimir
Main heading: mimir
Host: redacted link
Current version: pill showing "latest (main)"

And then a table with many rows, each showing the following:

1. name for package/branch
2. Git SHA
3. An associated PR (in my internal git, but could be wherever)
4. Humanized publish date (e.g., 10 minutes ago)
5. A deploy button (redeploy, if the associated branch is current deployed)
100
(Jason) Gedge @gedge.ca · 14/04/2026
All the cookie privacy dialogs we have these days are super annoying, but if you must, please do it well. Having no "Reject all optional" option is frustrating. Having to click through a bunch of tabs to toggle off optionals is VIOLENCE (looking at you, @gitlab.com 😡).
Privacy dialog on GitLab docs, with 7 tabs the user would have to click through to toggle off optional cookies.
000
(Jason) Gedge @gedge.ca · 09/03/2026
Timeless problem
Anthropic's status page for Claude that shows an infinite loop for any user in a timezone that observed daylight savings.
000
(Jason) Gedge @gedge.ca · 01/02/2026
This is how I stay focused
010
(Jason) Gedge @gedge.ca · 27/01/2026
Asking an LLM to not introduce a new class property to solve a problem...and it does.
Side Eyeing Chloe meme
100
(Jason) Gedge @gedge.ca · 23/01/2026
JavaScript devs: Types? Who needs 'em! TypeScript, schmype-Script
Screenshot of the browser dev tools console saying `Uncaught TypeError: can't access property "lol" of null`
000
(Jason) Gedge @gedge.ca · 17/01/2026
😭
A gemini response with a ton of lines like "I'll halt" and "I'll cease".
000
(Jason) Gedge @gedge.ca · 15/01/2026
This has happened multiple times since first seeing it.
Bart Simpson at a chalkboard, repeatedly writing "I'm a good LLM"
000
(Jason) Gedge @gedge.ca · 12/01/2026
If I scroll back VERY FAST for ~10 seconds I finally get back to... not this 🙄
OpenCode screenshot using the Gemini 3 Pro Preview model with a ton of lines repeating things like "I'll finish", "I'll reply", and "I'm done"
000
(Jason) Gedge @gedge.ca · 24/12/2025
Mouse events in the terminal 🐁 🎉
000
(Jason) Gedge @gedge.ca · 23/12/2025
Testing the wonderful world of async (generators) is WILD. I had a bug where the last epoch of a component would not render when there were two adjacent yields in an async generator with no `await` in between.
A code snippet:

```
test("renders the last yielded value from a transitioning component with no awaits in between", async () => {
    const element = async function* () {
      yield "Hello, World";
      yield "It's me, Mario!";
    };

    const buffer = new MemoryBuffer({ width: 20, initialHeight: 5 });
    await render(element, buffer);

    expect(buffer.toString().trim()).toEqual("It's me, Mario!");
  });
```
100
(Jason) Gedge @gedge.ca · 30/11/2025
A lesser-known work by Mondrian: "reimplementing flex box"
A webpage with a bunch of colored rectangles and bordered child boxes to help with flex layout
010
(Jason) Gedge @gedge.ca · 26/11/2025
🤔
A Google web search for Grokipedia, with the top result being Grokipedia with three sub results: one that just says "search", and the other two being "Elon Musk" and "Adolf Hitler"
010
(Jason) Gedge @gedge.ca · 25/11/2025
I like to educate as I live code, and one thing I talk about is how it's best to avoid obvious comments and focus on documenting the "why", or really anything implicit / unclear. github.com/mozilla-fire... is a good example of an unnecessary comment that wastes energy (many devs _will_ read it)
A piece of code from the linked Firefox source, with the comment reading "align content" and the code being a single function call to a function named AlignContent
100
(Jason) Gedge @gedge.ca · 23/11/2025
Now with proper borders! Took a while to get here because I was over-engineering… I was trying to support varying border widths, and wow is that gonna be a pain. I may consider filling in the borders, but for now I'm happy with this. Now I just need to add in padding/margins, then we're cookin'
Similar to a previously described example of flex items, but with some terminal elements now surrounded by varying-width borders of different colors
000
(Jason) Gedge @gedge.ca · 20/11/2025
Refactored my flex layout algorithm to be closer to the specification (www.w3.org/TR/css-flexb...). In particular, how the various dimensional constraints (e.g., auto height) are incorporated. I think we're now in a better place moving forward :)
A screenshot of a terminal UI with various element laid out with flex rows and columns.

On the left is a green column with the words "I am a column", every word on a new line.

In the middle is a column with the lines "I am above", "< embedded flex row >", and "I am below", with a large gap in between each line.

The last column has "Another column", again with each word on its own line.

All of these are surrounded by an ASCII border consisting of dashes, plus signs, and vertical bars.
120
(Jason) Gedge @gedge.ca · 17/11/2025
I've been doing A LOT of work to prep for richer TUIs, input events in particular, so not many (visual) updates, but I finally got a really nice key event system in place. Here's a list component
130
(Jason) Gedge @gedge.ca · 11/11/2025
Charlie, from It's Always Sunny in Philidelphia, playing the character "Pepe Silvia". Charlie is in front of a board posted full of notes and papers, with strings connecting some of them, as he explains everything to another person.
110
(Jason) Gedge @gedge.ca · 09/11/2025
And now we're responsive! Not amazing — for example, things flicker because we don't track which parts of the screen to change and instead erase most of it — but we're headed there :)
100
(Jason) Gedge @gedge.ca · 07/11/2025
It's been a lot of fun to do this though. Currently tying up my implementation of something akin to a flex box on the web, and it feels good when you switch to `alignItems: "center"` and it works without any tweaking!
The same image as earlier in this BlueSky thread, except all elements are now centered vertically.
100
(Jason) Gedge @gedge.ca · 07/11/2025
Debugging layout algorithms and rendering for a TUI = plus signs, vertical bars, and hyphens everywhere
A screenshot of the terminal UI for the m8t package, showing the m8t logo (a happy corgie), an orange title for m8t, "press q to quit" help message, and repeating lines of "centered" to the right.

All of these elements are wrapped in a borders to show the bounds of the box in which we render each element.
120
(Jason) Gedge @gedge.ca · 29/10/2025
TFW you write out something correct and Cursor's autocomplete wants to rewrite it to something wrong.
Meme image of a young girl giving a side-eye
000
(Jason) Gedge @gedge.ca · 24/10/2025
TFW you're working on something to parse ANSI escape sequences and a failing test emits those escape sequences without the "reset" bit, so all of your terminal output is now a hyperlink
Old man with awkward smile (meme)
000
(Jason) Gedge @gedge.ca · 23/10/2025
I can't say this enough: we've wasted so many $$$ on garbage tech "innovation" and prob could have made life better for so many humans if we actually spent a small percentage of that money on things that more directly benefit people, paying back long-term. Myopia is a primary bigwig trait though.
Disaster girl meme with the smiling girl labeled with "shareholders and c-suites" and the house on fire labeled as "everyone else"
100
(Jason) Gedge @gedge.ca · 21/10/2025
Me asking Cursor's LLM chat to help me find undocumented functions 🤦‍♂️ I only post a small sample, but my experience with Cursor's chat is ~10% success, ~20% of "ugh, okay, I'll clean up the mess", and the rest is bad. I continue to be shocked at Cursor's valuation. We've set the quality bar SO LOW.
Output from an LLM that says:

```
3. Undocumented Utility Functions
src/utils/is.ts - isPlainObject function (lines 15-22) - This one actually has good documentation
src/utils/restartableTimeout.ts - restartableTimeout function (lines 8-22) - This one has good documentation
src/utils/counterPromise.ts - counterPromise function (lines 13-31) - This one has good documentation
```
100
(Jason) Gedge @gedge.ca · 20/10/2025
I don't know how I pulled it off, but really wanting to hit my sub-4 hour goal allowed me to go from ~5:50/km to ~5:20/km in the last few kilometres. I'd like to thank Dragonforce's "Through the fire and the flames" for the high-energy push on the home stretch.
Last 10 kms from my Strava activity, showing an increase from about 5:50/km to 5:22/k min the last few kilometres.
110
(Jason) Gedge @gedge.ca · 09/10/2025
literally no one: cursor's autocomplete, if I were to "vibe":
Nine lines of `import { truncate } from "../../../utils/truncate.js";`
000
(Jason) Gedge @gedge.ca · 09/10/2025
Saw this today when I (doom)scrolled through LinkedIn. This shouldn't be what we celebrate. If an employee at your company has to miss their once in a lifetime celebration, in my opinion, you've failed to build a company worth working for. But, hey, at least the shareholders are happy, right?
San image with the text "can you hear me? That's how our engineer started his vows. He couldn't make it to his own wedding. Because a customer issue came up at the same time. So he called in. From zoom."
120
(Jason) Gedge @gedge.ca · 02/10/2025
Seems like a huge oversight that `Array.isArray` doesn't narrow a readonly array type 🤔
A code snippet where there's an early return within an `Array.isArray` check on a variable typed as `number | readonly number[]`. The mouse is hovering over the variable after this early return and it's still typed as an array.
000
(Jason) Gedge @gedge.ca · 26/09/2025
Another fun one today! Once I tidied up some CSS — font sizes and switching away from zoom to transform, in particular — I was able to quickly (just a couple of minutes!) create an overview mode for my presentation framework 🎉 I've been wanting this to quickly assess any (visually) broken slides.
A grid of slide thumbnails, providing a quick visual overview of a presentation (specifically, for https://gedge.ca/presentations/2024-05-28-do_not_resuscitate)
000
(Jason) Gedge @gedge.ca · 25/09/2025
Spotify nailed the kind of Thursday morning vibe I'm looking for. I _know_ I can channel grandmother energy this morning.
happy folk coastal grandmother thursday morning
000
(Jason) Gedge @gedge.ca · 21/09/2025
I just added a search feature to my website, entirely frontend, with a lazy-loaded index (<200kb gzipped). I had a lot of fun building it, even though it will probably never be used 🙃
A screenshot of my search modal showing several results for the query "testing"
020
(Jason) Gedge @gedge.ca · 17/09/2025
"hide the pain harold" meme with the top text saying "posted a grammar mistake" and the bottom text saying "too lazy to fix and repost"
000
(Jason) Gedge @gedge.ca · 17/09/2025
I have to eat basically an extra days worth of food today. HOW?! BRB while I go bathe myself in tub full of bacon cheeseburgers. (Jokes aside, I'm very proud of this run. It's my longest so far. I'm also very hungry.)
A screenshot from my Garmin profile showing a run that took 2 hours, 49 minutes, and 39 seconds and burnt an estimated 2297 calories
000
(Jason) Gedge @gedge.ca · 15/09/2025
Now that I've exceeded 60km / week of running, I am so frickin' hungry. Ravenous, even. Always. My body is sad, and I am trying to unsad it, but I don't know how.
Meme image based on Lord of the Rings' Boromir saying "one does not simply walk into mordor".

The top text says "one does not simply" and the bottom text "Run long distance without clearing out the grocery store"
000
(Jason) Gedge @gedge.ca · 18/08/2025
Sometimes I wonder if Cursor has intentionally built narcissism into everything 🤔
A screenshot from Cursor, with its autocomplete suggestion being a "I've been using Cursor's autocomplete a lot lately, and it's been a great help." followed by three lines of "I've been using it to help me write this script, and it's been a great help."
000
(Jason) Gedge @gedge.ca · 16/08/2025
TFW when you learn one of your regular baristas thought you were nearly 20 years younger than what you really are.
000
(Jason) Gedge @gedge.ca · 14/08/2025
How I wish I could correct that "they're" to "their" 😭
040
(Jason) Gedge @gedge.ca · 13/08/2025
The Modern Web
A skeleton sitting on a bench
010