The journal

Notes from the workbench.

149 articles on building software and understanding how it works.

C# / .Net WinForms GUI Thread Invoke solution

Tired of Invoke-ing the GUI thread from every background thread, I ran Reflector on WinForms' Form, generated a partial class with a Perl script, and got a Form where every method safely invokes the GUI thread automatically. A quick hack, but it works.

Embedding YouTube in WPF WebBrowser control

Embedding YouTube in a WPF app via the WebBrowser control works — once you know about Mark of the Web, line endings, and that Flash forces your app to run as x86. All three lessons learned the hard way, sample code included.

Help on IRC client

My C#/WPF IRC client is functional but needs GUI work, so I'm looking for beta testers and developers of all skill levels. Everything is modular, so you can work on single features without touching unrelated code.

History of IRC apps I've made

An IRC server written in mIRC script, another in VB6 with one form per connection, a Perl bouncer that was pure art, and more — a tour of ~15 years of IRC programs I have written as hobby projects.

Nimbus.IRC

Ten years of writing IRC clients on and off, and this time I'm fairly happy with what's under the hood. Nimbus.IRC is module-based with a Common library and a GUI shell, and alpha releases are coming.

Bug in Mono.Cecil

Mono.Cecil kept producing broken assemblies with branches jumping out of the method — until Jb Evain explained the magic: call Body.Simplify() before modifying and Body.Optimize() after. Not a bug after all.

OpenSim Gallery

The threshold for using Second Life/OpenSim is too high, so as a pilot project I'm building an in-world image gallery with paintings borrowed from my aunt. The hard part: finding a viewer that is actually easy to install.