Laurence Gonsalves

Laurence Gonsalves

@laurence.gonsalv.es

I like old computers, making things, science, math, and science fiction. Currently building @Sifted.app at @Nipht.io. Previously, helped create Google Reader. @xenomachina@oldbytes.space on the fediverse. Formerly @laurence on the birdsite. IDIC 🖖

612 followers1.8K following404 posts

Many #git users think --force-with-lease makes a force push safe. It *is* strictly safer than --force, but: - It only guards against one narrow scenario - It's easy to disable that protection without realizing it

View full thread

If you really need to force push, using --force-with-lease *is* better than --force, but you need to either be extremely careful about when you fetch, specify an explicit lease ref, or use --force-if-includes if possible. And most of all, you need to be aware of its limitations.

Many #git users think --force-with-lease makes a force push safe. It *is* strictly safer than --force, but: - It only guards against one narrow scenario - It's easy to disable that protection without realizing it

View full thread

I've seen people online say "I tried --force-with-lease and it failed until I did another git fetch, and then it worked." That fetch changed the lease, nullifying the protection the original lease provided. It's like taking the batteries out of your carbon monoxide detector so it stops beeping.

Many #git users think --force-with-lease makes a force push safe. It *is* strictly safer than --force, but: - It only guards against one narrow scenario - It's easy to disable that protection without realizing it

View full thread

With plain --force, you'd silently nuke those new commits. With --force-with-lease, the push fails, because the remote sees that the branch isn't pointing where your local repo expected it to be.

Aside from correctly handling that race condition, --force-with-lease is just as "bad" as --force: it still rewrites history, and so shouldn't be used on branches whose history must be preserved, particularly shared branches like main.

Many #git users think --force-with-lease makes a force push safe. It *is* strictly safer than --force, but: - It only guards against one narrow scenario - It's easy to disable that protection without realizing it

Here's the scenario it actually protects you against: 1. You've fetched the remote history and decided you really do need to rewrite it. 2. You rewrite it locally. 3. Before you force push, someone else pushes other changes to that branch that you aren't aware of.

Is this "Stream Anytime" wording new? I saw this while trying to find a Blu-ray on Amazon. The button takes you to Prime Video, and the price shown is the "Buy HD" price, but calling it "stream anytime" seems like a weaselly attempt to justify digital purchases being eventually revoked.

The first time I was saddened by the news of Optimus Prime's death was when I watched Transformers: The Movie (1986) in theaters. The second time was today. RIP Peter Cullen

Phil Lewis@phillewis.bsky.social

Peter Cullen, the legendary voice actor known for voicing Optimus Prime in the "Transformers" franchise, has died at 85

As a kid, Transformers was one of my favorite after-school shows, and Optimus Prime was my favorite character. I even dressed up as him for Halloween. (Visibility was *not* good. I ended up inadvertently "transforming" when I tripped over the curb of someone's driveway because I couldn't see it.)

We've been getting some renovation done on our home for the past couple of weeks, and this morning there was a terrible high pitched tone coming from this work. It was loudest in the hallway to our side door, and second loudest in my office, which is almost right above that hallway. 🤕

View full thread

Outside, I noticed that a hose had been connected to an outdoor spigot near the door, but hadn't been completely tightened, so some water was dribbling out the connection at the wall. I tightened the hose connection a quarter turn.

I didn't even think this had anything to do with the sound, I was just trying to save water. However, the instant the leak stopped, the sound also stopped. That tiny leak had created a vibration that went through the wall, resonated with the hallway, and the feedback loop produced the sound.

We've been getting some renovation done on our home for the past couple of weeks, and this morning there was a terrible high pitched tone coming from this work. It was loudest in the hallway to our side door, and second loudest in my office, which is almost right above that hallway. 🤕

This sound had been going on all morning, and I assumed it was unavoidable. However, when the workers went on break, this tone continued, so I went to see if I could find its source. I assumed it was outside our side door, since inside the house it was loudest in the hallway leading to that door.

When I went out that door I was surprised to find that the sound was barely audible out there. I even went back inside to double-check. Maybe the sound was coming from some device in that hallway? I couldn't find anything.

The new UI layout in Chrome for Android really makes for a cluttered bottom of the screen, especially with button navigation enabled. This is the way the bsky.app looks on my phone in Chrome. Three separate button bars, each with its own "home" button (at least the last is a circle, not a house).

I went down the garden path on this headline when I first read it: I initially read "steps" as a verb. The funny thing is, it almost works that way because stepping up the waterslide requires walking on water.

The Onion@theonion.com

Dad Carrying 2-Person Inner Tube Up Waterslide Steps Like Christ Bearing Cross

Laurence Gonsalves reposted

