The practical Unix API is more than system calls (or POSIX)

What is the 'Unix API'? Some people would be tempted to say thatthis is straightforward; depending on your perspective it's eitherthe relatively standard set of core Unix system calls or the systemcalls and library functions required by POSIX. This answer is notwrong at one level, but in practice it is not a useful one.

As people have found out in the past, the real Unix API is the wholecollection of behaviors and environments that Unix programs assume.It isn't just POSIX library


Frequent versus infrequent developers (in languages and so on)

Yesterday I mentioned the phrase 'infrequent developer' in an asidein my entry . Today I'm writing about what Imean by that and by its opposite, the frequent developer, and whyI care about this.

What I'm calling frequent developers here in the context of, say,a language (such as Go) are people who routinely work with code orprograms written in that language. When you're a frequent developer,you naturally develop expertise in that language's operation andoften a


A sysadmin's perspective on Go vendoring and vgo

One big thing in the Go world lately has been Russ Cox's writingson adding package versioning to the core of Go through what iscurrently being called Versioned Go , vgo for short. His initial plans were for vgo to completelydrop Go's current vendoring feature . If youwanted to capture a local copy of your external dependencies, youwould have to set up your own proxy server (per his article onmodules , vgo would comewith one). According to the vgo & vendoring golang-dev thread


egrep's -o argument is great for extracting unusual fields

In Unix, many files and other streams of text are nicely structuredso you can extract bits of them with straightforward tools like awk . Fields are nicely separated by whitespace (or by some simplething that you can easily match on), the information you want isonly in a single field, and the field is at a known and generallyfixed offset (either from the start of the line or the end of theline). However, not all text is like this. Sometimes it's because people have


Using Python 3 for example code here on Wandering Thoughts

When I write about Python here , I often wind up havingsome example Python code, such as the subCls example in myrecent entry about subclassing a __slots__ class . Mostly this Python code has beenPython 2 by default, with Python 3 as the exception. When I startedwriting, Python 3 wasn't even released; then it wasn't reallysomething you wanted to use; and then I was grumpy about it so I deliberately continued to use Python 2 forexamples here, just as


It feels good to have a fallback option for home computing

Earlier this evening, I had a close call with mynow increasingly aged home machine ; thefan noise went to 'very loud' and the CPU temperature startedclimbing. After I hastily shut it down and blew out all of the dust,I was able to determine that the actual problem was a dying casefan, which has a simple workaround (just take the side of the caseoff). Until I worked this out, though, I was facing the prospectthat my home machine might be effectively dead for


Intel

Meltdown and Spectre have made this a bad time to get a new x86 CPU

Despite reasonably solid plans , I stilldon't have a new home machine and in fact I probably won't get onefor some time (even with my recent scare ).Instead I'm likely to prolong the life of my current machinefrom 2011 at least a year longer than Iwas expecting. By far the largest reason for my delay is that it'scurrently a bad time to get a new x86 CPU, due to Meltdownand Spectre and the general class of


What Python does when you subclass a __slots__ class is the right answer

Recently on Twitter @simonw sort of asked this question :

Trying to figure out if it's possible to create an immutable Pythonclass who's subclasses inherit its immutability - using __slots__on the parent class prevents attrs being set, but any child classstill gets a mutable __dict__

To rephrase this, if you subclass a class that uses __slots__,by default you can freely set arbitrary attributes on instances ofyour subclass. Python's behavior here surprises people


The question of what will be sending email spam over IPv6

In reaction to receiving my first spam email over IPv6 ,I've been thinking a bit about the moderate term future of emailspam over IPv6. One of the questions I have is what will be sendingout such email spam. More narrowly, will IPv6 spam email happen asan incidental side effect of random dual-stack machines trying IPv6connections before IPv4 ones (as in my case ), orwill it be a deliberate attempt by spam operations to use IPv6 toevade various sorts


Github and publishing Git repositories

Recently I got into a discussion on Twitterwhere I mentioned that I'd like a simple way to publish Gitrepositories on my own web server. You might reasonably ask why Ineed such a thing, since Github exists and I even use it . For me, a significant part of theanswer is social. To put it one way, Github has become a little bittoo formal, or at least I perceive it as having done so.

What has done this to Github is that more and more, people