Calvin Hsia's WebLog

thoughts from a professional developer

Fish vs Sharks: Predator Prey simulation

Many years ago, A.K. Dewdney wrote an article in Scientific American Magazine (December 1984) about...

Author: CalvinH Date: 09/30/2014

Logo Turtle Graphics in WPF

Logo is a programming language that somehow involves a turtle. Imagine a turtle on a large piece of...

Author: CalvinH Date: 08/29/2014

Surface Pro 3 cursor disappears

I like my new Surface Pro 3. Things were working fine and all of a sudden, the cursor would...

Author: CalvinH Date: 08/19/2014

DPI Aware Sample

Last time I showed a way to use immediate mode graphics in WPF by showing balls bouncing around in a...

Author: CalvinH Date: 07/31/2014

WPF immediate mode graphics

Windows Presentation Foundation (WPF) is a retained mode graphics system (see Retained Mode Versus...

Author: CalvinH Date: 06/30/2014

How to monitor and respond to memory use

A colleague asked me how to run code in response to low memory condition. Apparently, data is...

Author: CalvinH Date: 05/29/2014

Async methods failures can be hard to diagnose

Using asynchronous programming can make your application be more responsive and seem faster....

Author: CalvinH Date: 04/25/2014

The Enum changed to int: How do you convert the int back to a name?

I wrote a tool that loaded some binary data and displayed it in a nice form, where the user could...

Author: CalvinH Date: 03/26/2014

See how often your code runs and how much time it takes

Last post I showed how to create your own CLR profiler. This time, we’ll add a little code to run...

Author: CalvinH Date: 02/26/2014

Create your own CLR Profiler

A CLR profiler is a very powerful way to examine your managed code. Let’s create your own CLR...

Author: CalvinH Date: 01/30/2014

Use reflection from native C++ code to run managed code

In the prior post (Use Reflection to create instances of objects) I showed how to create a plain C#...

Author: CalvinH Date: 12/05/2013

Use Reflection to create instances of objects

You can use reflection (specifically classes in the System.Reflection namespace) to create instances...

Author: CalvinH Date: 11/26/2013

Create and play your own Breakout game

I remember pouring quarters into a video game called Breakout a few decades ago. The summer of 1975,...

Author: CalvinH Date: 10/30/2013

Manipulate managed and native objects in C++ to show the registry in a WPF TreeView

Last time, we looked at how easy it is to add managed code to your existing C++ application. (Call...

Author: CalvinH Date: 09/27/2013

Call managed code from your C++ code

Over the decades of writing code, I’ve found that writing managed code (C#, VB) is much more...

Author: CalvinH Date: 08/30/2013

Scan the Windows Event Log for your application crashes and hangs

When you write software that runs on someone’s machine, it might crash or hang. If this occurs,...

Author: CalvinH Date: 07/31/2013

Use Custom Attributes to initialize test environments

Some tests can be quite complex, perhaps having prerequisites that consist of various steps,...

Author: CalvinH Date: 06/28/2013

Use status events to log and analyze an application

Applications can get quite complex, with multiple components, assemblies, subsystems, etc....

Author: CalvinH Date: 05/29/2013

Does the CLR release memory when no longer needed?

A colleague asked the other day if the CLR releases memory when it’s no longer needed. Suppose you...

Author: CalvinH Date: 04/30/2013

Cartoon animation works great on Surface Pro

I showed my 9 year old son a cool drawing program called Physamajig, in which users can draw...

Author: CalvinH Date: 04/01/2013

The Visual Studio Feedback tool

  Sometimes when you use Visual Studio, or any application on a computer, there’s a notable...

Author: CalvinH Date: 03/28/2013

Compiling code at runtime and MVP program is 20

This month marks the 20th anniversary of the Microsoft MVP program, so MVPs were in the news....

Author: CalvinH Date: 02/27/2013

Windows Error Reporting and the Appdomain.UnhandledException Event

Sometimes applications fail. If you are the author and it fails on your machine, typically you fire...

Author: CalvinH Date: 01/31/2013

Create a logger for watching your test progress as it runs.

  I was creating a project that’s a Windows Service, which has components running in multiple...

Author: CalvinH Date: 12/29/2012

Turn your tests into stress tests easily

It’s great to be able to write tests and execute them while developing a project. While I’m...

Author: CalvinH Date: 11/30/2012

Its easy to Create your own FrameWorkElement in WPF

Sometimes you want to have very fine control of how your application looks and behaves. Other times,...

Author: CalvinH Date: 10/30/2012

The number of Garbage Collections indicate how much memory is used

One of the performance improvements we made in .Net was with System.Text.StringBuilder....

Author: CalvinH Date: 09/28/2012

Performance of Memory vs Disk

There is a comment on this Visual Studio Blog post (about how we made Visual Studio faster): “Focus...

Author: CalvinH Date: 08/10/2012

Examine the layout of managed strings in memory

Suppose you wrote some C# code like this: var str1 = "ThisIsAString"; var str2 =...

Author: CalvinH Date: 07/19/2012

Increase the memory available to your tests

    I love having test projects included in my solutions. Software is alive. I’m...

Author: CalvinH Date: 06/27/2012

Create multiple threads to see if work is done simultaneously

When you hear about threads and threading, you hear that they allow concurrent execution of code,...

Author: CalvinH Date: 05/25/2012

Tetris

A long time ago I worked in the Green Building (building 54 at MIT).   Several NASA Apollo...

Author: CalvinH Date: 05/08/2012

Examine your program's available memory: is it leaking?

  Sometimes your program wakes up and finds itself running in an environment that might not be...

Author: CalvinH Date: 03/31/2012

Process Windows Messages in your WPF application

  I have some code that attaches and injects code into a target application (like Visual Studio...

Author: CalvinH Date: 02/27/2012

Be careful about nothing in managed code

  Here’s a pattern of code use I’ve seen in a few places. There’s a function DeserializeList...

Author: CalvinH Date: 01/30/2012

Advanced debugging: change your program execution without Edit and Continue

Last time (Improve your managed debugging skills: examining registers and memory) we examined some...

Author: CalvinH Date: 12/20/2011

Improve your managed debugging skills: examining registers and memory

  I was helping a colleague and we were deep in the middle of a debug session, single stepping...

Author: CalvinH Date: 11/29/2011

More fun with the Fast Fourier Transform

The sounds that we hear can be recorded via a microphone and can be graphed as a signal of amplitude...

Author: CalvinH Date: 10/31/2011

Using and styling a treeview in WPF

  As you know, a treeview control is very useful for viewing hierarchical information. Each...

Author: CalvinH Date: 09/27/2011

Automatic tests protect your code

  Last month  in  Dynamically create huge tooltips in WPF TreeView and ListView I...

Author: CalvinH Date: 08/31/2011

Dynamically create huge tooltips in WPF TreeView and ListView

  Tooltips are useful. When the mouse hovers over a button a tip can indicate what happens when...

Author: CalvinH Date: 07/29/2011

Returning data from a recursive method

Sometimes you need to write a method that requires recursion to be elegant. Often that method needs...

Author: CalvinH Date: 06/30/2011

Embed a ListView inside another ListView for one to many relationships

In the old days (about 16 years ago), FoxPro’s object, containership and inheritance models made it...

Author: CalvinH Date: 05/31/2011

Use colors in WPF to show virtual memory fragmentation

In this post What is your computer doing with all that memory? Write your own memory browser is...

Author: CalvinH Date: 04/29/2011

The cost of using nothing

What is the cost of using nothing? Seems like a silly question. Suppose you see code like this: void...

Author: CalvinH Date: 03/28/2011

See and hear the effects of Garbage Collection

Sometimes you forget that GC’s occur: it’s hard to see it’s effect, but what does...

Author: CalvinH Date: 02/26/2011

Are you running out of disk space? Treemap your files to see what's eating the most

I was running out of disk space and wanted to see what was eating the most. About 6 years ago I...

Author: CalvinH Date: 01/26/2011

Write your own Linq query viewer

Sometimes you just want to see data in a tabular format. It could be stored in a server somewhere in...

Author: CalvinH Date: 12/30/2010

Adding a new ADO.NET Entity Data Model "Error HRESULT E_FAIL has been returned from a call to a COM component"

I tried adding a new ADO.NET Entity Data Model item to a VS 2010 solution, but I got this error...

Author: CalvinH Date: 12/27/2010

Why does your code take so long? Profile it!

Why does your code take so long to run? How do you improve its performance? When examining code,...

Author: CalvinH Date: 11/30/2010

<Previous Next>