Creating a C# source generator with AI coding agents
Reflections on building a simple greenfield project using AI coding agents.
Blog Posts Go Here
Reflections on building a simple greenfield project using AI coding agents.
This post explores the different types of GCHandles and how they are used internally by the .NET runtime.
I recently setup a Google Cloud SQL PostgreSQL database for some of my personal projects. One of my goals for this new instances was to do all authentication using service account credentials and making all connections to the database using the Cloud SQL Auth Proxy . This frees me from having to manage passwords for PostgreSQL accounts and from having to manage which IP addresses are allowed to…
1 Why not 64? The last of the 64 wait handles is used by the thread pool 2 The relevant, undocumented system calls are NtCreateWaitCompletionPacket , 3 Specifically a AMD Threadripper Pro 3955WX. 4 Other software versions: Windows 11 22000.978, most recent .NET Framework Over the course of the .NET 6 and .NET 7 release, the .NET team has worked towards converging on a common C# implementation of…
Recently I found myself trying to use a font in WOFF format with SkiaSharp. SkiaSharp does not natively support WOFF fonts. Fortunatly the DirectWrite component in Windows can turn these fonts into the SFNT (aka TrueType) format that SkiaSharp supports.
Hack programs execute on the HHVM runtime . In this article we are going to perform a series of experiments on HHVM. We will use these experiments to infer properties about how async works.
In the last article we looked at how the C# transforms async functions into executable code. Starting from this article we will start looking at how async functions in the Hack language are executed.
In the previous article we talked about the semantics of an async functions. In this article we will look at how the C# compiler transforms an async function into a state machine. This state machine is used to process the results of the other async functions that are awaited.
In the previous article I explained why having concurrency in a program is useful. I also briefly mentioned some older models of managing concurrency and stated that the async/await model makes it easier to create concurrent programs. At today’s WWDC , Swifts new async / await support was featured prominently in the State of the Union. They made an elegant demonstration of how this language…
In 2012 C♯ 5 introduced the await and async keywords for expressing asynchronous operations. Since then the model has become pervasive, spreading to languages like JavaScript, Python, and C++. Over a series of articles I plan to explain why async is useful and how some languages implement it.
An investigation into the size overhead of different ways of deploying .NET applications.
I'm migrating my blog from a Ruby-base static site generator to a Rust-based one. This essay describes a bit about how the move from dynamic languages back to compiled languages is similar to the trend of moving from dynamic websites to statically generated sites.
Background
1 The linked pull request is to the CoreRT repository, however that part of 2 In .NET Framework 1.0, pretty much all of reflection was implemented using [TargetInvocationException]: https://docs.microsoft.com/en-us/dotnet/api/system.reflection.targetinvocationexception [CreateDelegate]: https://docs.microsoft.com/en-us/dotnet/api/system.reflection.methodinfo.createdelegate [ProxyBug]:…
I tried to create a Test Plan on our Team Foundation Server today but I got this error message:
Summary
I am no longer satisfied with Windows Home Server and have decided to replace it with SmartOS. WHS’s Drive Extender does offer some data check-summing and redundancy. However it is a bolt-on solution to NTFS that only offers support for mirroring data across disks. Dive Extender also moves data between disks every hour which causes media streaming to noticeably skip.
I made several programs while playing World of Warcraft. He's two of them.
So I came across an interesting situation in a program I was writing recently. I had a bit of code that takes a list of image URLs to download and display. It shows the UI immediately while it downloads more pictures in the background. However in some cases each URL needs to be transformed a bit and each transform required another web request. If I did all the transforms before starting to…
Today I am releasing a tool that makes it easy to create URL reservations. Why would you want to do that? If you try to use the HttpListener class in .NET as a limited user, you need a preexisting URL reservation. Otherwise you will get an access denied message. The documentation says to use the HttpCfg.exe tool to create these reservations, but it requires you to use the verbose SDDL language. My…
After the AP test, all I had left to do in Calculus BC was to give a presentation at the end of the year on some mathematical topic. I have always been interested in graph theory , and my partner thought it was an ok idea. Then I had to find some way to make this abstract subject tangible to my peers (the people doing pi had it easy; all they did was give everyone some pie). Just about everyone at…
Have you ever wanted to quickly compile a Visual Studio solution or project without opening Visual Studio? Well, now you can! I have been using my MSBuild Runner tool for some time now, and I find it pretty helpful. It sports Windows Explorer integration and supports building for any version of the .NET Framework that comes with MSBuild (currently 2.0 and the 3.5 CTP come with a version of…
Mentos Volcano
In march I dropped Azureus and switched to µTorrent after a friend told me about it. This first big differencee I noticed was its tiny memory use. Instead of using Azureus's 60MB, it used 6MB. This is important on my memory-cramped server, becausee I also run IIS, SQL, DNS and file servers. Another useful feature is the podcast downloader, a feature which Azuereus is lacking (yes, I know about the…
UPDATE: A new version of my tool is available here .
I signed a NDA and I can't tell you anything more!
I just downloaded and installed Flock 0.4.9. Based on the Firefox browser, Flock at integration with bookmarking ( del.icio.us ), Bloging (I am writing this in Flock), and photos ( Flickr ). I have heard people say that the Flock's team should spend their time creating extensions for Firefox rather than creating a whole new browser, but it is nice to have everything in one package. For example,…
I might be starting to post again. Yeah!