Language Barrier The fantasy trope that every member of a given species speaks the same language is a bit silly. Co-author credit to my daughter, who came up with the concept. For more of my comics, read "Love and Hex" on Webtoon! #comics #webcomic #dnd #ttrpg #dragons #funny #art #bskyart

Laurence Gonsalves reposted

Ever since Google search and Google assistant on my phone started using different voices I've noticed that search's voice has begun using some pretty weird pronunciation in some cases. Like today I asked it to add a series of numbers, and discovered that it has a lot of trouble with small numbers.

For example, "3 + 7 + 2 + 1" sounds like "three plus even plus wuh plus own". The weirdest is the number 2, which it may pronounce as "two", "do", or "wuh" depending on where it is in the sum.

I've been using Python for over 25 years now, but only got around to really learning how its type annotations work recently. It got me thinking again about something that seems like a bit of a "truism", but I think has some interesting implications...

View full thread

For example, Python's type annotations. I don't think anyone would come up with "-> type:" as the syntax for return types in a new language. Python had the constraint that they didn't want the addition of type annotations to the language to have any effect on the meaning of un-annotated code.

I've been using Python for over 25 years now, but only got around to really learning how its type annotations work recently. It got me thinking again about something that seems like a bit of a "truism", but I think has some interesting implications...

View full thread

Another example from Java is that several features were explicitly designed to work the "old way" if prior versions would consider the code valid, even if the old way was arguably inconsistent with the "new way", like the way ambiguity is resolved when passing arrays into varargs.

I've been using Python for over 25 years now, but only got around to really learning how its type annotations work recently. It got me thinking again about something that seems like a bit of a "truism", but I think has some interesting implications...

View full thread

For instance: the use of "@" in both Java annotations and Python decorators. Prior to the introduction of those features, an "@" (outside of a string or character literal) was an error in both languages.

I've been using Python for over 25 years now, but only got around to really learning how its type annotations work recently. It got me thinking again about something that seems like a bit of a "truism", but I think has some interesting implications...

View full thread

The first option means you're breaking backwards compatibility, as programs that used to do one thing now do something else. Many languages try to avoid this, but Python 3 infamously chose this option. A str in Python 2 is very different from one in Python 3, for example.

The second option, giving meaning to what was nonsense, exploits a limited resource: as you add features in this way, there is less nonsense to use for future features. In particular, the syntaxes you nee to come up with for newer features can become increasingly elaborate and far-fetched.

I've been using Python for over 25 years now, but only got around to really learning how its type annotations work recently. It got me thinking again about something that seems like a bit of a "truism", but I think has some interesting implications...

One of the rules of programming language design is that whenever a new version of a language adds something, the designer has a binary choice: 1. change the meaning of something that already had a meaning or 2. change something that was meaningless (ie nonsense) into something that now has meaning

Even their outage map doesn't work.

Status Is Down@statusisdown.bsky.social

Xfinity is reportedly down for thousands of subscribers right now. Are you one of them? #Xfinity #XfinityDown https://community.designtaxi.com/topic/25065-is-xfinity-down-march-16-2026/?do=findComment&comment=26947

App passwords can be used to sign into bsky.app, not just third party apps. You can't create an app password while signed in with one. The UI doesn't do a great job of explaining *why* you can't, though. It highlights the name field as if that's the problem, and doesn't show any error messages.

Despite this, surprisingly you *can* delete app passwords while signed in with one — even the one you're currently signed in with is deletable! Especially funny is that an app password that does *not* have chat privileges can be used to delete another app password that *does* have chat privileges.

Most apps that let you authorize other apps with OAuth also have a page somewhere in their UI to revoke these authorizations. I would have expected something like this to be in Bluesky under Setting → Privacy and Security (which is where App Passwords are managed), but it isn't there.

Caramel, one of my kids' cats, sometimes likes to leave a "gift" outside of people's doors: one of her cat toys. Today she left not one, but *three* toys outside of my office door. (The precision placement is all hers.) #cathursday

We forgot to take the wreath off of our front door, and last week we discovered that a bird had made a nest on it. We have since been avoiding the use of our front door so we don't risk scaring it off or damaging the nest. Today we discovered that one of the eggs has hatched.

PSA: remove snow from your car before driving, or it could blow off and temporarily blind the drivers behind you, or worse. Every time I go to Tahoe in winter I see many Californians driving with snow still on their vehicles, but this is the craziest example I've ever seen.

Laurence Gonsalves reposted

We're using #atproto to build a #decentralized social media app that lets you control your own algorithm. Here’s why...

I saw this sign (below the informational billboard) on a recent trip to Costa Rica, and thought it was interesting that the original Spanish ("no drones") is a better English translation than their posted "translation" ("don't drones").