41554 blogs · [ { "id": "01a08c55-2e8c-7214-88ef-8a9a3a99e4a5", "title": "Interesting new C# 14 features coming with .NET 10", "url": "https://thomaslevesque.com/2025/10/07/interesting-new-csharp-14-features-coming-with-net-10/", "published_at": "2025-10-07T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3b053501", "title": "Running a GitHub Actions workflow that doesn't exist yet on the default branch", "url": "https://thomaslevesque.com/2024/04/25/running-a-github-actions-workflow-that-doesnt-exist-yet-on-the-default-branch/", "published_at": "2024-04-25T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3bc02093", "title": "Building a URL shortener in 12 lines of code using Cloudflare Workers", "url": "https://thomaslevesque.com/2022/11/01/building-a-url-shortener-in-12-lines-of-code-using-cloudflare-workers/", "published_at": "2022-11-01T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3cbf797a", "title": "Using multiple JSON serialization settings in ASP.NET Core", "url": "https://thomaslevesque.com/2022/09/19/using-multiple-json-serialization-settings-in-aspnet-core/", "published_at": "2022-09-19T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3cc2976b", "title": "Building a project that target .NET Framework 4.5 in Visual Studio 2022", "url": "https://thomaslevesque.com/2021/11/12/building-a-project-that-target-net-45-in-visual-studio-2022/", "published_at": "2021-11-12T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3db22e18", "title": "A quick review of C# 10 new language features", "url": "https://thomaslevesque.com/2021/11/04/a-quick-review-of-csharp-10-new-language-features/", "published_at": "2021-11-04T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3e7f604e", "title": "C# 9 records as strongly-typed ids - Part 5: final bits and conclusion", "url": "https://thomaslevesque.com/2021/03/19/csharp-9-records-as-strongly-typed-ids-part-5-final-bits-and-conclusion/", "published_at": "2021-03-19T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3ea0a739", "title": "C# 9 records as strongly-typed ids - Part 4: Entity Framework Core integration", "url": "https://thomaslevesque.com/2020/12/23/csharp-9-records-as-strongly-typed-ids-part-4-entity-framework-core-integration/", "published_at": "2020-12-23T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3ed2f365", "title": "C# 9 records as strongly-typed ids - Part 3: JSON serialization", "url": "https://thomaslevesque.com/2020/12/07/csharp-9-records-as-strongly-typed-ids-part-3-json-serialization/", "published_at": "2020-12-07T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3ef3e990", "title": "C# 9 records as strongly-typed ids - Part 2: ASP.NET Core route and query parameters", "url": "https://thomaslevesque.com/2020/11/23/csharp-9-records-as-strongly-typed-ids-part-2-aspnet-core-route-and-query-parameters/", "published_at": "2020-11-23T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a3f5fe9cc", "title": "Using C# 9 records as strongly-typed ids", "url": "https://thomaslevesque.com/2020/10/30/using-csharp-9-records-as-strongly-typed-ids/", "published_at": "2020-10-30T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4021ae9e", "title": "Automatic factory with Microsoft.Extensions.DependencyInjection and Castle DynamicProxy", "url": "https://thomaslevesque.com/2020/09/27/automatic-factory-with-microsoft-extensions-dependencyinjection-and-castle-dynamicproxy/", "published_at": "2020-09-27T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a404b0ad2", "title": "Introducing Cosmos DB Studio", "url": "https://thomaslevesque.com/2020/09/17/introducing-cosmos-db-studio/", "published_at": "2020-09-17T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a41014b7f", "title": "Inject a service into a System.Text.Json converter", "url": "https://thomaslevesque.com/2020/08/31/inject-service-into-system-text-json-converter/", "published_at": "2020-08-31T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a410c07de", "title": "ASP.NET Core 3, IIS and empty HTTP headers", "url": "https://thomaslevesque.com/2020/07/23/aspnet-core-iis-and-empty-http-headers/", "published_at": "2020-07-23T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a41749756", "title": "Exposing a custom type as a JSON string in an ASP.NET Core API", "url": "https://thomaslevesque.com/2020/06/27/exposing-custom-type-as-json-string-in-asp-net-core-api/", "published_at": "2020-06-27T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a41bd608c", "title": "Git tip: how to fix an accidental commit on the wrong branch", "url": "https://thomaslevesque.com/2020/05/29/git-tip-how-to-fix-an-accidental-commit-on-the-wrong-branch/", "published_at": "2020-05-29T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a41d1f9df", "title": "Exciting new features in C# 9", "url": "https://thomaslevesque.com/2020/05/25/exciting-new-features-in-csharp-9/", "published_at": "2020-05-25T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a423a7e57", "title": "Things every C# developer should know #1: hash codes", "url": "https://thomaslevesque.com/2020/05/15/things-every-csharp-developer-should-know-1-hash-codes/", "published_at": "2020-05-15T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a42863095", "title": "Moving my blog to Hugo", "url": "https://thomaslevesque.com/2020/05/06/moving-my-blog-to-hugo/", "published_at": "2020-05-06T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a42df697d", "title": "About", "url": "https://thomaslevesque.com/about/", "published_at": "2020-05-01T21:42:43+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a42f108db", "title": "Using the OAuth 2.0 device flow to authenticate users in desktop apps", "url": "https://thomaslevesque.com/2020/03/28/using-the-oauth-2-0-device-flow-to-authenticate-users-in-desktop-apps/", "published_at": "2020-03-28T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a43a99f49", "title": "Lazily resolving services to fix circular dependencies in .NET Core", "url": "https://thomaslevesque.com/2020/03/18/lazily-resolving-services-to-fix-circular-dependencies-in-net-core/", "published_at": "2020-03-18T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a43b9d46c", "title": "Handling query string parameters with no value in ASP.NET Core", "url": "https://thomaslevesque.com/2020/01/30/handling-query-string-parameters-with-no-value-in-asp-net-core/", "published_at": "2020-01-30T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a43ff4f57", "title": "ASP.NET Core: when environments are not enough, use sub-environments!", "url": "https://thomaslevesque.com/2019/12/20/asp-net-core-when-environments-are-not-enough-use-sub-environments/", "published_at": "2019-12-20T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a44bb8029", "title": "Easy unit testing of null argument validation (C# 8 edition)", "url": "https://thomaslevesque.com/2019/11/19/easy-unit-testing-of-null-argument-validation-c-8-edition/", "published_at": "2019-11-19T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a45a447fe", "title": "Using foreach with index in C#", "url": "https://thomaslevesque.com/2019/11/18/using-foreach-with-index-in-c/", "published_at": "2019-11-18T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a45ecc187", "title": "Handling type hierarchies in Cosmos DB (part 2)", "url": "https://thomaslevesque.com/2019/10/15/handling-type-hierarchies-in-cosmos-db-part-2/", "published_at": "2019-10-15T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a46631f16", "title": "Handling type hierarchies in Cosmos DB (part 1)", "url": "https://thomaslevesque.com/2019/10/14/handling-type-hierarchies-in-cosmos-db-part1/", "published_at": "2019-10-14T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a46933eb2", "title": "Using TypeScript to write Cosmos DB stored procedures with async/await", "url": "https://thomaslevesque.com/2019/07/15/using-typescript-to-write-cosmos-db-stored-procedures-with-async-await/", "published_at": "2019-07-15T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a470bdf51", "title": "Scaling out ASP.NET Core SignalR using Azure Service Bus", "url": "https://thomaslevesque.com/2019/03/18/scaling-out-asp-net-core-signalr-using-azure-service-bus/", "published_at": "2019-03-18T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a47e88301", "title": "Google+ shutdown: fixing Google authentication in ASP.NET Core", "url": "https://thomaslevesque.com/2019/01/10/google-shutdown-fixing-google-authentication-in-asp-net-core/", "published_at": "2019-01-10T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a482e7ba8", "title": "Multitenant Azure AD issuer validation in ASP.NET Core", "url": "https://thomaslevesque.com/2018/12/24/multitenant-azure-ad-issuer-validation-in-asp-net-core/", "published_at": "2018-12-24T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a48a26723", "title": "Making a WPF app using a SDK-style project with MSBuildSdkExtras", "url": "https://thomaslevesque.com/2018/11/23/making-a-wpf-app-using-a-sdk-style-project-with-msbuildsdkextras/", "published_at": "2018-11-23T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a48e9103e", "title": "Asynchronous initialization in ASP.NET Core, revisited", "url": "https://thomaslevesque.com/2018/09/25/asynchronous-initialization-in-asp-net-core-revisited/", "published_at": "2018-09-25T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a49b815fe", "title": "Handling multipart requests with JSON and file uploads in ASP.NET Core", "url": "https://thomaslevesque.com/2018/09/04/handling-multipart-requests-with-json-and-file-uploads-in-asp-net-core/", "published_at": "2018-09-04T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4aa9b997", "title": "Asynchronous initialization in ASP.NET Core with custom middleware", "url": "https://thomaslevesque.com/2018/07/20/asynchronous-initialization-in-asp-net-core-with-custom-middleware/", "published_at": "2018-07-20T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4adfd022", "title": "Hosting an ASP.NET Core 2 application on a Raspberry Pi", "url": "https://thomaslevesque.com/2018/04/17/hosting-an-asp-net-core-2-application-on-a-raspberry-pi/", "published_at": "2018-04-17T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4b693a0a", "title": "Writing a GitHub Webhook as an Azure Function", "url": "https://thomaslevesque.com/2018/03/30/writing-a-github-webhook-as-an-azure-function/", "published_at": "2018-03-30T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4bc28911", "title": "Understanding the ASP.NET Core middleware pipeline", "url": "https://thomaslevesque.com/2018/03/27/understanding-the-asp-net-core-middleware-pipeline/", "published_at": "2018-03-27T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4c06a0ce", "title": "Cleanup Git history to remove unwanted files", "url": "https://thomaslevesque.com/2018/03/06/cleanup-git-history-to-remove-unwanted-files/", "published_at": "2018-03-06T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4c98f303", "title": "Better timeout handling with HttpClient", "url": "https://thomaslevesque.com/2018/02/25/better-timeout-handling-with-httpclient/", "published_at": "2018-02-25T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4d88a349", "title": "Transform T4 templates as part of the build, and pass variables from the project", "url": "https://thomaslevesque.com/2017/11/13/transform-t4-templates-as-part-of-the-build-and-pass-variables-from-the-project/", "published_at": "2017-11-13T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4dbb81c8", "title": "Common MSBuild properties and items with Directory.Build.props", "url": "https://thomaslevesque.com/2017/09/18/common-msbuild-properties-and-items-with-directory-build-props/", "published_at": "2017-09-18T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4e6f41ed", "title": "Testing and debugging library code from LINQPad", "url": "https://thomaslevesque.com/2017/08/26/testing-and-debugging-library-code-from-linqpad/", "published_at": "2017-08-26T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4f4cb53f", "title": "Linq performance improvements in .NET Core", "url": "https://thomaslevesque.com/2017/03/29/linq-performance-improvements-in-net-core/", "published_at": "2017-03-29T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a4fb73926", "title": "Easy text parsing in C# with Sprache", "url": "https://thomaslevesque.com/2017/02/23/easy-text-parsing-in-c-with-sprache/", "published_at": "2017-02-23T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a50ad53bc", "title": "What's new in FakeItEasy 3.0.0?", "url": "https://thomaslevesque.com/2017/02/20/whats-new-in-fakeiteasy-3-0-0/", "published_at": "2017-02-20T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a50e9e8ec", "title": "C# methods in git diff hunk headers", "url": "https://thomaslevesque.com/2017/01/17/c-methods-in-git-diff-hunk-headers/", "published_at": "2017-01-17T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a51c382f2", "title": "Fun with the HttpClient pipeline", "url": "https://thomaslevesque.com/2016/12/08/fun-with-the-httpclient-pipeline/", "published_at": "2016-12-08T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a522d02f6", "title": "Tuple deconstruction in C# 7", "url": "https://thomaslevesque.com/2016/08/23/tuple-deconstruction-in-c-7/", "published_at": "2016-08-23T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a52373fda", "title": "Tuples in C# 7", "url": "https://thomaslevesque.com/2016/07/25/tuples-in-c-7/", "published_at": "2016-07-25T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a52a23368", "title": "Pitfall: using var and async together", "url": "https://thomaslevesque.com/2016/06/21/pitfall-using-var-and-async-together/", "published_at": "2016-06-21T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a53667a71", "title": "Publishing a package from AppVeyor to NuGet.org", "url": "https://thomaslevesque.com/2016/04/20/publishing-a-package-from-appveyor-to-nuget-org/", "published_at": "2016-04-20T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a53f6bf4f", "title": "Test driving C# 7 features in Visual Studio “15” Preview", "url": "https://thomaslevesque.com/2016/04/16/test-driving-c-7-features-in-visual-studio-15-preview/", "published_at": "2016-04-16T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a54338814", "title": "Automatically inject fakes in test fixture with FakeItEasy", "url": "https://thomaslevesque.com/2016/01/17/automatically-inject-fakes-in-test-fixture-with-fakeiteasy/", "published_at": "2016-01-17T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a551b5e1b", "title": "Using multiple cancellation sources with CreateLinkedTokenSource", "url": "https://thomaslevesque.com/2015/12/31/using-multiple-cancellation-sources-with-createlinkedtokensource/", "published_at": "2015-12-31T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a553e92e3", "title": "Explicitly switch to the UI thread in an async method", "url": "https://thomaslevesque.com/2015/11/11/explicitly-switch-to-the-ui-thread-in-an-async-method/", "published_at": "2015-11-11T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5566fa84", "title": "[WPF] Prevent the user from pasting an image in a RichTextBox", "url": "https://thomaslevesque.com/2015/09/05/wpf-prevent-the-user-from-pasting-an-image-in-a-richtextbox/", "published_at": "2015-09-05T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a561c2b8e", "title": "Weak events in C#, take two", "url": "https://thomaslevesque.com/2015/08/16/weak-events-in-c-take-two/", "published_at": "2015-08-16T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a56c86240", "title": "C# Puzzle 2", "url": "https://thomaslevesque.com/2015/07/30/c-puzzle-2/", "published_at": "2015-07-30T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a574ecae4", "title": "How to retrieve dates as UTC in SQLite", "url": "https://thomaslevesque.com/2015/06/28/how-to-retrieve-dates-as-utc-in-sqlite/", "published_at": "2015-06-28T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a57d3e64d", "title": "Exception filters in C# 6: their biggest advantage is not what you think", "url": "https://thomaslevesque.com/2015/06/21/exception-filters-in-c-6/", "published_at": "2015-06-21T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5867340e", "title": "Create an auto-mocking container with Unity and FakeItEasy", "url": "https://thomaslevesque.com/2015/06/14/create-an-auto-mocking-container-with-unity-and-fakeiteasy/", "published_at": "2015-06-14T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a58fd9e9b", "title": "Async and cancellation support for wait handles", "url": "https://thomaslevesque.com/2015/06/04/async-and-cancellation-support-for-wait-handles/", "published_at": "2015-06-04T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5953fafb", "title": "Leveraging ReSharper annotations", "url": "https://thomaslevesque.com/2015/03/13/leveraging-resharper-annotations/", "published_at": "2015-03-13T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a59b367b5", "title": "C# Puzzle 1", "url": "https://thomaslevesque.com/2015/03/10/c-puzzle-1/", "published_at": "2015-03-10T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5a486211", "title": "Customizing string interpolation in C# 6", "url": "https://thomaslevesque.com/2015/02/24/customizing-string-interpolation-in-c-6/", "published_at": "2015-02-24T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5b2a5a8c", "title": "Async unit tests with NUnit", "url": "https://thomaslevesque.com/2015/02/01/async-unit-tests-with-nunit/", "published_at": "2015-02-01T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5bbdff1e", "title": "A new library to display animated GIFs in XAML apps", "url": "https://thomaslevesque.com/2015/01/17/a-new-library-to-display-animated-gifs-in-xaml-apps/", "published_at": "2015-01-17T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5c979283", "title": "Optimize ToArray and ToList by providing the number of elements", "url": "https://thomaslevesque.com/2014/12/07/optimize-toarray-and-tolist-by-providing-the-number-of-elements/", "published_at": "2014-12-07T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5cc8815a", "title": "Easily convert file sizes to human-readable form", "url": "https://thomaslevesque.com/2014/11/23/easily-convert-file-sizes-to-human-readable-form/", "published_at": "2014-11-23T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5cf117f9", "title": "StringTemplate: another approach to string interpolation", "url": "https://thomaslevesque.com/2014/11/17/stringtemplate-another-approach-to-string-interpolation/", "published_at": "2014-11-17T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5dcebf39", "title": "Passing parameters by reference to an asynchronous method", "url": "https://thomaslevesque.com/2014/11/04/passing-parameters-by-reference-to-an-asynchronous-method/", "published_at": "2014-11-04T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5e092921", "title": "Easy unit testing of null argument validation", "url": "https://thomaslevesque.com/2014/11/02/easy-unit-testing-of-null-argument-validation/", "published_at": "2014-11-02T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5e741f49", "title": "Visual Studio Online + Git integration with Team Explorer", "url": "https://thomaslevesque.com/2014/10/12/visual-studio-online-git-integration-with-team-explorer/", "published_at": "2014-10-12T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5f3bf830", "title": "A review of NDepend", "url": "https://thomaslevesque.com/2014/07/30/a-review-of-ndepend/", "published_at": "2014-07-30T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5f3cedb4", "title": "[WPF] Declare global hotkeys in XAML with NHotkey", "url": "https://thomaslevesque.com/2014/02/05/wpf-declare-global-hotkeys-in-xaml-with-nhotkey/", "published_at": "2014-02-05T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a5feeeb48", "title": "Tackling timeout issues when uploading large files with HttpWebRequest", "url": "https://thomaslevesque.com/2014/01/14/tackling-timeout-issues-when-uploading-large-files-with-httpwebrequest/", "published_at": "2014-01-14T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a60cda7db", "title": "Uploading data with HttpClient using a \"push\" model", "url": "https://thomaslevesque.com/2013/11/30/uploading-data-with-httpclient-using-a-push-model/", "published_at": "2013-11-30T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a61c47436", "title": "[WinRT] Toggle selection of a list item on long press", "url": "https://thomaslevesque.com/2013/11/21/winrt-toggle-selection-of-a-list-item-on-long-press/", "published_at": "2013-11-21T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a62152acf", "title": "Running a custom tool automatically when a file is modified", "url": "https://thomaslevesque.com/2013/11/14/running-a-custom-tool-automatically-when-a-file-is-modified/", "published_at": "2013-11-14T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a62f59e0d", "title": "Strongly typed helper for toast notifications", "url": "https://thomaslevesque.com/2013/11/10/strongly-typed-helper-for-toast-notifications/", "published_at": "2013-11-10T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a63ec210a", "title": "Showing result suggestions in a WinRT SearchBox: bug regarding the image", "url": "https://thomaslevesque.com/2013/11/04/showing-result-suggestions-in-a-winrt-searchbox-bug-regarding-the-image/", "published_at": "2013-11-04T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a64b01c8d", "title": "An easy and secure way to store a password using Data Protection API", "url": "https://thomaslevesque.com/2013/05/21/an-easy-and-secure-way-to-store-a-password-using-data-protection-api/", "published_at": "2013-05-21T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a64f923e9", "title": "Detecting dependency property changes in WinRT", "url": "https://thomaslevesque.com/2013/04/21/detecting-dependency-property-changes-in-winrt/", "published_at": "2013-04-21T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a65a8380a", "title": "Using C# 5 caller info attributes when targeting earlier versions of the .NET framework", "url": "https://thomaslevesque.com/2012/06/13/using-c-5-caller-info-attributes-when-targeting-earlier-versions-of-the-net-framework/", "published_at": "2012-06-13T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a65ad7e89", "title": "Little known new features in Visual Studio 2012", "url": "https://thomaslevesque.com/2012/06/02/little-known-new-features-in-visual-studio-2012/", "published_at": "2012-06-02T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a65f5f1e6", "title": "[WPF] Using Linq to shape data in a CollectionView", "url": "https://thomaslevesque.com/2011/11/30/wpf-using-linq-to-shape-data-in-a-collectionview/", "published_at": "2011-11-30T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a65ff6129", "title": "[WPF] Creating parameterized styles with attached properties", "url": "https://thomaslevesque.com/2011/10/01/wpf-creating-parameterized-styles-with-attached-properties/", "published_at": "2011-10-01T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a667eaafc", "title": "[WPF 4.5] Subscribing to an event using a markup extension", "url": "https://thomaslevesque.com/2011/09/23/wpf-4-5-subscribing-to-an-event-using-a-markup-extension/", "published_at": "2011-09-23T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a66a99fec", "title": "Tail recursion in C#", "url": "https://thomaslevesque.com/2011/09/02/tail-recursion-in-c/", "published_at": "2011-09-02T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a670982f2", "title": "[WPF] Display an animated GIF image", "url": "https://thomaslevesque.com/2011/03/27/wpf-display-an-animated-gif-image/", "published_at": "2011-03-27T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a675e1b0e", "title": "[WPF] How to bind to data when the DataContext is not inherited", "url": "https://thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/", "published_at": "2011-03-21T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a68142075", "title": "[Entity Framework] Using Include with lambda expressions", "url": "https://thomaslevesque.com/2010/10/03/entity-framework-using-include-with-lambda-expressions/", "published_at": "2010-10-03T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a68951df7", "title": "[WPF] A simpler Grid using XAML attribute syntax", "url": "https://thomaslevesque.com/2010/07/20/wpf-a-simpler-grid-using-xaml-attribute-syntax/", "published_at": "2010-07-20T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a694a5e49", "title": "[C#] A simple implementation of the WeakEvent pattern", "url": "https://thomaslevesque.com/2010/05/17/c-a-simple-implementation-of-the-weakevent-pattern/", "published_at": "2010-05-17T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a69b13648", "title": "Automating null checks with Linq expressions", "url": "https://thomaslevesque.com/2010/02/21/automating-null-checks-with-linq-expressions/", "published_at": "2010-02-21T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a6a8e7e33", "title": "[VS2010] Binding support in InputBindings", "url": "https://thomaslevesque.com/2009/10/26/vs2010-binding-support-in-inputbindings/", "published_at": "2009-10-26T00:00:00+00:00" }, { "id": "01a08c55-2e8c-7214-88ef-8a9a6af4e511", "title": "[C# 4.0] Implementing a custom dynamic object", "url": "https://thomaslevesque.com/2009/10/08/c-4-0-implementing-a-custom-dynamic-object/", "published_at": "2009-10-08T00:00:00+00:00" } ] posts Claim your blog
Back to thomaslevesque.com
Blog · corpus.blog/blogs/thomaslevesque.com/posts

thomaslevesque.com

thomaslevesque.com

2025

2024

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010

2009