The mailing list thread to bug tracking system problem

I will start with the thesis: open source projects would benefitfrom a canonical and easy way to take a mailing list message orthread and turn it into an issue or bug report in your bug trackingsystem.

It's entirely natural and rather normal for a but report to startwith someone uncertainly asking 'is this supposed to happen?' or'am I understanding this right?' questions on one of your mailinglists. They're not necessarily doing this because they don't knowwhere to report


The somewhat surprising history of chroot()

The chroot() system call is one of those that I think of as beingreally old. Up until a while back , if you'dpressed me I'd have guessed that it originated in V7. Then I duginto it and in that tweet claimed it was from 4.2 BSD. This iswhat you'd kind of expect and what it sort of looks like, but itturns out to be wrong and the history of chroot() seems to bemuch more interesting than I


Some notes on using Solaris kstat(s) in a program

Solaris (and Illumos, OmniOS, etc) has for a long time had a 'kstat'system for systematically providing and exporting kernel statisticsto user programs. Like many such systems in many OSes, kstat doesn'tneed root permissions; all or almost all of the kstats are publicand can be read by anyone. If you're a normal Solaris sysadmin,you've mostly interacted with this system via kstat(1) ( as Ihave ) or perhaps Perl, for which thereis the Sun


Why I wind up writing my own (sysadmin) tools

I have a tendency to write my own versions of tools, like bulkIO measurement tools , versions of netcat , and network bandwidth reporters . Historically there have been twoofficial reasons for this and a third unofficial one.

First, when I write a tool myself I know exactly what it's doingand what its output means. This has historically been a problemwith other people's tools, including system supplied ones ( eg ). If I'm going to wind up reading thesource of a program just


One view on practical blockers for IPv6 adoption

I recently wound up reading Russ White's Engineering Lessons,IPv6 Edition ( via ), whichis yet another meditation by a network engineer about why peoplehaven't exactly been adopting IPv6 at a rapid pace. Near the end,I ran across the following:

For those who weren't in the industry those many years ago, therewere several drivers behind IPv6 beyond just the need for more addressspace. [...]

Part of the reason it's taken so long to


PS/2 to USB converters are complex things with interesting faults

My favorite keyboard and mice are PS/2 ones , and of course fewer and fewer PCs comewith PS/2 ports (especially two of them). The obvious solution isPS/2 to USB converters, so I recently got one at work; half as anexperiment, half as stockpiling against future needs. Unfortunatelyit turned out to have a flaw, but it's an interesting flaw.

The flaw was that if I held down CapsLock (which I remap to Control)and then hit some letter


I think you should get your TLS configuration advice from Mozilla

If you decide that you care about having good TLS support in, say,a web server and look around, there are a lot of places that willtell you all about what configuration you should have in order tobe secure and widely available and so on. Old ones live on in theirdusty now-inaccuracy (TLS configuration advice has a half life ofsix months at most) and new ones spring up every so often. Many ofthem contradict each other in whole or in part. The whole thing is


What surprised me about the Python assignment puzzle

Yesterday I wrote about a Python assignment puzzle and how it worked, but I forgot to writeabout what was surprising about it for me. The original puzzle is:

(a, b) = a[b] = {}, 5

The head-scratching bit for me was the middle, including the wholequestion of 'how does this even work'. So the real surprise herefor me is that in serial assignments, Python processes theassignments left to right .

The reason this was a big surprise is


What's going on with a Python assignment puzzle

Via @chneukirchen , I ran across this tweet :

Armin just came up with this puzzle, how well do you know obscurePython details? What's a after this statement?:
(a, b) = a[b] = {}, 5

This is best run interactively for maximum head-scratching. I hadto run it in an interpreter myself and then think for a while,because there are several interesting Python things going on here.

Let's start by removing the middle assignment. That


Using abstract namespace Unix domain sockets and SO_PEERCRED in Python

Linux has a special version of Unix domain sockets where the socketaddress is not a socket file in the filesystem but instead in anabstract namespace . It's possibleto use them from Python without particular problems, includingchecking permissions with SO_PEERCRED , but it's not completelyobvious how.

(For general information on using Unix domain sockets from Python,see UnixDomainSockets .)

With a normal Unix domain socket, the address you give is the pathto a socket file. Per the Linux unix(7)