I am running Windows 7 x64 and used the task manager to capture a dump by using the “Create Dump File” context menu command on my Firefox 11 beta process that had frozen when I exited (window disappeared, but process remained – with 75% CPU usage). Visual C++ Express 2010 complained that “You cannot debug a 64-bit dump of a 32-bit process, you must collect a 32-bit dump of a 32-bit process.” That’s when I found this post which mentioned that the 32-bit task manager is actually available at C:\Windows\SysWOW64\taskmgr.exe and should be used instead.
Introduction to OpenCL
Over the past couple of days I’ve worked my way through AMD’s Introduction to OpenCL text and acquainted myself with concepts such as compute devices, compute units, and processing elements. I’ve also gone through the memory model, as well as the OpenCL C language. I also installed the AMD APP SDK but still need to run the “hello world” program.
Real-Time Java
I was reading through the paper on Reconsidering Custom Memory Allocation from a couple of years ago when I learned about Real-Time Java. I had not encountered it before but it sounds interesting.
Coq Cannot Match Over Arbitrary Propositions
While working on the Lists section of Software Foundations, I tried to define member as follows:
Definition member (v:nat) (s:bag) : bool :=
match gt (count v s) 0 with
| False => false
| True => true
end.
I kept getting “Error: This clause is redundant.” After some digging around, I found Adam’s explanation that logical propositions (Prop) such as gt (count v s) 0 are not usable for pattern matching in Gallina (without solving “the halting problem and more”). The easier solution then hit me (duh):
Definition member (v:nat) (s:bag) : bool :=
match count v s with
| O => false
| _ => true
end.
Thankfully, I learned something new about Prop though :).
Verifying MD5 Hashes
I grabbed a copy of WinMD5 – small, fast efficient. A bit sad that this is the first time I’m verifying the hash of a file I downloaded (happens to be from the AMD APP SDK).
How to Check Which DirectX Version is Installed
I couldn’t remember how to check which version of DirectX is installed on my computer – it’s been a few years since I’ve been interested in DirectX. Apparently it’s still as simple as:
dxdiag
Big Step vs Small Step Semantics
As explained by Wikipedia, small-step semantics formally describe how the individual steps of a computation take place in a computer-based system. Big-step semantics describe how the overall results of the executions are obtained.
Coq’s Require Import vs Require Export
The difference between Require Import MyModule and Require Export MyModule is well explained in the modules tutorial:
If a required module depends on other modules then the latter’s are automatically required beforehand. However their contents are not automatically visible. If you want a module M
required in a module N
to be automatically visible when N
is required, you should use Require Export M
in your module N
.
Double-Checked Locking
I read this paper on double-checked locking. It had a great discussion of the pitfalls of using this approach for implementing the Singleton Pattern. Here is a typical example of an unsafe implementation:
public static Singleton getInstance() { if (instance == null) { synchronized(Singleton.class) { if (instance == null) instance = new Singleton(); } } return instance; }
Chromium Switched from Bsdiff
I found it interesting that Chromium developers implemented their own algorithm to replace bsdiff. I do not fully understand how (efficient) binary patching works, so this is a good starting point…