A simple debugger feature that I would really like

Following up on my earlier thoughts about print based debugging , here's an easy debugger feature that wouldmake my life much better (and make me more inclined to actually usedebuggers):

Provide a way to record things that doesn't show them to me until Iask for them.

I'm not actually interested in reading the things that I print out, notright away; I'm just collecting the information so that I can look backin time at the program's state once the bug


Created functions and exception stack backtraces

There's a problem with functions that make functions: they obscureinformation in exception stack backtraces, because all of the createdfunctions have the same name. If you have a lot of auto-createdfunctions, just which one is blowing up and how do you tell them apart?

(I noted a similar effect with lambdas back here .)

A function's name is part of its func_code attribute, specifically func_code.co_name . Unfortunately this attribute is read-only, so you


Microsoft has another problem

As sort of a successor of a previous entry , here isa thesis:

Increasingly, people use Microsoft Windows not because they want tobut because they have to.

(There's various reasons they have to: they're forced to by theiremployer, they need to use programs that only run on Windows, such asIE or Microsoft Office or various computer games, or even because thealternative costs too much.)

This is a problem for Microsoft, because customers that are only usingyou because they don


What an Ethernet splitter looks like

Partly because I couldn't easily turn up any good pictures ofthem on the Internet, here's a picture of an Ethernet splitter in its natural habitat:

Ethernet splitter in a wall jack

(Full sized version here .)

The grey thing with the scratches in the background is the side of myoffice bookcase. Since this is a university, it is a dun metal one,hence the shade. (It may technically be some species of green. At acertain level of dull colouration, it becomes hard to tell.)

You will


Usability issues with blog URLs

It's surprising how many little things about web usability you discoverywhen you write your own version of things like blog software; thewhole experience can be very educational. Unfortunately, I've mostlydiscovered these issues by stubbing my toes on them.

For instance, consider the usability issues of weblog URLs. Take whatappeared like an initial and obvious idea: having an entry's categoryappear in its URL. It turns out that this is a really bad idea, andI can boil why down to this


Dual identity routing with Linux's policy based routing

In the last entry I talked about the ideathat an end node machine in a VPN actually has two distinct identitiesthat need to be routed separately: the inside identity that should berouted over the VPN, and the outside identity that should be routed overthe Internet. In this case each identity has an IP address associatedwith it; call the inside identity's IP address I and the outsideidentity's IP address O .

We can do this sort of routing with Linux's policy based routing, which


A surprise to remember about starting modern machines

In the very old days you connected to Unix systems through serialterminals, which only had their getty processes started once init had finished processing /etc/rc .

In the old days you connected to Unix systems through rlogin(d),which was started through inetd , which was still started prettymuch at the end of system startup.

These days you connect to Unix systems through sshd , which is oftenstarted relatively early in the system boot sequence. This means thatyou can easily wind up logging into a machine that


Some problems with iSCSI on Solaris 10 (on x86)

The basic operation of iSCSI goes something like this:

  1. poke things to discover what iSCSI targets you have available, then
  2. login to each target, creating sessions and discovering whatiSCSI devices (eg, disks) they have available, then
  3. talk to those iSCSI devices over the sessions you've createdto actually do things.

There are three sorts of discovery: static configuration, SendTarget,and iSNS. Static configuration is the least convenient, because itrequires you to know the target's full iSCSI name as well as its


The VPN routing problem

An end node machine connecting in through a VPN has two IP addresses;one IP address that is inside the VPN (call it I), and its normal IPaddress outside the VPN (call it O). The outside address is sometimescalled the wild side address, because it is accessibly by the wildInternet.

A lot of writing about VPNs assumes that I and O are disjoint from eachother, effectively on completely isolated networks; I talks to thecorporate network behind the VPN and only the corporate network,


Quality Solaris 10 software:

Very interesting things can turn up while you are testing Solaris 10iSCSI support make sure it behaves nicely in the face of dead logicaldisks. Like, say:

# format
Searching for disks...
Mode sense page(3) reports nsect value as 63, adjusting it to 0
Error: can't open selected disk '/dev/rdsk/c2t1d0p0'.
Arithmetic Exception - core dumped

(I was running format to see what disks it still saw; format