Thomas Cannon

Rubyist for 12+ years!

Was: Senior Developer & Ops at Noko Time Tracking

Currently: CTO at Punchpass

passkeys enthusiast, musician

Thomas Cannon boosted:
2026-02-01

2. I think the handful of people I know who are "AI" enthusiasts and seem to get good results with coding agents seem to miss that they have something very similar to survivorship bias or "works-for-me" syndrome that leads them to dismiss or ignore all of the negatives that would occur in wider contexts (for example in a larger organisation).

(And this is before thinking about the ethical, environment and social externalities, which I personally cannot ignore but many people obviously can)

Thomas Cannon boosted:
2026-02-01

I had two thoughts this morning about "AI" and I kinda hate that I can't stop thinking and talking about this stuff, but here we are.

1. I think it would be easier for me to take the tech more seriously if the financial side would look less like circular investment scams and increasingly unrealistic bets on a future that seems increasingly more unlikely (see NVIDIA, OPEN AI), and if the hype men would sound a lot less like being part of a mass psychosis (See Gastown, moltbook, openclawd)

Thomas Cannon boosted:
2026-01-26

If you're using `puma-dev` (having `.test` domains and automatic HTTPS is super nice!) but want HTTP2+ support + all the benefits of caddy, I've started work on a small script/setup that provides a `puma-dev` like experience, but using `caddy`!

And best of all, there are no intermediary steps/tools, it's just a setup that strings together 2 out-of-the-box programs.

github.com/practical-computer/

#indiehackers #buildinpublic #developmentenvironment

2026-01-25

@pat wait…for dev.app.com; does that loop back to localhost? If so, what about nip.io? That approach works with caddy-dev (I tried it!)

2026-01-25

@pat sounds good! Yeah, that particular public + local is tricky

2026-01-25

@pat also!! Thank you very much for trying it out! 😄😄

2026-01-25

@pat

> One extra step I've had to do is add the appropriate TLDs/domains as address lines in /opt/homebrew/etc/dnsmasq.conf (e.g. address=/.test/127.0.0.1/) - have you done the same?

Not sure I follow; could you post a GH issue with the details? My dnsmasq config is a few lines (the one in the repo), then I write a customer /etc/resolver/test file that points everything from the .test TLD to dnsmasq, the same way puma-dev does. That’s resolver.test in the repo

2026-01-24

If you're using `puma-dev` (having `.test` domains and automatic HTTPS is super nice!) but want HTTP2+ support + all the benefits of caddy, I've started work on a small script/setup that provides a `puma-dev` like experience, but using `caddy`!

And best of all, there are no intermediary steps/tools, it's just a setup that strings together 2 out-of-the-box programs.

github.com/practical-computer/

#indiehackers #buildinpublic #developmentenvironment

Thomas Cannon boosted:
2026-01-17

I hyperfocused and came up with (what I think) is a pretty elegant solution to the problem of "how do you move a subtree based on the responsive state?" While the implementation is Web Awesome specific, the patterns are general (Web Standards FTW!)

github.com/shoelace-style/weba

2026-01-16

I hyperfocused and came up with (what I think) is a pretty elegant solution to the problem of "how do you move a subtree based on the responsive state?" While the implementation is Web Awesome specific, the patterns are general (Web Standards FTW!)

github.com/shoelace-style/weba

Thomas Cannon boosted:
2026-01-12

It’s really bonkers how building software went from “anyone can do it”, to “anyone can do it for $200/mo”, and people think we’re in a better place

2026-01-06

@halfbyte I don’t think you’re missing anything; this is how I feel about it as well. Folks are hitching their horse onto one of the most time-shared/resource intensive tools for *marginal* gains that could be achieved through:
- craft practice
- writing micro-scripts/generators
- LSPs

Thomas Cannon boosted:
2025-12-29

Having a normal one drafting up examples for my framework guidelines.

After all, what is an email address but a
handle for transmitting email? A phone
number a handle for telecommunication
protocols? Websites, handles for information
on the web (generally tied to a person or
team)? And handles in other platforms,
instagram, bluesky; they can be resolved
too...
In some of the most resplendent Pepe Silvia
work of my lifetime, I zeroed in on my
favorite artifact of the digital era: the
Universal Resource Identifier.
(Almost) every handle I could think of could
be resolved to a URI! tel, sms, mailto
the humble https! No matter how you
communicated with someone, I could
compress it down to a universal standard: a
type, a human label, and an almost always a
URI.
It was beautifully simple in its modeling,
endlessly extendable, future-proof,
maximally compressible. And ultimately
unworkable in real-world usage.
2025-12-29

Having a normal one drafting up examples for my framework guidelines.

After all, what is an email address but a
handle for transmitting email? A phone
number a handle for telecommunication
protocols? Websites, handles for information
on the web (generally tied to a person or
team)? And handles in other platforms,
instagram, bluesky; they can be resolved
too...
In some of the most resplendent Pepe Silvia
work of my lifetime, I zeroed in on my
favorite artifact of the digital era: the
Universal Resource Identifier.
(Almost) every handle I could think of could
be resolved to a URI! tel, sms, mailto
the humble https! No matter how you
communicated with someone, I could
compress it down to a universal standard: a
type, a human label, and an almost always a
URI.
It was beautifully simple in its modeling,
endlessly extendable, future-proof,
maximally compressible. And ultimately
unworkable in real-world usage.
Thomas Cannon boosted:
2025-12-13

Hey, random question, but…what are you doing April 30 and May 1? 👀

2025-11-29

This is…a lot of dead code removed from Little CRM

A Github diff summary, showing 599 changed files with 2,594 additions and 22,874 deletions
Thomas Cannon boosted:
2025-11-20

Here are the slides from my San Francisco Ruby Conference today keynote today!

#sfruby #sfruby2025

speakerdeck.com/marcoroth/herb

2025-10-14

@soulcutter I mean, *I* want to be able to use it without having to *solely* maintain my own code around it, sooooo 😂

2025-10-14

If you’re using ViewComponents, I’ve submitted a PR to support their instrumentation in Datadog

github.com/practical-computer/

github.com/DataDog/dd-trace-rb

#rails #ViewComponent #datadog

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst