Wednesday, August 29, 2007

Links for 2007-08-29

Article
  1. Using Updater Block
    • This step-by-step guide could save me a lot of time and be sure to read the 'Addendum' section under step 8 to know how and when Updater Block kicks in.
    • Though this guide gives a quick introduction, I followed the sample code, 'SimpleAppStart', accompanied with the Microsoft.ApplicationBlocks.Updater.
    • Here is how I use the block. Main program calls System.Diagnostics.Process.Start() to pass control to the updater program. In the updater program, Singleton is enforced via Mutex object before update process begins. After the process is over, the updater program calls System.Diagnostics.Process.Start() again to pass control back to main program.

Tuesday, August 14, 2007

"Why Not?" Book Review


I finished the book over the weekend. Compared with other creativity books I've read, this one has many examples in the public sector, like how to be innovative in the legislation or in managing a library. The authors propose 2 sets of tools for generating ideas.
  • Thinking outside the box
    1. What would Croesus do? - Assumed you have unlimited resources, what would you do?
    2. Why don't you feel my pain? - Internalize the external effects in problem solving.
    3. Where else would it work? - Apply solutions in one context to other contexts.
    4. Would flipping it work? - Look for symmetry and/or asymmetry in the problems.
  • Thinking inside the box - Identify the boundary of the box, that is, look for principles or properties of problems or solutions as guides while searching for the solutions.
Another area which differentiates the book from other creativity books I've read is the emphasis on implementation. The authors talked about how to pitch ideas in the last chapter. However, not every new idea can create new business. So following the spirit of open-source movement in the software industry, the authors built a website for readers to share ideas. Publishing your ideas might bring in big rewards as people might ask you to help them implement your ideas.

Saturday, August 11, 2007

Links for 2007-08-11

Web Site:
  1. Read This!
Blog:
  1. CruiseControl.NET Demo
    • See how continuous integration works.
Article:
  1. Windows Debuggers: Part 1: A WinDbg Tutorial
    • It seems that only Part 1 is published.

Thursday, August 9, 2007

Links for 2007-08-09

Blogs:
  1. Two Things I Regret
    • One thing I regret in my current job is I should have asked for a higher pay, considering the works I have done for my employer. Sigh...
  2. Catalogs of Data Visualization

Monday, August 6, 2007

A 'feature' of System.Windows.Forms.ComboBox

In a program I maintain, I found a strange behavior of System.Windows.Forms.ComboBox in .Net 1.1. That is, when I dynamically change Combox.SelectedIndex, Combox.SelectedValue returns null. To retrieve 'SelectedValue', I have to use the following code, ComboBox.Items[ComboBox.SelectedIndex][ ComboBox.ValueMember]. Is it a feature or a bug?

Links for 2007-08-05

Articles
  1. A Custom Message Box Part1, Part2
  2. A Pure .NET Single Application Instance/Instancing Solution
    • I didn't realize the value of this article until recently I fixed a bug which can be reproduced only when 2 instances of a program are running at the same time. Prevention is the best solution.

Wednesday, August 1, 2007

.NET 2.0 Interoperability Recipes - Chapter 1

I just finished the first chapter of .NET 2.0 Interoperability Recipes. Several points mentioned in the chapter are written down here for my reference.
  • To find the entry point of a function in a dll, use dumpbin.exe to check the exact function name.
  • One solution to the memory allocation problem in unmanaged functions is to write a c++ wrapper to convert the unmanaged data structures to managed ones, (check out Marshal methods) and free the unmanaged memory allocation before returning from the c++ wrapper.