Arithex.com

tools and technologies for Microsoft Windows software development

home

Welcome to Arithex.com, a.k.a. the personal home page of Shawn A. Van Ness, friendly neighborhood software engineer.  This site is dedicated to making your Windows software development life easier, by providing quality shareware tools, components, and source code -- all for free.
All of the software on this site is available free of charge (although donations are gladly accepted ;-) and most of it includes free source code, as well.  Enjoy!

blog

I've just started a new weblog on dotnetweblogs.com, in order to avoid subjecting everyone on my favorite mailing list to my many random, unprovoked rants.  The RSS feed is here.

tech

.NET:  Strongly-typed Collection Generator for C#
tired of waiting for Microsoft to add generics to your new favorite language?  it's time to experience the joy of X-Code .NET
(source included)

tools

Reggie
a friendly, debuggable replacement for RegSvr32.exe, RegTlb.exe, and more... a must-have for all COM development
(source included)
PeekCL
allows you to spy on the command lines that were used to start the various processes running on your system
(source included)
RSaR: Regex Search and Rescue
a .NET alternative to the lame regex interpreter in VS7's "Find in Files" feature
(source included)

words

Using NDoc: Adding World-Class Documentation to Your .NET Components
(The O'Reilly Network, Nov 2002)
Copying, Cloning, and Marshalling in .NET
(The O'Reilly Network, Nov 2002)
Generating Code at Run-time with Reflection.Emit
(Windows Developer Magazine, Aug 2002)

code

.NET:  Scraping HTML for fun and profit
it's amazing what one can do on a rainy sunday afternoon, with ~100 lines of C# code... like, say, grab HTML from time.gov, scrape the current date and time with a pair of simple regexes, then set the clock with a little p/invoke
.NET:  HiResTimer class
it's not rocket science, but it's amazing how often folks get this wrong (also available: C++ version)
.NET:  RegexMarshalByRefWrapper
regular expressions created with RegexOptions.Compiled will leak, unless they're housed in a secondary appdomain that can be unloaded -- you'll need this wrapper class, or something like it, to do that
ATL3: CComTSTR class
the ATL3 string conversion macros are ugly (at best) and pose terrible security holes (at worst) -- use a heap-based wrapper class instead (note: ATL7 offers similar functionality with their new CW2A, et. al., classes)
ATL3: CSimpleList template
as seen in Attila (note: ATL7 offers similar functionality with their new CAtlList template)
ATL3: CSimpleVector template
the ATL3 array template (CSimpleArray) is buggy and leaky -- don't use it (note: ATL7 finally repairs the bugs in CSimpleArray, and also offers a newer template, CAtlArray)
DCOM: PingRemoteHost function
use this helper function to "ping" a remote DCOM server, before calling CoCreateInstanceEx -- thus greatly mitigating the DCOM timeout problem (at least for activation requests)
Win32: ModelessDialogHook class
encapsulating reusable dialogs as components (in DLLs or in COM objects) is a great idea -- much better than trying to reuse a .rc file -- but things get tricky if you like your dialogs modeless

work

My day job:  Tablet PC application development
Is your organization making the move to Tablet PC?  If so, chances are you're going to need some custom software developed, before you can realize the true digital ink experience.  Here at Leszynski Group, we have more experience than anyone else, when it comes to developing ink applications for .NET and the Tablet PC platform:  from ink-enabling your legacy thinclient apps, to storing and querying ink on the data tier and developing custom recognition engines -- we are the undisputed industry leaders in Tablet application development.  (And it's a pretty nice day job.)

links

SellsBrothers.com

The .NET Guy

The ADO Guy

ChezTabor.com
The APOD (just for something a little different)