Jon Skeet's Avatar

Jon Skeet

@jonskeet.uk.bsky.social

Christian, husband of @hollywebb.bsky.social father, feminist, software engineer, author, Stack Overflow contributor. He/him.

3,772 Followers  |  191 Following  |  451 Posts  |  Joined: 01.05.2023  |  1.9628

Latest posts by jonskeet.uk on Bluesky

Ooh, apparently all the validation has gone through, so fingers crossed the token will now ship. That still leaves a) shipping from the US; b) figuring out how to use the new hardware-based token, but fingers crossed those will be okay. The validation was always my biggest concern.

04.08.2025 10:22 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

The sort of category error here (like comparing distance with speed, or speed with acceleration) feels like it *must* be deliberate. I assume Yusuf is genuinely clueful enough about business that he would understand this difference. Hope if he pulls this in a debate, he's called out very quickly.

03.08.2025 12:28 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I think I may have not understood Stereophonic. It was very well acted, sung, staged, etc. The characters were interesting. But the structure/plot didn't cohere for me. I'm sure it's my loss - I don't think all the five star reviews and Tony awards were a fluke. I just don't think I "got" it.

02.08.2025 21:53 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

This is my third time with Comodo - hoping it all works out...

02.08.2025 14:45 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

And I'm trying to get a cert for me as an individual, not as a company...

02.08.2025 13:19 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

It's currently not the "dealing with the cert" part that's the problem - it's getting it issued to start with...

02.08.2025 13:14 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Doing a double again today: Hadestown this afternoon (it feels like it's been *ages*) and then Stereophonic this evening. What a day!

02.08.2025 11:50 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

Oh joy, I've started the "once every three years" process of getting a personal code signing certificate. Of course, every three years the process has changed a bit - and it's all business-oriented (which is somewhat reasonable) making it a pain to do as an individual...

02.08.2025 08:36 β€” πŸ‘ 21    πŸ” 1    πŸ’¬ 5    πŸ“Œ 0

(I once worked on a product called theMobilizer. Writing documentation was an absolute nightmare.)

From a personal and selfish perspective it would be nice if they could work out an unambiguous name with a single canonical form, so polling companies don't all use small variations.

29.07.2025 20:58 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

(This time tomorrow I'll be in a meeting with @ericlippert.com - I feel slightly sheepish in effectively saying "Hey, thanks for your amazing work on Roslyn, Eric... now I can safely write code you probably don't really like the look of!" But, um, thanks anyway, Eric...)

29.07.2025 20:06 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Preview
Records and the β€˜with’ operator, redux In my previous blog post I described some behaviour of C# record types which was unexpected to me, though entirely correct according to the documentation. This is a follow-up post to that one, so i…

Follow-up blog post to my previous one about C# records and the "with" operator... now with added Roslyn analyzers: codeblog.jonskeet.uk/2025/07/29/r...

29.07.2025 20:04 β€” πŸ‘ 14    πŸ” 4    πŸ’¬ 1    πŸ“Œ 0

We're watching the presentation at the end of the Euros, and @hollywebb.bsky.social just can't stop being a Girlguiding leader: "They've all just left their water bottles in a pile!" Cue comments of "I hope they've all got their names on..."

27.07.2025 19:08 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Glad it makes sense (as a problem).

25.07.2025 06:26 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

See my posts from last weekend.

25.07.2025 05:56 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I wasn't thinking of new languages so much as changes to existing languages. I suspect that designing a new language where the primary human interaction is code *review* could be a whole different ballgame.

23.07.2025 20:06 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I know very little about AI and LLMs, but I'd expect it to be relatively straightforward to include a well-written specification in training data, assigning it a deliberately high "priority" or whatever the appropriate term is. The only samples would be the first-party ones, but maybe that's enough.

23.07.2025 19:57 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I hadn't thought about this before, but I assume that from now on, programming language designers will consider "how easily will AI models be able to use this new feature?" when thinking of language evolution.

23.07.2025 19:50 β€” πŸ‘ 7    πŸ” 1    πŸ’¬ 4    πŸ“Œ 0

(The blog post will also cover why in many cases it would be better to turn the record into a class. But I assert that doesn't cover *all* cases, and the analyzer is handy. I'm going to convert a couple of my records to classes soon...)

22.07.2025 20:00 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
DemoCode/RoslynAnalyzers at main Β· jskeet/DemoCode Demo code used in talks, blog posts etc. Contribute to jskeet/DemoCode development by creating an account on GitHub.

It's really, really early days and I expect there are plenty of bugs still, but if you want to try it out, use JonSkeet.RoslynAnalyzers (version 1.0.0-beta.6 or higher). Code is at github.com/jskeet/DemoC..., blog post when I find some time.

22.07.2025 20:00 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

The second analyzer checks each "with" operator you use to see whether any of the parameters you set is decorated with [DangerousWithTarget]. So if you're in control of both the record and the with operator, and the analyzers are enabled in both projects, it should catch problems.

22.07.2025 20:00 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

First pass at Roslyn analyzers for the "record/with footgun" is now available, albeit very hacky. Two analyzers, one of which requires that you annotate any record parameter used in an initializer with [DangerousWithTarget] (an attribute you declare yourself as DangerousWithTargetAttribute).

22.07.2025 20:00 β€” πŸ‘ 8    πŸ” 2    πŸ’¬ 2    πŸ“Œ 0

Humbug. It looks like it works within a single project, but not when the record is declared in a different project (even when it's still in the same solution). Further work needed...

20.07.2025 18:37 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Fix the typo - thanks!

20.07.2025 17:02 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I've now taken a first pass at writing an analyzer, and it looks like it may not actually be too hard. Gosh.

20.07.2025 09:51 β€” πŸ‘ 7    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I think it's quite tricky to do that in a way which works across versions and without multiple instances being constructed. But for some reason that (calling the constructor) is what I'd assumed would happen. I'm glad it wasn't just me that expected that!

19.07.2025 21:01 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Yes, you can - but it's all or nothing; you can't say "you do equality for all the simple bits, and I'll do it for these fields".

19.07.2025 14:58 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Or override equality - that's what I've ended up doing (so that I can keep using ImmutableList etc)

19.07.2025 14:53 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Unexpected inconsistency in records Unexpected inconsistency in records The other day, I was trying to figure out a bug in my code, and it turned out to be a misunderstanding on my part as to how C# records work. It’s entirely …

Blogged: Unexpected inconsistency in records - codeblog.jonskeet.uk/2025/07/19/u... - if you use C# records and the "with" operator, I'd suggest reading this to avoid a footgun you may be unaware of

19.07.2025 13:08 β€” πŸ‘ 56    πŸ” 13    πŸ’¬ 5    πŸ“Œ 2

I'm not sure "everything" means what you think it means.

17.07.2025 12:09 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Feedback for improvements very welcome!

17.07.2025 11:40 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

@jonskeet.uk is following 20 prominent accounts