All Posts
Oct 10, 2020
How to profile C# 9.0 Source GeneratorsC# 9.0 source generators are progressing a lot lately, with the addition of generated symbols IDE navigation, as well as the stabilization of the generation APIs.
As generators are run a part of the compiler’s pipeline, when creating small generators, or processing small inputs, performance profiling can be done quite easily, and even easier using Chris Sienkiewicz’s kittitas tool, which packages the generation driver inside a single, easy to use tool.
Yet, when the build is more complex, or the solution takes an important environmental set of parameters (such as Directory.Build.props), some in-place debugging may be required.
Read on to find out how to do this.
Read more...Sep 13, 2020
Using MSBuild Items and Properties in C# 9 Source GeneratorsC# 9.0 Source Generation is progressing quite nicely lately (Thanks, Jared!), with the addition of the ability to interact with the MSBuild environment such as getting Properties and Items to control how the generation happens.
In this post, I’ll explain how to parse
Read more....resw
files of a project to generate an enum that contains all the resources.Jul 19, 2020
How to get the SyntaxNode of an ISymbol using RoslynIn this post, I’ll describe how to determine if a property is an auto-property, using its
ISymbol
as the source, and not by using reflection into Roslyn which computes this information internally.During the original development of the Uno CodeGen source generators, when building the Immutable generators (soon to be deprecated by the records feature in C# 9.0), we had to determine if a property’s backing field is generated or not.
Read more...Apr 29, 2020
INotifyPropertyChanged with C# 9.0 Source GeneratorsIn a design meeting far, far away, source generators were designed to be part of C# 6.0, but sadly never came to be. At the time, wanting that source generation feature pretty badly, I went on implementing the specification which later became Uno.SourceGeneration, and it turns out it was the right decision to stick with a very similar API.
I could port the INotifyPropertyChanged (INPC) generator I built a while back that uses Uno.SourceGeneration package, convert it to use Roslyn’s shiny new C# 9.0 feature in a matter of minutes. Amazing!
Read more...Mar 22, 2020
C# interop with C/C++ and Rust in WebAssemblyHaving the ability to call code written in other languages is increasingly important, as there are many very useful libraries that are getting ported over to WebAssembly. In .NET, the common defined way for doing interop is P/Invoke and DllImport, and .NET for WebAssembly has support for it in the form of static linking of LLVM Bitcode object files.
In this article, I will walk through how to call some simple C/C++ and Rust code from C# in a WebAssembly app.
Read more...Feb 29, 2020
.NET Threading and WebAssemblyThreading, in general operating systems sense, is not something that the web has been able to use until very recently. The addition of Threads support in WebAssembly, and the activation of the threading support in Chrome opens up a whole new world of possibilities, including the use of Reactive Extensions (Rx.NET) or the Task Parallel Library (TPL).
Let’s dive in, with some sample code.
Read more...Dec 8, 2019
Roslyn Source Generation Reborn, the replace keyword and INotifyPropertyChangedA very long time ago, during the C# 6.0 time frame, a Source Generation proposal was added to the list of possible features, it was abandoned, but in a recent PR, the Roslyn team is taking a look again at the feature proposal, as there are lots of generation happen around Microsoft that could benefit from an integrated story.
Read more...Dec 1, 2019
MVP 2020-2021What a year!
I’ve been doing full Open Source work for the past year and a half, giving talks about .NET, Xamarin, Mono and WebAssembly, contributing to open source projects, and Microsoft noticed!
I’ve been awarded MVP by Microsoft for 2020-2021 for the Developer Technologies, 8 years after being a “Visual C#” MVP from 2009 to 2011.
I’d like to personally thank the amazing MVPs that supported me through this process, Sébastien Lachance, Jim Wilcox, Geoffrey Huntley, as well as Microsoft employees (Thanks Clint, Karel, Rochelle, Jesus, Ryan, Betsy).
I’m glad to be back as an MVP, and off to a new year with this great community!
Read more...Jun 29, 2019
NuGet, Visual Studio 2019 Solution Filters and Large Cross-targeted SolutionsThe combination of the Visual Studio solution filtering and NuGet support for it allows for faster trimmed-down solution loading. This enables developers of large cross-targeted solutions to have a viable environment by temporarily focusing on a single target framework, and still have Visual Studio cooperate.
Read more...Mar 31, 2019
Using the Span<T> in Xamarin Cross-Targeted projectsSystem.Memory
exists to provide theSpan<T>
,Memory<T>
and similar types, for which C# 7.x provided support, and it can enable significant performance improvements where appropriate. While .NET Standard 2.0 does not have support for it in its available API surface, there theSystem.Memory
NuGet package that can be added to enable it.As part of the code sharing effort, Mono and Xamarin added support for
System.Memory
in the BCL as part of the releases bundled with VS 2019.While this is a very important step to make Mono and .NET Core very similar in behavior, this brings issues because the
Read more...Xamarin.iOS
,Xamarin.Mac
andMonoAndroid
target frameworks are not versioned like .NET Core or .NET Standard. The Visual Studio version used to build a project has an impact on the code’s behavior or compatibility that cannot be adjusted as easily as changing a Target Framework version.Mar 21, 2019
Using Containers in Azure Devops to Build Mono AppsThe Azure Devops team recently added a new feature that gives the ability to run a build definition inside of a container pull from the Docker Hub. That container is running directly on the build host, executing the steps of the definition.
As I’ve been battling recently to get the Uno Platform Wasm-AOT Linux builds to run in a consistent context, without having to much to maintain. Mono-wasm comes with an AOT toolchain that only works on Ubuntu 18.04, and Azure DevOps hosted agents only provide Ubuntu 16.04.
This container support feature comes in handy to build in the appropriate environment!
Read more...Mar 4, 2019
Improving C# Source Generation Performance with a Custom Roslyn WorkspaceIn my previous article about the process of improving the source generation performance, I mentioned some improvements around the generation inside of an
AppDomain
for an improved isolation, inside of an out-of-process generation host.It turned out to be problematic on both the memory consumption side, as well as on the cold start cost of creating a host, which I’ll talk about in a later post.
This quest for the generation performance also led me to rethink the use of the MSBuildWorkspace class. It completely hides the MSBuild object model created to build the Roslyn Compilation object. These MSBuild project instances also need to be provided to the source generators to get access to the code being built, forcing a double parsing and loading of a project file.
Read more...Jan 25, 2019
Create a BuildReference Dependency Between C# Sdk-Style ProjectsI know, a
Read more...BuildReference
does not exist. But it really should.Jan 18, 2019
Chasing an MSBuild task devenv.exe file lockDuring the development of an Uno Platform build task for generating platform specific resources, I found out that invoking the MSBuild task with the
BuildInParallel
property set to true works around a task assembly locking issue.For some (yet) unknown reason, even if Visual Studio is scheduling most of its work to child msbuild.exe processes, when using the new SDK style project format on large projects, the
devenv.exe
process gets used to build project outputs. This forces the developer to close the IDE and delete the task assembly to rebuild it again, and work around a file not found caching issue…In this article, I will be discussing the solutions I explored to mitigate this issue.
Read more...Jan 6, 2019
Improving out-of-process C# Source Generation performanceIt’s been a very long while since I’ve blogged, and a number of factors had reduced my time and ability to write about what I was working on for these past years. Now that most of what I work on is public through the Uno Platform, I’ll be spending some time writing in depth articles about some technical aspects, but also a bit about IoT, a very fast-paced area these days.
Happy new year!
For starting up blogging again, I’ll be discussing the implementation of the Uno.SourceGenerationTasks project, a source generation framework that allows for NuGet-distributable source generators, in the same way roslyn allows for distributable analyzers.
People have recently been talking about it on twitter, and I figured I could talk a bit more about the path the implementation took to this day.
Read more...Feb 19, 2014
Controlling actual Thread Priority in WinRT and Windows Phonetl;dr: Setting the WorkItemPriority in ThreadPool.RunAsync actually changes the thread priority the code runs on, not just the position in the pending work queue.
It’s been a while since I’ve blogged, but this entry has been a finding that had long eluded me and this was a good chance to blog again. If you’re still reading, thanks :)
In the Plain Old (or might I say, complete) .NET framework, there was a pretty useful property named Thread.Priority, which gave a lot of control to app developers. This allowed a very control of what would run, where, and how.
Using this API, you could have CPU bound (hence blocking) code that could run at a very low priority, without the need to be yielded somehow, like it’s suggested now with async and Task.Yield().
I was under the impression, since Windows Phone 8.0 and WinRT 8.0 have been introduced, that there was no available way to control the actual thread priority, since either the property does not exist, or even Thread does not exist anymore.
The suggested counterpart, Task, does not provide such a feature, leaving developers no choice but chunking the work, by using clever tricks or work item priority scheduling.
Read more...Apr 23, 2013
Immutable Data and Memoization in C#, Part 2tl;dr: Memoization can be associated with the ConditionalWeakTable class, which allows the addition of memoized computation results to immutable types. This makes the memoized results live as long as the instances that was used to create it.
In the first part of this article, we discussed a bit the Memoization pattern in C#. In this second part, we will discuss how to alleviate the memory management issue for memoized computation results.
Read more...Apr 19, 2013
Immutable Data and Memoization in C#, Part 1TL;DR: Immutable data and memoization are functional programming concepts that can be applied to C# programming. These patterns have their strengths and weaknesses, discussed a bit in this article.
I’ve grown to not being a great fan a data mutability.
Data mutability can introduce a lot of side effects in the code, and it can be pretty complex to go back in time to know what a specific state was before the code failed. This gets worse when multiple threads are involved, and that tends to happen a lot more these days, now that even phones have multiple cores.
Sure, we can use IntelliTrace to ease that kind of debugging, but that’s pretty much limited to issues you already know about. That means you’re reacting to issues that already happened, you’re not proactively preventing those issues from happening.
So, to address this more reliably, there’s the concept of immutability. When a set of data is built, it cannot change anymore. This means that you can pass it around, do computation with it, use it any place you want, there’s not going to be any subtle concurrency issues because the data changed under your feet.
Read more...Apr 17, 2013
Cancellation with Async F#, C# and the Reactive ExtensionsTL;DR: C# 5.0 async/await does not include the implicit support for cancellation, and needs to pass CancellationToken instances to every async method. F# and the Reactive Extensions offer solutions to this problem, with both implicit and explicit support for cancellation.
My development style has slowly shifted to a more functional approach, during the past year. I’ve been peeking a F# for a while and that shift to a more functional mindset in C# lends me toward understanding a lot better the concepts behind core features of F#, and more specifically the async “support” in F#.
It’s known that F# inspired a lot the implementation of C# async, but having looked at the way it’s been implemented in F# gives me some more points against the “unfinished” implementation in C#.
Recently, now that people are effectively using async, in real-world scenarios, problems are starting to bubble up, and some to giggle. Async void, async void lambdas, the fact that continuations run mostly on the UI thread when not taken care of properly, obscure exception handling scenarios, the “magic” relation to the SynchronizationContext, that it does not address parallelism, and one that’s been pretty low-key, cancellation.
Read more...Mar 30, 2013
Read more...
Building in Parallel Across Multiple Build Agents in TFS2012 for Metro AppsMar 30, 2013
Read more...
[VS2012] Temporarily disable the C# static code analysis for a whole VS instanceFeb 5, 2013
Read more...
Writing a Xaml attached property in C++/CX to resize Images, with a Performance twistFeb 2, 2013
Read more...
On the Performance of WinRT/Xaml Template ExpansionJan 23, 2013
Read more...
An RxJS to Rx.NET bridgeJan 13, 2013
Read more...
ReaderWriterLockSlim on Windows Phone 8 and the seemingly random MethodAccessExceptionJan 3, 2013
Read more...
Toying around with F# Queries, Rx, Portables Libraries, Windows [Phone] 8 and the Zip operatorDec 20, 2012
Read more...
Reading the content of the Xap/Appx and IsoStore in Windows [Phone] 8Nov 27, 2012
Read more...
DataBinding performance in WinRT and the Bindable attributeNov 25, 2012
Read more...
Reducing apps startup time with Pre-JITing and NGEN on a Surface RTOct 30, 2012
Read more...
Windows Phone 8 SDK Round-upOct 27, 2012
Read more...
Of Static Code Analysis, CA0001, WinMD files and C# Dynamic in Metro Style appsOct 27, 2012
Read more...
Configuring Multiple TFS 2012 Build Services on one MachineOct 11, 2012
Read more...
Implementing an asynchronous settings service, Part 3 : Getting notifiedOct 9, 2012
Read more...
Implementing an asynchronous settings service, Part 2 : Writing a settingOct 8, 2012
Read more...
Implementing an asynchronous settings service, Part 1 : Going AsyncSep 30, 2012
Read more...
C# Async Tips and Tricks, Part 3: Tasks and the Synchronization ContextSep 26, 2012
Read more...
VS2012: Create multiple file links with a drag and drop between two projectsSep 26, 2012
Read more...
VS2012: How to change a project’s physical locationAug 27, 2012
Read more...
An update to @matthieumezil, Rx and the FileSystemWatcherJul 14, 2012
Read more...
Windows 8, Developers, Hyper-V and the new VHDX formatJul 8, 2012
Read more...
C# Async Tips and Tricks Part 2 : Async VoidJun 19, 2012
Read more...
C# 5.0 Async Tips and Tricks, Part 1Jun 11, 2012
Read more...
Improving the Startup Time of Xaml Metro Style Apps with Multicore JITMar 17, 2012
Read more...
No Threads for you ! (in metro style apps)Mar 17, 2012
Read more...
Windows 8 Event Viewer’s Immersive-Shell and Metro Style appsMar 8, 2012
Read more...
Xaml integration with WinRT and the IXamlMetadataProvider interfaceMar 4, 2012
Read more...
Switching a Windows 8 Consumer Preview from a VHD to Hyper-VDec 3, 2011
Read more...
[WPDev] The hidden cost of IL JittingNov 26, 2011
Read more...
NuGet package customizations and optional referencesNov 26, 2011
Read more...
Asynchronous Programming with the Reactive Extensions (while waiting for async/await)Oct 17, 2011
Read more...
WinRT and the syntactic sugar around .NET event handlersOct 2, 2011
Read more...
MVP 2011 !Sep 29, 2011
Read more...
[wpdev] Tips and tricks about updating live tiles in MangoSep 21, 2011
Read more...
[WP7Dev] Diagnosing StackOverflowExceptions, or the lack thereofAug 20, 2011
Read more...
[wp7dev] Images and cache control in Windows Phone 7.1 (Mango)Aug 4, 2011
Read more...
To be fair when comparing Rx to C# 5.0 Async...Jul 29, 2011
Read more...
[wp7dev] Error code 0xc00cee65 and duplicate XML namespacesJul 26, 2011
Read more...
When declarativeness goes away for performanceJul 25, 2011
Read more...
Why using a timer may not be the best ideaJul 25, 2011
Read more...
[Rx] Using the ObserveOn and SubscribeOn operatorsMay 1, 2011
Read more...
Team Build and Windows Phone 7Apr 22, 2011
Read more...
[WP7] HttpWebRequest and the Flickr app 'Black Screen' issueApr 22, 2011
Read more...
[WP7] A nasty concurrency bug in the bundled Reactive ExtensionsApr 4, 2011
Read more...
[Reactive] Being fluent with CompositeDisposable and DisposeWithMar 27, 2011
Read more...
[WP7Dev] Double tap when you expect only oneMar 24, 2011
Read more...
A bit of IT in developer's world: services.exe high CPU usageDec 15, 2010
Read more...
Virtual Machines, Snapshots, Automated Tests and Machine Trust AccountSep 7, 2010
Read more...
[WP7Dev][Reactive] Safer Reactive ExtensionsJul 31, 2010
Read more...
[WP7] Using an Exchange Account With a Custom CertificateJul 26, 2010
Read more...
Revisited with the Reactive Extensions: DataBinding and Updates from multiple ThreadsJul 23, 2010
Read more...
Using the Remote DebuggerJul 18, 2010
Read more...
Version Properly using AssemblyVersion and AssemblyFileVersionJul 5, 2010
Read more...
[VS2010] On the Impacts of Debugging with “Just My Code”Jun 29, 2010
Read more...
Hyper-V VM Mover 1.0.2.0 on CodePlexJun 23, 2010
Read more...
[WP7Dev] Using the WebClient with Reactive Extensions for Effective Asynchronous DownloadsJun 20, 2010
Read more...
[WP7Dev] Beware of the [ThreadStatic] attribute on Silverlight for Windows Phone 7Jun 13, 2010
Read more...
[VS2010] How to disable the Power Tools Ctrl+Click Go to DefinitionJun 11, 2010
Read more...
[LINQ] Finding the next available file nameJun 4, 2010
Read more...
Thoughts on Migrating from WSS 3.0 to SharePoint Foundation 2010Apr 10, 2010
Read more...
Remote Control for PowerPoint 1.0 !Mar 6, 2010
Read more...
[VS2010] Configure Code Analysis for the Whole SolutionFeb 4, 2010
Read more...
Reactive Framework: MemoizeAllJan 3, 2010
Read more...
WinForms, DataBinding and Updates from multiple ThreadsDec 2, 2009
Read more...
SharePoint WebDAV, IIS 7.5 and Windows Server 2008 R2Nov 9, 2009
Read more...
Some news about Remote Control for Windows MobileOct 24, 2009
Read more...
[VS2010] “Object reference not set to an instance of an object” when opening a fileOct 15, 2009
Read more...
Hyper-V, CPU Load and System Clock DriftAug 9, 2009
Read more...
On the Startup Performance of a WPF ElementHost in WinformsJul 11, 2009
Read more...
WCF Streamed Transfers, IIS6 and IIS7 HTTP KeepAliveMay 27, 2009
Read more...
Working with Bill Graziano's ClearTrace to optimize SQL queriesMay 17, 2009
Read more...
A C# Traverse extension method, with an F# detourMay 10, 2009
Read more...
Hyper-V Virtual Machine Mover 1.0.2.0Apr 1, 2009
Read more...
SharePoint : The database connection string is not available. (0xc0041228)Mar 28, 2009
Read more...
Hyper-V Virtual Machine Mover and Hyper-V ServerMar 16, 2009
Read more...
Google Transit and Montreal's STMFeb 21, 2009
Read more...
A tool to move an Hyper-V Virtual Machine without exporting itDec 6, 2008
Read more...
Using Multiple Where Clauses in a LINQ QueryDec 6, 2008
Read more...
F#, TryWith, Maybe and UmbrellaNov 21, 2008
Read more...
Local Variables in Lambda ExpressionsNov 19, 2008
Read more...
Lambda Expression and ForEach loopsNov 8, 2008
Read more...
Working with Umbrella in .NET 3.5Nov 4, 2008
Read more...
Speaker Idol MontrealNov 1, 2008
Read more...
Montréal Bus Stop Locator Site and the iPhoneOct 16, 2008
Read more...
How to convert a (big) VMWare VMDK into an Hyper-V VHDSep 7, 2008
Read more...
Pocket IE and Setting IMG Src via JavaScriptSep 7, 2008
Read more...
Montreal Bus Stop Locator Site UpdatesSep 2, 2008
Read more...
.NET 2.0 InternalsVisibleTo Attribute and Unsigned AssembliesSep 1, 2008
Read more...
Using Google Gears to find Montreal's Bus StopsMay 14, 2008
Read more...
ILogicalThreadAffinative, again.May 10, 2008
Read more...
IEnumerable<T>.Any() vs. IEnumerable<T>.Count() != 0Apr 26, 2008
Read more...
A look at Linq to objects and the 'let' keywordApr 14, 2008
Read more...
Canadian Mobile Data PlansApr 7, 2008
Read more...
A bug in VS2008 Code Analysis, Generics normal and nested classesApr 1, 2008
Read more...
Bluetooth Remote Control 0.9.0, Round 2Mar 31, 2008
Read more...
Bluetooth Remote Control for Windows Mobile 0.9.0Mar 26, 2008
Read more...
Using a real USB bluetooth device in Virtual PC 2007Mar 24, 2008
Read more...
Windows Server 2008 and Microsoft Bluetooth Stack troubleMar 23, 2008
Read more...
Prevent ASP.NET web.config inheritance, and inheritInChildApplications attributeMar 17, 2008
Read more...
Visual Studio 2008 Solution Tree Items CollapseMar 16, 2008
Read more...
Blog UpdateFeb 11, 2008
Read more...
.NET Threads, CallContext and ILogicalThreadAffinativeJan 15, 2008
Read more...
Some news on Bluetooth Remote Control for Windows MobileDec 25, 2007
Read more...
Bluetooth Remote Control 0.8.5Dec 12, 2007
Read more...
Visual Studio 2008 Presentation in MontréalDec 11, 2007
Read more...
Visual Studio 2008 : Where is my Solution Explorer item sort gone ?Dec 10, 2007
Read more...
The (non generic) System.Action delegateDec 10, 2007
Read more...
Bluetooth Remote Control 0.8.4Dec 5, 2007
Read more...
Snow in Montréal, QCOct 26, 2007
Read more...
Additional Bluetooth Drivers for Microsoft Bluetooth in Windows XP SP2Oct 19, 2007
Read more...
News from MontréalSep 10, 2007
Read more...
Bluetooth Remote Control 0.8.3 - Broadcom Bluetooth Support for Windows MobileSep 5, 2007
Read more...
Broadcom/Widcomm Bluetooth Stack and SetSecurityLevelAug 31, 2007
Read more...
Canada !Aug 29, 2007
Read more...
Binding a C# property to a WPF validated ControlAug 25, 2007
Read more...
0.8.2 Re-ReleaseAug 22, 2007
Read more...
Bluetooth Remote Control 0.8.2Aug 15, 2007
Read more...
PicturesJul 26, 2007
Read more...
Google, Sitemaps, Multi-Culture, and ASP.NETJul 23, 2007
Read more...
Bluetooth Remote Control 0.8.1Jun 19, 2007
Read more...
No files were found to look in. Find was stopped in progress in VS2005Jun 10, 2007
Read more...
Bluetooth Remote Control ForumJun 9, 2007
Read more...
Bluetooth Remote Control 0.8.0-Beta1Jun 3, 2007
Read more...
Bluetooth Remote Control and Incoming CallsMay 26, 2007
Read more...
Vista's Sound Mixer in Bluetooth Remote ControlApr 16, 2007
Read more...
WCF, NuSOAP and ArrayOfStringApr 15, 2007
Read more...
WCF WebService behind a NAT GatewayApr 7, 2007
Read more...
Unprotecting Protected ProcessesApr 7, 2007
Read more...
Vista's Support for External DisplaysMar 17, 2007
Read more...
Remote Control 0.7.0-Beta2Mar 8, 2007
Read more...
Bluetooth Remote Control for Windows Mobile 0.7.0-Beta1 : Widcomm SupportMar 7, 2007
Read more...
Support for Widcomm Stack on the Way !Mar 5, 2007
Read more...
Spending some time in Montréal, QC, CAFeb 26, 2007
Read more...
Rest in Peace, TuOFeb 19, 2007
Read more...
Atlantic Shores of FranceFeb 16, 2007
Read more...
WPF DataBinding and Application SettingsFeb 13, 2007
Read more...
WPF DataContext and CurrentItemFeb 11, 2007
Read more...
Small blog update, with Url RewritingFeb 7, 2007
Read more...
Sebastien Laban's new websiteFeb 7, 2007
Read more...
The file is not a valid Windows CE Setup fileJan 31, 2007
Read more...
Vista Versions and ConfusionJan 30, 2007
Read more...
Vista's Reliability Monitor in year 1970Jan 30, 2007
Read more...
WPF, Xml namespace and XmlDataProviderJan 26, 2007
Read more...
Bluetooth Remote Control 0.6.0Jan 25, 2007
Read more...
Playing with WCF and NuSOAP 0.7.2Jan 24, 2007
Read more...
Some newsDec 22, 2006
Read more...
ODP.NET 10.2.0.2.20 Connection Pool Race ConditionSep 2, 2006
Read more...
IIS, HTTP 401.3 and ASP.NET directories ACLsJul 26, 2006
Read more...
Bluetooth Remote Control 0.5.0-Beta5Jul 22, 2006
Read more...
C# 3.0, a sneak peekMay 27, 2006
Read more...
BTRemote Control and Windows XP 64 BitsNov 18, 2005
Read more...
Precision Timer in .NET 2.0Apr 4, 2005
Read more...
Reflective Visitor using C#Apr 4, 2005
Read more...
C# 2.0, Closures and Anonymous DelegatesFeb 22, 2005
Read more...
BartPE using PXE, Again...Dec 15, 2004
Read more...
Mono 1.0.5 support for NetBSD 2.0Dec 13, 2004
Read more...
ASP.NET Remote Debugging, Windows XP SP2 and .NET Framework 2.0Oct 13, 2004
Read more...
Inter-Domain Trust Relationship and lmhosts Text CasingOct 8, 2004
Read more...
Multiple MassStorage Drivers with Windows 2000/XP/2003 and INACCESSIBLE_BOOT_DEVICEAug 16, 2004
Read more...
The Disposable Pattern, Determinism in the .NET WorldAug 5, 2004
Read more...
Don't get C# volatile the wrong wayApr 14, 2004
Read more...
Obscure abstraction storiesApr 4, 2004
Read more...
SyncProxy, an implicit synchronizerApr 2, 2004
Read more...
Windows Installer CleanUp UtilityMar 1, 2004
Read more...
Using Precompiled HeadersFeb 3, 2004
Read more...
SEH et Exceptions en C++