Archive for the 'Uncategorized' Category

Page 2 of 2

A couple of my articles on CodeProject

Long time no update this blog.  I intend to fix that.  But for now, I’d like to point to two articles I posted at CodeProject:

  • Tracing Events Raised by Any C# Object—in which I describe a technique for tracing the events of any C# object using a very simple helper class, using .NET Reflection to get the event handlers of an arbitrary object.
  • Password Field Unhider (and some C++ utility classes)—first I present a small utility that lives in the Windows notification area and stands ready at any time to unhide (that is, unmask) any password field on the screen, so you can see what you’re typing. And second, I describe some very simple yet useful C++ utility classes: a general message pump, an IPC mechanism using WM_COPYDATA, and a work item dispatcher.

I intend to post more articles at CodeProject, the kind of useful tips, tutorial, explanation things, with source code, that are longer than the typical blog post.

Typing Mathematical Formulas in Word 2007

You can use Word 2007 features to generate very nice looking mathematical notation. This feature is, for all practical purposes, completely undocumented by Microsoft. However, some information has been published by Microsoft employees and others on the web. This post is meant to serve as a convenient directory of that information. (This post will be updated as I learn more about equations in Word 2007.)

Interesting, but not as practical:

General places to look for information:

Building the Home Supercomputer

I was configuring a new computer to be used for testing concurrent software, and was using my standard self-guidelines: second-fastest processor available (a nod to economy), as much DRAM as I can jam on a motherboard, and the latest dual-graphics card technology. Whohoo! But then I found this site on building a very economical cluster system and I realized my guidelines were old-fashioned. I’m now in the mood to build my own micro-Beowulf, so I can experiment with parallel clusters as well as multicore concurrency.

Check it out: The system described produces 26Gflops at a cost (August 2007) of $1256! It consists of 4 microATX motherboards, each with a dual core CPU and 2GB RAM, 4 power supplies, 1 hard disk, and 1 8-port gigabit switch. The “structure” is scrap plexiglass and threaded rods – definitely minimal! – and the whole thing is 11″ x 12″ x 17″! Kudos to Professor Joel Adams and his student Tim Brom for designing, building, configuring, and benchmarking this small Beowulf.

Here’s another such system – LittleFe.  And here is a homebrew 10-node system from 2000, with the same idea w.r.t. minimal packaging.

(My main conclusion about my self-guidelines: I don’t need even the second-fastest processor anymore. Nearly any current processor is fast enough for development purposes, compiler and system bloat notwithstanding. This system uses cheap multicore processors, a reasonable amount of memory for each node, and doesn’t need anything more than the built-in motherboard graphics. I would still like a system with a hot new graphics card however, so I can experiment with GPGPU.)

Update Sept 18 2007: Lot’s of people are doing work in this area—which will make it easy to get started!  Here are some more links:

ParallelKnoppix – A LiveCD that let’s you boot up an MPI cluster in 5 minutes!

And on the ParallelKnoppix site, some user’s have sent in pictures of their clusters—lot’s of different (and primitive, yet working) building techniques here!

And this page from Dec 2005 describes how some guy built a “mobile wireless linux cluster” (2 nodes) in order to have access to “big computer resources” while exploring a cave, mountain climbing, a weekend trip to the mountains, or who knows what else.

Welcome to Bakin’s Bits

David Bakin’s ResumeI—David Bakin—am an experienced software developer with over 25 years experience developing system and application software.

My aim with Bakin’s Bits is to write occasional blog posts, articles, and book reviews related to my software interests, and whatever I’m working on understanding.

My main interests are:

  • issues in concurrency, especially correctness, debugging, and appropriate design
  • functional programming—I know it is fun, I know it is powerful, but can I construct a business case that will convince a development manager to let me put it into a product?
  • GPGPU programming and other forms of stream programming, including
    • massively scalable systems that fit in Google’s map-reduce paradigm or another similar functional pipeline
  • fun in programming—not just fun as in functional, but also fun problems, and fun algorithms.

Thanks for checking in!  — Dave