Blog of Rob Galanakis (@robgalanakis)

Archive for April, 2011

Two keys to effective multithreaded programs

In my last post, I went over a mostly lock-free producer/consumer queue that worked entirely off the ThreadPool. This covers the two most important aspects to effective multithreaded programming: avoid creating new Threads, and work lock-free where possible. Avoiding the creation of new threads is easy- you just need...

Read more

Completely async file writer

I’ve been doing more and more asynchronous programming lately.  I needed to implement a logging system recently, but wanted to use asynchronous file IO.  There was also the possibility that log calls could come in faster than they could complete, so I needed to synchronize the logging calls, marking...

Read more

Do you have your Visual Studio WinForms Designer License?

I often joke at work that you should need a license to use the Visual Studio GUI Designer.  Not because it is hard to use- quite the contrary.  Because it is so goddamn easy to make a UI, people forget that UI classes should be written like any other...

Read more

Get better at coding or get better at arguing

A while ago, one of the junior TA’s here was frustrated with all the code critiquing I was giving him, and exclaimed: “In 6 months, we haven’t had an argument about my code which I’ve won.” I replied, “Well, get better at coding or get better at arguing.” He...

Read more

It is 2011. Start building responsive UIs.

In February, I finally figured out my New Year’s Resolution.  It was to build no more UIs that lock up, ever (except in exceptional circumstances where there is no other choice).  It spawned this post that I’ve finally gotten around to finishing (and some of the topics I have...

Read more

My time at BioWare in numbers

36 The number of months of been working at BWA 5 The number of job titles I’ve held 3 The number of teams I’ve been on/bosses I’ve reported to 2 The number of departments I’ve worked for 1 The number of projects I’ve worked on at BWA 3 The...

Read more

Augmented Coding

First, a shout-out for the inspiration for this post: Patrick Smacchia and the NDepend developers have given me my first free software license as a result of this blog. NDepend is a pretty awesome static code analysis tool. You can find more info here: http://www.ndepend.com/Features.aspx NDepend, or any static code...

Read more

Lazy iteration, potential benefit

At this point, most people are familiar with the deferred evaluation model of LINQ, using ‘yield’ statements. Since this is new for some teams at work, there’s been a question of when is it appropriate. Deferred evaluation is of most benefit when there is some chance the entire Enumerable...

Read more