Harry B. Garland: Visual Studio, C# Developer

C# Technology

Recently transitioned skills to C# language and .NET platform.  In moving from other OOP and framework-based languges, decided to pursue the challenge of becoming a C# expert.  The following examples illustrate my approach for taking a new technology, and using it to its maximum potential.


Multithreading:  Participated in Evernote Coding Challenge.  One of the exercises called for C# code that can take a large set of numbers, and calculate the top 4 highest numbers.  Initally created single threaded app that read each line from stdin and performed logical comparisons.  After all lines were read, app wrote calculated data to stdout.  The time it took to execute the app was the read time plus the logical comparison time.

I observed an opportunity to improve performance by executing logical comparison math in a separate thread as the stdin was being read.  Wrote thread-safe code that buffered stdin lines into an array while performing logical calculations on the previously buffered array.  Results:  App is now able execute in a minimal amount of time longer than the time it takes to simply read from stdin.


P/Invoke:  Initially created specialized accounting tools for Garland Actuarial using VBA for Excel.  As our software grew, there was an increased need for features not programmable in VBA.  Converted project to Visual Studio with C#.  One of the new tools enabled by Visual Studio Tools for Office (VSTO) programming was a Diagonal Selection Tool.

Normally, Excel only lets the user select a rectangle-shaped Range.  Wrote diagonal selection tool in Excel by using functions and events in [DllImport("user32.dll")] to trap mouse events.  Results: App now enables users to custom-select a list of cells in a diagonal line (for example, cells: A1, B2, C3, etc).