41554 blogs · [ { "id": "01a0821b-3eda-73ee-8c28-ed215e84f301", "title": "Scratch a simple data model, find a complex one", "url": "https://codeblog.jonskeet.uk/2026/08/14/scratch-a-simple-data-model-find-a-complex-one/", "published_at": "2026-08-14T10:09:48+00:00" }, { "id": "01a0821b-3eda-73ee-8c28-ed215e9b483a", "title": "Forking an open source project", "url": "https://codeblog.jonskeet.uk/2026/07/11/forking-an-open-source-project/", "published_at": "2026-07-11T12:54:14+00:00" }, { "id": "01a0821b-3eda-73ee-8c28-ed215f2e5af1", "title": "Election 2029: Load Testing", "url": "https://codeblog.jonskeet.uk/2026/01/18/election-2029-load-testing/", "published_at": "2026-01-18T18:11:55+00:00" }, { "id": "01a0821b-3eda-73ee-8c28-ed215f3876ca", "title": "Election 2029: Models and Reality", "url": "https://codeblog.jonskeet.uk/2026/01/17/election-2029-models-and-reality/", "published_at": "2026-01-17T15:35:25+00:00" }, { "id": "01a0821b-3eda-73ee-8c28-ed215ff06647", "title": "Changing Immutable Collections", "url": "https://codeblog.jonskeet.uk/2025/12/31/changing-immutable-collections/", "published_at": "2025-12-31T10:32:45+00:00" }, { "id": "01a0821b-3eda-73ee-8c28-ed2160a7369b", "title": "Records and the ‘with’ operator, redux", "url": "https://codeblog.jonskeet.uk/2025/07/29/records-and-the-with-operator-redux/", "published_at": "2025-07-29T20:00:38+00:00" }, { "id": "01a0821b-3eda-73ee-8c28-ed216120bc96", "title": "Unexpected inconsistency in records", "url": "https://codeblog.jonskeet.uk/2025/07/19/unexpected-inconsistency-in-records/", "published_at": "2025-07-19T13:04:48+00:00" }, { "id": "01a0821b-3eda-73ee-8c28-ed216142d00c", "title": "Election 2029: Postcodes", "url": "https://codeblog.jonskeet.uk/2025/04/13/election-2029-postcodes/", "published_at": "2025-04-13T07:41:11+00:00" }, { "id": "01a0821b-3eda-73ee-8c28-ed216180bcfa", "title": "Records and Collections", "url": "https://codeblog.jonskeet.uk/2025/03/27/records-and-collections/", "published_at": "2025-03-27T14:20:54+00:00" }, { "id": "01a0821b-3eda-73ee-8c28-ed216217c9f9", "title": "Election 2029: Storage", "url": "https://codeblog.jonskeet.uk/2025/03/27/election-2029-storage/", "published_at": "2025-03-27T11:46:31+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd228898c16", "title": "Election 2029: Data Models", "url": "https://codeblog.jonskeet.uk/2025/03/16/election-2029-data-models/", "published_at": "2025-03-16T07:28:55+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd2290c2b96", "title": "Election 2029: Technical overview", "url": "https://codeblog.jonskeet.uk/2025/03/10/election-2029-technical-overview/", "published_at": "2025-03-10T19:01:34+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd229371a9e", "title": "Election 2029: Introduction", "url": "https://codeblog.jonskeet.uk/2025/03/10/election-2029-introduction/", "published_at": "2025-03-10T17:48:39+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd22a273eb3", "title": "Election 2029: The Impossible Exception – Solved", "url": "https://codeblog.jonskeet.uk/2025/02/08/election-2029-the-impossible-exception-solved/", "published_at": "2025-02-08T04:07:15+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd22a9dbf20", "title": "Election 2029: An Impossible Exception", "url": "https://codeblog.jonskeet.uk/2025/02/07/election-2029-an-impossible-exception/", "published_at": "2025-02-07T23:32:01+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd22b43d222", "title": "When Abstractions Break", "url": "https://codeblog.jonskeet.uk/2024/11/11/when-abstractions-break/", "published_at": "2024-11-11T19:21:26+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd22b493be8", "title": "No, the bug is in your code (and mine)", "url": "https://codeblog.jonskeet.uk/2024/10/22/no-the-bug-is-in-your-code-and-mine/", "published_at": "2024-10-22T18:35:13+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd22b873ad7", "title": "Abstraction: Introduction", "url": "https://codeblog.jonskeet.uk/2024/10/22/abstraction-introduction/", "published_at": "2024-10-22T17:46:16+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd22c64a2c6", "title": "Lessons from election night", "url": "https://codeblog.jonskeet.uk/2024/07/09/lessons-from-election-night/", "published_at": "2024-07-09T17:52:59+00:00" }, { "id": "01a0c503-2b4c-7032-af17-8fd22d485b80", "title": "Building an election website", "url": "https://codeblog.jonskeet.uk/2024/06/23/building-an-election-website/", "published_at": "2024-06-23T16:34:56+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040e89bdf34", "title": "DigiMixer – the app", "url": "https://codeblog.jonskeet.uk/2024/01/18/digimixer-the-app/", "published_at": "2024-01-18T19:51:06+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040e9801098", "title": "DigiMixer: Protocols", "url": "https://codeblog.jonskeet.uk/2024/01/02/digimixer-protocols/", "published_at": "2024-01-02T20:58:14+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040e9a70e51", "title": "Variations in the VISCA protocol", "url": "https://codeblog.jonskeet.uk/2023/11/25/variations-in-the-visca-protocol/", "published_at": "2023-11-25T17:09:03+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040ea426753", "title": "SSC Protocol", "url": "https://codeblog.jonskeet.uk/2023/06/11/ssc-protocol/", "published_at": "2023-06-11T12:20:10+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040eacc95de", "title": "DigiMixer: Introduction to digital mixers", "url": "https://codeblog.jonskeet.uk/2023/01/14/digimixer-introduction-to-digital-mixers/", "published_at": "2023-01-14T16:10:02+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040eaea881c", "title": "Handling times for an EV charger", "url": "https://codeblog.jonskeet.uk/2022/10/30/handling-times-for-an-ev-charger/", "published_at": "2022-10-30T19:19:54+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040eb202d08", "title": "Introduction to DigiMixer", "url": "https://codeblog.jonskeet.uk/2022/10/16/introduction-to-digimixer/", "published_at": "2022-10-16T07:59:56+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040eb20fde0", "title": "Taking .NET MAUI for a spin", "url": "https://codeblog.jonskeet.uk/2022/04/16/taking-net-maui-for-a-spin/", "published_at": "2022-04-16T13:55:16+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040eba9a6a5", "title": "What’s up with TimeZoneInfo on .NET 6? (Part 2)", "url": "https://codeblog.jonskeet.uk/2022/03/27/whats-up-with-timezoneinfo-on-net-6-part-2/", "published_at": "2022-03-27T13:27:24+00:00" }, { "id": "01a0c514-f636-715e-89d3-f040ebc5044f", "title": "Diagnosing an ASP.NET Core hard crash", "url": "https://codeblog.jonskeet.uk/2022/02/20/diagnosing-an-asp-net-core-hard-crash/", "published_at": "2022-02-20T14:59:14+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd7369459a", "title": "Displaying NDI sources on Stream Decks", "url": "https://codeblog.jonskeet.uk/2022/02/20/displaying-ndi-sources-on-stream-decks/", "published_at": "2022-02-20T12:49:17+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd7429d51a", "title": "Diagnosing a VISCA camera issue", "url": "https://codeblog.jonskeet.uk/2022/02/17/diagnosing-a-visca-camera-issue/", "published_at": "2022-02-17T20:45:33+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd74e5e94f", "title": "What’s up with TimeZoneInfo on .NET 6? (Part 1)", "url": "https://codeblog.jonskeet.uk/2022/02/05/whats-up-with-timezoneinfo-on-net-6-part-1/", "published_at": "2022-02-05T15:13:30+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd75d06568", "title": "Book updates for July 2021", "url": "https://codeblog.jonskeet.uk/2021/07/14/book-updates-for-july-2021/", "published_at": "2021-07-14T11:44:43+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd75e47fe4", "title": "New book: Software Mistakes and Tradeoffs", "url": "https://codeblog.jonskeet.uk/2021/06/11/new-book-software-mistakes-and-tradeoffs/", "published_at": "2021-06-11T10:33:09+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd75f5903f", "title": "Playing with an X-Touch Mini controller using C#", "url": "https://codeblog.jonskeet.uk/2021/03/28/playing-with-an-x-touch-mini-controller-using-c/", "published_at": "2021-03-28T14:28:38+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd76eae814", "title": "OSC mixer control in C#", "url": "https://codeblog.jonskeet.uk/2021/01/27/osc-mixer-control-in-c/", "published_at": "2021-01-27T21:31:16+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd772864de", "title": "VISCA camera control in C#", "url": "https://codeblog.jonskeet.uk/2020/12/04/visca-camera-control-in-c/", "published_at": "2020-12-04T09:54:18+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd77b126b0", "title": "A Tour of the .NET Functions Framework", "url": "https://codeblog.jonskeet.uk/2020/10/23/a-tour-of-the-net-functions-framework/", "published_at": "2020-10-23T11:04:44+00:00" }, { "id": "01a0c520-5fa5-70fb-8161-c1bd789ec6b6", "title": "Posting to wordpress.com in code", "url": "https://codeblog.jonskeet.uk/2020/08/29/1793/", "published_at": "2020-08-29T08:26:25+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c0824c86e0", "title": "Travis logs and .NET Core console output", "url": "https://codeblog.jonskeet.uk/2020/07/19/travis-logs-and-net-core-console-output/", "published_at": "2020-07-19T08:08:39+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c082b7fadb", "title": "V-Drum Explorer: Blazor and the Web MIDI API", "url": "https://codeblog.jonskeet.uk/2020/07/12/v-drum-explorer-blazor-and-the-web-midi-api/", "published_at": "2020-07-12T14:18:17+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c082d79fb2", "title": "V-Drum Explorer: Planning notes for MVVM", "url": "https://codeblog.jonskeet.uk/2020/03/03/v-drum-explorer-planning-notes-for-mvvm/", "published_at": "2020-03-03T20:26:36+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c083060dfa", "title": "V-Drum Explorer: Memory and 7-bit addressing", "url": "https://codeblog.jonskeet.uk/2020/02/25/v-drum-explorer-memory-and-7-bit-addressing/", "published_at": "2020-02-25T19:39:36+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c083fd27a1", "title": "New and improved JonSkeet.DemoUtil", "url": "https://codeblog.jonskeet.uk/2020/02/21/new-and-improved-jonskeet-demoutil/", "published_at": "2020-02-21T14:30:12+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c08437365e", "title": "Reducing my international speaking", "url": "https://codeblog.jonskeet.uk/2019/11/25/reducing-my-international-speaking/", "published_at": "2019-11-25T14:56:04+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c084a34e23", "title": "V-Drum Explorer: MIDI interface", "url": "https://codeblog.jonskeet.uk/2019/11/11/v-drum-explorer-midi-interface/", "published_at": "2019-11-11T20:18:27+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c084b8b668", "title": "V-Drum Explorer: Introduction", "url": "https://codeblog.jonskeet.uk/2019/10/31/v-drum-explorer-introduction/", "published_at": "2019-10-31T11:45:22+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c084d1c729", "title": "Options for .NET’s versioning issues", "url": "https://codeblog.jonskeet.uk/2019/10/25/options-for-nets-versioning-issues/", "published_at": "2019-10-25T16:35:31+00:00" }, { "id": "01a0c52b-6bf9-7249-a80c-98c084e01ebb", "title": "Why I don’t start versions at 0.x any more", "url": "https://codeblog.jonskeet.uk/2019/10/20/why-i-dont-start-versions-at-0-x-any-more/", "published_at": "2019-10-20T13:51:05+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b0699fe07909", "title": "Using “git bash” from AppVeyor", "url": "https://codeblog.jonskeet.uk/2019/10/12/using-git-bash-from-appveyor/", "published_at": "2019-10-12T08:17:51+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b069a074e2bb", "title": "Versioning limitations in .NET", "url": "https://codeblog.jonskeet.uk/2019/06/30/versioning-limitations-in-net/", "published_at": "2019-06-30T10:12:25+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b069a13786d6", "title": "Lying to the compiler", "url": "https://codeblog.jonskeet.uk/2019/05/25/lying-to-the-compiler/", "published_at": "2019-05-25T16:45:58+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b069a1f16e58", "title": "Storing UTC is not a silver bullet", "url": "https://codeblog.jonskeet.uk/2019/03/27/storing-utc-is-not-a-silver-bullet/", "published_at": "2019-03-27T13:20:23+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b069a2c80ff9", "title": "Hosting ASP.NET Core behind https in Google Kubernetes Engine", "url": "https://codeblog.jonskeet.uk/2019/03/17/hosting-asp-net-core-behind-https-in-google-kubernetes-engine/", "published_at": "2019-03-17T18:17:34+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b069a378a7e9", "title": "NullableAttribute and C# 8", "url": "https://codeblog.jonskeet.uk/2019/02/10/nullableattribute-and-c-8/", "published_at": "2019-02-10T17:08:27+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b069a3e78d37", "title": "Farewell, Daisy Shipton", "url": "https://codeblog.jonskeet.uk/2018/09/19/farewell-daisy-shipton/", "published_at": "2018-09-19T06:16:36+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b069a48b0ee3", "title": "First steps with nullable reference types", "url": "https://codeblog.jonskeet.uk/2018/04/21/first-steps-with-nullable-reference-types/", "published_at": "2018-04-21T15:52:35+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b069a4be51b8", "title": "Backward compatibility and overloading", "url": "https://codeblog.jonskeet.uk/2018/04/13/backward-compatibility-and-overloading/", "published_at": "2018-04-13T16:11:23+00:00" }, { "id": "01a0c536-a3fe-7163-b638-b069a5602831", "title": "Stack Overflow Culture", "url": "https://codeblog.jonskeet.uk/2018/03/17/stack-overflow-culture/", "published_at": "2018-03-17T17:21:50+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa55ed275d0", "title": "Implementing IXmlSerializable in readonly structs", "url": "https://codeblog.jonskeet.uk/2018/03/02/implementing-ixmlserializable-in-readonly-structs/", "published_at": "2018-03-02T16:24:26+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa55ef0c801", "title": "NuGet package statistics", "url": "https://codeblog.jonskeet.uk/2017/11/28/nuget-package-statistics/", "published_at": "2017-11-28T14:59:38+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa55f5c69e7", "title": "Diagnosing a Linux-only unit test failure", "url": "https://codeblog.jonskeet.uk/2017/10/08/diagnosing-a-linux-only-unit-test-failure/", "published_at": "2017-10-08T21:02:00+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa55fe66415", "title": "Diagnosing a VS-only build problem", "url": "https://codeblog.jonskeet.uk/2017/08/30/diagnosing-a-vs-only-build-problem/", "published_at": "2017-08-30T14:50:47+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa5609b8964", "title": "Diagnosing a corner-case tooling bug", "url": "https://codeblog.jonskeet.uk/2017/08/19/diagnosing-a-corner-case-tooling-bug/", "published_at": "2017-08-19T22:09:35+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa561483785", "title": "Diagnosing a single slow test", "url": "https://codeblog.jonskeet.uk/2017/08/19/diagnosing-a-single-slow-test/", "published_at": "2017-08-19T20:22:53+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa56168f7ec", "title": "Diagnosing slow tests (again)", "url": "https://codeblog.jonskeet.uk/2017/08/17/diagnosing-slow-tests-again/", "published_at": "2017-08-17T08:17:23+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa561984f46", "title": "Diagnostics everywhere!", "url": "https://codeblog.jonskeet.uk/2017/08/17/diagnostics-everywhere/", "published_at": "2017-08-17T08:16:01+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa5627318fc", "title": "Using .NET Core 2.0 SDK on Travis", "url": "https://codeblog.jonskeet.uk/2017/08/15/using-net-core-2-0-sdk-on-travis/", "published_at": "2017-08-15T10:54:34+00:00" }, { "id": "01a0c540-8c18-72f4-9380-7aa5629b4c82", "title": "Upcoming speaking engagements", "url": "https://codeblog.jonskeet.uk/2017/08/09/upcoming-speaking-engagements-2/", "published_at": "2017-08-09T13:52:20+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c0666bec3c2", "title": "Imposter Syndrome (part 2)", "url": "https://codeblog.jonskeet.uk/2017/06/25/imposter-syndrome-part-2/", "published_at": "2017-06-25T22:16:42+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c066724037e", "title": "Imposter syndrome (part 1)", "url": "https://codeblog.jonskeet.uk/2017/06/16/imposter-syndrome-part-1/", "published_at": "2017-06-16T08:08:40+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c066818c62c", "title": "Surprise! Creating an instance of an open generic type", "url": "https://codeblog.jonskeet.uk/2017/04/26/surprise-creating-an-instance-of-an-open-generic-type/", "published_at": "2017-04-26T13:16:39+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c0668482d4d", "title": "All about java.util.Date", "url": "https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/", "published_at": "2017-04-23T16:26:14+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c0669235332", "title": "Diversity and speaking engagements", "url": "https://codeblog.jonskeet.uk/2016/12/10/diversity-and-speaking-engagements/", "published_at": "2016-12-10T17:39:26+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c06696b696a", "title": "Thoughts on privilege (moved!)", "url": "https://codeblog.jonskeet.uk/2016/06/22/thoughts-on-privilege/", "published_at": "2016-06-22T19:36:41+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c0669fccb5f", "title": "Tracking down a performance hit", "url": "https://codeblog.jonskeet.uk/2016/06/09/tracking-down-a-performance-hit/", "published_at": "2016-06-09T20:10:17+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c066a5c59eb", "title": "Versioning conundrum for Noda Time – help requested", "url": "https://codeblog.jonskeet.uk/2016/03/28/versioning-conundrum-for-noda-time-help-requested/", "published_at": "2016-03-28T08:44:12+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c066ad4e970", "title": "Ultimate Man Cave: voice automation for my shed", "url": "https://codeblog.jonskeet.uk/2016/03/26/ultimate-man-cave-voice-automation-for-my-shed/", "published_at": "2016-03-26T18:37:18+00:00" }, { "id": "01a0c549-2e4c-70f7-8838-5c066ba5655b", "title": "To base() or not to base(), that is the question", "url": "https://codeblog.jonskeet.uk/2016/01/08/to-base-or-not-to-base-that-is-the-question/", "published_at": "2016-01-08T17:10:16+00:00" }, { "id": "01a0c551-db03-7256-909f-8a52e34b725f", "title": "“Sideways overriding” with partial methods", "url": "https://codeblog.jonskeet.uk/2015/07/27/sideways-overriding-with-partial-methods/", "published_at": "2015-07-27T20:21:53+00:00" }, { "id": "01a0c551-db03-7256-909f-8a52e3c25035", "title": "Backwards compatibility is (still) hard", "url": "https://codeblog.jonskeet.uk/2015/06/03/backwards-compatibility-is-still-hard/", "published_at": "2015-06-03T19:23:26+00:00" }, { "id": "01a0c551-db03-7256-909f-8a52e4906f81", "title": "Common mistakes in date/time formatting and parsing", "url": "https://codeblog.jonskeet.uk/2015/05/05/common-mistakes-in-datetime-formatting-and-parsing/", "published_at": "2015-05-05T13:44:43+00:00" }, { "id": "01a0c551-db03-7256-909f-8a52e4cda5c6", "title": "Precedence: ordering or grouping?", "url": "https://codeblog.jonskeet.uk/2015/04/21/precedence-ordering-or-grouping/", "published_at": "2015-04-21T18:35:07+00:00" }, { "id": "01a0c551-db03-7256-909f-8a52e5b82d0c", "title": "Backward compatibility pain", "url": "https://codeblog.jonskeet.uk/2015/03/02/backward-compatibility-pain/", "published_at": "2015-03-02T19:47:21+00:00" }, { "id": "01a0c551-db03-7256-909f-8a52e5f88f4e", "title": "Clean event handler invocation with C# 6", "url": "https://codeblog.jonskeet.uk/2015/01/30/clean-event-handlers-invocation-with-c-6/", "published_at": "2015-01-30T13:57:33+00:00" }, { "id": "01a0c551-db03-7256-909f-8a52e6224814", "title": "C# 7 feature request #1… extension attributes", "url": "https://codeblog.jonskeet.uk/2015/01/12/c-7-feature-request-1-extension-attributes/", "published_at": "2015-01-12T17:56:38+00:00" }, { "id": "01a0c551-db03-7256-909f-8a52e64a920d", "title": "C# 6 in action", "url": "https://codeblog.jonskeet.uk/2014/12/08/c-6-in-action/", "published_at": "2014-12-08T07:36:22+00:00" }, { "id": "01a0c551-db04-7080-a72b-b09110ec733b", "title": "When is an identifier not an identifier? (Attack of the Mongolian Vowel Separator)", "url": "https://codeblog.jonskeet.uk/2014/12/01/when-is-an-identifier-not-an-identifier-attack-of-the-mongolian-vowel-separator/", "published_at": "2014-12-01T23:14:29+00:00" }, { "id": "01a0c551-db04-7080-a72b-b09111a3c9c7", "title": "When is a string not a string?", "url": "https://codeblog.jonskeet.uk/2014/11/07/when-is-a-string-not-a-string/", "published_at": "2014-11-07T18:17:59+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b49dfba7d7", "title": "Writing and speaking update", "url": "https://codeblog.jonskeet.uk/2014/11/06/writing-and-speaking-update/", "published_at": "2014-11-06T16:17:06+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b49e90d37b", "title": "Violating the “smart enum” pattern in C#", "url": "https://codeblog.jonskeet.uk/2014/10/23/violating-the-smart-enum-pattern-in-c/", "published_at": "2014-10-23T21:07:38+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b49f7ff273", "title": "The mysteries of BCL time zone data", "url": "https://codeblog.jonskeet.uk/2014/09/30/the-mysteries-of-bcl-time-zone-data/", "published_at": "2014-09-30T20:49:44+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b4a02bc1ce", "title": "When is a constant not a constant? When it’s a decimal…", "url": "https://codeblog.jonskeet.uk/2014/08/22/when-is-a-constant-not-a-constant-when-its-a-decimal/", "published_at": "2014-08-22T18:39:50+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b4a091e034", "title": "The BobbyTables culture", "url": "https://codeblog.jonskeet.uk/2014/08/08/the-bobbytables-culture/", "published_at": "2014-08-08T14:48:04+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b4a09315b9", "title": "Object pooling and thread safety", "url": "https://codeblog.jonskeet.uk/2014/08/01/object-pooling-and-thread-safety/", "published_at": "2014-08-01T16:22:05+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b4a116aede", "title": "New blog hosting", "url": "https://codeblog.jonskeet.uk/2014/07/25/new-blog-hosting/", "published_at": "2014-07-25T21:41:54+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b4a1e86524", "title": "Micro-optimization: the surprising inefficiency of readonly fields", "url": "https://codeblog.jonskeet.uk/2014/07/16/micro-optimization-the-surprising-inefficiency-of-readonly-fields/", "published_at": "2014-07-16T14:26:37+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b4a288cab8", "title": "Anti-pattern: parallel collections", "url": "https://codeblog.jonskeet.uk/2014/06/03/anti-pattern-parallel-collections/", "published_at": "2014-06-03T00:52:15+00:00" }, { "id": "01a0c55a-1960-7043-b073-88b4a33ac07f", "title": "Diagnosing Portable Class Libraries", "url": "https://codeblog.jonskeet.uk/2014/05/16/diagnosing-portable-class-libraries/", "published_at": "2014-05-16T11:58:01+00:00" } ] posts Claim your blog
Back to Jon Skeet
Blog · corpus.blog/blogs/codeblog.jonskeet.uk/posts

Jon Skeet

codeblog.jonskeet.uk

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014