EProvide 2.1.0

Yesterday, we released a new version of EProvide.

(EProvide is an Eclipse EMF-based tool with which you can describe the operational semantics of your DSL using different description languages. The idea behind EProvide is to metamodel not only the static structure of your DSL but also the runtime states. Thus, the runtime state of a DSL program is encoded in a model that changes step-wise over time. With EProvide, these step-wise changes are described with a model transformation that transforms one runtime state to its successor. Based on such a description and on an editor for your DSL, EProvide can execute your models in an animated way so that you can observe and debug model execution.)

The new version is much better integrated into the Eclipse debug framework than its predecessor: you can use Eclipse's standard GUI elements for controlling model execution (suspend, resume, step, drop to frame = reset initial state, terminate). Also, we added a new step-back button to the debug view that allows you to step back in the execution history of your model execution.

You can see the new features demonstrated in this screencast.


Time Machine freezes computer

I let Time Machine backup into a sparse bundle on a windows share. This worked a little slow but otherwise fine until yesterday when Time Machine froze my MacBook every time it ran. To get it back running, I had to turn off the MacBook by holding down the power key for a few seconds. After restart, Mac OS told me the reason: a kernel panic with this backtrace:

panic(cpu 0 caller 0x00321C20): "hfs_UNswap_BTNode: invalid forward link (0xABAC0006)\n"@/SourceCache/xnu/xnu-1228.5.20/bsd/hfs/hfs_endian.c:254
Backtrace, Format - Frame : Return Address (4 potential args on stack)
0x3cb4b768 : 0x12b0fa (0x4592a4 0x3cb4b79c 0x133243 0x0)

After some web search [1], I found out that the reason was probably a defect sparse bundle caused by turning off my computer during backups, which I sometimes do. So the solution was to repair the sparse bundle:

  1. I mounted the windows share on which my Time Machine sparse bundle lies.
    Then, I executed the following commands in the terminal:
  2. Make the sparse bundle available as a device (in my case, it was /dev/disk1, but hdiutil tells you, which device it assigns the sparse bundle to):
    hdiutil attach -nomount -readwrite /Volumes/windows_share/my.sparsebundle
  3. Repair the sparse bundle (this takes some time):
    fsck_hfs -f /dev/disk1


Are writing code and writing text so different?

It seems to me that programming and paper writing modify your brain in incompatible ways. Whenever I have been heavily in programming for a couple of days, I have problems switching to paper writing -- and vice versa. Maybe it is because in paper writing, you are forced to structure your thoughts in a sequential order, whereas in programming, knowing your code structure requires you to keep track of many things in parallel: call and inheritance hierarchies, operation parameters, names of variable, operations, and classes, ...