| 2016-08-01: |
My new key binding hack for xcape and dmenu
|
| 2016-07-31: |
I've become mostly indifferent to what language something is written in
(Not) changing the stop timeout for systemd login session scopes
|
| 2016-07-30: |
The perils of having an ancient $HOME (a yak shaving story)
|
| 2016-07-29: |
My surprise problem with considering a new PC: actually building it
|
| 2016-07-28: |
A bit about what we use DTrace for (and when)
|
| 2016-07-27: |
When 'simple' DNS blocklists work well for you
|
| 2016-07-25: |
An irritating systemd behavior when you tell it to reboot the system
I should learn more about Grub2
|
| 2016-07-24: |
My view on people who are assholes on the Internet
|
| 2016-07-23: |
My current set of Chrome extensions (as of July 2016)
|
| 2016-07-22: |
Ubuntu 16.04's irritatingly broken MySQL updates
|
| 2016-07-21: |
My current set of essential extensions for Firefox profiles
|
| 2016-07-20: |
Official source release builds should not abort on (compilation) warnings
|
| 2016-07-19: |
How not to set up your DNS (part 23)
An interesting (and alarming) Grub2 error and its cause
|
| 2016-07-17: |
A good solution to our Unbound caching problem that sadly won't work
DNS resolution cannot be segmented (and what I mean by that)
|
| 2016-07-16: |
A caching and zone refresh problem with Unbound
|
| 2016-07-15: |
Sudo and changes in security expectations (and user behaviors)
|
| 2016-07-14: |
Your C compiler's optimizer can make your bad programs compile
|
| 2016-07-13: |
Our central web server, Apache, and slow downloads
|
| 2016-07-12: |
How we do MIME attachment type logging with Exim
|
| 2016-07-11: |
Why Python can't have a full equivalent of Go's gofmt
|
| 2016-07-10: |
Some options for logging attachment information in an Exim environment
|
| 2016-07-09: |
How Exim's ${run ...} string expansion operator does quoting
|
| 2016-07-08: |
Some notes on UID and GID remapping in the Illumos/OmniOS NFS server
|
| 2016-07-06: |
Keeping around an index to the disk bays on our iSCSI backends
It turns out that viruses do try to conceal their ZIP files
|
| 2016-07-04: |
A feature I wish the Linux NFS client had: remapping UIDs and GIDs
|
| 2016-07-03: |
An irritating little bug in the latest GNU Emacs Python autoindent code
|
| 2016-07-02: |
cal's unfortunate problem with argument handling
|
| 2016-07-01: |
How backwards compatibility causes us pain with our IMAP servers
|
| 2016-06-30: |
Some advantages of using argparse to handle arguments as well as options
What makes a email MIME part an attachment?
|
| 2016-06-29: |
Modern DNS servers (especially resolvers) should have query logging
|
| 2016-06-27: |
Today's lesson on the value of commenting your configuration settings
If you send email, don't expect people to help you with abuse handling
|
| 2016-06-26: |
How not to maintain your DNS (part 22)
|
| 2016-06-25: |
What Python 3 versions Django supports, and when this changes
|
| 2016-06-24: |
Our new plan for creating our periodic long term backups
|
| 2016-06-22: |
I need to cultivate some new coding habits for Python 3 ready code
Moving from Python 2 to Python 3 calls for a code inventory
|
| 2016-06-20: |
A tiny systemd convenience: it can reboot the system from RAM alone
|
| 2016-06-19: |
A lesson to myself: know your emergency contact numbers
Why ZFS can't really allow you to add disks to raidz vdevs
|
| 2016-06-18: |
It's easier to shrink RAID disk volumes than to reshape them
|
| 2016-06-17: |
Why you can't remove a device from a ZFS pool to shrink it
|
| 2016-06-15: |
How (some) syndication feed readers deal with HTTP to HTTPS redirections
ZFS on Linux has just fixed a long standing little annoyance
|
| 2016-06-14: |
Some notes on how xdg-open picks which web browser to use
How xdg-mime searches for MIME type handlers (more or less)
|
| 2016-06-12: |
There are (at least) two sorts of DNS blocklists
Some notes on adding exposed statistics to a (Go) program
|
| 2016-06-11: |
I accept that someday I'll give up MH and move to IMAP mail clients
|
| 2016-06-10: |
An email mistake I've made as a long-term university sysadmin
|
| 2016-06-09: |
My concern about the potential dominance of the mobile web
|
| 2016-06-08: |
How dominant is the mobile web (versus the desktop web)?
|
| 2016-06-06: |
My views of Windows 10 (from the outside)
I work in what is increasingly a pretty different sysadmin environment
|
| 2016-06-05: |
My approach for inspecting Go error values
|
| 2016-06-04: |
The (Unix) shell is not just for running programs
|
| 2016-06-03: |
One thing that makes the Bourne shell an odd language
|
| 2016-06-02: |
Spammers can abandon SMTP connections not infrequently
|
| 2016-05-31: |
Understanding the modern view of security
|
| 2016-05-30: |
The browser security dilemma
'Command line text editor' is not the same as 'terminal-based text editor'
|
| 2016-05-29: |
What does 'success' mean for a research operating system?
|
| 2016-05-28: |
A problem with using old OmniOS versions: disconnection from the community
|
| 2016-05-27: |
Your overall anti-spam system should have manual emergency blocks
|
| 2016-05-26: |
Why SELinux is inherently complex
|
| 2016-05-25: |
SELinux is beyond saving at this point
|
| 2016-05-23: |
How fast fileserver failover could matter to us
|
| 2016-05-22: |
Our problem with OmniOS upgrades: we'll probably never do any more
My view of Barracuda's public DNSBL
|
| 2016-05-21: |
Please stop the Python 2 security scaremongering
|
| 2016-05-20: |
Some notes on abusing the pexpect Python module
|
| 2016-05-19: |
Some basic data on the hit rate of the Spamhaus DBL here
|
| 2016-05-18: |
Go does not have atomic variables, only atomic access to variables
|
| 2016-05-16: |
A quick trick: using Go structs to create namespaces
Discovering my personal limit on how much I care about security
|
| 2016-05-15: |
It's time for me to upgrade my filtering HTTP proxy
|
| 2016-05-14: |
IPv6 is the future of the Internet
|
| 2016-05-13: |
You can call bind() on outgoing sockets, but you don't want to
|
| 2016-05-11: |
We're never going to be able to have everyone use two factor authentication
The difference between 'Delete' and 'Destroy' in X window managers
|
| 2016-05-09: |
An Apache trick: using directories to create redirections
You can't use expvar.Func to expose a bunch of expvar types
|
| 2016-05-08: |
Issues in fair share scheduling of RAM via resident set sizes
|
| 2016-05-07: |
'Fair share' scheduling pretty much requires a dynamic situation
|
| 2016-05-06: |
A weird little Firefox glitch with cut and paste
|
| 2016-05-04: |
My annoyance with Chrome's cut and paste support under X
The better way to clear SMART disk complaints, with safety provided by ZFS
|
| 2016-05-02: |
How I think you set up fair share scheduling under systemd
The state of supporting many groups over NFS v3 in various Unixes
|
| 2016-04-30: |
I should keep and check notes even on my own little problems
A story of the gradual evolution of network speeds without me noticing
|
| 2016-04-29: |
You should plan for your anti-spam scanner malfunctioning someday
|
| 2016-04-28: |
You should probably track what types of files your users get in email
|
| 2016-04-26: |
How 'there are no technical solutions to social problems' is wrong
Bad slide navigation on the web and understanding why it's bad
|
| 2016-04-25: |
Why you mostly don't want to do in-place Linux version upgrades
|
| 2016-04-24: |
Why we have CentOS machines as well as Ubuntu ones
|
| 2016-04-23: |
Why I think Illumos/OmniOS uses PCI subsystem IDs
|
| 2016-04-22: |
What Illumos/OmniOS PCI device names seem to mean
|
| 2016-04-20: |
A brief review of the HP three button USB optical mouse
How to get Unbound to selectively add or override DNS records
|
| 2016-04-19: |
Today's odd spammer behavior for sender addresses
|
| 2016-04-18: |
Why your Apache should have mod_status configured somewhere
|
| 2016-04-17: |
Why Unix needs a standard way to deal with the file durability problem
|
| 2016-04-16: |
Why I think Let's Encrypt won't be a threat to commercial CAs for now
|
| 2016-04-15: |
Unbound illustrates the Unix manpage mistake with its ratelimits documentation
|
| 2016-04-14: |
Unix's file durability problem
|
| 2016-04-13: |
How I'm trying to do durable disk writes here on Wandering Thoughts
|
| 2016-04-12: |
There's a spectrum of 'pets versus cattle' in servers
|
| 2016-04-11: |
Why I don't use HTTP Key Pinning and I'm not likely to any time soon
|
| 2016-04-10: |
SPF is not a security feature, as it solves the wrong problem
|
| 2016-04-09: |
Why your Ubuntu server stalls a while on boot if networking has problems
|
| 2016-04-08: |
How to shoot yourself in the foot with /etc/network/interfaces on Ubuntu
|
| 2016-04-06: |
What is behind Unix's 'Text file is busy' error
How options in my programs conflict, and where argparse falls short
|
| 2016-04-05: |
Some notes on Go's expvar package
|
| 2016-04-04: |
The three types of challenges that Let's Encrypt currently supports
|
| 2016-04-03: |
Let's Encrypt certificates can be used for more than HTTPS
|
| 2016-04-01: |
A surprise to watch out for with Go's expvar package (in expvar.Var)
|
| 2016-03-31: |
My initial experience of using NSD as a simple authoritative DNS server
|
| 2016-03-30: |
I've now used Python's argparse module and I like it
My view of Debian's behavior on package upgrades with new dependencies
|
| 2016-03-28: |
An awkward confession and what we should do about it
Why I don't think upgrading servers would save us much power
|
| 2016-03-27: |
The limits of open source with Illumos and OmniOS
|
| 2016-03-26: |
The sensible update for my vintage 2011 home machine
|
| 2016-03-25: |
There's a relationship between server utilization and server lifetime
|
| 2016-03-23: |
How old our servers are (as of 2016)
Wayland and graphics card uncertainty
|
| 2016-03-21: |
Current PC technology churn that makes me reluctant to think about a new PC
When you want non-mutating methods in Go
|
| 2016-03-20: |
What broad hit rate the Spamhaus DBL might get for us
|
| 2016-03-18: |
The Spamhaus DBL does get hits even with basic checks
Some things I believe about importance and web page design
|
| 2016-03-16: |
How 'from module import ...' is not doing what you may expect
I wish I could split up code more easily in Python
|
| 2016-03-14: |
An additional small detail of how writes work on ZFS raidzN pools
How RPM handles configuration files, both technically and socially
|
| 2016-03-13: |
I've started using the Firefox addon Self-Destructing Cookies for some stuff
|
| 2016-03-11: |
Why it's irritating when Ubuntu packages don't include their configuration files
I need to use getopts sooner (and more often) in Bourne shell scripts
|
| 2016-03-09: |
A sensible surprise (to me) in the Bourne shell's expansion of "$@"
Some thoughts on ways of choosing what TLS ciphers to support
|
| 2016-03-07: |
Why it makes sense for true and false to ignore their arguments
Apt-get and its irritating lack of easy selective upgrades
|
| 2016-03-06: |
Firefox addons seem unfortunately prone to memory leaks
|
| 2016-03-05: |
What happens when a modern Linux system boots without /bin/sh
|
| 2016-03-04: |
Some notes on supporting readline (tab) completion in your Python program
|
| 2016-03-03: |
My views on clients for Lets Encrypt
|
| 2016-03-02: |
Some notes on OpenSSH's optional hostname canonicalization
|
| 2016-02-29: |
Turning over a rock on some weird HTTP requests to our web server
Sometimes, doing a bunch of programming can be the right answer
|
| 2016-02-28: |
The status of null-sender spam from outlook.com
|
| 2016-02-27: |
Link: A Short History Of Removable Media Behind The Iron Curtain
Sometimes brute force is the answer, Samba edition
|
| 2016-02-26: |
Our problem with iSCSI connections at boot on OmniOS
|
| 2016-02-24: |
Mozilla, Symantec, SHA-1 certificates, and the balance of power
I'm often an iterative and experimental programmer
|
| 2016-02-22: |
We've permanently disabled overlayfs on our servers
The university's coordination problem
|
| 2016-02-21: |
Why the Ubuntu package update process makes me irritated
|
| 2016-02-20: |
My two usage cases for Let's Encrypt certificates
|
| 2016-02-19: |
We can't use Let's Encrypt on our production systems right now
|
| 2016-02-18: |
Two models of dealing with cookies in Firefox with addons
|
| 2016-02-17: |
The many load averages of Unix(es)
|
| 2016-02-16: |
Whether or not to use cgo for Go packages, illustrated in a dilemma
|
| 2016-02-15: |
SMTP submission ratelimits should have delays too
|
| 2016-02-14: |
Your outgoing mail system should have a per-sender stop switch
|
| 2016-02-12: |
We need to deploy anti-spam precautions even if they're a bit imperfect
Adding a new template filter in Django 1.9, and a template tag annoyance
|
| 2016-02-11: |
My current views on using OpenSSH with CA-based host and user authentication
|
| 2016-02-10: |
The fundamental practical problem with the Certificate Authority model
|
| 2016-02-08: |
Old Unix filesystems and byte order
Clearing SMART disk complaints, with safety provided by ZFS
|
| 2016-02-07: |
Your SSH keys are a (potential) information leak
|
| 2016-02-06: |
You can have many matching stanzas in your ssh_config
|
| 2016-02-05: |
Some notes on SMF manifests (on OmniOS) and what goes in them
|
| 2016-02-03: |
Django, the timesince template filter, and non-breaking spaces
You aren't entitled to good errors from someone else's web app
|
| 2016-02-02: |
A justification for some odd Linux ARP behavior
|
| 2016-01-31: |
One thing I don't like about Fedora is slow security updates
The tradeoffs of having ssh-agent hold all of your SSH keys
|
| 2016-01-30: |
Some good practices for handling OpenSSH keypairs
|
| 2016-01-29: |
What SSH identities will be offered to a remote server and when
|
| 2016-01-28: |
Modern Django makes me repeat myself in the name of something
|
| 2016-01-26: |
Why my home backup situation is currently a bit awkward
Low level issues can have quite odd high level symptoms (again)
|
| 2016-01-25: |
A Python wish: an easy, widely supported way to turn a path into a module
|
| 2016-01-24: |
Hostile HTTPS interception on the modern web is now increasingly costly and risky
|
| 2016-01-22: |
Browsers are increasingly willing to say no to users over HTTPS issues
Memory-safe languages and reading very sensitive files
|
| 2016-01-21: |
One example of why I like ZFS on Linux
|
| 2016-01-20: |
Illumos's ZFS prefetching has recently become less superintelligent than it used to be
|
| 2016-01-18: |
Today I learned that a syslog server can be very silent on the network
A limitation of tcpdump is that you can't tell in from out
|
| 2016-01-17: |
My theory on how network loop caused the problem we observed
|
| 2016-01-15: |
Network loops can have weird effects (at least sometimes)
Things I learned from OpenSSH about reading very sensitive files
|
| 2016-01-13: |
What I want out of backups for my home machine (in the abstract)
Your system's performance is generally built up in layers
|
| 2016-01-11: |
The drawback of setting an explicit mount point for ZFS filesystems
The benefits of flexible space usage in filesystems
|
| 2016-01-10: |
Updating software to IPv6 is often harder than you might think
|
| 2016-01-09: |
The convenience of having keyboard controls for sound volume
|
| 2016-01-08: |
Getting to watch a significant spam campaign recently
|
| 2016-01-07: |
The format of strings in early (pre-C) Unix
|
| 2016-01-06: |
A fun Bash buffering bug (apparently on Linux only)
|
| 2016-01-05: |
Illumos's problem with its VCS commit messages
|
| 2016-01-04: |
How I do per-address blocklists with Exim
|
| 2016-01-03: |
One anti-spam thing I like is per-person (or per-address) blocklists
|
| 2016-01-02: |
I've realized I need to change how I read Twitter
|
| 2015-12-31: |
A defense of C's null-terminated strings
How I've wound up taking my notes
|
| 2015-12-30: |
Some notes on entering unusual characters in various X applications
|
| 2015-12-29: |
Take notes when (and as) you do things and keep them
|
| 2015-12-28: |
The limits of what ZFS scrubs check
|
| 2015-12-27: |
A confession: I find rejecting spam at SMTP time to be more satisfying
|
| 2015-12-26: |
Adjusting mouse sensitivity on Linux, and why you might want to
|
| 2015-12-25: |
I like Magit, the GNU Emacs package for Git
|
| 2015-12-24: |
There is a surprising amount of old SSL code in running MTAs
|
| 2015-12-23: |
Where cryptographic hashes come into TLS certificates
|
| 2015-12-21: |
Some opinions on how package systems should allow you to pin versions
The Apache mod_qos module worked for us
|
| 2015-12-20: |
There are three places spam filtering can happen these days
|
| 2015-12-18: |
A fun tale of network troubleshooting involving VLANs and MACs
Some things about the XSettings system
|
| 2015-12-17: |
Fixing the GTK UI font in my Fedora 23 setup
|
| 2015-12-16: |
I just had another smooth Fedora version upgrade with ZFS on Linux
|
| 2015-12-14: |
Some things that force Go to call the C library for name resolution on Linux
Getting xterm and modern X applications to do cut and paste together
|
| 2015-12-13: |
I still believe in shimming modules for tests
|
| 2015-12-12: |
My views on the choice of Linux distribution
|
| 2015-12-11: |
The ArchLinux wiki has quietly become a good resource for me
|
| 2015-12-09: |
Goroutines, network IO streams, and the resulting synchronization problem
A surprise about cryptographic signatures
|
| 2015-12-07: |
What I like web templating languages for
The old-fashioned and modern ways to remap keys in X (some notes)
|
| 2015-12-06: |
The (peculiar) freedom of having a slow language
|
| 2015-12-05: |
The details behind zpool list's new fragmentation percentage
|
| 2015-12-04: |
One limit to how much TLS can do for you against MITM attacks
|
| 2015-12-02: |
What zpool list's new FRAG fragmentation percentage means
|
| 2015-12-01: |
Red Hat has really doubled down on being email spammers
|
| 2015-11-30: |
My current dilemma: is it worth putting the root filesystem on a SSD
A new piece of my environment: xcape, an X modifier key modifier
|
| 2015-11-29: |
My feelings about my mechanical mini keyboard
|
| 2015-11-27: |
Documentation should explain why things are security issues, at least briefly
A thought on the apparent popularity of new static typing languages
|
| 2015-11-26: |
Some notes on Apache's suexec
|
| 2015-11-25: |
Why speeding up (C)Python matters
|
| 2015-11-23: |
PC laptop and desktop vendors are now clearly hostile parties
Why I care about how fast CPython is
|
| 2015-11-22: |
I should find some good small packages for templates and forms for CGIs
|
| 2015-11-21: |
What I think I want out of autocompletion in GNU Emacs (for Go coding)
|
| 2015-11-20: |
What modern version control systems are
|
| 2015-11-18: |
VCS bisection steps should always be reversible
Increasingly, I no longer solidly and fully know Python
|
| 2015-11-16: |
On public areas on the Net and conversations therein
The problems with creating a new template language
|
| 2015-11-15: |
I should remember that I can cast things in Go
|
| 2015-11-14: |
ZFS pool import needs much better error messages
|
| 2015-11-13: |
We killed off our SunSolve email contact address yesterday
|
| 2015-11-12: |
Don't have support registrations in the name of a specific sysadmin
|
| 2015-11-11: |
No new web templating languages; use an existing one
|
| 2015-11-10: |
Why I spent a lot of time agonizing over an error message recently
|
| 2015-11-09: |
What sysadmins want out of logging means that it can't be too simple
|
| 2015-11-08: |
The great Delete versus Backspace split
|
| 2015-11-07: |
Why I (still) care about SELinux and its flaws
|
| 2015-11-06: |
Revisiting a bit of my X keymapping history
|
| 2015-11-04: |
SELinux's usability, illustrated once again
Outlook.com now has collected some SBL listings
|
| 2015-11-02: |
When setting up per-thing email addresses, make sure you can turn them off
Status reporting commands should have script-oriented output too
|
| 2015-10-31: |
One advantage of System V is that it was available
In practice, anything involving the JVM is often a heavyweight thing
|
| 2015-10-30: |
My discovery that the USB mouse polling rate matters
|
| 2015-10-29: |
USB mouse polling rates under Linux
|
| 2015-10-28: |
System V was kind of backwards for a long time
|
| 2015-10-27: |
Some theories about what spammers get out of using null sender addresses
|
| 2015-10-26: |
The null sender spammers now seem to be entrenched on outlook.com
|
| 2015-10-25: |
More on chroot()'s history, and my blind spot about System III
|
| 2015-10-24: |
How my PS/2 to USB conversion issues have shaken out
|
| 2015-10-23: |
Perhaps it's a good idea to reboot everything periodically
|
| 2015-10-22: |
CPython's trust of bytecode is not a security problem
|
| 2015-10-21: |
Python bytecode is quite heavily trusted by CPython
|
| 2015-10-20: |
Why I never tell people how I voted
|
| 2015-10-19: |
Installing and pinning specific versions of OmniOS packages
|
| 2015-10-18: |
In Go, unsafe.Pointer is a built in type in the compiler
|
| 2015-10-17: |
Do generic stock servers have a future in a cloud world?
|
| 2015-10-16: |
Inside a Go 'terrible hack' in the reflect package
|
| 2015-10-15: |
Some notes on finding package versions in OmniOS with pkg
|
| 2015-10-14: |
OS installers should be easy to open up and modify
|
| 2015-10-13: |
Why I've come to really like git
|
| 2015-10-12: |
Why we hold kernels and other packages on our Ubuntu machines
|
| 2015-10-11: |
Bad news about how we detect and recover from NFS server problems
|
| 2015-10-09: |
How much space ZFS reserves in your pools varies across versions
Our low-rent approach to verifying that NFS mounts are there
|
| 2015-10-08: |
Why you (probably) want to have blog categories (and topics and more)
|
| 2015-10-07: |
The irritation of all of the Ubuntu kernels you wind up with
|
| 2015-10-05: |
How many recent sender domains are in the Spamhaus DBL
I don't trust Linux distributions to leave directories alone
|
| 2015-10-04: |
There's no point in multiple system filesystems any more
|
| 2015-10-03: |
There are two approaches to disaster recovery plans
|
| 2015-10-02: |
What creates a good wikitext dialect depends on how it's going to be used
|
| 2015-09-30: |
There are good and bad wikitext dialects
Why I can't see IPv6 as a smooth or fast transition
|
| 2015-09-29: |
Maybe I should try to find another good mini keyboard
|
| 2015-09-28: |
On not having people split their time between different bosses
|
| 2015-09-27: |
Wikitext not having errors creates a backtracking problem
|
| 2015-09-26: |
I've decided I'll port DWiki to Python 3, but not any time soon
|
| 2015-09-25: |
Do we want to continue using a SAN in our future fileserver design?
|
| 2015-09-24: |
We're probably going to need new Linux iSCSI target software
|
| 2015-09-23: |
One thing I'm hoping for in our third generation fileservers
|
| 2015-09-22: |
The Go 'rolling errors' pattern, in function call form
|
| 2015-09-21: |
When chroot() started to confine processes inside the new root
|
| 2015-09-20: |
Spam from outlook.com has gotten worse (well, for me)
|
| 2015-09-19: |
Experimenting with Firefox's 'Reader' mode (or view)
|
| 2015-09-18: |
Modern Linux laptop suspending and screenlocking makes me twitch
|
| 2015-09-17: |
We know what you are
|
| 2015-09-16: |
There are two different scenarios for replacing disks in a RAID
|
| 2015-09-14: |
A caution about cgo's error returns for errno
Tweaking code when I'm faced with the urge to replace it entirely
|
| 2015-09-13: |
I should have started blocking web page elements well before now
|
| 2015-09-12: |
How NFS deals with the pending delete problem
|
| 2015-09-11: |
ZFS scrub rates, speeds, and how fast is fast
|
| 2015-09-10: |
Changing kernel tunables can drastically speed up ZFS scrubs
|
| 2015-09-09: |
Some notes on my experience using Go's cgo system
|
| 2015-09-08: |
How we disable accounts here (and why)
|
| 2015-09-07: |
Getting gocode based autocompletion working for Go in GNU Emacs
Why we wind up deleting user accounts
|
| 2015-09-06: |
Optimizing finding unowned files on our ZFS fileservers
|
| 2015-09-05: |
Why we aren't tempted to use ACLs on our Unix machines
|
| 2015-09-04: |
Consistency and durability in the context of filesystems
|
| 2015-09-03: |
How I've decided to coordinate multiple git repos for a single project
|
| 2015-09-02: |
Thinking about the different models of supplying computing
|
| 2015-08-31: |
CGo's Go string functions explained
Turning, well copying blobs of memory into Go structures
|
| 2015-08-30: |
Getting C-compatible structs in Go with and for cgo
|
| 2015-08-29: |
The mailing list thread to bug tracking system problem
|
| 2015-08-28: |
The somewhat surprising history of chroot()
|
| 2015-08-27: |
Some notes on using Solaris kstat(s) in a program
|
| 2015-08-26: |
Why I wind up writing my own (sysadmin) tools
|
| 2015-08-25: |
One view on practical blockers for IPv6 adoption
|
| 2015-08-24: |
PS/2 to USB converters are complex things with interesting faults
|
| 2015-08-23: |
I think you should get your TLS configuration advice from Mozilla
|
| 2015-08-21: |
What surprised me about the Python assignment puzzle
What's going on with a Python assignment puzzle
|
| 2015-08-20: |
Using abstract namespace Unix domain sockets and SO_PEERCRED in Python
|
| 2015-08-19: |
Linux's abstract namespace for Unix domain sockets
|
| 2015-08-17: |
Getting dd's skip and seek straight once and for all
Why languages like 'declare before use' for variables and functions
|
| 2015-08-16: |
My irritation with Intel's CPU segmentation (and why it probably exists)
|
| 2015-08-15: |
Spam scoring systems are often not deliberately designed
|
| 2015-08-14: |
My current views on using DomainKeys (DKIM) here
|
| 2015-08-13: |
Enabling services on package updates is a terrible mistake
|
| 2015-08-12: |
What common older versions of free are telling you
|
| 2015-08-11: |
What free is really telling you, and some bits from /proc/meminfo
|
| 2015-08-10: |
My irritation with 'systemctl status'
|
| 2015-08-09: |
One potential problem with cloud computing for us is the payment model
|
| 2015-08-08: |
The ARC now seems to work right in ZFS on Linux
|
| 2015-08-07: |
One thing I now really want in ZFS: faster scrubs (and resilvers)
|
| 2015-08-06: |
Two factor authentication and emergency access to systems
|
| 2015-08-05: |
What I want out of two factor authentication for my own use
|
| 2015-08-04: |
A lesson to myself: commit my local changes in little bits
|
| 2015-08-03: |
Running Fedora 22's dnf as a normal user versus as root
|
| 2015-08-02: |
My view on the potential death of the ad-supported web
|
| 2015-07-31: |
The future problem with Firefox's Electrolysis project
Ubuntu once again fails at a good kernel security update announcement
|
| 2015-07-29: |
My workflow for testing Github pull requests
A cynical view on needing SSDs in all your machines in the future
|
| 2015-07-28: |
Why I still report bugs
|
| 2015-07-27: |
Spammers mine everything, Github edition
|
| 2015-07-26: |
Why I increasingly think we're unlikely to ever use Docker
|
| 2015-07-25: |
Everything that does TLS should log the SSL parameters used
|
| 2015-07-24: |
Fedora 22's problem with my scroll wheel
|
| 2015-07-22: |
A modest little change I'd like to see in bug reporting systems
Some thoughts on log rolling with date extensions
|
| 2015-07-20: |
My brush with the increasing pervasiveness of smartphone GPS mapping
The OmniOS kernel can hold major amounts of unused memory for a long time
|
| 2015-07-19: |
'Retail' versus 'wholesale' spam
|
| 2015-07-18: |
Some data on how long it is between fetches of my Atom feed
|
| 2015-07-17: |
Your standard input is a tty in a number of surprising cases
|
| 2015-07-15: |
Eating memory in Python the easy way
Mdb is so close to being a great tool for introspecting the kernel
|
| 2015-07-14: |
Don't support shortened versions of your domain names in email addresses
|
| 2015-07-13: |
My personal view of OpenBSD
|
| 2015-07-12: |
A Linux software RAID message flood
|
| 2015-07-11: |
OpenBSD and the impact of culture
|
| 2015-07-10: |
What SSH keys in your .ssh/config will be offered to servers
|
| 2015-07-09: |
When SSH needs you to decrypt your keys
|
| 2015-07-08: |
Making GTK applications in alternate locations, settings edition
|
| 2015-07-07: |
The Git 'commit local changes and rebase' experience is a winning one
|
| 2015-07-06: |
My Django form field validation and cleanup pain
|
| 2015-07-05: |
Sysadmin use of email is often necessarily more or less interrupt driven
|
| 2015-07-04: |
Googlebot and Feedfetcher are still aggressively grabbing syndication feeds
|
| 2015-07-03: |
Wandering Thoughts is now ten years old
Some notes on my 'commit local changes and rebase' Git workflow
|
| 2015-07-02: |
Some thoughts on Go compiler directives being in source comments
|
| 2015-06-30: |
My early impressions of Fedora 22, especially of DNF
The probable and prosaic explanation for a socket() API choice
|
| 2015-06-29: |
BSD Unix developed over more time than I usually think
|
| 2015-06-28: |
Faster SSDs matter to companies because they sell things
|
| 2015-06-27: |
The next (or coming) way to connect SSDs to your system
|
| 2015-06-26: |
The status of our problems with overloaded OmniOS NFS servers
|
| 2015-06-25: |
Multiple set matches with Linux's iptables 'ipset' extension
|
| 2015-06-24: |
I've finally turned SELinux fully off even on my laptop
|
| 2015-06-23: |
A Bash test limitation and the brute force way around it
|
| 2015-06-22: |
Modern *BSDs have a much better init system than I was expecting
|
| 2015-06-21: |
Why System V init's split scripts approach is better than classical BSD
|
| 2015-06-20: |
Thinking about people's SSD inflection points in general
|
| 2015-06-19: |
Sometimes looking into spam for a blog entry has unexpected benefits
|
| 2015-06-18: |
The cost of OmniOS not having /etc/cron.d
|
| 2015-06-17: |
Exploring the irritating thing about Python's .join()
|
| 2015-06-16: |
NFS writes and whether or not they're synchronous
|
| 2015-06-15: |
My view of NFS protocol versions
|
| 2015-06-14: |
What I plug into my home Linux machine as far as peripherals go
|
| 2015-06-12: |
My pragmatic view of HTTPS versus caching
Red Hat are marketing email spammers now (in the traditional way)
|
| 2015-06-11: |
HTTP should be dropped even as a pure Internet transport mechanism
|
| 2015-06-10: |
My pragmatic view on switching to HTTPS and TLS everywhere
|
| 2015-06-09: |
How I use virtual screens in my desktop environment
|
| 2015-06-08: |
Exceptions as aggregators of error handling
|
| 2015-06-07: |
You won't get people off Python 2 by making their lives worse
|
| 2015-06-06: |
The security danger of exploitable bugs in file format libraries
|
| 2015-06-05: |
My current views on Rust (the programming language)
|
| 2015-06-04: |
Linux evolution through de facto quiet standards
|
| 2015-06-03: |
What makes for a simple web application environment
|
| 2015-06-01: |
The problem with 'what is your data worth?'
|
| 2015-05-31: |
Unix has been bad before
My view of setting up sane web server application delegations
|
| 2015-05-30: |
What I'm doing in reaction to Logjam (for HTTPS, SSH, and IKE)
|
| 2015-05-29: |
I don't commit changes in my working repos
|
| 2015-05-28: |
I don't find Github pull requests an easy way to submit patches
|
| 2015-05-27: |
The impact on you of making 'bad' bug reports
|
| 2015-05-25: |
One of the problems with 'you should submit a patch'
Email providers cannot stop spam by scanning outgoing email
|
| 2015-05-24: |
A mod_wsgi problem with serving both HTTP and HTTPS from the same WSGI app
|
| 2015-05-23: |
The right way for your WSGI app to know if it's using HTTPS
|
| 2015-05-22: |
Unsurprisingly, Amazon is now running a mail spamming service
|
| 2015-05-21: |
It's time for me to stop using lighttpd
|
| 2015-05-20: |
On the modern web, ISPs are one of your threats
|
| 2015-05-19: |
Converting filesystems from ext3 to ext4, and concerns attached to it (plus bad news for me)
|
| 2015-05-17: |
Why I'm interested in converting my ext3 filesystems to ext4
A bit more on the ZFS delete queue and snapshots
|
| 2015-05-15: |
Your Illumos-based NFS fileserver may be 'leaking' deleted files
The ZFS delete queue: ZFS's solution to the pending delete problem
The pending delete problem for Unix filesystems
|
| 2015-05-14: |
In Go, you need to always make sure that your goroutines will finish
|
| 2015-05-13: |
Go goroutines as a way to capture and hold state
|
| 2015-05-12: |
It's time to stop coddling software that can't handle HTTPS URLs
|
| 2015-05-11: |
The problem with proportional fonts for editing code and related things
|
| 2015-05-10: |
Our mail submission system winds up handling two sorts of senders
|
| 2015-05-09: |
What addresses we accept and reject during mail submission
|
| 2015-05-08: |
Sometimes it's useful to have brute force handy: an amusing IPMI bug
|
| 2015-05-06: |
Why keeping output to 80 columns (or less) is still sensible
Unix's pipeline problem (okay, its problem with file redirection too)
|
| 2015-05-04: |
Monitoring tools should report timestamps (and what they're monitoring)
What I want to have in shell (filename) completion
|
| 2015-05-03: |
Sometimes knowing causes does you no good (and sensible uses of time)
|
| 2015-05-02: |
OmniOS as a NFS server has problems with sustained write loads
|
| 2015-04-30: |
I'm considering ways to mass-add URLs to Firefox's history database
Why I have a perpetual browser history
|
| 2015-04-29: |
The 'EHLO ylmf-pc' plague of SMTP authentication guessers
|
| 2015-04-28: |
There's no portable way to turn a file descriptor read only or write only
|
| 2015-04-27: |
The fading out of tcpwrappers and its idea
|
| 2015-04-26: |
My complicated feelings on abandoning old but good code
|
| 2015-04-25: |
I'm still running a twelve year old Python program
|
| 2015-04-24: |
A DKMS problem I had with lingering old versions
|
| 2015-04-23: |
Upgrading machines versus reinstalling them
|
| 2015-04-22: |
Don't make /opt a filesystem on OmniOS (or probably Illumos generally)
|
| 2015-04-20: |
I don't think I'm interested in containers
An interesting trick for handling line numbers in little languages
|
| 2015-04-19: |
A potential path to IPv6 (again), but probably not a realistic one today
|
| 2015-04-18: |
A core problem of IPv6 adoption is the lack of user benefits
|
| 2015-04-17: |
In practice, programmers mostly understand complexity by superstition
|
| 2015-04-16: |
Are Python dictionaries necessarily constant-time data structures?
|
| 2015-04-15: |
Illusory security is terrible and is worse than no security
|
| 2015-04-14: |
Allowing people to be in more than 16 groups with an OmniOS NFS server
|
| 2015-04-12: |
One speed limit on your ability to upgrade your systems
Spam victims don't care what business unit is responsible for the spam
|
| 2015-04-10: |
I wish systemd would get over its thing about syslog
My Firefox 37 extensions and addons (sort of)
|
| 2015-04-09: |
Probably why Fedora puts their release version in package release numbers
|
| 2015-04-08: |
Your entire download infrastructure needs to use HTTPS
|
| 2015-04-07: |
How Ubuntu and Fedora each do kernel packages
|
| 2015-04-06: |
What adblockers block
|
| 2015-04-05: |
A note on the argument about the 'morality' of adblockers
|
| 2015-04-04: |
An important note if you want to totally stop an IKE IPSec connection
A weird new IKE IPSec problem that I just had on Fedora 21's latest kernel
|
| 2015-04-03: |
Understanding the (original) meaning of Unix load average
|
| 2015-04-02: |
When the Unix load average was added to Unix
|
| 2015-03-31: |
Btrfs's mistake in limiting itself to two-way mirroring
|
| 2015-03-30: |
My preliminary views on mosh
The 'cattle' model for servers is only a good fit in certain situations
|
| 2015-03-29: |
SSH connection sharing and erratic networks
|
| 2015-03-28: |
All browsers need a (good) way to flush memorized HTTP redirects
|
| 2015-03-27: |
Looking more deeply into some SMTP authentication probes
|
| 2015-03-26: |
Why systemd should have ignored SysV init script LSB dependencies
|
| 2015-03-25: |
A significant amount of programming is done by superstition
|
| 2015-03-24: |
What is and isn't a bug in software
|
| 2015-03-23: |
Systemd is not fully backwards compatible with System V init scripts
|
| 2015-03-22: |
I now feel that Red Hat Enterprise 6 is okay (although not great)
|
| 2015-03-21: |
Spammers show up fast when you open up port 25 (at least sometimes)
|
| 2015-03-20: |
Unix's mistake with rm and directories
|
| 2015-03-19: |
A brief history of fiddling with Unix directories
|
| 2015-03-18: |
The real speed advantage static rendering has over dynamic rendering
|
| 2015-03-16: |
Solving our authenticated SMTP problem by rethinking it
Our difficulties with OmniOS upgrades
|
| 2015-03-15: |
The importance of user interface, illustrated by the Go flag package
|
| 2015-03-14: |
Using an automounter doesn't always help with bad NFS servers
|
| 2015-03-13: |
The puzzle of packets to your host that your host doesn't respond to
|
| 2015-03-12: |
My feelings about GRUB 1 versus GRUB 2
|
| 2015-03-11: |
The irritation of being told 'everyone who cares uses ECC RAM'
|
| 2015-03-10: |
Why installing packages is almost always going to be slow (today)
|
| 2015-03-09: |
I should document my test plans and their results
|
| 2015-03-08: |
Why ZFS's 'directory must be empty' mount restriction is sensible
|
| 2015-03-06: |
Our brute force solution for port isolation without port isolated switches
The simple way CPython does constant folding
|
| 2015-03-05: |
An interesting excursion with Python strings and is
|
| 2015-03-04: |
What creates inheritance?
|
| 2015-03-03: |
The latest xterm versions mangle $SHELL in annoying ways
|
| 2015-03-02: |
My view of the difference between 'pets' and 'cattle'
|
| 2015-02-28: |
Sometimes why we have singleton machines is that failover is hard
|
| 2015-02-27: |
Email from generic word domains is usually advance fee fraud spam
What limits how fast we can install machines
|
| 2015-02-25: |
My current issues with systemd's networkd in Fedora 21
My Linux container temptation: running other Linuxes
|
| 2015-02-24: |
How we do and document machine builds
|
| 2015-02-23: |
In shell programming, I should be more willing to write custom tools
|
| 2015-02-22: |
Unsurprisingly, random SMTP servers do get open relay probes
|
| 2015-02-21: |
It turns out that I routinely use some really old Linux binaries
|
| 2015-02-20: |
All of our Solaris 10 machines are now out of production
|
| 2015-02-19: |
Exploiting Python metaclasses to forbid subclassing and where it fails
|
| 2015-02-18: |
I wish Python didn't allow any callable to be a 'metaclass'
|
| 2015-02-17: |
Your example code should work and be error-free
|
| 2015-02-16: |
Web ads considered as a security exposure
|
| 2015-02-15: |
My current views on Firefox adblocker addons
|
| 2015-02-14: |
Planning ahead in documentation: kind of a war story
|
| 2015-02-13: |
The technical side of Python metaclasses (a pointer)
|
| 2015-02-11: |
Good technical writing is not characterless and bland
ZFS can apparently start NFS fileservice before boot finishes
|
| 2015-02-10: |
Our ZFS fileservers have a serious problem when pools hit quota limits
|
| 2015-02-09: |
'Inbox zero' doesn't seem to work for me but it's still tempting
|
| 2015-02-08: |
The history of commercial Unix and my pragmatism
|
| 2015-02-07: |
Trying to move towards Ed25519 OpenSSH host keys: a stumbling block
|
| 2015-02-06: |
A thought on containerization, isolation, and deployment
|
| 2015-02-05: |
All of our important machines are pets and special snowflakes
|
| 2015-02-04: |
How our console server setup works
|
| 2015-02-03: |
Why we've wound up moving away from serial consoles on our machines
|
| 2015-02-02: |
Why people were enthused about gcc early on in its life
|
| 2015-01-31: |
The problem with punishing people over policy violations
Upgrades and support periods
|
| 2015-01-30: |
I've come to believe Django's way of defining database tables is wrong
|
| 2015-01-29: |
The practical result of OpenBSD's support policy
|
| 2015-01-28: |
A thought about social obligations to report bugs
|
| 2015-01-27: |
Our current email anti-virus system is probably ineffective now
|
| 2015-01-26: |
Some notes on keeping up with Go packages and commands
|
| 2015-01-25: |
The long term problem with ZFS on Linux is its license
|
| 2015-01-24: |
Web applications and generating alerts due to HTTP requests
|
| 2015-01-23: |
A problem with gnome-terminal in Fedora 21, and tracking it down
|
| 2015-01-22: |
How to set up static networking with systemd-networkd, or at least how I did
|
| 2015-01-21: |
Why I'm switching to systemd's networkd stuff for my networking
|
| 2015-01-19: |
A gotcha with Python tuples
Why user-hostile policies are a bad thing and a mistake
|
| 2015-01-18: |
Limited retention policies for email are user-hostile
|
| 2015-01-16: |
Node.js is not for me (and why)
Using systemd-run to limit something's RAM consumption on the fly
|
| 2015-01-15: |
Link: Against DNSSEC by Thomas Ptacek
General ZFS pool shrinking will likely be coming to Illumos
|
| 2015-01-14: |
What /etc/shells is and isn't
|
| 2015-01-13: |
Our tradeoffs on ZFS ZIL SLOG devices for pools
|
| 2015-01-12: |
I've now seen comment spam attempts from Tor exit nodes
|
| 2015-01-11: |
The effects of losing a ZFS ZIL SLOG device, as I understand them
|
| 2015-01-10: |
Autoplaying anything is a terrible decision, doubly so for video
|
| 2015-01-09: |
Why filesystems need to be where data is checksummed
|
| 2015-01-08: |
ZFS should be your choice today if you need an advanced filesystem on Unix
|
| 2015-01-07: |
Forwarding access to only a subset of ssh-agent's identities
|
| 2015-01-06: |
Choices filesystems make about checksums
|
| 2015-01-05: |
Today on Linux, ZFS is your only real choice for an advanced filesystem
|
| 2015-01-04: |
What makes a 'next generation' or 'advanced' modern filesystem, for me
|
| 2015-01-03: |
The effects of our fileserver multi-tenancy
|
| 2015-01-02: |
Where we have multi-tenancy in our fileserver environment
|
| 2014-12-31: |
I love Apache (well, like it at least)
A retrospective on my one Django web application
|
| 2014-12-30: |
Somewhat to my surprise, classical viruses by email are still a thing
|
| 2014-12-29: |
How I have partitioning et al set up for ZFS On Linux
|
| 2014-12-28: |
How I think DNSSec will have to be used in the real world
|
| 2014-12-27: |
My ZFS On Linux memory problem: competition from the page cache
|
| 2014-12-26: |
My experience with ZFS on Linux: it's worked pretty well for me
|
| 2014-12-25: |
DNSSec in the real world: my experience with DNSSec
|
| 2014-12-24: |
The security effects of tearing down my GRE tunnel on IPSec failure
|
| 2014-12-22: |
The future of OmniOS here if we can't get 10G-T working on it
Why Go's big virtual size for 64-bit programs makes sense
|
| 2014-12-21: |
A steady change in the source of blog comment spam attempts
|
| 2014-12-20: |
Unsurprisingly, laptops make bad to terrible desktops
|
| 2014-12-19: |
Our likely long road to working 10G-T on OmniOS
|
| 2014-12-17: |
The potential end of public clients at the university?
|
| 2014-12-16: |
Does having a separate daemon manager help system resilience?
|
| 2014-12-15: |
How a Firefox update just damaged practical security
Why your 64-bit Go programs may have a huge virtual size
|
| 2014-12-14: |
How init wound up as Unix's daemon manager
|
| 2014-12-13: |
There are two parts to making your code work with Python 3
|
| 2014-12-12: |
The bad side of systemd: two recent systemd failures
|
| 2014-12-10: |
What good kernel messages should be about and be like
How to delay your fileserver replacement project by six months or so
|
| 2014-12-09: |
Why I do unit tests from inside my modules, not outside them
|
| 2014-12-08: |
Why I don't believe in generic TLS terminator programs
|
| 2014-12-07: |
How we install Ubuntu machines here
|
| 2014-12-06: |
Browser addons can effectively create a new browser
|
| 2014-12-05: |
How security sensitive is information about your network architecture?
|
| 2014-12-04: |
Log retention versus log analysis, or really logs versus log analysis
|
| 2014-12-03: |
Security capabilities and reading process memory
|
| 2014-12-02: |
The unreasonable effectiveness of web crawlers
|
| 2014-11-30: |
You should keep your system logs for longer than you probably are
TLS versions in connections to my spam-catching sinkhole SMTP server
|
| 2014-11-29: |
Sometimes you need to turn things into small, readily solvable problems
|
| 2014-11-28: |
How I made IPSec IKE work for a point to point GRE tunnel on Fedora 20
|
| 2014-11-26: |
Using iptables to block traffic that's not protected by IPSec
Using go get alone is a bad way to keep track of interesting packages
|
| 2014-11-25: |
My Linux IPSec/VPN setup and requirements
|
| 2014-11-24: |
Delays on bad passwords considered harmful, accidental reboot edition
Using the SSH protocol as a secure transport protocol
|
| 2014-11-23: |
I'm happier ignoring the world of spam and anti-spam
|
| 2014-11-22: |
The effects of a moderate Hacker News link to here
|
| 2014-11-21: |
Lisp and data structures: one reason it hasn't attracted me
|
| 2014-11-20: |
Sometimes the way to solve a problem is to rethink the problem
|
| 2014-11-18: |
Finding free numbers in a range, crudely, with Unix tools
|
| 2014-11-17: |
Why I need a browser that's willing to accept bad TLS certificates
|
| 2014-11-16: |
We've started to decommission our Solaris 10 fileservers
States in a state machine aren't your only representation of state
|
| 2014-11-15: |
Our current problems with 10G Intel networking on OmniOS
|
| 2014-11-14: |
Sometimes there are drawbacks to replicating configuration files
|
| 2014-11-13: |
I want opportunistic, identity-less encryption on the Internet
|
| 2014-11-12: |
A wish: setting Python 3 to do no implicit Unicode conversions
|
| 2014-11-10: |
Why I don't have a real profile picture anywhere
What it took to get DWiki running under Python 3
|
| 2014-11-09: |
NFS hard mounts versus soft mounts
|
| 2014-11-07: |
What you're saying when you tell people to send in patches
Porting to Python 3 by updating to modern Python 2
|
| 2014-11-05: |
(Probably) Why Bash imports functions from the environment
The weakness of doing authentication over a side channel
|
| 2014-11-03: |
Hassles with getting our NFS mount authentication working on Linux
What I'm worried about with retina displays on Linux
|
| 2014-11-02: |
A drawback in how DWiki parses its wikitext
|
| 2014-10-31: |
With ZFS, rewriting a file in place might make you run out of space
A drawback to handling errors via exceptions
|
| 2014-10-29: |
Quick notes on the Linux iptables 'ipset' extension
Unnoticed nonportability in Bourne shell code (and elsewhere)
|
| 2014-10-28: |
My current somewhat tangled feelings on operator.attrgetter
|
| 2014-10-27: |
Practical security and automatic updates
|
| 2014-10-26: |
Things that can happen when (and as) your ZFS pool fills up
|
| 2014-10-25: |
The difference in available pool space between zfs list and zpool list
|
| 2014-10-24: |
In Go I've given up and I'm now using standard packages
|
| 2014-10-23: |
The clarity drawback of allowing comparison functions for sorting
|
| 2014-10-22: |
Exim's (log) identifiers are basically unique on a given machine
|
| 2014-10-20: |
Some numbers on our inbound and outbound TLS usage in SMTP
Revisiting Python's string concatenation optimization
|
| 2014-10-19: |
Vegeta, a tool for web server stress testing
|
| 2014-10-18: |
During your crisis, remember to look for anomalies
|
| 2014-10-17: |
My experience doing relatively low level X stuff in Go
|
| 2014-10-16: |
Don't use dd as a quick version of disk mirroring
|
| 2014-10-15: |
Why system administrators hate security researchers every so often
|
| 2014-10-14: |
Bashisms in #!/bin/sh scripts are not necessarily bugs
|
| 2014-10-13: |
System metrics need to be documented, not just to exist
|
| 2014-10-12: |
Phish spammers are apparently exploiting mailing list software
|
| 2014-10-11: |
Thinking about how to create flexible aggregations from causes
|
| 2014-10-10: |
Where your memory can be going with ZFS on Linux
|
| 2014-10-09: |
How /proc/slabinfo is not quite telling you what it looks like
|
| 2014-10-08: |
Simple web application environments and per-request state
|
| 2014-10-07: |
Why blocking writes are a good Unix API (on pipes and elsewhere)
|
| 2014-10-06: |
Why it's sensible for large writes to pipes to block
|
| 2014-10-05: |
Making bug reports is exhausting, frustrating, and stressful
|
| 2014-10-03: |
Why people are almost never going to be reporting bugs upstream
When using Illumos's lockstat, check the cumulative numbers too
|
| 2014-10-02: |
The problem with making bug reports about CentOS bugs
|
| 2014-09-30: |
NetworkManager and network device races
Don't split up error messages in your source code
|
| 2014-09-28: |
Learning a lesson about spam-related logging (again)
|
| 2014-09-27: |
Changing major version numbers does not fix compatibility issues
DWiki, Python 3, Python, and me
|
| 2014-09-26: |
The practical problems with simple web apps that work as HTTP servers
|
| 2014-09-25: |
Why CGI-BIN scripts are an attractive thing for many people
|
| 2014-09-24: |
One thing I've come to dislike about systemd
|
| 2014-09-22: |
Go is mostly easy to cross-compile (with notes)
Another side of my view of Python 3
|
| 2014-09-21: |
One reason why Go can have methods on nil pointers
|
| 2014-09-19: |
My view on using VLANs for security
What I mean by passive versus active init systems
|
| 2014-09-18: |
Ubuntu's packaging failure with mcelog in 14.04
|
| 2014-09-17: |
In praise of Solaris's pfiles command
|
| 2014-09-15: |
My collection of spam and the spread of SMTP TLS
I want my signed email to work a lot like SSH does
|
| 2014-09-14: |
My current hassles with Firefox, Flash, and (HTML5) video
|
| 2014-09-13: |
What can go wrong with polling for writability on blocking sockets
|
| 2014-09-12: |
How not to do IO multiplexing, as illustrated by Amanda
|
| 2014-09-10: |
The cause of our slow Amanda backups and our workaround
Does init actually need to do daemon supervision?
|
| 2014-09-08: |
What an init system needs to do in the abstract
|
| 2014-09-07: |
Systemd's fate will be decided by whether or not it works
The kernel should not generate messages at the behest of the Internet
|
| 2014-09-05: |
A DTrace script to help figure out what process IO is slow
Some uses for SIGSTOP and some cautions
|
| 2014-09-04: |
Some other benefits of using non-HTTP frontend to backend transports
|
| 2014-09-03: |
Why we don't want to do any NAT with IPv6
|
| 2014-09-01: |
An IPv6 dilemma for us: 'sandbox' machine DNS
|
| 2014-08-31: |
We don't believe in DHCP for (our) servers
The downside of expanding your storage through bigger disks
|
| 2014-08-30: |
How to change your dm-cache write mode on the fly in Linux
|
| 2014-08-29: |
A hazard of using synthetic data in tests, illustrated by me
|
| 2014-08-27: |
One reason why we have to do a major storage migration
The difference between Linux and FreeBSD boosters for me
|
| 2014-08-26: |
Why I don't like HTTP as a frontend to backend transport mechanism
|
| 2014-08-24: |
10G Ethernet is a sea change for my assumptions
My spam is (mostly) boring
|
| 2014-08-23: |
Some notes on Python packaging stuff that wasn't obvious to me
|
| 2014-08-22: |
Where DTrace aggregates are handled for printing et al
|
| 2014-08-21: |
How data flows around on the client during an Amanda backup
|
| 2014-08-20: |
Explicit error checking and the broad exception catching problem
|
| 2014-08-18: |
An example of a subtle over-broad try in Python
The potential issue with Go's strings
|
| 2014-08-17: |
The challenges of diagnosing slow backups
|
| 2014-08-15: |
Caches should be safe by default
A consequence of NFS locking and unlocking not necessarily being fast
|
| 2014-08-13: |
Bind mounts with systemd and non-fstab filesystems
How you create a systemd .mount file for bind mounts
|
| 2014-08-11: |
Copying GPT partition tables from disk to disk
|
| 2014-08-10: |
The problem with self-contained 'application bundle' style packaging
What I want out of a Linux SSD disk cache layer
|
| 2014-08-09: |
Intel has screwed up their DC S3500 SSDs
|
| 2014-08-08: |
Hardware can be weird, Intel 10G-T X540-AT2 edition
|
| 2014-08-06: |
A peculiarity: I'm almost never logged in to websites
|
| 2014-08-05: |
Why LinkedIn's 'you must join to unsubscribe' is evil
Another piece of my environment: running commands on multiple machines
|
| 2014-08-04: |
Why our new SAN environment is separate from our old SAN environment
|
| 2014-08-03: |
Our second generation ZFS fileservers and their setup
|
| 2014-08-02: |
The benchmarking problems with potentially too-smart SSDs
|
| 2014-07-31: |
The temptation to rebuild my office machine with its data in ZFS on Linux
|
| 2014-07-30: |
Why I like ZFS in general
My view on FreeBSD versus Linux, primarily on the desktop
|
| 2014-07-28: |
FreeBSD, cultural bad blood, and me
|
| 2014-07-27: |
Go is still a young language
Save your test scripts and other test materials
|
| 2014-07-25: |
An interesting picky difference between Bourne shells
The OmniOS version of SSH is kind of slow for bulk transfers
|
| 2014-07-23: |
What influences SSH's bulk transfer speeds
One of SELinux's important limits
|
| 2014-07-21: |
What I know about the different types of SSH keys (and some opinions)
|
| 2014-07-20: |
The CBL has a real false positive problem
HTTPS should remain genuinely optional on the web
|
| 2014-07-19: |
Some consequences of widespread use of OCSP for HTTPS
|
| 2014-07-18: |
In practice, 10G-T today can be finicky
|
| 2014-07-16: |
My (somewhat silly) SSD dilemma
|
| 2014-07-15: |
A data point on how rapidly spammers pick up addresses from the web
|
| 2014-07-14: |
Unmounting recoverable stale NFS mounts on Linux
|
| 2014-07-13: |
An obvious reminder: disks can and do die abruptly
Early impressions of CentOS 7
|
| 2014-07-11: |
You want to turn console blanking off on your Linux servers
Some notes on bisecting a modified Firefox source base with Mercurial
|
| 2014-07-10: |
The core security problem of SSL on the web is too much trust
|
| 2014-07-09: |
What the differences are between Python bools and ints
|
| 2014-07-08: |
Exploring a surprise with equality in Python
Some thoughts on SAN long-term storage migration
|
| 2014-07-06: |
Goroutines versus other concurrency handling options in Go
The problem with filenames in IO exceptions and errors
|
| 2014-07-05: |
Another reason to use frameworks like Django
|
| 2014-07-04: |
An interesting Go concurrency bug that I inflicted on myself
|
| 2014-07-02: |
Bash is letting locales destroy shell scripting (at least on Linux)
Why Solaris's SMF is not a good init system
|
| 2014-07-01: |
An index of non-letter control characters
|
| 2014-06-30: |
Comparing RPM versions in the shell
My .screenrc
|
| 2014-06-29: |
The tradeoffs for us in a SAN versus disk servers
|
| 2014-06-27: |
A retrospective on our overall fileserver architecture et al
A retrospective on our Solaris ZFS-based NFS fileservers (part 2)
|
| 2014-06-25: |
A retrospective on our Solaris ZFS-based NFS fileservers (part 1)
How my new responsive design here works
|
| 2014-06-23: |
Python 3 has already succeeded in the long run
|
| 2014-06-22: |
Things I like about Go
I need some responsive website design around here
|
| 2014-06-21: |
Sometimes 'unsubscribing' does seem to reduce spam activity
|
| 2014-06-20: |
What Python versions I can use (June 2014 edition)
|
| 2014-06-19: |
Some notes on Go's godoc and what it formats how
|
| 2014-06-18: |
Would I be comfortable documenting our systems in some sort of public?
|
| 2014-06-16: |
My view: a wiki by itself will not solve your problems
|
| 2014-06-15: |
The web is social, and thus minor features can matter a lot
Weird spammer behavior: a non-relaying relay attempt
|
| 2014-06-14: |
I'm not very impressed with Ubuntu 14.04 LTS so far
|
| 2014-06-13: |
Undoing an errant 'git commit --amend'
|
| 2014-06-12: |
An init system has two jobs
|
| 2014-06-11: |
Some thoughts on testing parsers
|
| 2014-06-10: |
An irritating and interesting su change from Ubuntu 12.04 to 14.04
|
| 2014-06-09: |
A challenge in new languages: learning to design good APIs
|
| 2014-06-08: |
The fundamental problem that created su
|
| 2014-06-07: |
Some ways to do sleazy duck typing in Go (from a Python perspective)
|
| 2014-06-06: |
On the Internet, weirdness is generally uncommon
|
| 2014-06-05: |
SMTP's crazy address formats didn't come from nowhere
|
| 2014-06-04: |
Why I don't like SMTP command parameters
|
| 2014-06-03: |
My just-used Go logging idiom and why it is in fact wrong
|
| 2014-06-02: |
Vi's composability antecedent (or one of them)
|
| 2014-05-31: |
Wnen trying to unsubscribe from spam can be not completely crazy
One of my test based development imperfections: use driven testing
|
| 2014-05-30: |
In Go, sometimes a nil is not a nil
|
| 2014-05-29: |
The state of limits on how many groups you can be in (especially for NFS)
|
| 2014-05-28: |
Yahoo Groups has a bad spam problem and they don't care
|
| 2014-05-27: |
Some things for enumerated constants in Go
|
| 2014-05-25: |
Firefox, DRM, and reality
Computing has two versions of 'necessary'
|
| 2014-05-23: |
What ssh-agent does with multiple keys loaded
Why Java is a compiled language and Python is not
|
| 2014-05-22: |
Why Python uses bytecode (well, probably): it's simpler
|
| 2014-05-21: |
How I wish ZFS pool importing could work
|
| 2014-05-19: |
A building block of my environment: sps, a better tree-based process list
Why desktop Linuxes want you to reboot after updates
|
| 2014-05-18: |
What it would take to replace Firefox as my web browser
|
| 2014-05-17: |
The problem of encrypted SSH keys and screen
|
| 2014-05-16: |
Some notes from migrating towards encrypted SSH keys
|
| 2014-05-15: |
My personal and biased view of sudo versus su
|
| 2014-05-14: |
Modern mail forwarding is leaky
|
| 2014-05-13: |
The security model of sudo versus su
|
| 2014-05-12: |
The advantages of editors over database programs for modifying your data
|
| 2014-05-11: |
Why I don't use relational databases in practice
|
| 2014-05-09: |
Some uses for Python's 'named' form of string formatting
Operating systems cannot be hermetically sealed environments
|
| 2014-05-08: |
The modern world of spliced together multi-layer DNS resolution
|
| 2014-05-07: |
How I use Unbound on Fedora 20 to deal with the VPN DNS issue
|
| 2014-05-06: |
Another problem with building your own packages: dependency issues
|
| 2014-05-05: |
The power of meaningless identifiers
|
| 2014-05-04: |
How I set up my Firefox 29's UI
|
| 2014-05-03: |
My Firefox 29 extensions and addons
|
| 2014-05-02: |
An important addition to how ZFS deduplication works on the disk
|
| 2014-04-30: |
Failover versus sparing in theory and in practice
Backup systems, actual hosts, and logical hosts
|
| 2014-04-29: |
Static sites are stable sites
|
| 2014-04-28: |
How dynamic language code gets optimized
|
| 2014-04-27: |
Thoughts about Python classes as structures and optimization
|
| 2014-04-26: |
What I can see about how ZFS deduplication seems to work on disk
|
| 2014-04-25: |
A Unix semantics issue if your filesystem can snapshot arbitrary directories
|
| 2014-04-23: |
How Yahoo's and AOL's DMARC 'reject' policies affect us
At least partially understanding DMARC
|
| 2014-04-21: |
The question of language longevity for new languages
Thinking about how to split logging up in multiple categories et al
|
| 2014-04-20: |
A heresy about memorable passwords
|
| 2014-04-19: |
Cross-system NFS locking and unlocking is not necessarily fast
|
| 2014-04-18: |
What modern filesystems need from volume management
|
| 2014-04-17: |
Partly getting around NFS's concurrent write problem
|
| 2014-04-16: |
Where I feel that btrfs went wrong
|
| 2014-04-14: |
Chasing SSL certificate chains to build a chain file
My reactions to Python's warnings module
|
| 2014-04-13: |
A problem: handling warnings generated at low levels in your code
|
| 2014-04-11: |
The relationship between SSH, SSL, and the Heartbleed bug
What sort of kernel command line arguments Fedora 20's dracut seems to want
|
| 2014-04-10: |
My current choice of a performance metrics system and why I picked it
|
| 2014-04-09: |
Pragmatic reactions to a possible SSL private key compromise
|
| 2014-04-08: |
My goals for gathering performance metrics and statistics
|
| 2014-04-07: |
Giving in: pragmatic If-Modified-Since handling for Tiny Tiny RSS
|
| 2014-04-06: |
How not to generate If-Modified-Since headers for conditional GETs
|
| 2014-04-05: |
An important additional step when shifting software RAID mirrors around
|
| 2014-04-03: |
Shifting a software RAID mirror from disk to disk in modern Linux
The scariness of uncertainty
|
| 2014-04-02: |
I'm angry that ZFS still doesn't have an API
|
| 2014-03-31: |
I'm done with building tools around 'zpool status' output
Why I sometimes reject patches for my own software
|
| 2014-03-30: |
One of my worries: our spam filtering in the future
|
| 2014-03-28: |
Recovering from a drive failure on Fedora 20 with LVM on software RAID
How we wound up with a RFC 1918 IP address visible in our public DNS
|
| 2014-03-26: |
Why people keep creating new package managers
The DNS TTL problem
|
| 2014-03-24: |
The importance of having full remote consoles on crucial servers
Why I don't trust transitions to single-user mode
|
| 2014-03-23: |
Differences in URL and site layout between static and dynamic websites
|
| 2014-03-22: |
Avoiding reboots should not become a fetish
|
| 2014-03-21: |
Thinking about when rsync's incremental mode doesn't help
|
| 2014-03-20: |
Killing (almost) all processes on Linux is not recoverable
|
| 2014-03-19: |
Why I like ZFS's zfs send and zfs receive
|
| 2014-03-17: |
Simple versus complex marshalling in Python (and benchmarks)
Rebooting the system if init dies is a hack
|
| 2014-03-16: |
You don't have to reboot the system if init dies
|
| 2014-03-14: |
Guessing whether people will unsubscribe from your mailing lists
Logins and related things really do change, and for good reasons
|
| 2014-03-13: |
The argument about unbound methods versus functions
|
| 2014-03-11: |
How functions become bound or unbound methods
|
| 2014-03-10: |
The problem of conditional GET and caches for dynamic websites
|
| 2014-03-09: |
Solaris gives us a lesson in how not to write documentation
Why we don't change Unix login names for people
|
| 2014-03-08: |
Why I think 10G-T will be the dominant form of 10G Ethernet
|
| 2014-03-07: |
Coming to terms with D-Bus
|
| 2014-03-05: |
A bit more about the various levels of IPC: whether or not they're necessary
ZFS's problem with boot time magic
|
| 2014-03-03: |
The multiple levels of interprocess communication
|
| 2014-03-02: |
Googlebot is now aggressively crawling syndication feeds
Cool URL fragments don't change either
|
| 2014-02-28: |
Yet another problem with configuration by running commands
Arguments for explicit block delimiters in programming languages
|
| 2014-02-26: |
PCI slot based device names are not necessarily stable
Saying goodbye to the PHP pokers the easy way
|
| 2014-02-24: |
Nerving myself up to running experimental setups in production
The origins of DWiki and its drifting purpose
|
| 2014-02-23: |
The problem with indentation in programming languages
|
| 2014-02-22: |
A subtle advantage of generating absolute path URLs during HTML rendering
|
| 2014-02-21: |
You should segregate different traffic to different mailing lists
|
| 2014-02-19: |
Some rough things about the naming of SAS drives on Linux
The reasoning problem with describing things with a programming language
|
| 2014-02-18: |
People can always unsubscribe from your mailing lists
|
| 2014-02-17: |
File based engines and the awkward problem of special URLs
|
| 2014-02-16: |
Why comments aren't immediately visible on entries here
|
| 2014-02-14: |
'Broken by design: systemd' is itself kind of broken
The good and bad of the System V init system
|
| 2014-02-13: |
Init's (historical) roles
|
| 2014-02-11: |
Why systemd is winning the init wars and other things aren't
|
| 2014-02-10: |
My dividing line between working remotely and working out of the office
|
| 2014-02-09: |
Why I want a solid ZFS implementation on Linux
Why I'm not looking at installing OmniOS via Kayak
|
| 2014-02-08: |
You cannot have just one network install server
|
| 2014-02-07: |
A followup to what sudo emails to ignore and not ignore
A surprise with OmniOS disk sizing: the rpool/dump ZVOL
|
| 2014-02-06: |
Some thoughts on what sudo emails to ignore and to not ignore
|
| 2014-02-05: |
An interesting internal Django error we just got
|
| 2014-02-03: |
The big attraction of SQLite
Technological progress and efficiency
|
| 2014-02-02: |
An illustration of the problem of noise
|
| 2014-01-31: |
Why I now believe that duck typed metaclasses are impossible in CPython
Linux has at least two ways that disks can die
|
| 2014-01-30: |
OmniOS (and by extension Illumos) is pretty much Solaris
|
| 2014-01-29: |
One cause of Linux's popularity among Unixes
|
| 2014-01-28: |
Building software packages yourself is generally a waste (why package selection matters)
|
| 2014-01-27: |
Things that affect how much support you get from a Linux distribution
|
| 2014-01-26: |
Why writing sysadmin tools in Go is getting attractive
|
| 2014-01-25: |
The origin of RCS (the version control system)
|
| 2014-01-24: |
Things I want to remember during a security incident
|
| 2014-01-22: |
Microsoft has become a spam emitter
Security is everyone's job (why Ruby is wrong about OpenSSL)
|
| 2014-01-21: |
Fake versus real metaclasses and what a fully functional metaclass is
|
| 2014-01-20: |
A thought about the popularity of server-side JavaScript
|
| 2014-01-19: |
Some thoughts on structured logging, especially in and for databases
|
| 2014-01-18: |
Your web application should have an audit log
|
| 2014-01-16: |
Link: Armin Ronacher's 'More About Unicode in Python 2 and 3'
Debian does not have long term support
|
| 2014-01-15: |
SELinux fails again (Fedora 20 edition)
Real support periods versus nominal official ones
|
| 2014-01-14: |
The problem with OmniOS's 'build your own' view for Perl and Python
|
| 2014-01-13: |
Sadly, we're moving away from Red Hat Enterprise Linux
|
| 2014-01-12: |
Why I don't want fully automated installs
|
| 2014-01-11: |
Why I am not enthused about Red Hat Enterprise 6
|
| 2014-01-10: |
An interesting recent spam run against one of my machines
|
| 2014-01-09: |
Using different sshd options for different origin hosts
|
| 2014-01-08: |
The good and bad of Linux's NetworkManager
|
| 2014-01-06: |
The problem with compiling your own version of Python 3
Some thoughts on blog front pages in the modern era
|
| 2014-01-05: |
Hard drives really do wear out, so you need a a hardware budget
|
| 2014-01-04: |
One aspect of partial versus full entries on blog front pages
|
| 2014-01-03: |
What determines Python 2's remaining lifetime?
|
| 2014-01-02: |
Python 3's core compatibility problem and decision
|
| 2013-12-31: |
Two uses of fmt
Reversing my view on Python 3 for new general code: avoid it
Link: Alex Gaynor's 'About Python 3'
|
| 2013-12-30: |
My growing entanglement into vi
|
| 2013-12-29: |
Broad thoughts on tags for blog entries
|
| 2013-12-28: |
The era of known top-level domains or valid TLD patterns is mostly over
|
| 2013-12-27: |
A reason to keep tags external in 'entry as file' blog engines
|
| 2013-12-26: |
How ZFS scrubs routinely save us
|
| 2013-12-25: |
Procedures are not documentation
|
| 2013-12-24: |
The 'entry as file' blog engine problem with tags
|
| 2013-12-23: |
A good reason to use write-intent bitmaps
|
| 2013-12-22: |
The benefits of using expendable email addresses for most things
|
| 2013-12-21: |
If you're using Linux's magic SysRq, increase the log level right away
|
| 2013-12-20: |
A realization: on the modern web, everything gets visited
|
| 2013-12-19: |
Your (HTML) template language should have conditionals
|
| 2013-12-18: |
Thinking about what we'll need for reproducible OmniOS installs
|
| 2013-12-17: |
You probably don't want to use Make to build your generated files
|
| 2013-12-16: |
My computers are increasingly sort of Internet terminals
|
| 2013-12-15: |
Making large selections in xterm (and urxvt and Gnome Terminal)
|
| 2013-12-14: |
Why I'm not likely to use Chrome much in the future
|
| 2013-12-13: |
Using cgroups to limit something's RAM consumption (a practical guide)
|
| 2013-12-12: |
Some observations from playing with PyPy on DWiki
|
| 2013-12-11: |
The problem with nondeterministic garbage collection
|
| 2013-12-10: |
My current view of PyPy
|
| 2013-12-09: |
Hardware is weird (disk enclosure edition)
|
| 2013-12-08: |
Sometimes the right thing to do is to stop (and even to give up)
|
| 2013-12-07: |
Things get weird with read-only NFS mounts and atime on Linux
|
| 2013-12-06: |
The three levels of read-only NFS mounts
|
| 2013-12-05: |
Some thoughts on a body of knowledge for system administration
|
| 2013-12-04: |
sudo is not an auditing mechanism
|
| 2013-12-03: |
The three faces of sudo
|
| 2013-12-02: |
What Go has become for me: Python with performance
|
| 2013-11-30: |
Why 'hotplug' approaches to device handling are the right way
The case of the disappearing ESATA disk
|
| 2013-11-29: |
How modern Linux software RAID arrays are assembled on boot (and otherwise)
|
| 2013-11-28: |
A quick analysis of bounces here
|
| 2013-11-27: |
The difference between CPython and Python
|
| 2013-11-25: |
From CPython bytecode up to function objects (in brief)
Track your disk failures
|
| 2013-11-24: |
Baidu's web spider ignores robots.txt (at least sometimes)
|
| 2013-11-23: |
You are not fooling us with broken bounce addresses
|
| 2013-11-22: |
My hack use for Chrome's Incognito mode
|
| 2013-11-20: |
test is surprisingly smart
The difference between no argument and an empty argument
|
| 2013-11-18: |
Why booting Linux from a ZFS root filesystem with GRUB can be hard
|
| 2013-11-17: |
The 10G Ethernet performance problem on Linux
Sending and receiving file descriptors in Python
|
| 2013-11-16: |
Unix getopt versus Google's getopt variant and why Unix getopt wins
|
| 2013-11-15: |
Professional knowledge, certification, and regulation
|
| 2013-11-14: |
One reason I like Go: it seems natural to avoid object churn
|
| 2013-11-13: |
The cost of expensive hardware and the benefit of hindsight
|
| 2013-11-11: |
Go's getopt problem
|
| 2013-11-10: |
Are those chassis fans actually still spinning?
My views on network booting as an alternative to system disks
|
| 2013-11-09: |
Google Feedfetcher is still fetching feeds and a User-Agent caution
|
| 2013-11-08: |
The spectrum of options when netbooting systems
|
| 2013-11-06: |
Why you might not want to use SSDs as system disks just yet
Modern versions of Unix are more adjustable than they used to be
|
| 2013-11-04: |
How writes work on ZFS raidzN pools, with implications for 4k disks
|
| 2013-11-03: |
Wikitext needs a better way of writing tables
Why we're switching to SSDs for system disks
|
| 2013-11-02: |
Revising our peculiar ZFS L2ARC trick
|
| 2013-10-31: |
Our likely future backend and fileserver hardware
Naming disk devices: drive IDs versus drive locations
|
| 2013-10-30: |
An open question: part uniformity versus unit cost
|
| 2013-10-28: |
If you're on the IPv4 Internet, you really are in public now
|
| 2013-10-27: |
Old and new addresses and spam
Some things I've learned from transitioning a website to HTTPS
|
| 2013-10-26: |
10G Ethernet and network buffer sizes (at least on Linux)
|
| 2013-10-25: |
Modern disk write caches and how they get dealt with (a quick overview)
|
| 2013-10-24: |
How to force a disk write cache flush operation on Linux
|
| 2013-10-23: |
Paying for services is not necessarily enough
|
| 2013-10-21: |
NFS's problem with (concurrent) writes
Thinking about how I want to test disk IO on an iSCSI backend
|
| 2013-10-20: |
Thoughts inspired by the abstract idea of Docker-like things
|
| 2013-10-19: |
I should never have allowed 'outside' content to break my layout
|
| 2013-10-18: |
ZFS uberblock rollback and the top level metadata change rate
|
| 2013-10-17: |
There are two cases for changing SSL/TLS cipher settings
|
| 2013-10-16: |
Disused addresses and the impact of spam
|
| 2013-10-15: |
Why I'm not looking for any alternatives to iSCSI for us
|
| 2013-10-14: |
The importance of small UI tweaks (for me), dmenu edition
|
| 2013-10-13: |
Revisiting some bits of ZFS's ZIL with separate log devices
|
| 2013-10-11: |
Some pain points of parsing wikitext (and simplifications that avoid them)
How DWiki parses its wikitext (part 1)
|
| 2013-10-10: |
Sun's NeWS was a mistake, as are all toolkit-in-server windowing systems
|
| 2013-10-09: |
An interesting bug with module garbage collection in Python
|
| 2013-10-07: |
What happens when CPython deletes a module
|
| 2013-10-06: |
What reloading a Python module really does
The per-NFS-operation data for NFS mounts in /proc/self/mountstats
|
| 2013-10-05: |
The xprt: data for NFS mounts in /proc/self/mountstats
|
| 2013-10-04: |
The bytes and events data for NFS mounts in /proc/self/mountstats
|
| 2013-10-03: |
What is in /proc/self/mountstats for NFS mounts: an introduction
|
| 2013-10-02: |
What your User-Agent header should include and why
|
| 2013-09-30: |
Centralizing syslogs as an easy way to improve your environment
|
| 2013-09-29: |
Spammers illustrating, well, something
Universities and long term perspectives
|
| 2013-09-28: |
Why I put configuration management systems over packaging systems
|
| 2013-09-27: |
The long term future of any particular configuration management system
|
| 2013-09-26: |
Trying to explain my harshness on configuration management tools
|
| 2013-09-24: |
A semi-wish for an official 'null MX' standard
|
| 2013-09-23: |
The FTE pricing gamble (for vendors)
ZFS filesystem compression and quotas
|
| 2013-09-22: |
An example of optimizing C in the face of undefined behavior
|
| 2013-09-20: |
Nested conditional expressions in Python (and code golf)
|
| 2013-09-19: |
Processes waiting for NFS IO do show in Linux %iowait statistics
Load is a whole system phenomenon
|
| 2013-09-18: |
Reconsidering external disk enclosures versus disk servers
|
| 2013-09-17: |
The pain (or annoyance) of deploying a simple WSGI thing
|
| 2013-09-15: |
Regular expression performance and performance folklore
Identities, trust, and work
|
| 2013-09-14: |
A basic overview of SAS and using SATA with SAS
|
| 2013-09-13: |
Why I think dir() excludes metaclass methods
|
| 2013-09-12: |
I am not a (Unix) purist
|
| 2013-09-11: |
Understanding why CSRF protection really needs cookies
|
| 2013-09-09: |
Why the RPM source and binary package format is superior to Debian .debs
A slow realization: many of my dotfiles don't need to be dotfiles
|
| 2013-09-07: |
Why wiring things up physically instead of virtually is better for us
Good SSL for your website is absurdly difficult in practice
|
| 2013-09-06: |
Making switch configuration changes is not as easy as it looks
|
| 2013-09-05: |
The physical versus the virtual approach to network wiring
|
| 2013-09-04: |
What (and how) I use HTML tables for layout here
|
| 2013-09-02: |
The current weak areas of ZFS on Linux
A little bit more on ZFS RAIDZ read performance
|
| 2013-08-31: |
Simple availability doesn't capture timing and the amount of warning
HTML quoting as I currently understand it
|
| 2013-08-30: |
I'm done with feeling guilty about using HTML tables for layout
|
| 2013-08-29: |
A new piece of my environment: clearing the X selection
|
| 2013-08-28: |
I'm vaguely yearning for a simpler framework than Django
|
| 2013-08-26: |
An example GNU Readline quoting function
|
| 2013-08-25: |
On classifying phish spam as malware
Adding basic quoting to your use of GNU Readline
|
| 2013-08-24: |
My personal view of Fedora versus Ubuntu on the desktop
|
| 2013-08-23: |
Looking at how many viruses we've seen in email recently
|
| 2013-08-22: |
I've changed my thinking about redundant power supplies
|
| 2013-08-21: |
Disk enclosures versus 'all in one case' designs
|
| 2013-08-20: |
The challenge for ARM servers, at least here
|
| 2013-08-19: |
My views on various bits of disk drive technology today
|
| 2013-08-16: |
SSDs may make ZFS raidz viable for general use
A peculiar use of ZFS L2ARC that we're planning
Funding and the size of hardware you want to buy
|
| 2013-08-15: |
My understanding of modern C undefined behavior and its effects
|
| 2013-08-14: |
The pragmatics of an HTTP to HTTPS transition
|
| 2013-08-13: |
You should convert wikitext to HTML through an AST
|
| 2013-08-11: |
The feature (or features) I really want added to xterm
Multi-mount protection and SAN failover
|
| 2013-08-10: |
The importance of names, illustrated through my mistake
|
| 2013-08-09: |
Link: My current dmenu changes
|
| 2013-08-08: |
How to accidentally reboot a server
My Cinnamon desktop customizations
|
| 2013-08-07: |
Understanding how generators help asynchronous programming
|
| 2013-08-05: |
Who or what your website is for and more on HTTP errors
|
| 2013-08-04: |
What's changed in Unix networking in the last decade or so
|
| 2013-08-03: |
The paucity of generally useful HTTP error codes
The pragmatic issues around HTTP error codes mattering (or not)
|
| 2013-08-02: |
I'm giving up on a custom laptop environment for Fedora 19
|
| 2013-07-31: |
The problem with a custom laptop environment: designing it
A Python code structure problem: exception handling with flags
|
| 2013-07-30: |
Phish spam and outside events
|
| 2013-07-29: |
A consistent preference in APIs for kernel and other low-level APIs
|
| 2013-07-28: |
The constraints shaping kernel APIs
|
| 2013-07-27: |
The easy path versus the virtuous path (in system setup)
|
| 2013-07-26: |
Communication is work and a corollary
|
| 2013-07-25: |
An important thing about security issues in HTTP error responses
|
| 2013-07-24: |
Why vendor prices are important things to have
|
| 2013-07-23: |
When Python regexp alternation is faster than separate regexps
|
| 2013-07-22: |
External disk enclosures versus disk servers
|
| 2013-07-21: |
A fun problem: monitoring randomness reduces it
|
| 2013-07-19: |
A bit on the performance of lexers in Python
Thinking about the security issues in HTTP 403 versus 404 errors
|
| 2013-07-18: |
Fedora 19 and the search for volume management
|
| 2013-07-17: |
Do specific HTTP error codes actually matter?
|
| 2013-07-15: |
Systemd needs sensible, non-truncated output
Git's petty little irritation for me
|
| 2013-07-14: |
Why single vendor solutions are a hard sell
|
| 2013-07-13: |
What we need in our fileservers (in the abstract)
|
| 2013-07-11: |
The ZFS ZIL's optimizations for data writes
ZFS transaction groups and the ZFS Intent Log
|
| 2013-07-10: |
Knowing when to go your own way with open source programs
|
| 2013-07-09: |
How we want to recover our ZFS pools from SAN outages
|
| 2013-07-07: |
Sometimes the right thing to do is nothing (at least right then)
A mistake to avoid with summer interns
|
| 2013-07-06: |
Is it particularly useful to have old Unix source sitting around?
|
| 2013-07-05: |
ZFS deduplication is terribly documented
|
| 2013-07-04: |
My version of the story of universities and Unix source code
|
| 2013-07-03: |
You can re-connect() UDP sockets (portably)
|
| 2013-07-02: |
Today's question: are anti-spam statistics useful for us?
|
| 2013-06-30: |
Our pragmatic approach to updating machines to match our baseline
Some very basic DNS blocklist hit information for the last 30 days
|
| 2013-06-29: |
connect() plus write() versus sendto() for UDP sockets
|
| 2013-06-28: |
The limitations of not actually knowing a language
|
| 2013-06-27: |
How much of our incoming email is checked at SMTP DATA time
|
| 2013-06-26: |
What I want from a future version of NFS
|
| 2013-06-25: |
Balancing Illumos against ZFS on Linux
|
| 2013-06-24: |
How to get your syndication feed fetcher at least temporarily banned here
|
| 2013-06-23: |
'Human error' is not a root cause of problems
|
| 2013-06-22: |
Automatedly overwriting changed files is not a feature
|
| 2013-06-21: |
A Django application design puzzle about modularity
|
| 2013-06-20: |
The question of whether to rewrite an old but working service
|
| 2013-06-19: |
Our approach to configuration management
|
| 2013-06-18: |
What's in the way of us using automated configuration management
|
| 2013-06-17: |
My job versus my career: some thoughts
|
| 2013-06-16: |
Python 3 has very little benefit for ordinary Python programmers
|
| 2013-06-15: |
I'm considering building a custom laptop environment
|
| 2013-06-14: |
The core issue in the Python 3 transition (from my view)
|
| 2013-06-13: |
I don't usually think about IO transfer times
|
| 2013-06-12: |
UI details that you don't expect to can matter a lot
|
| 2013-06-11: |
The good and bad of IPS (as I see it)
|
| 2013-06-10: |
What the SELinux community should be doing
|
| 2013-06-09: |
SELinux should have its own errno value
|
| 2013-06-08: |
The Flickr redesign and knowing your site's focus
|
| 2013-06-07: |
My current understanding of 'software defined networking'
|
| 2013-06-06: |
Why building RPMs for a different architecture is a hard problem
|
| 2013-06-05: |
The case against blog sidebars
|
| 2013-06-04: |
SELinux's toxic mistake
|
| 2013-06-02: |
Security is not the most important thing to most people
Why I do IPSec improperly and reduce my security
|
| 2013-05-31: |
The mystery of POSTs with a zero Content-Length
Understanding the MongoDB code that people are laughing at
|
| 2013-05-30: |
I find Systemtap oddly frustrating
|
| 2013-05-28: |
How you should package local-use configuration files
|
| 2013-05-27: |
Understanding SQL placeholders
Our situation with ZFS and 4 Kb physical sector disks
|
| 2013-05-26: |
Empirically, modern mailing list services are spam senders
|
| 2013-05-24: |
Understanding how CVE-2013-1979 might be exploited
My issue with infinite scrolling web pages: the lack of a stopping point
|
| 2013-05-23: |
Why web robots sending Referer headers is wrong
|
| 2013-05-21: |
Diffbot's bad Referer header
|
| 2013-05-20: |
A serious potential danger with Exim host lists in ACLs
|
| 2013-05-19: |
Today's comment spammer trick: regurgitated comments
The technical effects of being an out of tree Linux kernel module
|
| 2013-05-18: |
A little habit of our documentation: how we write logins
|
| 2013-05-17: |
Why I'm not considering btrfs for our future fileservers just yet
|
| 2013-05-16: |
Why ZFS's CDDL license matters for ZFS on Linux
|
| 2013-05-15: |
Why I've so far been neglecting functional programming languages
|
| 2013-05-13: |
My language irritations with Go (so far) and why I'm wrong about them
The Unix philosophy is not an end to itself
|
| 2013-05-11: |
The consequences of importing a module twice
|
| 2013-05-10: |
Illustrating the tradeoff of security versus usability
Disk IO is what shatters the VM illusion for me right now
|
| 2013-05-08: |
Thoughts on when to replace disks in a ZFS pool
How ZFS resilvering saved us
|
| 2013-05-07: |
Python's relative import problem
|
| 2013-05-05: |
Unix is not necessarily Unixy
The original vision of RISC was that it would be pervasive
|
| 2013-05-04: |
What I see as RISC's big bets
|
| 2013-05-03: |
Virtual disks should be treated as 4k 'Advanced Format' drives
|
| 2013-05-01: |
Two xargs gotchas that you may not know about
|
| 2013-04-30: |
The two stories of RISC
|
| 2013-04-29: |
My practical problem with preconfigured virtual machine templates
My view of ARM versus other RISCs
|
| 2013-04-28: |
My sysadmin view of Python virtualenvs
|
| 2013-04-27: |
Some theories on why DNSBLs may be dwindling away
|
| 2013-04-26: |
Are there less anti-spam DNS blocklists than there used to be?
|
| 2013-04-25: |
How SuS probably requires the 'run at least once' xargs behavior
|
| 2013-04-24: |
Two mistakes I made with VMs today
|
| 2013-04-23: |
Goodbye, djb dnscache
|
| 2013-04-21: |
RCS should not be your first choice for version control
Why a free SSL Certificate Authority is not horrifying
|
| 2013-04-19: |
How ZFS deals with 'advanced format' disks with 4 Kb physical sectors
How I want storage systems to handle disk block sizes
|
| 2013-04-18: |
How SCSI devices tell you their logical and physical block sizes
|
| 2013-04-17: |
Some thoughts on going to HTTPS by default
|
| 2013-04-15: |
The basics of 4K sector hard drives (aka 'Advanced Format' drives)
Go's friction points for me (and a comparison to Python)
|
| 2013-04-14: |
Python's data structures problem
|
| 2013-04-13: |
Classic linked lists versus Python's list (array) type
|
| 2013-04-12: |
My view on software RAID and the RAID write hole
|
| 2013-04-11: |
Something I'd like to be easier in Solaris's IPS
|
| 2013-04-10: |
Some important things about OpenBSD PF's max-* options
|
| 2013-04-08: |
Fedora 18's TexLive packaging failure
Why ZFS still needs an equivalent of fsck
|
| 2013-04-07: |
The apparent source of my Firefox memory bloat problems
|
| 2013-04-06: |
What I needed to do with Grub2 to change my boot disk
|
| 2013-04-05: |
Authoritative, non-recursive DNS servers now need ratelimiting
|
| 2013-04-04: |
An irritating OpenBSD PF limitation on redirections
|
| 2013-04-03: |
How to make sysadmins unhappy with your project's downloads
|
| 2013-04-02: |
Why listen(2)'s backlog parameter has such an odd meaning
|
| 2013-03-31: |
Why we'll continue to have local compute servers in the future
Can we really use the cloud?
|
| 2013-03-30: |
One irritation in xargs's interface
|
| 2013-03-29: |
Illumos-based distributions are currently not fully mature
|
| 2013-03-27: |
What checksums in your filesystem are usually actually doing
|
| 2013-03-26: |
Reconsidering a ZFS root filesystem
|
| 2013-03-25: |
Rethinking avoiding Apache
My (current) view of using branches in VCSes
|
| 2013-03-24: |
Looking at how many external recipients inbound email goes to
|
| 2013-03-22: |
Looking at how many recipients our average inbound email has
The problem with trying to make everything into a Python module
|
| 2013-03-21: |
The FreeBSD iSCSI initiator is not ready for serious use (as of 9.1)
|
| 2013-03-20: |
Don't use ab for your web server stress tests (I like siege instead)
|
| 2013-03-18: |
The wrong way for a framework to lay out projects
|
| 2013-03-17: |
The power of suggestion that documentation has
Argument validation using functions
|
| 2013-03-16: |
I'm giving up on upgrading my laptop from Fedora 14
|
| 2013-03-15: |
A dive into the depths of yes `yes no`
|
| 2013-03-14: |
What I want out of a web-based syndication feed reader
|
| 2013-03-12: |
MATE Desktop's failure in Fedora 18
In universities, computers are not an essential service
|
| 2013-03-10: |
The easy way to wind up with multiple subnets on a single (V)LAN segment
The systemd dependency problem
|
| 2013-03-09: |
Why .rpmnew files are evidence of packaging failures
|
| 2013-03-08: |
Debian shows how to do Apache configuration right (and Fedora fumbles it)
|
| 2013-03-06: |
How we make Exim cut off bounce loops
Turning off delays on failed password authentications
|
| 2013-03-04: |
Why you should never use '/bin/sh -c ...' in configuration files
|
| 2013-03-03: |
Why a netcat-like program is a good test of a language
Go: when I'd extend an interface versus making a new one
|
| 2013-03-02: |
The mythology of spending money on things, or not doing so
|
| 2013-02-28: |
A decorator for decorators that accept additional arguments
Looking at whether Zen-listed IPs keep trying to send us email
|
| 2013-02-27: |
Link: Go at Google: Language Design in the Service of Software Engineering
|
| 2013-02-26: |
How Linux servers should boot with software RAID
Thinking about how much Solaris 11 is worth to us
Looking at whether (some) IP addresses persist in zen.spamhaus.org
|
| 2013-02-24: |
You should avoid using socket.SOMAXCONN
What limits the number of concurrent connections to a server
|
| 2013-02-22: |
(Ab)using awk on the fly
|
| 2013-02-21: |
Go: using type assertions to safely reach through interface types
Some notes on my first experience with Go
|
| 2013-02-20: |
The meaning of listen(2)'s backlog parameter
|
| 2013-02-19: |
The source of C's dependency hell for linking
|
| 2013-02-18: |
The strikes against Solaris 11 for us
|
| 2013-02-17: |
Some brief opinions and notes on uWSGI
|
| 2013-02-16: |
Finding out what TLS/SSL cryptography people actually get with your servers
|
| 2013-02-15: |
SSL/TLS cipher names (aka 'cipher suites') and what goes into them
|
| 2013-02-14: |
The cost of an API mistake in the socket module's fromfd()
|
| 2013-02-12: |
Some notes on Linux's ionice
|
| 2013-02-11: |
The sinking feeling of discovering a design mistake in your code
Thinking about how I use email
|
| 2013-02-10: |
A little irritating (but understandable) limitation on Go interfaces
|
| 2013-02-09: |
Solve your command parsing problems by using scripts
|
| 2013-02-08: |
Linux's great advantage as a Unix is its willingness to make wrenching changes
|
| 2013-02-07: |
Today's learning experience with CSS: don't be indirect
|
| 2013-02-05: |
What makes DWiki and other dynamic file based blog engines slow
|
| 2013-02-04: |
Dynamic web sites and blogs need not be slow, illustrated
What good cryptography error messages need to include
|
| 2013-02-03: |
Systems with cryptography should always have minimal workarounds
|
| 2013-02-02: |
A fundamental problem with the trackback protocol
|
| 2013-01-31: |
The shifting SBL, as experienced here
Why you should support specifying comparison keys (and functions)
|
| 2013-01-30: |
Thinking about FreeBSD versus Illumos for our ZFS fileservers
|
| 2013-01-28: |
Some patterns for easy to parse Domain Specific Languages in Python
|
| 2013-01-27: |
How the modern web 2.0 social web irritates me by hiding discussions
User mode servers versus kernel mode servers
|
| 2013-01-25: |
Some places where I think that Unix is incomplete or imperfect
Unix needs to grow and a consequence of that
|
| 2013-01-23: |
My Unix is a general purpose operating system
What I want to know about kernel security updates
|
| 2013-01-22: |
Disaster recovery preparation is not the same as a DR plan
|
| 2013-01-20: |
Disaster recovery for computers is a means, not an end to itself
Real disaster recovery plans require preallocated resources
|
| 2013-01-18: |
SLAs, downtime, and planning
More on my favorite way of marking continued lines
|
| 2013-01-16: |
My favorite way of marking continued lines
How I drafted (okay, wrote) an entry in public by accident
|
| 2013-01-14: |
Why JavaScript (or something like it) is in demand
Good JavaScript usage is a good thing
|
| 2013-01-13: |
Blogspot's massive web 1.0 failure
|
| 2013-01-12: |
Runtime loading of general code usually requires general dynamic linking
|
| 2013-01-11: |
A thought about static linking and popularity
|
| 2013-01-10: |
The fundamental problem faced by user-level NFS servers
|
| 2013-01-09: |
It turns out I'm biased towards kernel iSCSI target implementations
|
| 2013-01-08: |
Why we wound up using Linux for our iSCSI targets
|
| 2013-01-07: |
Why bad support matters (war story included)
|
| 2013-01-06: |
24 hours of Atom feed requests here
|
| 2013-01-05: |
What I think changed to make spam deliveries not cost-free
|
| 2013-01-04: |
DTrace's stable providers are not good enough
|
| 2013-01-03: |
An alterate pattern for polymorphism in C
|
| 2013-01-02: |
Some patterns for polymorphism in C
|
| 2012-12-31: |
How our fileserver infrastructure is a commodity setup (and inexpensive)
GNU sort's -h option
|
| 2012-12-30: |
What I'd have liked to hear about Python 3 from the developers
|
| 2012-12-29: |
Why I think that stupid spamming is actively wasteful
|
| 2012-12-28: |
A spammer that is not the brightest light in the box
|
| 2012-12-27: |
Why I somewhat irrationally have a distrust of ZFS on Linux
|
| 2012-12-26: |
Does Python 2 need to evolve?
|
| 2012-12-25: |
A confession: Python 3 has always made me kind of angry
|
| 2012-12-24: |
Why we're almost certainly staying with ZFS
|
| 2012-12-23: |
What we (probably) want in a future version of Solaris
|
| 2012-12-22: |
Packaging in compiled versus interpreted languages
|
| 2012-12-21: |
Version control comes first
|
| 2012-12-20: |
Sysadmins should pretty much version control everything
|
| 2012-12-19: |
Part of good awk programming is getting the clause order right
|
| 2012-12-18: |
Why I'm still using VMware
|
| 2012-12-17: |
Should you alert on the glaringly obvious?
|
| 2012-12-16: |
Alerts should be actionable (and the three sorts of 'alerts')
|
| 2012-12-15: |
A few small notes about OpenBSD PF (as of 4.4 and 5.1)
|
| 2012-12-13: |
A drawback of short servers
|
| 2012-12-12: |
fork() and closing file descriptors
One good use for default function arguments
|
| 2012-12-10: |
The general lesson from the need for metrics
Things that systemd gets right
|
| 2012-12-09: |
When I'd use a web server other than Apache
|
| 2012-12-08: |
Why Apache is such a temptation
|
| 2012-12-07: |
How I use virtualization (and what for)
|
| 2012-12-05: |
One way to break down how people use virtualization
In praise of KVM-over-IP systems
|
| 2012-12-04: |
You can't assume that your performance problems will be obvious
|
| 2012-12-03: |
A reason for detailed commit messages: as a guard against errors
|
| 2012-12-02: |
What goes into the terminal's 'cbreak' and 'raw' modes
|
| 2012-11-30: |
All kernel messages should be usefully ratelimited. No exceptions.
My new view on why you need to profile code
|
| 2012-11-29: |
One reason why having metrics is important
|
| 2012-11-28: |
When you make a harmless change, check to make sure that it is
|
| 2012-11-27: |
You don't necessarily know what matters for performance
|
| 2012-11-25: |
More thoughts on why Python doesn't see much monkey-patching
The limits of monkey patching in Python
|
| 2012-11-24: |
Simple markup as a style guide and limiter
|
| 2012-11-22: |
A little Unix difference that irritates: what word erase erases
Optional features are in practice not optional to understand
|
| 2012-11-21: |
The varying appeal of wikitext and other simple markup
|
| 2012-11-20: |
Where my Firefox performance problem seems to be
|
| 2012-11-19: |
Python 3's print() annoys me (although maybe it shouldn't)
|
| 2012-11-18: |
Linux is less divergent than commercial Unixes used to be
|
| 2012-11-17: |
Why Google's handling of multiple domains on inbound messages is okay
|
| 2012-11-16: |
Why DTrace does not attract people to Solaris very often
|
| 2012-11-15: |
A learning experience: internal mail flow should never be allowed to bounce
|
| 2012-11-13: |
The problem with SELinux (still)
A potential path to IPv6
|
| 2012-11-11: |
Explaining an RPM oddity
A reminder: string concatenation really is string concatenation
|
| 2012-11-10: |
Why Unix doesn't have user-changeable namespaces
|
| 2012-11-09: |
Some amusing cut and paste work from spammers
|
| 2012-11-08: |
Devops, the return of system programmers?
|
| 2012-11-07: |
DTrace: figuring out what you have access to at tracepoints
|
| 2012-11-06: |
Why I want to do full end-to-end performance tests
|
| 2012-11-04: |
Your logs should always include IP addresses (in addition to hostnames)
Good and bad formats for your log messages
|
| 2012-11-03: |
Another go-around on the drawbacks and balances of automation
|
| 2012-11-02: |
Why our ZFS fileservers sometimes boot slowly
|
| 2012-10-31: |
Our DTrace scripts for NFS server, ZFS, and iSCSI initiator monitoring
Some stats and notes on relay attempts for our external mail gateway
|
| 2012-10-30: |
How I am doing randomized read IO to avoid ZFS prefetching
|
| 2012-10-29: |
How ZFS file prefetching seems to work
|
| 2012-10-28: |
Some unusual SMTP activity from would-be spammers
|
| 2012-10-27: |
The difference between cryptographic and normal random number generators
|
| 2012-10-26: |
Thinking about an unusual sequence
|
| 2012-10-25: |
Always make sure you really understand what your problem is
|
| 2012-10-24: |
Why you should support 'reload' as well as 'restart'
|
| 2012-10-23: |
The problem of simulating random IO
|
| 2012-10-22: |
Why parsers matter
|
| 2012-10-21: |
Why fork() is a good API
|
| 2012-10-20: |
The issue with measuring disk performance through streaming IO
|
| 2012-10-19: |
An old Unix trick for saving databases
|
| 2012-10-18: |
A danger of default values for function arguments (in illustrated form)
|
| 2012-10-17: |
Operators and system programmers: a bit of System Administrator history
|
| 2012-10-16: |
Switch flow control and buffering: what we think was wrong in our iSCSI network
|
| 2012-10-15: |
The anatomy of a performance problem with our mail spool
|
| 2012-10-14: |
DTrace: two mistakes you can make in DTrace scripts
|
| 2012-10-13: |
DTrace: counting, aggregates, and a nice undocumented printa() feature
|
| 2012-10-12: |
SSL CAs have an impossible job (if you want them to be thorough)
|
| 2012-10-11: |
Controlling Linux TCP socket send buffer sizes
|
| 2012-10-10: |
Disk IO latency is often what matters
|
| 2012-10-09: |
The negative results problem with search engines
|
| 2012-10-08: |
Acclimatization makes competition in web search engines hard(er)
|
| 2012-10-06: |
Python can execute zip files
How averages mislead you
|
| 2012-10-05: |
Notes on Linux's blktrace
|
| 2012-10-04: |
Averages mislead: an illustrated example
|
| 2012-10-03: |
DTrace: notes on quantization and aggregates
|
| 2012-10-02: |
Some notes on getting durations in DTrace
|
| 2012-09-30: |
A new anti-spam precaution after our local spam incident
|
| 2012-09-29: |
A recent spam oddity that I've been mulling over
What I would like in colour-specification interfaces
|
| 2012-09-28: |
fork() versus strict virtual memory overcommit handling
|
| 2012-09-27: |
Microkernels and device drivers
|
| 2012-09-26: |
Microkernels and modularity: do microkernels ever make sense?
|
| 2012-09-25: |
The jaundiced C programmer's view of object orientation
|
| 2012-09-24: |
The wrong way to harvest system-level performance stats
|
| 2012-09-23: |
How we handle Ubuntu LTS versions
|
| 2012-09-22: |
Speculation about what comment spammers think they're doing here
|
| 2012-09-21: |
How I enter URLs in my browser
|
| 2012-09-20: |
My alternative to bookmarks: a page of links as the browser start page
|
| 2012-09-19: |
Two views of the argparse module
|
| 2012-09-18: |
My Python versions
|
| 2012-09-17: |
The options problem in Python
|
| 2012-09-16: |
The problem with noise
|
| 2012-09-15: |
Sensible reboot monitoring
|
| 2012-09-14: |
What determines how much work a ZFS resilver has to do
|
| 2012-09-13: |
Why you need mass package rebuilds in some circumstances
|
| 2012-09-12: |
The core problem with developers doing their own packaging
|
| 2012-09-11: |
A realization about ratelimit time horizons
|
| 2012-09-09: |
The core difference between Debian source packages and RPMs
When I've interned Python strings
|
| 2012-09-08: |
When you can log bad usernames for failed authentications
|
| 2012-09-07: |
What the standard(s) say about the order of readdir()'s results
|
| 2012-09-06: |
A little trick and gotcha with Exim ratelimits
|
| 2012-09-05: |
Some thoughts on logging failed login attempts (for existing users)
|
| 2012-09-03: |
People are not ignorant (usually)
|
| 2012-09-02: |
What I would like: testable mailers
Solaris 11 is still closed source (and Oracle is careless with words)
|
| 2012-08-31: |
A realization about one bit of test-driven development
A small rant about looking down on Linux users
|
| 2012-08-30: |
My perspective on why we do in-place reinstalls of machines
|
| 2012-08-29: |
A realization: install configuration files before packages
|
| 2012-08-28: |
When Exim generates bounce messages
|
| 2012-08-27: |
You should log all successful user authentication
|
| 2012-08-26: |
Some brief information about a local spam incident
|
| 2012-08-25: |
Some odd behavior from blog comment spammers
|
| 2012-08-24: |
The theoretical right way to check if an account is in a Unix group
|
| 2012-08-23: |
Illustrating the Ubuntu clown car, AccountsService edition
|
| 2012-08-22: |
My view on the understandability of language idioms
|
| 2012-08-21: |
Another problem with how Debian builds from source packages
|
| 2012-08-20: |
Sysadmins hate updates (more or less)
|
| 2012-08-19: |
Why I don't like the Debian source package format
|
| 2012-08-18: |
What everyone needs in source packages
|
| 2012-08-17: |
How Firefox performs (and doesn't) for me
|
| 2012-08-16: |
Why I hate vendors, printers edition
|
| 2012-08-15: |
The historical background of the *BSD 'base system' versus Linux
|
| 2012-08-13: |
When and where I fell out of love with Firefox
|
| 2012-08-12: |
A nice illustration of the cost of creating and destroying objects in Python
The CPython bytecode difference between iteration and looping
|
| 2012-08-11: |
How not to write kernel messages
|
| 2012-08-09: |
Learning something from not testing jQuery 1.8's beta releases
Ubuntu 12.04 and symbolic links in world-writeable sticky-bitted directories
|
| 2012-08-08: |
Linux ps's problem with login names
|
| 2012-08-06: |
The theoretical legality of shadowing builtins in Python
The (possibly apocryphal) story of System V IPC's origins
|
| 2012-08-05: |
Reasoning backwards (a story about what can happen to SATA disks)
|
| 2012-08-04: |
Oracle, ZFS, and Linux (and Solaris)
|
| 2012-08-03: |
What makes an operating system attractive
|
| 2012-08-02: |
Can Oracle make ZFS much more attractive?
|
| 2012-07-31: |
Would GPL'ing ZFS have worked or been a good idea?
Ruminations on the future of ZFS
|
| 2012-07-30: |
IPv6 is going to be a fruitful source of configuration mistakes
|
| 2012-07-29: |
The periodic strangeness of idiomatic Python
|
| 2012-07-28: |
The ecological niches of current open source Unixes
|
| 2012-07-27: |
What 32-bit x86 Linux's odd 896 MB kernel memory boundary is about
|
| 2012-07-25: |
The kernel memory addressing problem
My dislike for what I call 'perverse Test Driven Development'
|
| 2012-07-24: |
Unicode's two new problems
|
| 2012-07-22: |
The history of booting Linux with software RAID
A sleazy trick to capture debugging output from an initramfs
|
| 2012-07-20: |
Ubuntu 12.04 can't reliably boot with software RAID (and why)
The temptation of selective sender address verification
|
| 2012-07-19: |
Unicode code points and abstract characters
|
| 2012-07-18: |
Strings in Python 2 and Python 3
|
| 2012-07-16: |
Getting an Ubuntu 12.04 machine to give you boot messages
My arrogance about Unicode and character encodings
|
| 2012-07-15: |
My general issue with Unicode in Python 3
|
| 2012-07-14: |
ZFS's problem with generic messages
|
| 2012-07-13: |
Why system administration certifications have worked so far
|
| 2012-07-12: |
Why formal sysadmin education isn't likely any time soon
|
| 2012-07-11: |
The extremely cynical take on DevOps
|
| 2012-07-10: |
A theory on why defaults for tunable parameters stay unchanged
|
| 2012-07-09: |
Why the defaults for tunable kernel parameters matter
|
| 2012-07-08: |
Why System V shared memory may normally be limited
|
| 2012-07-06: |
Why Exim has a single queue for all email
Exploring an ARP mystery: a little Linux surprise
|
| 2012-07-04: |
How to irritate sysadmins and give mailers heartburn with your MXes
|
| 2012-07-03: |
The secure web voting problem
The well behaved Unix program and job control signals
|
| 2012-07-01: |
Another cynical take on the nofollow tag
|
| 2012-06-30: |
What Linux distributions should do to help their Python 3 transitions
|
| 2012-06-29: |
The magnitude of the migration to Python 3, illustrated
More about my issues with DTrace's language
|
| 2012-06-28: |
Why I don't like implicit string interpolation
|
| 2012-06-27: |
One root of my problem with GNU Emacs
|
| 2012-06-26: |
A little gotcha with SSH connection sharing
|
| 2012-06-25: |
Why sophisticated line editing is not in the kernel
|
| 2012-06-24: |
My take on fancy editors for programming
|
| 2012-06-22: |
How the Linux kernel command line is processed (more or less)
The effects of DTrace's problems
|
| 2012-06-21: |
How I want to do redirects in Apache, especially in .htaccess files
|
| 2012-06-20: |
An update on comment spammer behavior here on WanderingThoughts (once again)
|
| 2012-06-19: |
How I'm doing AJAX with Django in my web app
|
| 2012-06-17: |
A realization about whether I can contribute to Python development
Why our server had its page allocation failure
|
| 2012-06-16: |
Decoding the Linux kernel's page allocation failure messages
|
| 2012-06-15: |
How the Linux kernel divides up your RAM
|
| 2012-06-13: |
Some tricky bits in in-browser form mangling and validation
Client side form validation can let people explore their options
|
| 2012-06-11: |
What bits of a form are useful to check on the client side
Choosing how slowly your mailer should time out email
|
| 2012-06-10: |
The anti-spam implications of email being multiple things in one
Modern email is actually multiple things in one system (mailer timeouts edition)
|
| 2012-06-09: |
Rethinking when your mailer sends 'not-yet-delivered' warning messages
|
| 2012-06-08: |
An (accessible) explanation of the Flame malware's Windows Update compromise
|
| 2012-06-07: |
My experience doing a Fedora 17 upgrade with yum: it worked fine
|
| 2012-06-06: |
A feature that Linux installers should have: restoring your backups
|
| 2012-06-04: |
Why the TTY line discipline exists in the kernel
|
| 2012-06-03: |
Another view of the merge versus rebase debate in version control
My view on Mercurial versus Git
|
| 2012-06-01: |
Some things that strike me about Linux and UEFI secure booting
The secure boot problem
|
| 2012-05-31: |
What OSes have succeeded or failed here
Thinking about why Solaris has failed here
|
| 2012-05-30: |
What it means for an OS to succeed or fail
|
| 2012-05-28: |
Yes, git add makes a difference (no matter what people think)
How to do a very cautious LVM storage migration
|
| 2012-05-27: |
Complications in spam filter stats in our environment
|
| 2012-05-25: |
How CSLab currently does server side email anti-spam stuff (version 2)
|
| 2012-05-24: |
Today's Mercurial command alias: a short form hg incoming
How we do milter-based spam rejection with Exim
|
| 2012-05-23: |
Some notes on using XFT fonts in TK 8.5
|
| 2012-05-22: |
Our pragmatic experiences with (ZFS) disk errors in our infrastructure
|
| 2012-05-21: |
More on CISC (well, x86) versus RISC
|
| 2012-05-20: |
The XFT font naming issue
|
| 2012-05-19: |
A semi-brief history and overview of X fonts and font rendering technology
|
| 2012-05-17: |
My Firefox memory bloat was mostly from All-in-One Gestures
The Go language's problem on 32-bit machines
|
| 2012-05-15: |
Some stuff on 'time since boot' timestamps
|
| 2012-05-14: |
My Firefox 12 extensions and addons
|
| 2012-05-13: |
My experiment with Firefox Nightly builds: a failure
A basic step in measuring and improving network performance
|
| 2012-05-12: |
The death of paging on the web
|
| 2012-05-10: |
All your servers should have Linux's magic SysRq enabled
|
| 2012-05-09: |
Using rsync to pull a directory tree to client machines
Things I will do differently in the next building power shutdown (part 2)
|
| 2012-05-07: |
Third party Linux kernel modules should build against non-running kernels
|
| 2012-05-06: |
Why I wound up using Django
Counting your syndication feed readers
|
| 2012-05-05: |
Look for your performance analysis tools now
|
| 2012-05-04: |
Explaining a piece of deep weirdness with Python's exec
|
| 2012-05-03: |
Python scopes and the CPython bytecode opcodes that they use
|
| 2012-05-01: |
Into the depths of a Python exec scope-handling bug
|
| 2012-04-30: |
Notes to myself about progressive JavaScript
|
| 2012-04-29: |
The Python language tutorial is a gem
My two approaches to learning (programming) languages
|
| 2012-04-28: |
ZFS and various sorts of read errors
|
| 2012-04-27: |
The case of the Twitter spam I don't understand
|
| 2012-04-26: |
When we replace disks in our ZFS fileserver environment
|
| 2012-04-25: |
Models of providing computing access in a university department
|
| 2012-04-24: |
Universities and their non-employees
|
| 2012-04-23: |
My perspective on the 'Bring Your Own Device' controversy
|
| 2012-04-22: |
I may be wrong about my simple answer being the right one
|
| 2012-04-21: |
Bash's superintelligent errors about exec failures
|
| 2012-04-20: |
Sometimes the simple answers are the right ones (a lesson from bash)
|
| 2012-04-19: |
An interesting experience with IP-based SMTP blocks
|
| 2012-04-18: |
Why you should never use file (or libmagic) to identify files
|
| 2012-04-17: |
ls -l should show the presence of Linux capabilities
|
| 2012-04-16: |
What you need for migrating web content
|
| 2012-04-15: |
My view on why CISC (well, x86) won over RISC in the end
|
| 2012-04-14: |
The wiki trap (that we've fallen into)
|
| 2012-04-12: |
Tanenbaum was wrong in the Tanenbaum-Torvalds debate
Hypervisors are not microkernels
|
| 2012-04-11: |
Faking (or not) a ternary if operator with && and ||
|
| 2012-04-10: |
Revisiting checksum functions
|
| 2012-04-09: |
Understanding hashing in Python
|
| 2012-04-08: |
My story of running scripts from the web
|
| 2012-04-06: |
Checksums and hashes
Why we haven't taken to DTrace
|
| 2012-04-05: |
Why I hate having /tmp as a tmpfs
|
| 2012-04-04: |
More on equality in Python (well, mostly Python 2.7)
|
| 2012-04-03: |
Python's two versions of equality, with a long digression on hash()
|
| 2012-04-02: |
The problem of ZFS pool and filesystem version numbers
|
| 2012-03-31: |
Our sysadmin environment
Why I no longer believe that you need Solaris if you want ZFS
|
| 2012-03-29: |
Scalable system management is based on principles
|
| 2012-03-28: |
How I (once) did change management with scripts
Ultimately, abuse issues have to be handled by humans
|
| 2012-03-26: |
Microkernels are quite attractive to academic computer science researchers
What it means to become another user on Unix
|
| 2012-03-25: |
Atom feeds and constrained (web) environments
Link: Getting Real About Distributed System Reliability
|
| 2012-03-24: |
Garbage collection and modern virtual memory systems
|
| 2012-03-23: |
Sometimes you get lucky
|
| 2012-03-22: |
The problems of operations and sysadmin heroism
|
| 2012-03-21: |
My view of where the Unix community is
|
| 2012-03-20: |
How I use objects in Python
|
| 2012-03-19: |
A modest suggestion: increase your text size
|
| 2012-03-18: |
The standard trajectory of a field
|
| 2012-03-16: |
Parsing versus rewriting: how to tell them apart
|
| 2012-03-15: |
Part of the cleverness of Unix permissions (a little thought)
|
| 2012-03-14: |
The right way to do wikitext transitions
Configuration management is not documentation, at least not of intentions
|
| 2012-03-12: |
Why it matters whether your software works when virtualized
Why ZFS log devices aren't likely to help us
|
| 2012-03-11: |
A CBL false positive reveals a significant issue with the CBL
|
| 2012-03-09: |
Why you do not want to patch your source code in place
|
| 2012-03-08: |
What I have to run for my custom environment on Fedora 16
|
| 2012-03-07: |
The hard part of custom environments on Fedora (or any Linux)
How not to use Apache's ProxyPass directive
|
| 2012-03-05: |
Web frameworks should be secure by default
Convenience in web frameworks is often insecure
|
| 2012-03-04: |
Some stuff on Python 2.7.x support periods
|
| 2012-03-03: |
Two ways I increase the security of SSH personal keys
|
| 2012-03-01: |
A trick for dealing with irregular multi-word lines in shell scripts
|
| 2012-02-29: |
SSDs and understanding your bottlenecks
The two sorts of display resolution improvements
|
| 2012-02-28: |
In place migration to Linux software RAID
|
| 2012-02-26: |
What information I want out of ZFS tools and libraries
How much spam is forged as being from who it's sent to?
|
| 2012-02-25: |
The (future) problem with Python 2.7
|
| 2012-02-24: |
Blogs and the problem of indexes
|
| 2012-02-22: |
How I can be wrong about the death of sysadmin jobs
|
| 2012-02-21: |
Using and understanding Python metaclasses (an index)
|
| 2012-02-20: |
Why I still have a custom-compiled Firefox
My view of where TCL went wrong
|
| 2012-02-18: |
The most popular sender domains for spam messages sent to here
The downside of automation versus the death of system administration
|
| 2012-02-16: |
Handling modern IPv6 in programming environments
|
| 2012-02-15: |
The temptation of LVM mirroring
A downside of automation
|
| 2012-02-13: |
The problem with long-term production support of things
|
| 2012-02-12: |
Some things about changing from old X fonts to modern TrueType fonts
Understanding FVWM States, with better FVWM code for selecting terminal windows
|
| 2012-02-11: |
How I select (terminal) windows from the keyboard in FVWM
|
| 2012-02-09: |
What supporting a production OS means for me
A general point about SSH personal keys
|
| 2012-02-08: |
Choosing the superblock format for Linux's software RAID
|
| 2012-02-06: |
The advantage of HDMI for dual displays
|
| 2012-02-05: |
My view on what will kill 'traditional' system administration
Link: Filenames.WTF
What five years of PC technology changed for me
|
| 2012-02-03: |
Understanding a subtle Twitter feature
Understanding Resident Set Size and the RSS problem on modern Unixes
|
| 2012-02-01: |
A ZFS pool scrub wish: suspending scrubs
|
| 2012-01-31: |
The solution to the modern X font handling mystery
Where is Oracle going with Solaris?
|
| 2012-01-30: |
HTML is not a SGML dialect and never really has been
|
| 2012-01-29: |
Dealing with Fitts' Law on widescreen displays
Thinking about spam rejection and abuse addresses
|
| 2012-01-28: |
How I use FvwmIconMan
|
| 2012-01-27: |
Why metaclasses work in Python
|
| 2012-01-26: |
The drawback of modern X font handling gets mysterious
|
| 2012-01-25: |
The death of system administration: I'm all for it
|
| 2012-01-24: |
Why I use exec in my shell scripts
|
| 2012-01-23: |
Every so often, I solve a problem with a hammer
|
| 2012-01-22: |
My view of the purpose of object orientation
|
| 2012-01-21: |
The C juggernaut illustrated
|
| 2012-01-20: |
Another Russ Cox regexp article: How Google Code Search Worked
|
| 2012-01-19: |
How not to do repeated fields in web forms
Let's make it official: Solaris 11 is closed source
|
| 2012-01-18: |
SOPA and PIPA matter for everyone
|
| 2012-01-17: |
The first browser blinks on XHTML parsing
|
| 2012-01-16: |
Understanding isinstance() on Python classes
What you can find out about the memory usage of your Linux programs
|
| 2012-01-15: |
Understanding the basic shape of Unix virtual memory management
|
| 2012-01-14: |
What do we mean when we talk about something's memory usage?
|
| 2012-01-13: |
Notes on what Linux's /proc/<pid>/smaps fields mean
|
| 2012-01-11: |
A Yum plugin I would like: using a local DVD as a repo source
How to use systemd to just run some stuff on boot
|
| 2012-01-10: |
An insight on the purpose of comments: volume control
|
| 2012-01-09: |
What my physical desk is like
|
| 2012-01-08: |
The latest annoyance with Google Groups
|
| 2012-01-07: |
Why you might want multiple keys for disk encryption
|
| 2012-01-05: |
Nailing down RPM epoch numbers
Disk encryption, backups, and your threat model
|
| 2012-01-03: |
How to lose your data with full disk encryption the easy way
The drawback of full disk encryption
|
| 2012-01-02: |
An example sort that needs a comparison function
|
| 2011-12-31: |
Why CA-based SSL is not likely to be replaced any time soon
My thoughts on the mockist versus classicalist testing approaches
|
| 2011-12-30: |
Why I don't like Python 3 dropping the comparison function for sorting
|
| 2011-12-29: |
An empirical exploration of whether spammers take Christmas off
|
| 2011-12-28: |
Blog entries should have visible dates (usually)
|
| 2011-12-27: |
Python 3 from the perspective of someone writing new Python code
|
| 2011-12-26: |
Labs versus offices for sysadmins (or at least us)
More wiring for sysadmins: sysadmins and gigabit networking
|
| 2011-12-25: |
Why office switches plus VLANs aren't the answer for sysadmins
|
| 2011-12-24: |
Wiring offices for sysadmins
|
| 2011-12-23: |
Disk space in the modern world
|
| 2011-12-21: |
Python 3 from the perspective of someone with existing Python code
|
| 2011-12-20: |
SSH, man in the middle attacks, and public key authentication
A little script: nssh
|
| 2011-12-19: |
An advance fee fraud spam aphorism
|
| 2011-12-18: |
Understanding the close() and EINTR situation
|
| 2011-12-17: |
Python 3 from the perspective of a Unix sysadmin
|
| 2011-12-16: |
Avoiding the classic C quoting bug in your language
|
| 2011-12-14: |
Practical issues with REST's use of the Accept header
What makes backups real
Shell functions versus shell scripts
|
| 2011-12-13: |
I'm on Twitter now
DWiki's code is now on Github (among other things)
|
| 2011-12-12: |
How not to improve your package updater application
What debugging info I want from things like SMF and systemd
|
| 2011-12-11: |
head versus sed
|
| 2011-12-10: |
ZFS pool activation and iSCSI (part II)
|
| 2011-12-09: |
A quiet advantage of the systemd approach to service management
|
| 2011-12-08: |
Another reason sysadmins should program
|
| 2011-12-07: |
Understanding the Solaris iSCSI initiator (a bit)
|
| 2011-12-06: |
What I know about boot time ZFS pool activation (part I)
|
| 2011-12-05: |
Debuggers and two sorts of bugs
|
| 2011-12-04: |
The current state of GPT, EFI, and Linux
|
| 2011-12-03: |
Why I have comments here
Link: Russ Cox's articles on regular expressions
|
| 2011-12-02: |
The many ways PCs can dual boot multiple OSes
|
| 2011-11-30: |
On how PCs boot and hard disk partitioning
My mouse button bindings in fvwm, my window manager
|
| 2011-11-29: |
The alternate screen terminal emulator plague
|
| 2011-11-28: |
The login name problem
|
| 2011-11-27: |
Why processing things in inode order is a good idea
|
| 2011-11-26: |
About the order that readdir() returns entries in
|
| 2011-11-25: |
Python instance dictionaries, attribute names, and memory use
|
| 2011-11-24: |
About SATA port multipliers
|
| 2011-11-23: |
The many names of Linux SATA devices
|
| 2011-11-21: |
A cheap caching trick with a preforking server in Python
Mouse scroll wheels versus buttons that you actually want to use
The likely cause of my IPSec dropped packet mystery
|
| 2011-11-20: |
Google Groups fails both anti-spam and basic mailing list management
|
| 2011-11-19: |
My Liferea crashes are not Liferea's fault
|
| 2011-11-17: |
The drawback of modern X font handling
A classic and standard C quoting bug
|
| 2011-11-16: |
Solaris is not an enterprise operating system
|
| 2011-11-15: |
A scroll wheel experiment
|
| 2011-11-13: |
Thinking about how to test our UPSes
A confession about our ZFS configuration
|
| 2011-11-12: |
(Not) parsing wikitext
|
| 2011-11-11: |
My view of the right way to copy lists in Python
|
| 2011-11-10: |
Praise for systemd
|
| 2011-11-09: |
The disappearance of separate filesystems for /usr and /var
|
| 2011-11-08: |
Files and fundamental filesystem activities (on Unix)
|
| 2011-11-07: |
An IPSec mystery with dropped packets
|
| 2011-11-06: |
Ubuntu does system disk mirroring right
|
| 2011-11-05: |
Understanding Apache's Allow, Deny, and Order directives
|
| 2011-11-04: |
More on my Firefox 7 extensions
|
| 2011-11-03: |
My Firefox 7 extensions
|
| 2011-11-02: |
Attention marketers: blog comments are not email
|
| 2011-10-31: |
Why 'quiet' options to programs aren't as useful as you think
Deduplication is always going to be expensive
|
| 2011-10-30: |
Why we have a VPN
|
| 2011-10-29: |
Why ZFS dedup is not something we can use
|
| 2011-10-28: |
ZFS features that could entice us to upgrade Solaris versions
|
| 2011-10-27: |
A Wikitext formatting mistake that I made here
|
| 2011-10-26: |
How to fail at useful cryptography: bad error messages
|
| 2011-10-25: |
A reason not to automate: policy flexibility
|
| 2011-10-24: |
Salting passwords compared to slow password hashing
|
| 2011-10-23: |
Boiling frogs and PC performance
|
| 2011-10-22: |
Fedora 15 versus me
|
| 2011-10-21: |
How I'm capturing only the last portion of standard error
|
| 2011-10-20: |
The kind of computer usage I think Gnome 3 is targeting
|
| 2011-10-19: |
Defending Berkeley's forced choice in network device naming
|
| 2011-10-18: |
The Ethernet device naming mistake (or one part of it)
|
| 2011-10-17: |
What I want out of stable device names
|
| 2011-10-15: |
Why I say Fedora 15 could get my machine's Ethernet's name right
The problem with Fedora 15's consistent network device naming
|
| 2011-10-14: |
Power consumption numbers for my 2011 home machine
|
| 2011-10-13: |
The problem with event loops
|
| 2011-10-12: |
The true cost of sysadmin time (actually, of anyone's time)
|
| 2011-10-11: |
Why people are attracted to minimal language cores
|
| 2011-10-10: |
Arranging scopes for for loops
|
| 2011-10-09: |
My view of the state of graphics cards for Linux (in fall 2011)
|
| 2011-10-08: |
My new Linux machine for fall 2011 (planned)
|
| 2011-10-07: |
Python's philosophy of what closures close over
|
| 2011-10-06: |
Thinking about event loops versus threads
|
| 2011-10-05: |
Understanding the motivations of mail service vendors
|
| 2011-10-03: |
On CPython, cell objects, and closures
My idea of how a modern mailing service should work
|
| 2011-10-02: |
Another comment spam precaution that no longer works out
|
| 2011-10-01: |
Understanding a tricky bit of Python generators
|
| 2011-09-30: |
Some thoughts from a close view of catastrophe
Unit testing by analogy to scientific hypotheses
|
| 2011-09-28: |
A multilevel view of DevOps (with more balance)
Oracle shows its appreciation for long-term Sun customers again
|
| 2011-09-26: |
DevOps and the blame problem: an outsider's view
|
| 2011-09-25: |
How we handle iSCSI device names in Solaris
Danger signs for mail senders in SMTP conversations
|
| 2011-09-24: |
Some recent Google spam problems
|
| 2011-09-23: |
Python's attribute lookup order
|
| 2011-09-22: |
An operational explanation of Python types
|
| 2011-09-21: |
I've surrendered on utm_* query parameters in URLs
|
| 2011-09-20: |
Why I still comment out code even with a VCS
|
| 2011-09-19: |
An operational explanation of Python metaclasses (part 4)
|
| 2011-09-18: |
An operational explanation of Python metaclasses (part 3)
|
| 2011-09-17: |
An operational explanation of Python metaclasses (part 2)
|
| 2011-09-16: |
Setting the character encoding for HTML form input
|
| 2011-09-15: |
How your Linux installer should help you set up filesystems
|
| 2011-09-14: |
Graphs are not enough (for your monitoring system)
|
| 2011-09-13: |
'Web of trust' is a security failure
|
| 2011-09-12: |
An operational explanation of Python metaclasses (part 1)
|
| 2011-09-11: |
The weakness of the certificate authority model, illustrated
|
| 2011-09-09: |
You really want to put your switches in server racks
Things that could happen to your archives
|
| 2011-09-08: |
Archival storage in the modern world
|
| 2011-09-06: |
How not to set up your DNS (part 21)
|
| 2011-09-05: |
The real reason why true asynchronous file IO is hard
|
| 2011-09-04: |
Why true asynchronous file IO is hard, at least for reads
How some Unixes did shared libraries in the old days
|
| 2011-09-03: |
The core of modern Unix shared libraries
|
| 2011-09-01: |
Things I will do differently in the next building power shutdown
|
| 2011-08-31: |
An interesting debugging experience (another tale from long ago)
Who is the audience for a trouble ticket update?
|
| 2011-08-29: |
Devirtualization
Designing services for disengagement
|
| 2011-08-28: |
The problem with busy sysadmins
|
| 2011-08-26: |
Why we don't use a trouble ticketing system
The problem for WSGI middleware
|
| 2011-08-25: |
Trouble ticketing systems and the future
|
| 2011-08-24: |
Why we have a problem with Oracle's Solaris support pricing
|
| 2011-08-23: |
Reading the tea leaves about Oracle, Solaris, and universities
|
| 2011-08-22: |
V8's neat encoding trick for type tracking
|
| 2011-08-21: |
The conflict between caching and tracking on the web
|
| 2011-08-20: |
Why browsers can't really change or validate Last-Modified
|
| 2011-08-19: |
Visibility: an advantage of automation
|
| 2011-08-18: |
You should always use super()
|
| 2011-08-17: |
MH is an iceberg
|
| 2011-08-16: |
An interesting way to shoot yourself in the foot and a limitation of super()
|
| 2011-08-15: |
A bit about what life was like on Unix before shared libraries
|
| 2011-08-14: |
The tragedy of MH
|
| 2011-08-12: |
A Gnome 3 shell extensions failure
One reason we install machines from checklists instead of via automation
|
| 2011-08-11: |
Friendly 'noreply' email addresses
|
| 2011-08-10: |
The 'key plus authenticator' pattern in web apps
|
| 2011-08-08: |
You need to hash web app session IDs
An incomplete list of the ways around MAC address blocking
|
| 2011-08-07: |
What I want out a Symbol type in Python
|
| 2011-08-06: |
Gnome 3: I'm out
|
| 2011-08-05: |
Why sysadmins don't just notify users about compromised machines
|
| 2011-08-04: |
On banning MAC addresses
|
| 2011-08-03: |
How I encode and decode the milter protocol (or, how to write a codec for a sane binary protocol)
|
| 2011-08-02: |
How to make yourself look bad: broken bounce addresses
|
| 2011-07-31: |
Reference counting and multiple inheritance in (C)Python
One of my testing little dirty secrets
|
| 2011-07-29: |
Deciding the meaning of 'disabling' an account (and the value of procedures)
|
| 2011-07-28: |
A directory service doesn't make it easy to disable user accounts
Another reason why version control systems should support history rewriting
|
| 2011-07-27: |
Why not YP, er, NIS
|
| 2011-07-26: |
Disabling an account can be kind of complex
|
| 2011-07-25: |
The risks of using CentOS are split
A little thing that irritates me about common WSGI implementations
|
| 2011-07-24: |
On documenting (or not documenting) binary protocols
|
| 2011-07-23: |
What good secure string expansion on Unix should look like
|
| 2011-07-22: |
String expansion and securely running programs on Unix
|
| 2011-07-20: |
Why I would like my mailer to have a real programming language (part 2)
Our ZFS spares handling system (part 3)
|
| 2011-07-18: |
Thinking about when SQL normalization can improve performance
My view on ORMs
|
| 2011-07-17: |
Another reason to reject spam at SMTP time: as a signal
|
| 2011-07-15: |
Ubuntu, illustrating how to utterly fail at kernel security updates
Something to remember: HTML forms are anonymous
|
| 2011-07-14: |
Ramblings on handling optional arguments in Python
|
| 2011-07-12: |
Why I'm going to be skipping Fedora 15
Some thoughts on creating simple and sane binary protocols
|
| 2011-07-11: |
mxiostat: second generation better Linux disk IO statistics
Some things to think about when doing polymorphic WSGI
|
| 2011-07-10: |
Exploiting polymorphic WSGI again to create cat
|
| 2011-07-08: |
My view on iSCSI performance troubleshooting
|
| 2011-07-07: |
An interesting gotcha with Exim and .forward processing
How Exim makes traditional .forward semantics work
|
| 2011-07-06: |
Our solution to the spam forwarding problem
|
| 2011-07-05: |
Another reason to allow mail origin address forgery
|
| 2011-07-04: |
Our ZFS spares handling system (part 2)
|
| 2011-07-03: |
Why Ubuntu's PAM versioning failure matters
|
| 2011-07-02: |
Dear Googlebot: SMTP is not HTTP
|
| 2011-06-30: |
Some ways to test if a program securely runs other programs
Please have symmetric option negotiations in your protocols
|
| 2011-06-29: |
Our ZFS spares handling system (part 1)
|
| 2011-06-28: |
How to securely run programs from inside your program on Unix
|
| 2011-06-27: |
Formatting information output to make it easy to manage
|
| 2011-06-26: |
Design systems to be managed
|
| 2011-06-25: |
A small wish about parked and squatted domains
|
| 2011-06-23: |
Milter tools for Python and an experiment with coding in public
The ZFS opacity problem and its effect on manageability
|
| 2011-06-22: |
A basic Namespace metaclass for Python
Abusing Python classes as namespaces
|
| 2011-06-20: |
It's long since time for languages to provide sensible network IO
What I need for stream decoding and encoding binary protocols
|
| 2011-06-19: |
The Unix shell initialization problem and how shells should work
|
| 2011-06-18: |
My xdm heresy
|
| 2011-06-17: |
cgroups: so close and yet so far away from per-user fair scheduling
|
| 2011-06-16: |
My three sorts of (Linux) desktops
|
| 2011-06-15: |
The persistence of spammers, illustrated
|
| 2011-06-14: |
A package dependency failure in Fedora 15
|
| 2011-06-13: |
An example of the evolution of a real network
|
| 2011-06-12: |
Noting some wandering thoughts on the occasion of an anniversary
Why [], {}, and () are cheap in Python
|
| 2011-06-11: |
Some notes on __slots__ and class hierarchies
|
| 2011-06-10: |
What __slots__ are good for (or, how to use slots to save memory)
|
| 2011-06-09: |
My issues with Chrome's handling of extensions
More impressions of Google Chrome
|
| 2011-06-08: |
OpenBSD pf rule numbers and tcpdump filtering
|
| 2011-06-07: |
Databases as a compromise damage limiter in web applications
|
| 2011-06-06: |
How much space a Python dictionary entry uses
|
| 2011-06-05: |
A subtle difference between tuples and lists in CPython
|
| 2011-06-04: |
Sometimes having a system programmer around is the right answer
|
| 2011-06-03: |
Ints, __slots__, and Python 3
|
| 2011-06-02: |
My understanding of SQL normalization
|
| 2011-05-31: |
The programmer's problem with WikiText systems
How to fail at versioning
|
| 2011-05-30: |
My recent experience with Firefox's speed
|
| 2011-05-29: |
Getting the stages of the class namespace straight
|
| 2011-05-28: |
The stickyness of Fedora 8 (despite my better intentions)
|
| 2011-05-26: |
You can get 'stale filehandle' errors for local files on extN filesystems
|
| 2011-05-25: |
More not supporting random query parameters in URLs
How Django's form field ordering works
|
| 2011-05-24: |
Proper SQL database design versus the real world
|
| 2011-05-23: |
An aside on RAID-5/RAID-6 and disk failures
|
| 2011-05-22: |
Why losing part of a striped RAID is fatal even on smart filesystems
|
| 2011-05-21: |
One of my irritations: outgoing email that was scored as spam
|
| 2011-05-20: |
Why the kernel does mmap() (beyond efficiency)
|
| 2011-05-19: |
One limitation of simple bisection searches in version control systems
|
| 2011-05-18: |
Why open source projects should use 'git rebase' or the equivalent
|
| 2011-05-17: |
What we could use 10G Ethernet for in the near future
|
| 2011-05-16: |
How our network is implemented (as of May 2011)
|
| 2011-05-15: |
The most interesting reason for an unrouted sandbox network
|
| 2011-05-14: |
Our environment illustrated: what network cable colours mean what
|
| 2011-05-13: |
Our network layout (as of May 2011)
|
| 2011-05-11: |
How ZFS lets you recover from damaged metadata, and what the limitations are
|
| 2011-05-10: |
An important way to get ZFS metadata corruption
A brief summary of how ZFS updates (top-level) metadata
The different ways that you can lose a ZFS pool
|
| 2011-05-09: |
X and the misleading claim of 'mechanisms not policy'
|
| 2011-05-08: |
Fvwm as a window manager construction kit
|
| 2011-05-07: |
Email has two faces today
|
| 2011-05-06: |
A realization about cache entry lifetime and validation
|
| 2011-05-05: |
Thinking about when not disabling iSCSI's InitialR2T matters
|
| 2011-05-04: |
Why xterm's cut and paste model is non-standard and limited
|
| 2011-05-03: |
The importance of xterm for X Windows
|
| 2011-05-02: |
The apparent origins of some odd limitations in the iSCSI protocol
|
| 2011-04-30: |
Our likely iSCSI parameter tuning
|
| 2011-04-29: |
Understanding the iSCSI protocol for performance tuning
|
| 2011-04-28: |
How CPython implements __slots__ (part 2): access
|
| 2011-04-27: |
Mail rejection stats for our external mail gateway
Some notes on what __dictoffset__ on types means in CPython
|
| 2011-04-26: |
A quick look at some spam filtering stats from our system
|
| 2011-04-25: |
An important note about multi-line log message formats
|
| 2011-04-24: |
Notes to myself on the priorities of Linux routing policy rules
|
| 2011-04-23: |
The Upstart dependency problem
|
| 2011-04-21: |
Nailing down new-style classes and types in Python
How CPython implements __slots__ (part 1): storage
|
| 2011-04-19: |
Another reason to avoid using __slots__ in your Python classes
A difference between Python 'structs' and C structs
|
| 2011-04-18: |
What made X Windows so special
|
| 2011-04-17: |
The ultimate (for now) answer for our ZFS ARC size problem
|
| 2011-04-16: |
Cache validators versus cache invalidation
|
| 2011-04-15: |
Why a dynamic website with caching is simpler than a baked site
|
| 2011-04-14: |
More on baking websites to static files and speed
|
| 2011-04-13: |
Some common caching techniques for dynamic websites
|
| 2011-04-11: |
You don't need to bake your site to static files to be fast
The importance of test suites for standards
|
| 2011-04-10: |
The evolution of the git tree format
|
| 2011-04-08: |
An example of modifying a Firefox extension
|
| 2011-04-07: |
Why I don't like Solaris boot archives, illustrated
|
| 2011-04-06: |
Monkey subclassing for fun and profit
|
| 2011-04-05: |
The story of leaving N% of your filesystem unused for performance
|
| 2011-04-04: |
Why logging to syslog is different than logging to standard error
Logs are not just streams
|
| 2011-04-03: |
Please don't alert based on percentages
|
| 2011-04-02: |
How to use gdb to call getpeername()
|
| 2011-03-31: |
A slightly unobvious trap with 'from module import *'
A really annoying gap in system observability
|
| 2011-03-30: |
A realization about code complexity and clarity
|
| 2011-03-28: |
Why you should avoid 'from module import whatever'
The problem with contributing documentation to projects
|
| 2011-03-27: |
Some thinking on proliferating web standards
|
| 2011-03-26: |
How not to issue Linux kernel security update notices
|
| 2011-03-25: |
Sending email via a SMTP connection considered harmful
|
| 2011-03-24: |
XHTML and web authoring folklore
|
| 2011-03-22: |
How to add and use additional fields on Django model formsets
Some notes on doing things with Django model formsets
|
| 2011-03-21: |
Why XHTML was doomed from the beginning
|
| 2011-03-20: |
The devil's advocate argument against paying attention to web standards
|
| 2011-03-19: |
The two sides of (PPPoE) DSL service
|
| 2011-03-18: |
How to configure a (PPPoE) DSL connection on a normal Fedora 14 Gnome desktop
|
| 2011-03-17: |
The timing of production Linux deployments
|
| 2011-03-16: |
Thinking about our alternatives to Solaris
|
| 2011-03-15: |
Our uncertain future with Solaris 11
|
| 2011-03-14: |
Why growing IPv6 usage is going to be fun, especially for sysadmins
|
| 2011-03-13: |
Why programs traditionally used spares files on Unix
|
| 2011-03-12: |
Trust betrayed: a story of modern email
|
| 2011-03-11: |
What tools I use to deal with email
|
| 2011-03-10: |
What we did to get iSCSI multipathing working on Solaris 10 update 8
|
| 2011-03-09: |
Why feed readers have been a geek flash in the pan
|
| 2011-03-08: |
My personal hard drive capacity curve inflection point
|
| 2011-03-07: |
What terminal emulators I use when
|
| 2011-03-06: |
A fun Linux kernel pty problem, or maybe it's not a problem
|
| 2011-03-05: |
FastCGI's encoding mistakes and how not to design a wire protocol
|
| 2011-03-04: |
Why I call FastCGI complex and SCGI much simpler
|
| 2011-03-02: |
The POSIX shell and the three sorts of Unixes
Filtering, email, and differences from Usenet
|
| 2011-02-28: |
The evolution of filtering (a story from the Usenet era)
The slowdown of Solaris here
|
| 2011-02-27: |
Django's forms are security-smart the way you want them to be
|
| 2011-02-26: |
A belated realization about web spiders and your page cache
|
| 2011-02-25: |
Why I am not enthused about ZFS for my root filesystem
|
| 2011-02-23: |
Handling variations of a page (or, the revenge of REST)
A quick tour of my desktop
|
| 2011-02-22: |
Why I want read-only form fields in Django
|
| 2011-02-21: |
How to get automatic volume management on Fedora 14 without Gnome
|
| 2011-02-20: |
What windows I use window titlebars on
|
| 2011-02-19: |
My view on window titlebars and when they are good and bad
|
| 2011-02-18: |
Another building block of my environment: xrun
|
| 2011-02-17: |
My latest crazy plan to upgrade my home Linux machine
|
| 2011-02-16: |
The myth of isolated, independent sysadmins
|
| 2011-02-15: |
More on an advantage of the blog approach to web writing
|
| 2011-02-14: |
Thinking about misunderstandings (in systems)
|
| 2011-02-13: |
A humbling experience with '#' characters in filenames
|
| 2011-02-12: |
An advantage of the blog approach to web writing versus the wiki approach
|
| 2011-02-11: |
The letdown
|
| 2011-02-10: |
Using Django forms with HTTP GETs
|
| 2011-02-09: |
On flow (a digression)
|
| 2011-02-08: |
Thinking realistically about SQL database field sizes
|
| 2011-02-07: |
My brute force email archive
|
| 2011-02-06: |
Dear Unix mailers: please allow more forgery
|
| 2011-02-05: |
A side note on Google Chrome and the future of HTML
|
| 2011-02-04: |
Why people put NFS mounts in subdirectories
|
| 2011-02-03: |
The real lesson of XHTML
|
| 2011-02-02: |
Django and primary keys versus surrogate keys
My issues with primary keys are not Django specific
|
| 2011-01-31: |
There are two sorts of standards in the world
A little advantage of Django's automatic primary keys
|
| 2011-01-30: |
An obvious realization about SQL foreign keys
|
| 2011-01-29: |
Two things I have discovered about Django schema design
The amusement of minimalist spam
|
| 2011-01-28: |
On programming (and me)
|
| 2011-01-27: |
Not very much about Solaris NFS filehandles
|
| 2011-01-26: |
The various ways of writing a modern Python web app
|
| 2011-01-25: |
The modern Python web application stack (as I understand it)
|
| 2011-01-24: |
Poison pills, a tale of interrupts versus highly structured systems
|
| 2011-01-23: |
The question of how long our greylisting interval should be
|
| 2011-01-22: |
The clash between wikis and blogging
|
| 2011-01-21: |
A bit more on listing file locks on Solaris 10
|
| 2011-01-20: |
Something I've worked out about Django's admin interface
|
| 2011-01-18: |
What I am trying to do with Django
|
| 2011-01-17: |
Wrestling with how to design a schema for a Django app
|
| 2011-01-16: |
More on Linux FHS and /var
Why I don't use either a thin client or a fat client
|
| 2011-01-15: |
Linux's FHS is not the right answer for where to put data directories
|
| 2011-01-14: |
Wikis are not a simple solution for blogging
|
| 2011-01-13: |
One of SELinux's problems is that it's a backup mechanism
|
| 2011-01-11: |
My problem with SELinux
The optimistic view of SELinux's real purpose
|
| 2011-01-10: |
Why really high computer security is not interesting to most people
|
| 2011-01-09: |
What would be nice for SSL is out-of-band certificate binding
|
| 2011-01-08: |
Finding out if you've been hit by careful, clever spammers
|
| 2011-01-07: |
More modest suggestions for bug trackers
|
| 2011-01-06: |
An appreciation for the Posix $( ) command substitution syntax
|
| 2011-01-05: |
An actual use for the CSS overflow property
|
| 2011-01-04: |
A new building block of my environment: dmenu
|
| 2011-01-03: |
On improved but less functional versions of things
|
| 2011-01-02: |
Why there is a gulf between shells and scripting languages
|
| 2010-12-31: |
The only way to really be secure with SSL
One group that can sensibly use non-GPL'd Linux kernel modules
|
| 2010-12-30: |
Why you need select() even with communication channels
|
| 2010-12-29: |
Spam as a tax on public participation in open source projects
|
| 2010-12-28: |
A modest proposal for fixing your bug tracker
|
| 2010-12-27: |
Users don't care about security
|
| 2010-12-26: |
A lesson for myself: write tests. Really.
|
| 2010-12-25: |
Garbage-collected languages and memory allocation failures
|
| 2010-12-24: |
The jurisdiction problem with making SSL CAs liable for things
|
| 2010-12-23: |
More on the Unix interpreter startup problem
|
| 2010-12-22: |
The Unix interpreter problem(s)
|
| 2010-12-21: |
Why I want tests to be easy to write
|
| 2010-12-20: |
I don't understand how to test complex data structures
|
| 2010-12-19: |
A tale of memory allocation failure
|
| 2010-12-17: |
A Python (non-)idiom that I should really avoid
Sometimes bugs have very small edit distances
|
| 2010-12-16: |
The elements of a non-event
|
| 2010-12-15: |
Always remember that people make mistakes
|
| 2010-12-13: |
Fumbling towards understanding how to use DRBD
A program that I want to write: a 'sink' SMTP server
|
| 2010-12-12: |
One problem with the files-in-directory approach to configuration
|
| 2010-12-11: |
The danger of having system programmers around, illustrated
|
| 2010-12-10: |
How to get sysadmins to never use your software again
|
| 2010-12-09: |
A small request for C programmers: no static locals
|
| 2010-12-08: |
Exploring a limitation of the DTrace fbt provider (on x86)
|
| 2010-12-07: |
More on https as a necessary mistake
|
| 2010-12-06: |
What performance anomalies mean
|
| 2010-12-05: |
A log message format mistake that I've made
|
| 2010-12-03: |
Asking users questions never increases security
Why https was a mistake, but an inevitable one
|
| 2010-12-02: |
My view of OpenSolaris and Illumos
|
| 2010-11-30: |
A modest idea on how to get people to use Fedora Rawhide
|
| 2010-11-29: |
Why low quality encryption is not better than no encryption
Why 10G Ethernet is not a near-term issue for us
|
| 2010-11-28: |
Why I am harsh on Solaris Live Upgrade and similar tools
|
| 2010-11-27: |
Why I'm not really interested in Solaris's Live Upgrade stuff
|
| 2010-11-26: |
My view on Wayland replacing X in Linux
|
| 2010-11-25: |
An example of the progress of the modern web
|
| 2010-11-24: |
My oddly inconsistent caution (or paranoia) with email addresses
|
| 2010-11-22: |
Where to find the Illumos source repository
|
| 2010-11-21: |
Why I think some coding tricks are especially damaging
|
| 2010-11-20: |
Why I avoid DSA when I have a choice
More on those Python import oddities
|
| 2010-11-18: |
My current Apache SSL cipher settings
Thinking about how long our infrastructure will last
|
| 2010-11-16: |
When good ideas go bad: how not to do a file chooser dialog
|
| 2010-11-15: |
The language dilemma for production software
|
| 2010-11-14: |
Four reasons to have a firewall
The ordering of SSL chain certificates
|
| 2010-11-13: |
How os.path exposes some Python import weirdness
|
| 2010-11-11: |
The changing assumptions about viruses in email
Some yum tricks with distro-sync and --releasever
|
| 2010-11-09: |
Directory link counts and a find trick
|
| 2010-11-08: |
A find optimization and a piece of history, all in one
When Linux's rp_filter might make sense
|
| 2010-11-07: |
When you should care about security
|
| 2010-11-06: |
Modern versions of Apache and Redirect
|
| 2010-11-05: |
GNU sort and -k: a gotcha
|
| 2010-11-04: |
What we (currently) use virtualization for
|
| 2010-11-03: |
One reason that I call us a midsized environment
|
| 2010-11-01: |
Redirecting from HTTP to HTTPS is a bad security idea
|
| 2010-10-31: |
How I run two Firefoxes at once and still have remote control
How I set up my isolated testing Firefox environment
|
| 2010-10-30: |
A very convenient trick: having a testing browser
|
| 2010-10-29: |
What problems the Maildir mail storage format solves
|
| 2010-10-27: |
An extra problem with not documenting things in open source modules
A modern VCS mistake enabled by working on live trees
|
| 2010-10-26: |
Why Python's struct module isn't great for handling binary protocols
|
| 2010-10-24: |
Why we built our own ZFS spares handling system
Why I'm interested in Go
|
| 2010-10-23: |
My issues with Go's net package
|
| 2010-10-22: |
My theory on Unix's one chance to have a standard GUI
|
| 2010-10-21: |
The problems with testing for round-trip capable codecs
|
| 2010-10-20: |
Round-trip capable character encodings in Python
|
| 2010-10-18: |
A module that I want in the standard library: Parsing
The cache eviction death spiral
|
| 2010-10-17: |
Read IO is generally synchronous (unlike write IO)
|
| 2010-10-16: |
The attraction of the milter protocol
|
| 2010-10-15: |
How big our fileserver environment is (part 2)
|
| 2010-10-13: |
How big our fileserver environment is (part 1)
Why visited links being visible is important for blog usability
|
| 2010-10-12: |
Why non-linear directories have not been popular in filesystems
|
| 2010-10-11: |
The Unix directory problem and the history of directories
|
| 2010-10-10: |
Fixing Upstart's coupling of startup script presence and activation
|
| 2010-10-09: |
An illustration of how careful and clever spammers are today
|
| 2010-10-08: |
Why I am unhappy with Upstart right now
|
| 2010-10-07: |
In universities, you often buy hardware when you can
|
| 2010-10-06: |
What is going on with Samba's POSIX locking on NFS on Linux
|
| 2010-10-05: |
Why people combine NFS with Samba servers
|
| 2010-10-04: |
Linux, Samba, NFS, and POSIX locking
|
| 2010-10-03: |
An API mistake Unix has made several times
|
| 2010-10-02: |
ZFS resilvers are a whole-pool activity
|
| 2010-09-30: |
Stopping kernel updates on Ubuntu
A lot of my bugs are conceptual oversights
|
| 2010-09-29: |
A surprise about random IO versus unnecessary IO
|
| 2010-09-27: |
Why there is no POSIX standard for a Unix GUI
Why Grub2 doesn't solve my Ubuntu kernel problem
|
| 2010-09-26: |
The problems with OpenSolaris
|
| 2010-09-25: |
How Usenet used to be a filesystem stress test
|
| 2010-09-24: |
Frames were never necessary for menus and tables of contents
|
| 2010-09-23: |
Why things should be in Python's standard library
|
| 2010-09-22: |
The mysteries of video cards for Linux
|
| 2010-09-20: |
Dear Solaris boot sequence: SHUT UP
|
| 2010-09-19: |
Your on the fly control system should not use toggles
Some notes on (dynamic) Bind 9 logging
|
| 2010-09-18: |
Another reason why I don't like Ubuntu kernel packaging
|
| 2010-09-17: |
More on the module selection problem
|
| 2010-09-15: |
Why I like modules to be in the Python standard library
An overview of the Debian and RPM source package formats
|
| 2010-09-14: |
A confession: I find third party modules awkward in Python
|
| 2010-09-13: |
Why you want a recursive-forwarding caching nameserver
|
| 2010-09-12: |
Keyword expansion: why RCS rewrites files when you commit them
One aspect of getting used to modern version control
|
| 2010-09-11: |
A simple thing that every package management system should have
|
| 2010-09-10: |
Go's network package and IPv6 (and my ideal version thereof)
|
| 2010-09-09: |
Go, IPv6, and single binding machines
|
| 2010-09-07: |
My new view of DomainKeys
|
| 2010-09-06: |
Sorting out DomainKeys and understanding its limits
|
| 2010-09-05: |
An observation from changing my password
A plan to deal with my feed reader problem
|
| 2010-09-04: |
The laziness of a programmer, illustrated
|
| 2010-09-03: |
Finally understanding the attraction of AJAX
|
| 2010-09-02: |
Why Python's global is necessary
|
| 2010-08-31: |
I don't understand how net.ipv4.conf.*.rp_filter can work
|
| 2010-08-30: |
My avoidance of Python global variables
|
| 2010-08-29: |
A Bourne shell irritation: no wildcard matching operator
How many uberblock copies ZFS writes on transaction group commits
|
| 2010-08-28: |
The different between an SMTP proxy and a SMTP relay
|
| 2010-08-27: |
My impressions of Google Chrome so far
|
| 2010-08-25: |
A Windows moment on my laptop
The limitation of templates for web design changes
|
| 2010-08-24: |
A design mistake in my comments form
|
| 2010-08-23: |
Why I hate the Solaris 10 version of /bin/sh
My (probably wrong) assumption about Flash on Fedora
|
| 2010-08-22: |
Another reason to hate $LANG and locales on Unix
|
| 2010-08-21: |
A sudden realization about Unix access time updates and disk mirrors
|
| 2010-08-20: |
A clever blog anti-usability trick
|
| 2010-08-19: |
Getting Flash to work on my upgraded 64-bit Fedora 13 machine
|
| 2010-08-18: |
Please, no automatic scrolling to the next item
|
| 2010-08-17: |
The two sorts of Referer spam that I see
|
| 2010-08-16: |
What OpenSolaris's death probably means for us
|
| 2010-08-15: |
Why I change font sizes
|
| 2010-08-14: |
What I want in a caching nameserver
|
| 2010-08-13: |
PPP over ssh: solving problems with indirection
|
| 2010-08-12: |
Many programs should provide an easy way to change font size
|
| 2010-08-11: |
You should have a way to purge history
|
| 2010-08-10: |
Upgrading to Fedora 13 with my first yum upgrade
|
| 2010-08-08: |
The joy of debugging other people's programs
A personal view of the Fedora versus Ubuntu issue
|
| 2010-08-07: |
Why buying a Linux machine is not such a simple thing
|
| 2010-08-06: |
A thing I miss in the modern X world: command line arguments
|
| 2010-08-05: |
Doing unsigned 32-bit integer math in Python
|
| 2010-08-04: |
Good Solaris news from Oracle for once
|
| 2010-08-02: |
How OpenBSD's pf source-hash maps internal IPs to NAT pool IPs
|
| 2010-08-01: |
The consequence of Oracle's Solaris decisions
|
| 2010-07-31: |
The other peculiar effects of grant funding at universities
It's the indirect failure modes that will get you
|
| 2010-07-30: |
A little modern Unix twitch
|
| 2010-07-29: |
Some brief notes on OpenSSH's known_hosts hashing
|
| 2010-07-28: |
My Fedora 8 problem: upgrading
|
| 2010-07-27: |
What I would now do differently in a file based blog engine
|
| 2010-07-25: |
Why sysadmins almost never replace distribution packages
iSCSI versus NFS
|
| 2010-07-24: |
Thinking about the implications of your program being successful
|
| 2010-07-23: |
A realization about why my inbox keeps being my to-do tracker
|
| 2010-07-22: |
Why keeping /etc under version control doesn't entirely help
|
| 2010-07-21: |
The easy way to do fast OS upgrades
|
| 2010-07-20: |
The sysadmin view of messages from programs
|
| 2010-07-19: |
Why blog calendar widgets are bad
|
| 2010-07-18: |
How I solve the configure memory problem
|
| 2010-07-17: |
More building blocks of my environment: tkrxterm, tkssh, and pyhosts
|
| 2010-07-16: |
Realistic blog usability
|
| 2010-07-14: |
Making the Linux kernel shut up about segfaulting user programs
The challenges of shared spares in RAID arrays
|
| 2010-07-13: |
Sun Support's habit of publicizing private bug reports
Single-level list flattening in Python
|
| 2010-07-12: |
On (not) logging calculated statistics
|
| 2010-07-11: |
When is using SQL the right answer?
|
| 2010-07-10: |
People forget exceptions
|
| 2010-07-08: |
Unix programs should avoid exiting non-zero for clever reasons
|
| 2010-07-07: |
A gotcha with the Bourne shell's set -e and &&
|
| 2010-07-06: |
How zpool status reports on ZFS scrubs and resilvers
ZFS scrubs and resilvers are not sequential IO
|
| 2010-07-05: |
A thesis: noisy email addresses are dead
|
| 2010-07-03: |
/u, one of our long-standing Unix customizations
Returning to the era of 'duplicated' Ethernet addresses
|
| 2010-07-02: |
A gotcha with Python's socket.htonl() and ntohl()
A corollary to the limits of anti-spam precautions
|
| 2010-06-30: |
An update on comment spammer behavior here on WanderingThoughts
|
| 2010-06-29: |
Converting between IPv4 addresses and 32-bit integers in Python
There is such a thing as too much SQL (a reminder to myself)
|
| 2010-06-28: |
The great irritation of hidden access controls
|
| 2010-06-27: |
How we propagate password information in our fileserver infrastructure
|
| 2010-06-26: |
The Unix system UID and login name problem
|
| 2010-06-25: |
Python class definitions can be nested
|
| 2010-06-24: |
The elements of fileserver infrastructure
|
| 2010-06-23: |
The advantages of separate machines for separate things
|
| 2010-06-22: |
Why feed readers are not good for skimming things
|
| 2010-06-21: |
Applying low distraction design to alerting systems
|
| 2010-06-20: |
How my mail notifier avoids interrupting me
|
| 2010-06-19: |
Don't make your 'I am processing' animation too complex
|
| 2010-06-18: |
ZFS and multi-pool shared spares
|
| 2010-06-17: |
One reason why I prefer browser windows to browser tabs
|
| 2010-06-16: |
The problem of testing firewall rules changes
|
| 2010-06-14: |
The practicalities of non-GPL'd Linux kernel modules
A thought on feed readers versus the social web
|
| 2010-06-13: |
A (surprising) missing Unix tool program
|
| 2010-06-12: |
iSCSI Enterprise Target 1.4.20.1 and disk write caches (and ZFS)
|
| 2010-06-11: |
What I know about ZFS and disk write caches
|
| 2010-06-10: |
What an iSCSI Enterprise Target kernel message really means
|
| 2010-06-09: |
The challenge of analyzing NFS packet traces
|
| 2010-06-08: |
Focusing on what you actually need in a program
|
| 2010-06-07: |
One problem with testing system changes
|
| 2010-06-06: |
The quiet death of postmaster@anywhere
|
| 2010-06-04: |
How to set up your module exceptions to be useful
How disk write caches can corrupt filesystem metadata
|
| 2010-06-02: |
A ZFS feature wish: rewriting read errors
|
| 2010-06-01: |
My sad little irritation with Twitter
|
| 2010-05-31: |
Another building block of my environment: sshterm
|
| 2010-05-30: |
The end of university-provided email is probably nigh
|
| 2010-05-29: |
UPSes: defense against problems, or sources of them?
Some comments on spam scoring and anti-spam tools in general
|
| 2010-05-28: |
Why I am really unhappy with ZFS right now: a ZFS import failure
|
| 2010-05-27: |
One benefit of relying on third-party (anti-)spam filtering
|
| 2010-05-25: |
Watch out for quietly degrading SATA disks
|
| 2010-05-24: |
Give your personal scripts good error messages
|
| 2010-05-23: |
Replacing modules for testing (and fun)
|
| 2010-05-22: |
How I fixed Google's search results redesign
Why I'm wrong about what sort of APIs C's stdargs allows
|
| 2010-05-21: |
An example of an API that you can't do with C stdargs
|
| 2010-05-20: |
The limitations of C's varargs support
|
| 2010-05-19: |
Why RPM's .rpmnew files don't work in practice
|
| 2010-05-18: |
An illustrated example of how not to do package updates
|
| 2010-05-16: |
You should also document why you didn't do attractive things
A theory about our jumbo frame switch firmware bug
|
| 2010-05-15: |
Why we don't use jumbo frames for iSCSI: a cautionary tale on testing
|
| 2010-05-14: |
A sysadmin mistake: shooting your virtual foot off
|
| 2010-05-13: |
Python exceptions for C programmers
|
| 2010-05-12: |
'Borrowing' IPv4 netblocks to get around address space exhaustion
|
| 2010-05-11: |
Retrospectives are uncommon
|
| 2010-05-10: |
A little vi twitch
|
| 2010-05-09: |
Why diskless Unix machines lost out
|
| 2010-05-08: |
SSL certificate vendors are selling a commodity
|
| 2010-05-06: |
Oracle's future for Sun's hardware and OS business is now clear
The right way and the wrong way to disable init.d services
|
| 2010-05-05: |
The right way to fix ZFS disk glitches (at least for us)
|
| 2010-05-04: |
Dear software packagers, startup scripts edition
|
| 2010-05-03: |
Keeping track of filesystem consistency
|
| 2010-05-02: |
A brief history of fsck
|
| 2010-04-30: |
A rule of thumb: Automate where you can make mistakes
Never kill the screen locker
|
| 2010-04-29: |
How you access an object can be important in Python
|
| 2010-04-28: |
Altering a Python function's local variables with a trace function
|
| 2010-04-27: |
Evolving our mail system step 1: adding an external mail gateway
|
| 2010-04-26: |
How we moved from a black-box mailer configuration to a white-box one
|
| 2010-04-25: |
An observation about Twitter (and Google)
|
| 2010-04-24: |
Evolving our mail system: the overview and our goals
|
| 2010-04-23: |
What per-partition disk IO stats you get from the Linux kernel
|
| 2010-04-22: |
The latest Solaris licensing and support rumbles
|
| 2010-04-21: |
The advantage of garbage collection for APIs
|
| 2010-04-20: |
Standard format Unix errors in Python programs
|
| 2010-04-19: |
Why you don't want to host your MTA machine in the cloud
|
| 2010-04-18: |
I think it's time to turn off automatic periodic ext3 fscks
|
| 2010-04-17: |
The 30 second elevator pitch on HTML 4.01 (vs XHTML)
|
| 2010-04-16: |
How to write to stderr so people will like you
|
| 2010-04-15: |
The standard format Unix error messages
|
| 2010-04-14: |
The myth of a completely shared knowledge base across sysadmins
|
| 2010-04-13: |
The impact of single-disk slow writes on mirrors (and other RAID arrays)
|
| 2010-04-12: |
The importance of figuring out low-level symptoms of problems
|
| 2010-04-11: |
The comedy potential inherent in people reusing your address space
|
| 2010-04-10: |
Why commands can never afford to get it wrong in a version
|
| 2010-04-09: |
The processing flow of a network copying program
|
| 2010-04-08: |
A little script: sshup
|
| 2010-04-07: |
Our current mail system's configuration
|
| 2010-04-06: |
How not to set up IP aliases on Ubuntu (and probably Debian)
|
| 2010-04-05: |
An important thing about how ZFS handles spares
|
| 2010-04-04: |
The problem with header and footer overlays on web pages
|
| 2010-04-03: |
A DVCS advantage for open source development
|
| 2010-04-02: |
Notes on the compatibility of crypted passwords on various Unixes
|
| 2010-03-31: |
Looking back at a year of our disk-based backup system
Remote applications and Gnome settings: an irritation
|
| 2010-03-30: |
One possible future for Solaris
|
| 2010-03-29: |
More signs of Oracle's view of Solaris
My theory on why our worklogs work for us
|
| 2010-03-28: |
The evolution of checklists in my work
|
| 2010-03-27: |
Testing in the face of popen()
|
| 2010-03-26: |
Tkinter sometimes has a busy-wait main loop (more or less)
|
| 2010-03-25: |
The problem with overly verbose package installation
|
| 2010-03-24: |
One reason why 'zpool status' can hang
|
| 2010-03-23: |
No DSL is 'human-readable' as such
|
| 2010-03-22: |
Why I exploit Python to shim modules for testing purposes
|
| 2010-03-21: |
The power of 'I like this' in social applications
|
| 2010-03-20: |
Web analytics versus GET parameter security
|
| 2010-03-19: |
The problem with general purpose languages as configuration languages
|
| 2010-03-17: |
How Solaris 10's mountd works
Another building block of my environment: rxterm
|
| 2010-03-16: |
The Solaris 10 NFS server's caching of filesystem access permissions
|
| 2010-03-15: |
How to create pointless error reports (and how not to)
|
| 2010-03-14: |
Space and content
|
| 2010-03-13: |
A surprising lack: milter clients
|
| 2010-03-12: |
End results versus what's inside the black box
|
| 2010-03-11: |
Why the pam_mail PAM module is not my friend
|
| 2010-03-10: |
Mythology about Unix workstations
|
| 2010-03-09: |
How not to design an API (in C): the enum ordering mistake
|
| 2010-03-08: |
Exceptions versus error return values
|
| 2010-03-07: |
Why I don't expect third-party support for OpenSolaris
|
| 2010-03-06: |
Pushing code changes upstream is hard work
|
| 2010-03-05: |
PCs are (or can be) Unix workstations
|
| 2010-03-04: |
You want to do spam forwarding on a separate machine
|
| 2010-03-03: |
All syndication formats use XML
|
| 2010-03-02: |
A building block of my environment: rxexec
|
| 2010-02-28: |
Why XML is terrible for configuration files
The dividing line between supporting code and forking it
|
| 2010-02-27: |
An 'email marketing' wish
|
| 2010-02-26: |
The remaining Unixes (and their manpages)
|
| 2010-02-25: |
Reading the Oracle tea leaves for Solaris
|
| 2010-02-24: |
How to listen on a socket in the modern IPv6-enabled world
|
| 2010-02-23: |
What Linux's getaddrinfo() is doing with IPv6 (on some versions)
|
| 2010-02-22: |
Unix portability and scripting language versions
|
| 2010-02-21: |
It's sinking in that Sun is gone
|
| 2010-02-20: |
Viral marketing versus word of mouth marketing
|
| 2010-02-19: |
Using socket.getaddrinfo to look up IP addresses
|
| 2010-02-18: |
Some notes on using socket.getaddrinfo()
|
| 2010-02-17: |
The purpose of configuration files
|
| 2010-02-16: |
A Linux gotcha about daemons and bindv6only
|
| 2010-02-15: |
IPv6 with Lighttpd on Linux
|
| 2010-02-14: |
Brief notes on IPv6 support in some Linux programs
|
| 2010-02-13: |
Some stuff on dual-bound IPv6 sockets on Linux
|
| 2010-02-12: |
The many IPv6 addresses of an IPv4 machine
|
| 2010-02-11: |
Forcing your webpage content to scroll is generally a bad idea
|
| 2010-02-10: |
Beware of using Linux's hostname -s switch
Some thoughts about 6to4
|
| 2010-02-09: |
Why your program should have an actual configuration file
|
| 2010-02-08: |
A thought on deliberately slow disaster recovery
|
| 2010-02-07: |
The problem with blog footnotes
|
| 2010-02-06: |
Why a laptop is not likely to be my primary machine any time soon
|
| 2010-02-05: |
Emergency procedures checklists need check steps
|
| 2010-02-03: |
Outdated documentation is especially risky for sysadmins
Link: Pollution in 1.0.0.0/8
How to destroy people's interest in updating documentation
|
| 2010-02-02: |
What charging credit cards doesn't prove
|
| 2010-01-31: |
More vim options it turns out that I want
Thinking about syndication feeds and spoilers
|
| 2010-01-30: |
I'm puzzled about DNS glue records in the modern world
|
| 2010-01-29: |
A theory about Apple's new iPad
|
| 2010-01-28: |
Always sign exactly what you are authenticating
|
| 2010-01-27: |
AT&T's mad unbundling and the damage it did to Unix
|
| 2010-01-26: |
Why the modern age is great
|
| 2010-01-25: |
You can only really expire cookies on the server
|
| 2010-01-24: |
How I should have done password crypto for DWiki
|
| 2010-01-23: |
A Python safety tip: Do notice that things can throw exceptions
|
| 2010-01-22: |
Three ways to get tracebacks in your CGI Python application
|
| 2010-01-20: |
The argument for not managing systems via packages
One of the things that killed network computers (aka thin clients)
|
| 2010-01-19: |
OpenSolaris versus Solaris
|
| 2010-01-18: |
More on mismatched sectors on Linux software RAID mirrors
|
| 2010-01-17: |
I do not like Unix's fossilization
|
| 2010-01-16: |
Different visions of what packaging systems are for
|
| 2010-01-15: |
Packaging systems should support overlays
|
| 2010-01-14: |
Packaging systems should be comprehensive
|
| 2010-01-13: |
One reason why you should not let people register other people
|
| 2010-01-12: |
How systems get created in the real world
|
| 2010-01-11: |
In praise of crash (and kernel source)
|
| 2010-01-10: |
Why the Solaris packaging system is bad
|
| 2010-01-09: |
Patch management is part of package management
|
| 2010-01-08: |
A brief and jaundiced history of Unix packaging systems
Interesting things can happen when you scale things up
|
| 2010-01-06: |
A theory on why most browsers control their own list of CA roots
The department's model for providing computing support
|
| 2010-01-04: |
Some thoughts on battery backup for RAID controller cards
Turning synchronous channels asynchronous
|
| 2010-01-03: |
Go interfaces are not my sort of interfaces
|
| 2010-01-02: |
Proper disclosure, or how not to be a comment spammer
|
| 2010-01-01: |
Brief bits from the evolving ipsCA failure
|
| 2009-12-31: |
Why free things are so attractive in universities
Look at your pull-based system for things that push
|
| 2009-12-30: |
Real world support periods are shorter than they look
|
| 2009-12-29: |
Solaris is not open source
|
| 2009-12-28: |
The annoying timing of future SSL certificate renewals
|
| 2009-12-27: |
Some OpenSSL and SSL certificate basics
|
| 2009-12-26: |
Things that limit the performance of hardware acceleration
|
| 2009-12-25: |
Linux's non-strict overcommit is the right default
|
| 2009-12-24: |
The advantages of open source software RAID
|
| 2009-12-23: |
Another demonstration of SSL Certification Authority (in)competence
|
| 2009-12-22: |
How not to set up your DNS (part 20)
Do you have a network layout diagram?
Using OpenID for local web application authentication
|
| 2009-12-20: |
Some things about getting useful output from time
Some thoughts on intercepting https traffic
|
| 2009-12-19: |
Local CAs and an interesting consequence of the SSL security model
|
| 2009-12-18: |
Secure or useful: pick one
|
| 2009-12-17: |
The good and bad of SQL
|
| 2009-12-16: |
How Linux software RAID is making me grumpy right now
|
| 2009-12-15: |
The high costs of true security paranoia in the face of compromises
|
| 2009-12-13: |
Sysadmin versus developer uses of version control systems
Mercurial versus git for sysadmins, or why we picked Mercurial
|
| 2009-12-12: |
You should always be able to get a program's version and basic usage
|
| 2009-12-11: |
A wish for KVM virtualization: simple bridged networking
|
| 2009-12-10: |
How not to copy a file to standard output in Python
|
| 2009-12-09: |
My views on inheritance versus interface
|
| 2009-12-08: |
Why I am not enthused about etckeeper and similar systems
|
| 2009-12-07: |
Why whitelists (and blacklists) are long-term poison for online systems
|
| 2009-12-05: |
Overcoming the drawbacks of preforking accept() servers
What version of Python is included in various current OSes
|
| 2009-12-04: |
Learning from Unicorn: the accept() thundering herd non-problem
|
| 2009-12-02: |
The problem with the OpenSolaris source repository
The mixed directory/unrelated files VCS problem
|
| 2009-11-30: |
Using content hashing to avoid the double post problem
Poking around the OpenSolaris codebase (for sysadmins)
|
| 2009-11-29: |
In security, you need to stop the root mistake
|
| 2009-11-28: |
'Conditional restart' in init.d scripts can be dangerous
|
| 2009-11-27: |
Modern version control systems change your directory layouts
|
| 2009-11-26: |
Some notes for myself on git bisect
|
| 2009-11-25: |
Why I love Unix, number N (for some N)
|
| 2009-11-24: |
An important lesson for me on Fedora upgrades
|
| 2009-11-23: |
Converting a directory from RCS to Mercurial
My current unhappy thoughts on Fedora 12
|
| 2009-11-22: |
RCS versus modern version control systems
|
| 2009-11-21: |
An update on faulted ZFS spares
|
| 2009-11-20: |
Spam and the attraction of reach
|
| 2009-11-19: |
The corollary for effective anti-spam heuristics
|
| 2009-11-18: |
Universities are open environments
|
| 2009-11-17: |
Finally understanding the appeal of 'Interfaces'
|
| 2009-11-16: |
'Is-a' versus 'is-a-descendant-of'
|
| 2009-11-15: |
A limitation of Python types from C extension modules
|
| 2009-11-14: |
How to defer things in Exim
|
| 2009-11-13: |
(Ab)using Exim routers for their full power
|
| 2009-11-12: |
What makes Exim work as a mailer construction kit
|
| 2009-11-11: |
For universities, the Internet world has fundamentally changed
|
| 2009-11-10: |
HTML5 may end up giving us real, working XHTML
|
| 2009-11-08: |
My problem with the obvious solution to my unexposed types problem
|
| 2009-11-07: |
Solving unexposed types and the limits of duck typing
A gotcha with Bash on Ubuntu 8.04
|
| 2009-11-06: |
A shell script thing that I have learned the hard way
|
| 2009-11-05: |
Why the NFS client is at fault in the multi-filesystem NFS problem
|
| 2009-11-04: |
The cause of the multi-filesystem NFS export problem
|
| 2009-11-02: |
Are security bugs always code bugs?
XHTML vs HTML5
|
| 2009-10-31: |
My thoughts on why invented standards succeed or fail
The risk continuum for standardization success
|
| 2009-10-30: |
Understanding hash length extension attacks
|
| 2009-10-29: |
Why per-process (or per-user) memory resource limits are hard
|
| 2009-10-28: |
Python modules should make visible their (fundamental) types
|
| 2009-10-27: |
A personal experience of web browsers making bad text editors
|
| 2009-10-26: |
What I think I understand about how standards get created
|
| 2009-10-25: |
Some thoughts on a 'modern' university email system
|
| 2009-10-24: |
Something I have realized about university services
|
| 2009-10-22: |
The limits of some anti-spam precautions
How to waste lots of CPU time checking for module updates
|
| 2009-10-21: |
Why you should be able to get a list of your local email addresses
|
| 2009-10-20: |
Simple mailing lists: an illustration of Exim's flexibility
|
| 2009-10-19: |
The case against backup MXes
|
| 2009-10-18: |
Backup MXes versus redundant MXes
|
| 2009-10-17: |
Automated web software should never fill in the Referer header
|
| 2009-10-16: |
A tale of network horror, or at least excitement
|
| 2009-10-15: |
One complexity of buffered IO on Unix
|
| 2009-10-14: |
Why 'invite-your-friends' features are spam from you, not your users
|
| 2009-10-13: |
There are two different uses of conditional GETs
|
| 2009-10-12: |
ZFS GUIDs vs device names
|
| 2009-10-11: |
Why security bugs aren't bugs
|
| 2009-10-10: |
You should delete obsolete data files
|
| 2009-10-09: |
A fun bug I once ran across
|
| 2009-10-08: |
What is going on with faulted ZFS spares
|
| 2009-10-07: |
A brief introduction to ZFS (disk) GUIDs
|
| 2009-10-06: |
The danger of software suspend on servers
|
| 2009-10-05: |
The problem with security bugs is that they aren't bugs
|
| 2009-10-04: |
Why Unix filesystems precreate lost+found directories
|
| 2009-10-03: |
One thing that top-posting is good for
|
| 2009-10-01: |
The rules for combining things with Bourne shell 'here documents'
|
| 2009-09-30: |
A little habit: cat >/dev/null
On (not) putting IP addresses in registration email
|
| 2009-09-28: |
Two ends of hardware acceleration
What I think about why graphics cards keep being successful
|
| 2009-09-27: |
Some suggestions for registration confirmation emails
Why you can no longer have an 'invite-your-friends' feature
|
| 2009-09-26: |
How our 'plug in and go' laptop network DHCP portal works
|
| 2009-09-25: |
How our DHCP registration portal redirections work
|
| 2009-09-24: |
SSL certificates require proper domain names
|
| 2009-09-23: |
A brief overview of the Solaris 10 nvpair library
|
| 2009-09-22: |
Some trivia about Python frame objects
|
| 2009-09-21: |
Exploring the frame object f_builtins member
|
| 2009-09-20: |
Why kernel packaging is so bad in Debian and Ubuntu
|
| 2009-09-19: |
Why I am not a fan of hardware acceleration
|
| 2009-09-18: |
Are you sure it's a C string?
|
| 2009-09-17: |
A trick to testing https setups on test machines
|
| 2009-09-16: |
Some kernel lockd NFS error messages explained
|
| 2009-09-14: |
Listing file locks on Solaris 10
Forwarding emails without false positives
|
| 2009-09-13: |
How modern CPUs are like (modern) disks
|
| 2009-09-12: |
My opinions on when you should let ZFS handle RAID stuff
|
| 2009-09-11: |
Why you should let ZFS handle the RAID stuff
|
| 2009-09-10: |
What I know about how ZFS actually handles spare disks
|
| 2009-09-09: |
Postfix versus Exim
|
| 2009-09-08: |
Some ways to avoid needing a public ticketing system
|
| 2009-09-07: |
A use for ticketing systems as your primary support method
|
| 2009-09-06: |
What typing ^D really does on Unix
|
| 2009-09-05: |
Why the Unix EINTR semantics (probably) exist
|
| 2009-09-03: |
An interesting issue with doing NFS over TCP (apparently)
Programming blindness and security
|
| 2009-09-02: |
Environment variables make bad switches
|
| 2009-08-31: |
How to deprecate bits of your program
The IO scheduler improvements I saw
|
| 2009-08-30: |
Some more thinking about requirements in specifications
|
| 2009-08-29: |
MUST versus SHOULD in your specifications
|
| 2009-08-28: |
ZFS changes filesystem device numbers on reboot
|
| 2009-08-26: |
What packages SystemTap requires on Ubuntu 8.04 (and others)
A frame object's f_locals isn't always the locals
|
| 2009-08-24: |
The problem with the CFQ IO scheduler and our iSCSI targets
Anti-spam content scanning systems need to scan more
|
| 2009-08-23: |
You should not use HTTP request parameters as filenames
|
| 2009-08-22: |
A gotcha with Python's new signal.siginterrupt()
|
| 2009-08-21: |
The danger of powerful generality, illustrated
|
| 2009-08-20: |
Python modules should not reinvent OSError
|
| 2009-08-19: |
Link: Using colour well in data visualization
Python, signal handlers, and EINTR
|
| 2009-08-18: |
Why user programs mapping page zero is so bad news on x86 hardware
|
| 2009-08-17: |
More accidental BitTorrent on our network
|
| 2009-08-16: |
Testing versus extensibility
|
| 2009-08-15: |
SSDs and the RAID resync problem
|
| 2009-08-14: |
Sorting out what 'passive ftp' is
|
| 2009-08-12: |
Undo is sometimes not good enough
One thing your mail-sending system should do
|
| 2009-08-11: |
The somewhat apocryphal history of comments in the Bourne shell
|
| 2009-08-10: |
The difference in the Bourne shell between : and #
|
| 2009-08-09: |
Building true ssh opportunistic connection sharing
|
| 2009-08-08: |
How I use ssh's connection sharing feature
|
| 2009-08-07: |
The basics of ssh's connection sharing feature
|
| 2009-08-06: |
A rule for Internet software
|
| 2009-08-05: |
A feature that I wish Linux package managers had
|
| 2009-08-04: |
A downside to syndication feed readers respecting permanent HTTP redirects
|
| 2009-08-02: |
Limitations on custom NFS mount authorization on Solaris
What you can't do before you drop setuid permissions
|
| 2009-07-31: |
Using SystemTap to trace the system calls of setuid programs on Linux
How fast various ssh ciphers are
|
| 2009-07-30: |
How we do custom NFS mount authorization on Solaris 10
|
| 2009-07-29: |
The shift-selection trick in X terminal programs
|
| 2009-07-28: |
Spammers are quite dedicated in their address scraping
|
| 2009-07-27: |
Why you should do code reviews for sysadmin scripts
|
| 2009-07-26: |
The anatomy of a hack to get around try:/finally: and generators
|
| 2009-07-25: |
When code in generators runs
|
| 2009-07-24: |
The usefulness of a syndication feed of your blog's comments
|
| 2009-07-22: |
Thinking like a security paranoid: an example
A peculiar change in Linux flock() and fcntl() behavior
|
| 2009-07-21: |
Packages should not contain both tools and policies
|
| 2009-07-20: |
Minimalistic spam, another annoyance to worry about
|
| 2009-07-19: |
The importance of making an issue visible
|
| 2009-07-18: |
Why NFS filehandles fail as access capabilities
|
| 2009-07-17: |
The hard problem of live major release upgrades
|
| 2009-07-16: |
Another reason to safely update files that are looked at over NFS
|
| 2009-07-15: |
A Bourne shell gotcha with ( ... ) command grouping
|
| 2009-07-13: |
Some stuff on NFS access restrictions
Shell scripts should not use absolute paths for programs
|
| 2009-07-12: |
A brief history of NFS server access restrictions
|
| 2009-07-11: |
What can go wrong in making NFS mounts
|
| 2009-07-10: |
An unpleasant surprise about ZFS scrubbing in Solaris 10 U6
|
| 2009-07-09: |
The high-level version of how mounting NFS filesystems works
|
| 2009-07-08: |
Fedora and workstations (on Linux distributions for desktops)
|
| 2009-07-07: |
Why and why not Fedora
|
| 2009-07-06: |
How you could do a shared root directory with NFS
|
| 2009-07-05: |
The coming Internet identity problem
|
| 2009-07-04: |
A side note on the cost of operations
|
| 2009-07-03: |
How software makes reverse proxying hard
|
| 2009-07-02: |
Finding out when a command in a pipeline fails
|
| 2009-06-30: |
A Unix irritation: pipeline status
More on why users keep mailing specific people
|
| 2009-06-29: |
A theory on why users keep mailing specific people
|
| 2009-06-28: |
How we solve the multiuser PHP problem
|
| 2009-06-27: |
Possible limits on our port multiplied ESATA performance
|
| 2009-06-26: |
How not to set up your DNS (part 19)
An advantage for hardware RAID over software RAID
|
| 2009-06-25: |
Patching systems versus patching appliances
|
| 2009-06-24: |
Another source of stickyness for social web sites
|
| 2009-06-22: |
Solaris 10 NFS server parameters that we change and why
Why GNU tools are sometimes not my favorite programs
|
| 2009-06-21: |
Email is intrusive, and why
|
| 2009-06-20: |
Using GRUB to figure out the mapping of BIOS drive numbers
|
| 2009-06-19: |
Fedora desperately needs a better upgrade system
|
| 2009-06-18: |
A kernel NFS error message explained
|
| 2009-06-17: |
The NFS 'reserved ports' option and why you care
|
| 2009-06-16: |
Maybe understanding blogrolls
|
| 2009-06-15: |
try:/finally: and generators
|
| 2009-06-14: |
How to set up your vacation messages to get thrown off mailing lists
|
| 2009-06-13: |
One of the reasons good alerting is tough
|
| 2009-06-12: |
What I know about Solaris 10 NFS server file lock limits
|
| 2009-06-11: |
There are two different purposes of monitoring systems
|
| 2009-06-10: |
Users are lazy
|
| 2009-06-08: |
Another way that generators are not lists: modifying them
Monitoring systems should be always be usefully informative
|
| 2009-06-07: |
It's important to get the real costs right
|
| 2009-06-06: |
User perceptions (and expectations) of backups
|
| 2009-06-05: |
How we're planning our backup storage capacity needs
|
| 2009-06-04: |
Another irritation with Gnome's gconf settings system
|
| 2009-06-03: |
The costs of development versus the costs of operation
|
| 2009-06-02: |
Sometimes brute force is the answer (on Unix)
|
| 2009-05-31: |
A thought on giving custom redundant storage systems some history
The better way to install Sun's Java
|
| 2009-05-30: |
The program energy efficiency optimist's view
|
| 2009-05-29: |
The cost of program energy efficiency
|
| 2009-05-28: |
Encapsulation may be in the eye of the beholder
|
| 2009-05-27: |
Hosted servers, cloud computing, and backups
|
| 2009-05-25: |
Backups versus redundancy
|
| 2009-05-24: |
An interesting bit of ssh and sshd behavior
What modern email is good for
|
| 2009-05-23: |
The drawback of using a language with a good interface to the OS
|
| 2009-05-22: |
How CPython handles (and delays) Unix signals
|
| 2009-05-21: |
Solving the Python SIGCHLD problem
|
| 2009-05-20: |
Why directory URLs have to have trailing slashes
|
| 2009-05-19: |
Some notes on rewrites in Apache .htaccess files
|
| 2009-05-17: |
One reason for Unix's permission checking timing
The crucial difference between online and offline backups
|
| 2009-05-16: |
Autoresponders in the modern email world
|
| 2009-05-15: |
Why df on an NFS-mounted ZFS filesystem can give odd results
|
| 2009-05-14: |
Fixing your system after hitting the RAID growth gotcha
|
| 2009-05-13: |
Booting a Linux system without a root mirror
|
| 2009-05-12: |
A serious gotcha with growing software RAID devices
|
| 2009-05-10: |
What affects how fast you can restore backups
Another advantage of disk-based backup systems
|
| 2009-05-09: |
Our disk-based backup system
|
| 2009-05-08: |
The problem with tapes (for backup)
|
| 2009-05-07: |
How to set up your xorg.conf for RandR-based dual-headed systems
|
| 2009-05-06: |
An irritation with Linux's 'mount -t nfs' output
|
| 2009-05-05: |
How we periodically scrub our ZFS pools
|
| 2009-05-03: |
An inexplicable omission in bash's sourcing of .bashrc
|
| 2009-05-02: |
Why version control systems should support 'rewriting history'
Convenient ssh in Gnome, or 'my sshmenu wish comes true'
|
| 2009-04-30: |
My standard Gnome customizations
Why I would still like MC/S in Linux
|
| 2009-04-29: |
Pragmatic issues with hash verifiers for email messages
|
| 2009-04-27: |
One of my TDD weaknesses: mock objects for complex objects
The problems of over-documenting things
|
| 2009-04-26: |
A Bourne shell irritation: piping just stderr
Lighttpd, CGIs, and standard error
|
| 2009-04-25: |
On digital signatures and client security issues
|
| 2009-04-24: |
The difference between Web 1.0 and Web 2.0
|
| 2009-04-23: |
A Gnome irritation
|
| 2009-04-21: |
Why your ticketing system should not be accessible to users
|
| 2009-04-20: |
Some ways to add versioning to pickled objects
Why pickle is not a good way to save your data
|
| 2009-04-19: |
Sometimes you don't want behavior with your data
|
| 2009-04-18: |
What users see as benefits from sysadmins
|
| 2009-04-17: |
Git and 'rewriting history'
|
| 2009-04-16: |
What causes the ZFS file deletion problem with snapshots
|
| 2009-04-15: |
The problem with Solaris 10 update 6's ZFS failmode setting
|
| 2009-04-13: |
How I went wrong in thinking about /boot mirroring
Your ticketing system should be optional
|
| 2009-04-12: |
A hairshirt too far: on always avoiding CSS
|
| 2009-04-11: |
The advantage of having an (XML) sitemap
|
| 2009-04-10: |
Why 'sender stores message' is easier for spammers than real mail servers
|
| 2009-04-09: |
Why ssh needs to verify host keys
|
| 2009-04-07: |
Handling ssh to generic hostnames
The technical problems with 'sender stores messages' schemes
|
| 2009-04-06: |
An interesting hardware mystery
|
| 2009-04-05: |
Why I don't expect ARM-based netbooks to be a success
|
| 2009-04-03: |
The (or a) problem with Unix manpages
How to use Vixie cron to schedule at regular odd times
|
| 2009-04-02: |
System status announcements and where your users are
|
| 2009-03-31: |
The SSD boom and the theoretical multicore revolution
A sysadmin use for Twitter
|
| 2009-03-30: |
There are three entry states for feed readers
|
| 2009-03-29: |
Why I wrote my own bulk IO performance measurement tool
|
| 2009-03-28: |
Make your web application's interface elements obvious
|
| 2009-03-27: |
The theoretical advantage of a separate /boot filesystem
|
| 2009-03-26: |
An important difference
The git version control system as a creation of the modern age
|
| 2009-03-24: |
Using fully mirrored system disks on Linux
How not to improve your CD player application
Frustration for a sysadmin (well, for me)
|
| 2009-03-23: |
How libraries should handle internal warning messages
|
| 2009-03-22: |
An outline of a possibly easier IPv4 to IPv6 transition
|
| 2009-03-21: |
Why the ideal IPv4 to IPv6 transition is impossible
|
| 2009-03-19: |
Why 'sender stores message' schemes won't cure phish spams
|
| 2009-03-18: |
An obvious thing about dealing with web spider misbehavior
Principles of email in the modern age
|
| 2009-03-16: |
An important gotcha with iSCSI multipathing in Solaris 10
Complex data structures and the two sorts of languages
|
| 2009-03-15: |
A realization: planet aggregators have a natural size limit
|
| 2009-03-14: |
Why I don't trust seteuid() and friends
|
| 2009-03-12: |
The problem with /var today
The not so secret history of /var
|
| 2009-03-11: |
Checklists versus procedures
|
| 2009-03-10: |
Why checklists work
|
| 2009-03-09: |
What list methods don't make sense for heterogeneous lists
|
| 2009-03-08: |
Python's theoretically missing core data type
|
| 2009-03-07: |
What past problems of mine the collections module solves
|
| 2009-03-06: |
What can keep a ZFS pool busy and prevent it from exporting
|
| 2009-03-05: |
What seems to use power on a Dell Mini 12
|
| 2009-03-04: |
The ASUS Eee PC versus the Dell Mini 12
|
| 2009-03-03: |
Rollbacks versus downgrades
|
| 2009-03-02: |
Some gotchas with ZFS in Solaris 10 update 6
|
| 2009-02-28: |
What it would take for me to use Fedora Rawhide
The potential problems with distribution downgrades
|
| 2009-02-27: |
The peculiar case of the conference spammers
|
| 2009-02-26: |
What I learned from Google Mail's recent outage
|
| 2009-02-25: |
Don't log usernames for bad logins
|
| 2009-02-24: |
A core principle of error and warning messages
|
| 2009-02-23: |
A problem with microtransactions
|
| 2009-02-22: |
Internet scale security: the impact of cheapness
|
| 2009-02-21: |
How to turn off gnome-terminal's cursor blinking
|
| 2009-02-20: |
An attraction of planet-style blog aggregators as your feed reader
|
| 2009-02-19: |
Appearances are deceptive in the (anti-)spam world
|
| 2009-02-18: |
My theory on why people wind up using common passwords
|
| 2009-02-17: |
Design versus construction
|
| 2009-02-16: |
My approach to website passwords (and why it is the right one)
|
| 2009-02-15: |
How CPython optimizes allocations for some built-in types
|
| 2009-02-14: |
Some of my assumptions about Python object allocation
|
| 2009-02-13: |
The accumulator mini-pattern and .setdefault()
|
| 2009-02-12: |
Recognizing non-interactive shells and 'shell levels'
|
| 2009-02-11: |
True point in time restores may be hard
|
| 2009-02-09: |
Backups and archives
I hate flaky systems, Fedora 10 and/or hardware edition
|
| 2009-02-08: |
When bash sources your .bashrc
|
| 2009-02-07: |
An illustration of one reason that documentation is hard
|
| 2009-02-06: |
Our SunFire X2100 nVidia Ethernet experiences
|
| 2009-02-04: |
An alarming ZFS status message and what is usually going on with it
Why btrfs was inevitable: a corollary to (not) getting ZFS in Linux
|
| 2009-02-02: |
A grumpy remark about Solaris's scalability
|
| 2009-02-01: |
Understanding ZFS cachefiles in Solaris 10 update 6
|
| 2009-01-31: |
Why social mudding works
When can you assume UTF-8 filenames?
|
| 2009-01-30: |
A surprising lack on Linux: browsers for camera RAW photos
|
| 2009-01-29: |
An RPM packaging utter FAIL
|
| 2009-01-28: |
The (or an) attraction of Twitter
|
| 2009-01-27: |
My wishes for Sun's online documentation
|
| 2009-01-26: |
My reaction to Solaris 10 update 6's ZFS changes
How LiveJournal is sticky
|
| 2009-01-25: |
Thinking about what you do with undo
|
| 2009-01-24: |
Towards a better undo
|
| 2009-01-23: |
The HTML tax (in Python, and in general)
|
| 2009-01-22: |
The NFS re-export problem
|
| 2009-01-20: |
Why high availability NFS requires shared storage
The inner life of NFS filehandles
|
| 2009-01-19: |
Using iptables to get around the policy based routing limitation
|
| 2009-01-18: |
The basic implementation of relatively high-availability NFS
|
| 2009-01-17: |
Practical issues with getting ZFS on Linux
|
| 2009-01-16: |
A lament about modern NFS development
|
| 2009-01-15: |
Why templating systems are the wrong answer for simple HTML generation
|
| 2009-01-14: |
Documenting the kernel.sem sysctl
|
| 2009-01-12: |
A surprising lack in Python's standard library
What I want out of NFS security, at least at the moment
|
| 2009-01-11: |
The problems I see with multi-signed SSL in practice
|
| 2009-01-10: |
You cannot ask users to manage their own security
|
| 2009-01-09: |
A Unix shell glob trick
|
| 2009-01-08: |
The ufsdump block size doesn't seem to matter much
|
| 2009-01-07: |
Two suggestions for improving Fedora's PreUpgrade experience
|
| 2009-01-06: |
The problem of forcing users to make choices (in security)
|
| 2009-01-05: |
Why 'email marketing' winds up as spam
|
| 2009-01-04: |
'Email marketing' versus outright email spam
|
| 2009-01-03: |
How to help programmers (parts 2 and 3): os.environ and sys.argv
|
| 2009-01-02: |
Why SSL needs certificate authorities, or at least trust roots
|
| 2009-01-01: |
Flaws in the 'web of trust' approach to trust issues
|
| 2008-12-31: |
Certificate authorities seem to be a real weakness in SSL
One of Python 3's fundamental problems on Unix
|
| 2008-12-30: |
ZFS and crazy dates
|
| 2008-12-28: |
Discovering things while researching Unix history
An advantage of doing test driven development
|
| 2008-12-27: |
Email marketing is pretty much spam
|
| 2008-12-26: |
The consequences of the Debian OpenSSL compromise
|
| 2008-12-25: |
My view of Sun and their history
|
| 2008-12-24: |
A thesis: Sun should be prepared to give up on SPARC
|
| 2008-12-23: |
You need major advantages to really move issues
|
| 2008-12-21: |
Part of why managing firewalls is hard
The role of superstition and folklore in system administration
|
| 2008-12-20: |
The source of spurious .rpmnew files
|
| 2008-12-19: |
Comments and dialogues
|
| 2008-12-18: |
Why LVM snapshots should really have hooks into filesystems
|
| 2008-12-17: |
Some reasons why I like vi
|
| 2008-12-16: |
Why XHTML is doomed, at least in its strict validation form
|
| 2008-12-14: |
Feed aggregators should fail gracefully
|
| 2008-12-13: |
The pragmatic problem with strict XHTML validation
|
| 2008-12-12: |
Two-step updates: the best solution to the valid XHTML problem
|
| 2008-12-11: |
Why syndication feed readers (and web browsers) should fail gracefully
Why you should always allow version 1 to be specified
|
| 2008-12-09: |
What sort of user interfaces the web is good for
How Amanda uses what restore program to use, a correction
|
| 2008-12-08: |
How I split up my workstation's disk space
|
| 2008-12-07: |
How to help programmers (part 1): the os.listdir() problem
One of Python's problems with packages
|
| 2008-12-06: |
On line endings and honesty
|
| 2008-12-05: |
A little gotcha when implementing shell read
|
| 2008-12-04: |
The rewriting problem on ZFS and other 'log structured' filesystems
|
| 2008-12-03: |
Mapping IP addresses to ASNs
|
| 2008-12-02: |
A thesis: Sun should fork Solaris
|
| 2008-11-30: |
My view on vi and vim (and nvi et al)
Server problems caused by 'transparent' self-signed SSL certificates
|
| 2008-11-29: |
Good editors aren't better or worse, just different
|
| 2008-11-28: |
Why rootkits targeted at Red Hat Enterprise would make me especially nervous
|
| 2008-11-27: |
The practical insecurity of self-signed SSL certificates on the web
|
| 2008-11-26: |
One consequence of mathematical security thinking
|
| 2008-11-25: |
The problem with security alerts, and indeed all alerts
|
| 2008-11-23: |
My sign of a good graphical interface
|
| 2008-11-22: |
Why I hate 'security questions'
|
| 2008-11-21: |
Limiting how much load Exim puts on your system
|
| 2008-11-20: |
Combining dual identity routing and isolated interfaces revisited
|
| 2008-11-19: |
A growing realization about tcpdump and reading IP traffic
BitTorrent's file fragmentation problem
|
| 2008-11-18: |
Where vi runs into its limits
|
| 2008-11-16: |
Checking systems with RPM verification (part 2)
A hint for email providers
|
| 2008-11-15: |
Getting Python's encoding and decoding straight
|
| 2008-11-14: |
How to force a crash dump on Solaris 10 x86
|
| 2008-11-13: |
What the members of a Unicode conversion error object are
|
| 2008-11-12: |
Why not doing Unicode is easier than doing Unicode in Python
|
| 2008-11-11: |
Another attempt to split SSL into encryption and trust
|
| 2008-11-10: |
Exploiting the Bourne shell to parse configuration files
|
| 2008-11-09: |
The history of Unix *dump programs
|
| 2008-11-08: |
Thinking about how your security domains relate to each other
|
| 2008-11-07: |
What the timestamps in Ubuntu kernel messages mean
|
| 2008-11-05: |
How many root passwords should you have?
An issue with quotas on ZFS pools
|
| 2008-11-04: |
Mistakes editors can make that disqualify them as sysadmin editors
|
| 2008-11-03: |
Why vi has become my sysadmin's editor
|
| 2008-11-02: |
Why university webmail systems are attractive to spammers
|
| 2008-10-31: |
Why realistic UDP bandwidth testing is hard
Banging rocks together in Python
|
| 2008-10-30: |
How Linux initrds used to be a hack
|
| 2008-10-29: |
Problems I have seen with switch port mirroring
|
| 2008-10-28: |
One reason why people buy Ethernet taps
|
| 2008-10-27: |
What we keep track of for ZFS pools
|
| 2008-10-26: |
Why RAID-1 is the right choice for our new fileservers
|
| 2008-10-25: |
How we worked out the partition sizes for our SAN
|
| 2008-10-24: |
A little neat detail of the BitTorrent protocol
|
| 2008-10-23: |
Another update to the ZFS excessive prefetching situation
|
| 2008-10-22: |
How Amanda knows what restore program to use
|
| 2008-10-21: |
Seeing how remarkable V7 Unix was
|
| 2008-10-19: |
The advantages of iSCSI's MC/S for multipathing
Thesis: reputation based antispam systems are dead
|
| 2008-10-18: |
More on Firefox 3's handling of self-signed SSL certificates
|
| 2008-10-17: |
How self-signed certificates are a problem for browsers
|
| 2008-10-16: |
Why Firefox 3's handling of self-signed SSL certificates is wrong
|
| 2008-10-15: |
The corporate identity problem
|
| 2008-10-14: |
Improving initial ramdisks
|
| 2008-10-13: |
The complexity of not lying to Makefiles
|
| 2008-10-12: |
An irritating awk limitation: getting a range of fields
|
| 2008-10-11: |
Forcing sort ordering in Unix shell scripts
|
| 2008-10-10: |
Some notes about iSCSI multipathing in Solaris
|
| 2008-10-09: |
We've lost the password battle
|
| 2008-10-08: |
How we set up our Solaris ZFS-based NFS fileservers
|
| 2008-10-07: |
How we set up our iSCSI target servers
|
| 2008-10-06: |
A problem with Python's help()
|
| 2008-10-05: |
SSL certificate revocation doesn't work (for web browsers)
|
| 2008-10-04: |
Consider having obvious interfaces too
|
| 2008-10-03: |
Arranging your SSL websites for very cautious people
|
| 2008-10-01: |
Another consequence of the Debian OpenSSL security bug
|
| 2008-09-30: |
The consequences of your SSL certificate getting compromised
Using Python to find out what cipher a SSL server is using
|
| 2008-09-29: |
SSL/TLS and forward secrecy
|
| 2008-09-28: |
Why I hate Solaris 10's service facility right now
|
| 2008-09-27: |
The problem with initial ramdisks
|
| 2008-09-26: |
The aesthetics of syntactic sugar
|
| 2008-09-25: |
Why qmail is no longer a suitable Internet MTA
|
| 2008-09-24: |
How we lie to our Makefiles
|
| 2008-09-23: |
Some thoughts on improving current thread-based programming
|
| 2008-09-21: |
Why I wind up writing real parsers for my sysadmin tools
|
| 2008-09-20: |
A side note to the attraction of file-based blog engines
The attractions of 'file as blog entry' blog engines
|
| 2008-09-19: |
Gotchas with IET that I have encountered
|
| 2008-09-18: |
My experiences so far with Linux iSCSI target software
|
| 2008-09-17: |
How to securely manipulate user files
|
| 2008-09-16: |
A Unix without a test program
|
| 2008-09-15: |
Why ZFS's raidz design decision is sensible (or at least rational)
|
| 2008-09-14: |
A read performance surprise with ZFS's raidz and raidz2
|
| 2008-09-13: |
999 days is not forever
|
| 2008-09-12: |
ZFS's helpful attention to detail
Why you want sysadmins, not users, to be providing the computing
|
| 2008-09-11: |
Why I have the same shell dotfiles everywhere
|
| 2008-09-10: |
A Unix shell trick
|
| 2008-09-09: |
The problem with unit testing programs
|
| 2008-09-08: |
How to get as much of your program byte-compiled as possible
|
| 2008-09-07: |
Why your main program should be importable
|
| 2008-09-06: |
Why negative DNS caching is necessary
|
| 2008-09-05: |
Something to remember when using DTrace on userland programs
|
| 2008-09-03: |
Why SMTP needs a way of communicating partial success for message delivery
How to reject at SMTP time without enabling dictionary scanning
|
| 2008-09-01: |
Accept-then-bounce is no longer acceptable in mail systems
|
| 2008-08-31: |
There is a balance between optimism and paranoia for compromised machines
A realization about the recent Red Hat Enterprise security issue
|
| 2008-08-29: |
Open source projects and programs versus products
We don't really control user desktop machines
|
| 2008-08-28: |
Thinking about the importance of cross-implementation portability
|
| 2008-08-27: |
How I think about how important security updates are
|
| 2008-08-25: |
Fixing low command error distances
The concept of error distance in sysadmin commands
|
| 2008-08-24: |
An update to the ZFS excessive prefetching situation
|
| 2008-08-23: |
Another problem with SSL identities
|
| 2008-08-22: |
Why noting security fixes in Linux kernel changelogs doesn't really help
|
| 2008-08-21: |
What you select for when you make something harder
|
| 2008-08-20: |
An illustration of why syntactic sugar matters
|
| 2008-08-18: |
The problem with using tuples and lists to hold structures
|
| 2008-08-17: |
Thinking about the best way to handle command registration
Why your blog comments have less of an audience than new blog entries
Another reason to avoid having comments
|
| 2008-08-16: |
Why it matters what users like
|
| 2008-08-15: |
Using a non-standard shell as your login shell
|
| 2008-08-14: |
A bash irritation: the incompatible exec
|
| 2008-08-12: |
The first principle of analyzing compromised machines
|
| 2008-08-11: |
How RPM verification deals with prelinking
|
| 2008-08-10: |
Anti-spam work is pure overhead
How to tell when your bug reporting system is at its limits
|
| 2008-08-08: |
How to exploit unsigned repository metadata
A workaround for the Python module search path issue on Unix
|
| 2008-08-07: |
The pragmatics of language changes
|
| 2008-08-06: |
More on the funding capture problem
|
| 2008-08-04: |
SSL does not create trust
Our answer to the ZFS SAN failover problem
|
| 2008-08-03: |
A performance gotcha with syslogd
First impressions of using DTrace on user-level programs
|
| 2008-08-02: |
One reason that it is so hard to challenge Google
|
| 2008-07-31: |
A crude system verification method
SSL's identity problem
|
| 2008-07-30: |
What is guaranteed in languages in practice
|
| 2008-07-28: |
What you can (probably) count on for concurrency in Python
Another advantage of Python builtins
|
| 2008-07-27: |
The yum versionlock problem
|
| 2008-07-26: |
dict.setdefault() as a concurrency primitive
|
| 2008-07-24: |
How packaging systems should handle kernel updates
One thing that I dislike about typical debuggers
|
| 2008-07-23: |
Retracting blog entries in the face of syndication feeds
|
| 2008-07-22: |
Two different usage patterns
|
| 2008-07-20: |
Thinking about uses for (system) activity tracers
Why I'm mostly out of the email (anti-)spam game
|
| 2008-07-18: |
One consequence of Linux's dynamic network device naming
The advantage of blog comments
|
| 2008-07-17: |
The not so secret origins of /usr/bin and /usr/sbin (and /sbin)
|
| 2008-07-16: |
The problem with Usenet
|
| 2008-07-14: |
What some fdisk options actually do
|
| 2008-07-13: |
How ZFS helps out with the big RAID-5 problem
The problem with big RAID-5 arrays
|
| 2008-07-12: |
When overlapping windows do (and don't) make sense
|
| 2008-07-11: |
The case of the mysteriously failing connections
|
| 2008-07-10: |
Internet software decays and must be actively maintained
|
| 2008-07-09: |
Detailed usage charges versus simpler charging models
|
| 2008-07-08: |
How to force Solaris to renumber network devices
|
| 2008-07-06: |
A (D)VCS feature that I'd really like
A small drawback to Wietse Venema's TCP Wrappers
|
| 2008-07-05: |
How OOXML is a complete failure, even for Microsoft
|
| 2008-07-04: |
Phish spammers who make it easy
|
| 2008-07-03: |
Why system administrators like interpreted languages
|
| 2008-07-02: |
Why reverse proxies are good for big web applications
|
| 2008-06-30: |
The many problems with bad security patches
|
| 2008-06-29: |
Why user exposure matters for Linux distributions, especially on desktops
Why Ubuntu's LTS releases are inferior to Red Hat Enterprise Linux
|
| 2008-06-28: |
The other reason that shells should be programmable
|
| 2008-06-27: |
Fault hierarchies and problem reports
|
| 2008-06-26: |
Virtual desktops versus multiple monitors
|
| 2008-06-25: |
More on standard interfaces
|
| 2008-06-23: |
Why I am not really fond of docstrings in Python
More thinking about Python's inheritance model
|
| 2008-06-22: |
The implicit versus the explicit
|
| 2008-06-21: |
A bug reporting paradox: don't put in too much detail
|
| 2008-06-20: |
Accidental bittorrent on our networks
|
| 2008-06-19: |
A thought about filesystem snapshots
|
| 2008-06-17: |
A simple request for vendor websites
Sun flubs another SSH patch
|
| 2008-06-16: |
Why people persist in sending files by email
|
| 2008-06-15: |
Why DNS blocklists return information as IP addresses
|
| 2008-06-13: |
The cost of virtualization
|
| 2008-06-12: |
The problem with ZFS, SANs, and failover
|
| 2008-06-11: |
Designing a usable DNS Blocklist result format
Tabs versus windows, or why I usually want windows
|
| 2008-06-09: |
Mirrored system disks should be trivial to set up
|
| 2008-06-08: |
Thinking about Python's inheritance model
Recovering my Eee PC from a post-update problem
|
| 2008-06-07: |
Why 'file as blog entry' blog engines have problems
|
| 2008-06-06: |
Why shells should have small programming languages
|
| 2008-06-04: |
Some corollaries to the charging problem
|
| 2008-06-03: |
My problem with ZFS
|
| 2008-06-02: |
Improving RPM as a packaging system
Why package systems are important
|
| 2008-05-31: |
What contracts aren't
|
| 2008-05-30: |
The fun of awk
Users are rational
|
| 2008-05-29: |
Why web spiders should not crawl syndication feeds
|
| 2008-05-28: |
What promiscuous mode does on modern networks
|
| 2008-05-26: |
Shimming modules for testing (and fun)
|
| 2008-05-25: |
Making a good Unix glue language
The risks of forcing frequent password changes
|
| 2008-05-24: |
Dear applications: WEP keys are not passwords
|
| 2008-05-23: |
Frequent password changes as security mythology
|
| 2008-05-21: |
Combining dual identity routing and isolated interfaces
|
| 2008-05-20: |
Getting live network bandwidth numbers on Solaris
|
| 2008-05-19: |
Segregating your outgoing email to get blocked as little as possible
|
| 2008-05-18: |
The threat model for website logins
Counterproductive password security
|
| 2008-05-17: |
Why we're interested in many ZFS pools
|
| 2008-05-15: |
Why it is hard to decommission a DNS blocklist
What protects the strength of a ssh connection's encryption
|
| 2008-05-13: |
Things I have learned about ZFS (and a Linux iSCSI target)
|
| 2008-05-12: |
Some thoughts on tradeoffs between storage models
|
| 2008-05-11: |
The history of readdir()
Another problem with doing your own sysadmin automation
|
| 2008-05-09: |
An advantage of interpreted languages
|
| 2008-05-08: |
Getting live network bandwidth numbers on Linux
|
| 2008-05-07: |
Today's Solaris 10 irritation: the fault manager daemon
|
| 2008-05-06: |
The Bourne shell is not a programming language
|
| 2008-05-05: |
The costs of doing your own system administration automation
|
| 2008-05-04: |
On standard interfaces
|
| 2008-05-03: |
Why people don't automate sysadmin stuff
|
| 2008-05-02: |
Automation changes as systems grow
|
| 2008-05-01: |
What the co_names attribute on Python code objects is
|
| 2008-04-30: |
Why apt is always going to be faster than yum
Why you can't stop 'abuse' of file sharing services
|
| 2008-04-28: |
Abusing Python frame and code objects
|
| 2008-04-27: |
Attribute tracing as a mixin class
|
| 2008-04-26: |
A thought on trackbacks
|
| 2008-04-25: |
BitTorrent trackers are not innocent bystanders
|
| 2008-04-24: |
What Linux's RPC queue dump means, sort of
A brief mention of some tools for debugging Linux NFS client issues
|
| 2008-04-22: |
The irritation of single-context applications
|
| 2008-04-21: |
Dear ZFS: please stop having your commands stall
|
| 2008-04-20: |
Finding the name of your caller in Python
What FAQs are
|
| 2008-04-18: |
The two (at least) forms of documentation
|
| 2008-04-17: |
The limits of isolated interfaces
|
| 2008-04-16: |
My secret mouse fear
The appeal of GNU tools
|
| 2008-04-15: |
Management interfaces as isolated interfaces
|
| 2008-04-14: |
A sysadmin's review of the ASUS Eee PC
|
| 2008-04-13: |
How I use Firefox's remote control
|
| 2008-04-12: |
Different reasons for having comments
|
| 2008-04-11: |
The appeal of XML
When I do and don't read a blog's comments
|
| 2008-04-09: |
Why there's a bunch of spam from university webmail systems right now
|
| 2008-04-08: |
An alternate take on availability numbers
|
| 2008-04-07: |
Get statistics
|
| 2008-04-06: |
The problem with PID files
|
| 2008-04-05: |
What I needed to make my custom Fedora 8 environment work
Why people are accepting bad uptimes from Internet applications
|
| 2008-04-03: |
Google Mail has a spam problem
|
| 2008-04-02: |
ZFS: Reservations versus quotas
|
| 2008-04-01: |
A simple Python class to trace access to object attributes
|
| 2008-03-31: |
Keeping secrets as a system administrator
The quote of the time interval, on XML
|
| 2008-03-30: |
Docstrings versus comments in my code
|
| 2008-03-29: |
Tradeoffs in where you store volume management metadata
|
| 2008-03-28: |
The stages of Bittorrent encryption
|
| 2008-03-27: |
An idea for a browser anti-phish feature
|
| 2008-03-26: |
Why authenticated email won't stop phish spam
|
| 2008-03-25: |
The easy way to keep a week's worth of something
|
| 2008-03-24: |
The two sorts of (programmer) certification
|
| 2008-03-23: |
Why software engineering certification may not work out the way people want
|
| 2008-03-22: |
Why NFS writes to ZFS are sometimes (or often) slow
|
| 2008-03-21: |
Journaling filesystems and the fsync() problem
|
| 2008-03-20: |
Why you should ratelimit messages that outside things can cause
|
| 2008-03-19: |
The problem of charging for things (well, one of them)
|
| 2008-03-18: |
Some things I dislike about the ASUS Eee
|
| 2008-03-17: |
Why I expect more from Solaris
|
| 2008-03-16: |
My problem with Lisp
|
| 2008-03-15: |
Why accurately counting committed address space is hard
|
| 2008-03-14: |
Why I like definite answers to support issues
|
| 2008-03-13: |
Another problem with iSCSI on Solaris 10
|
| 2008-03-12: |
A bash irritation: mutable history
|
| 2008-03-11: |
The 'Add Comments' problem
|
| 2008-03-10: |
Why I organize comments on WanderingThoughts the way I do
|
| 2008-03-09: |
The difference between a SAN and a cluster filesystem
|
| 2008-03-08: |
What controls Red Hat Enterprise's ethN device names
My problem with Ethernet naming on Red Hat Enterprise 5
|
| 2008-03-06: |
Software RAID, udev, and failed disks
The difference between operations and system administration
|
| 2008-03-05: |
How we make Exim discard bounces of spam
|
| 2008-03-04: |
How we deal with the spam forwarding problem
|
| 2008-03-03: |
How not to set up your DNS (part 18)
|
| 2008-03-02: |
How ZFS's version of RAID-5 can be better than normal RAID-5
|
| 2008-03-01: |
Speed surprises in reimplementing the .find() string method
|
| 2008-02-29: |
An illustration of the speed advantage of Python builtins
|
| 2008-02-28: |
My likely Firefox 3 extensions
|
| 2008-02-27: |
Two sorts of languages
|
| 2008-02-26: |
Something that I do not understand
|
| 2008-02-25: |
The best way to shroud IP addresses
|
| 2008-02-24: |
An idea: only use URL fragments as an implementation detail
|
| 2008-02-23: |
Where the risk is with virtualization (and iSCSI)
|
| 2008-02-22: |
Why I am not fond of Ubuntu's management of kernel updates
|
| 2008-02-21: |
Wireless, machine rooms, and the Asus Eee PC
The irritation of single-instance applications
|
| 2008-02-20: |
How our automounter replacement works
|
| 2008-02-18: |
Coding paralysis
ZFS versus SANs: where do you put the RAID?
|
| 2008-02-16: |
The only way you can stop spam with money
|
| 2008-02-15: |
A weird routing mystery
|
| 2008-02-14: |
Why does anyone buy iSCSI TOE network cards?
|
| 2008-02-13: |
A consequence of Python's 'computer science' nature
|
| 2008-02-12: |
A small annoyance with HTML
|
| 2008-02-11: |
Why commercial support needs to solve your customers' problems
|
| 2008-02-10: |
A basic introduction to prelinking on Linux
|
| 2008-02-09: |
The other reason certified email won't solve the spam problem
How your fileservers can wind up spreading over your SAN
|
| 2008-02-08: |
Why /usr/local is now useless (and where it came from)
|
| 2008-02-06: |
Why ZFS needs a zfsdump
|
| 2008-02-05: |
Prewiring experimental racks
|
| 2008-02-04: |
The origins of /usr/share
|
| 2008-02-03: |
A note to would-be photo editing applications
|
| 2008-02-02: |
Why certified/authenticated email cannot solve spam
|
| 2008-02-01: |
Isolating network interfaces on Linux
|
| 2008-01-31: |
The sysadmin's life (again)
|
| 2008-01-30: |
Linux's IP forwarding settings summarized
|
| 2008-01-29: |
An annoyance in Python's attribute access rules
|
| 2008-01-28: |
One reason I like Python
|
| 2008-01-27: |
Classic crontab syntax mistakes
|
| 2008-01-26: |
The funding capture problem
|
| 2008-01-25: |
A modest suggestion about test accounts
|
| 2008-01-24: |
Running a 32-bit Firefox on a 64-bit Fedora or Red Hat Enterprise
|
| 2008-01-23: |
The weird effects of Firefox's remote control on Unix
Linux's umount -f forces IO errors
|
| 2008-01-21: |
Why I believe that you want Solaris if you want ZFS
|
| 2008-01-20: |
Layering buffering on top of other buffering is usually a bad idea
|
| 2008-01-19: |
Why the x86 Linux kernel is part of every process's address space
|
| 2008-01-18: |
What seems to use power on an Asus Eee PC
|
| 2008-01-17: |
Lab notebooks are not changelogs
|
| 2008-01-16: |
Why sysadmins should keep a lab notebook
|
| 2008-01-15: |
What applications are actually crucial at a university
|
| 2008-01-14: |
A Python pattern: Mutating Proxies
|
| 2008-01-13: |
The robot logic of ZFS snapshots and quotas
|
| 2008-01-12: |
A thought about Amazon's S3 and EC2
|
| 2008-01-11: |
The importance of killing processes with the right signal
|
| 2008-01-10: |
What you don't know about other peers in BitTorrent
|
| 2008-01-09: |
There are two different situations for content-types
|
| 2008-01-08: |
Why I feel that a missing Debian package is a bad sign
|
| 2008-01-07: |
Some thoughts on Solaris 10 x86 versus Linux
|
| 2008-01-06: |
Why the server is the right place to determine web content types
|
| 2008-01-05: |
Why file extensions in URLs are a hack
|
| 2008-01-04: |
One problem with the current anti-spam environment
|
| 2008-01-03: |
Scrolling versus panning
|
| 2008-01-02: |
The various sorts of backgrounding in Unix
|
| 2008-01-01: |
An unpleasant thing about system administration
|
| 2007-12-31: |
There are really two GPL v2 licenses
|
| 2007-12-30: |
The importance of killing processes in the right order
|
| 2007-12-29: |
SNI doesn't work in practice
|
| 2007-12-28: |
Please don't make me pick an account name
|
| 2007-12-27: |
Why I am not entirely fond of Solaris 10 x86's boot archive
|
| 2007-12-26: |
Two problems with Python's file iterators
|
| 2007-12-25: |
Process memory layout for 32-bit Linux programs
|
| 2007-12-24: |
The difference between shells that do job control and shells that don't
|
| 2007-12-23: |
Multihomed hosts and /etc/hosts
Shortening hostnames for fun and profit
|
| 2007-12-22: |
Getting a useful persistent VNC session
|
| 2007-12-21: |
A thought about Solaris 10 x86's boot process
|
| 2007-12-20: |
Virtualization does not eliminate security concerns
|
| 2007-12-19: |
Why setuid scripts are fundamentally a bad idea
How x86 Linux executes ELF programs
|
| 2007-12-17: |
What is a script language on Unix
|
| 2007-12-16: |
A thought on reading multiline records
|
| 2007-12-15: |
There are reasons for stupid anti-spam policies
|
| 2007-12-14: |
Check then use is a dangerous security pattern
|
| 2007-12-13: |
Doing one-shot booting with GRUB
|
| 2007-12-12: |
A more abstract view of the generalized open() issue
Implicit generalized open()'s are dangerous
|
| 2007-12-10: |
A surprise about Linux serial consoles
|
| 2007-12-09: |
I don't like smooth scrolling
|
| 2007-12-08: |
A depressing thing about phish spam
|
| 2007-12-07: |
Using Linux's magic SysRq feature
|
| 2007-12-06: |
Why large ISPs like SPF (the cynical view)
|
| 2007-12-05: |
Safely updating files that are read over NFS
|
| 2007-12-04: |
Dumb switches are now too smart for my good
|
| 2007-12-03: |
A comment spam precaution that didn't work out
|
| 2007-12-02: |
How my CGI to CGI/SCGI frontend works
|
| 2007-12-01: |
My expectations for responsible spider behavior
BitTorrent's protocol is not designed to hide
|
| 2007-11-29: |
Hashes are not complete protectors of privacy
|
| 2007-11-28: |
The problem the automounter was trying to solve
Another aphorism of system administration
|
| 2007-11-27: |
Taking advantage of polymorphic WSGI
|
| 2007-11-26: |
The two things I can mean by 'web spider'
|
| 2007-11-25: |
Why we may not be able to use ZFS
|
| 2007-11-24: |
Gotchas with dual-headed X with RandR on ATI cards
|
| 2007-11-23: |
My web spider technical requirements
|
| 2007-11-22: |
The different types of hash collisions
|
| 2007-11-21: |
Linux virtual terminals and the X server
|
| 2007-11-20: |
A lesson learned: Always upgrade Fedora with a respin CD
|
| 2007-11-19: |
What IPsec being mandatory in IPv6 really means
|
| 2007-11-18: |
I love Linux's serial console support
|
| 2007-11-17: |
Fighting spam always costs
|
| 2007-11-16: |
Improving your life with checklists
|
| 2007-11-15: |
Platform risk and platform (in)security
|
| 2007-11-14: |
What NAT is useful for
|
| 2007-11-13: |
Why vfork() got created (part 2)
|
| 2007-11-12: |
Matching words against a list in the Bourne Shell
|
| 2007-11-11: |
Why vfork() got created (part 1)
|
| 2007-11-10: |
The risks of spam filtering (part 2)
|
| 2007-11-09: |
An object oriented design mistake illustrated
|
| 2007-11-08: |
How Linux handles virtual memory overcommit
|
| 2007-11-07: |
Understanding the virtual memory overcommit issue
|
| 2007-11-06: |
A thought about competition between Red Hat Enterprise and CentOS
|
| 2007-11-05: |
Some notes on Solaris 10 U4 x86 as an iSCSI target
|
| 2007-11-04: |
Thinking through salts for passwords
|
| 2007-11-03: |
A thought about the speed of IPv6 deployment
|
| 2007-11-02: |
Note to self: check for gigabit Ethernet
|
| 2007-11-01: |
Dynamic rendering versus static rendering for websites
|
| 2007-10-31: |
What may be causing my random NumLock issues
Jumbo frames on gigabit Ethernet on Solaris 10 x86
|
| 2007-10-30: |
The problem with big systems
|
| 2007-10-29: |
My problem with learning new programming languages
|
| 2007-10-28: |
The inconvenience of some DWiki design choices
|
| 2007-10-27: |
Why I am not really interested in hearing blacklist appeals
|
| 2007-10-26: |
The Slashdot effect is not like regular load
|
| 2007-10-25: |
Long term storage management in the field
|
| 2007-10-24: |
The format of PTR records in Bind irritates me
|
| 2007-10-23: |
How we sized the overcommit ratio
|
| 2007-10-22: |
The dangerous appeal of the obvious
Vim options it turns out I want
|
| 2007-10-21: |
How I got a corrupted metadb replica that paniced Solaris 10 x86
|
| 2007-10-20: |
Why mail systems should not defer rejections to RCPT TO time
|
| 2007-10-19: |
Some notes on booting single user in x86 Solaris 10
|
| 2007-10-18: |
The Python marshal module versus the cPickle module
|
| 2007-10-17: |
Our experience with Linux's strict overcommit mode
|
| 2007-10-16: |
Our old mail system's configuration
|
| 2007-10-15: |
The arrogance of trying to design for long term storage management
|
| 2007-10-14: |
Why I think identity blurs into authority
|
| 2007-10-13: |
Weekly spam summary on October 13th, 2007
|
| 2007-10-12: |
Getting your networks to your racks
|
| 2007-10-11: |
A gotcha with command order in pipes
|
| 2007-10-10: |
How to properly look up hostnames from IP addresses
|
| 2007-10-09: |
A silly trick with X
|
| 2007-10-08: |
I have new system enthusiasm
|
| 2007-10-07: |
An improvement in my comment spam precautions
|
| 2007-10-06: |
Weekly spam summary on October 6th, 2007
|
| 2007-10-05: |
Why we don't use cable management arms
|
| 2007-10-04: |
The corollary to who actually benefits from bug reports
|
| 2007-10-03: |
A basic principle of system design
|
| 2007-10-02: |
A gotcha with 'bidirectional' pipes to commands
|
| 2007-10-01: |
How Exim determines the retry time for local deliveries
|
| 2007-09-30: |
Understanding Exim's weird way of doing retries
Weekly spam summary on September 29th, 2007
|
| 2007-09-29: |
The first rule of free email-based services
|
| 2007-09-28: |
Phase objects: simple decent error reporting for Python programs
|
| 2007-09-27: |
Fixing Ubuntu's ethN device names when you swap hardware
|
| 2007-09-26: |
Thinking about why Apache waits for CGIs to close standard output
|
| 2007-09-25: |
How to clear Solaris Volume Manager metadb replicas on Solaris 10 x86
|
| 2007-09-24: |
Assume the existence of folklore among your users
|
| 2007-09-23: |
Names are not cheap
|
| 2007-09-22: |
Weekly spam summary on September 22nd, 2007
|
| 2007-09-21: |
An interesting bind(2) failure
|
| 2007-09-20: |
Websites should not accept random parameters in requests
|
| 2007-09-19: |
The benefit of chronological blog navigation
|
| 2007-09-18: |
Linux NFS client kernel tunable settings
|
| 2007-09-17: |
How mmap(2) requires a unified buffer cache
|
| 2007-09-16: |
In praise of Python's Global Interpreter Lock
|
| 2007-09-15: |
Weekly spam summary on September 15th, 2007
|
| 2007-09-14: |
A thought on untyped languages
|
| 2007-09-13: |
Limiting a process's memory usage on Linux
|
| 2007-09-12: |
Mass scanning via POP3
|
| 2007-09-11: |
Why I dislike ATX power supplies
|
| 2007-09-10: |
A small drawback of 64-bit machines
|
| 2007-09-09: |
Rethinking my views of Fibrechannel
|
| 2007-09-08: |
Weekly spam summary on September 8th, 2007
|
| 2007-09-07: |
My view of what 'strongly typed' means
|
| 2007-09-06: |
When you don't want RAID-5
|
| 2007-09-05: |
Where to find specifications on HTTP POST behavior
Features that I wish ZFS had
|
| 2007-09-03: |
Why syndication feed readers ignore an entry's 'last updated' time
|
| 2007-09-02: |
I wish mailers had a real programming language
|
| 2007-09-01: |
Weekly spam summary on September 1st, 2007
|
| 2007-08-31: |
Partial entry syndication feeds and updated entries
|
| 2007-08-30: |
Using reverse proxies to unify web sites
|
| 2007-08-29: |
One limitation of internal charges
|
| 2007-08-28: |
A gotcha with Solaris Volume Manager metasets
|
| 2007-08-27: |
On the naming of machines (part 2)
|
| 2007-08-26: |
A limitation in Linux's policy based routing
|
| 2007-08-25: |
Weekly spam summary on August 25th, 2007
|
| 2007-08-24: |
Linux and accidentally multipathed disks
|
| 2007-08-23: |
The excessive cleverness of some people's reverse DNS
|
| 2007-08-22: |
Redirecting traffic to another machine with Linux's iptables
|
| 2007-08-21: |
The dilemma of website facing
|
| 2007-08-20: |
Recognizing phish spam from exceedingly RFC compliant mailers
|
| 2007-08-19: |
A realization about breadcrumbs
|
| 2007-08-18: |
Weekly spam summary on August 18th, 2007
|
| 2007-08-17: |
A thesis about language niches
|
| 2007-08-16: |
How not to set up your DNS (part 17)
How to tell a DNS no data reply from a lame delegation
|
| 2007-08-15: |
The problem that built C++ (a thesis)
|
| 2007-08-14: |
The benefits of growing your toolbox
|
| 2007-08-13: |
One problem with distributed identity systems
|
| 2007-08-12: |
Adventures in network design, illustrated by our new backbone connection
Weekly spam summary on August 11th, 2007
|
| 2007-08-11: |
On the performance of Python longs being used as bitmaps
|
| 2007-08-10: |
Clever large integers
|
| 2007-08-09: |
A gotcha with the format of dump archives
|
| 2007-08-08: |
Explaining some university staff peculiarities
|
| 2007-08-07: |
A surprise with the Provides header in RPM
|
| 2007-08-06: |
Implementing a preforking network server in Python
|
| 2007-08-05: |
Thinking about more text formatting for DWiki
|
| 2007-08-04: |
Weekly spam summary on August 4th, 2007
|
| 2007-08-03: |
The scope of shell history
Using WSGI for performance tuning
|
| 2007-08-02: |
Link: XML on the web summarized
|
| 2007-08-01: |
A ZFS-based fileserver design
|
| 2007-07-31: |
Consequences of allowing packages to quiz users at install time
|
| 2007-07-30: |
What we want out of our new fileserver design
|
| 2007-07-29: |
My standard for clear idioms in personal code
|
| 2007-07-28: |
Weekly spam summary on July 28th, 2007
|
| 2007-07-27: |
How big is the Slashdot effect?
|
| 2007-07-26: |
An unexpected performance stress test for DWiki
|
| 2007-07-25: |
Solaris Volume Manager and iSCSI: a problematic interaction
|
| 2007-07-24: |
Using iSCSI and AOE to create artificial disk errors
|
| 2007-07-23: |
An interesting issue when yum upgraded gaim
|
| 2007-07-22: |
Universities are not businesses: an implication
|
| 2007-07-21: |
Weekly spam summary on July 21st, 2007
|
| 2007-07-20: |
The downside of a unified buffer cache
|
| 2007-07-19: |
A safety tip: keep your different sorts of source trees separate
|
| 2007-07-18: |
Why I like Python's large integer support
|
| 2007-07-17: |
Random passwords are not necessarily good passwords
|
| 2007-07-16: |
Why SSL and name-based virtual hosts don't get along
|
| 2007-07-15: |
Problems I see with the ATA-over-Ethernet protocol
Weekly spam summary on July 14th, 2007
|
| 2007-07-14: |
Linux kernel asynchronous IO doesn't work on sockets
|
| 2007-07-13: |
You can't change a Python function's local variables from outside
|
| 2007-07-12: |
An interesting mistake with ZFS and iSCSI
|
| 2007-07-11: |
Why I wish Python had assignment in conditionals
|
| 2007-07-10: |
Thinking about the Python equivalents of C's !! double negation
|
| 2007-07-09: |
How many bits of information are in a password?
How not to set up your DNS (part 16)
|
| 2007-07-08: |
A suggestion for HMAC signature construction
|
| 2007-07-07: |
Weekly spam summary on July 7th, 2007
|
| 2007-07-06: |
What the flags on DNS query responses mean
How not to set up your DNS (part 15)
|
| 2007-07-05: |
What OpenID is good for
|
| 2007-07-04: |
What OpenID is (and is not)
Problems with EXA X acceleration on ATI cards in Fedora Core 6
|
| 2007-07-03: |
How not to set up your DNS (part 14)
|
| 2007-07-02: |
What the unified buffer cache is unifying
|
| 2007-07-01: |
The optimization rule for systems
|
| 2007-06-30: |
Weekly spam summary on June 30th, 2007
|
| 2007-06-29: |
The stupidity of being nickled and dimed by vendors
Why forwarding all email for users is dangerous
|
| 2007-06-28: |
Why I don't like inverted if conditionals
|
| 2007-06-27: |
Why you can't use object.__new__ on everything
|
| 2007-06-26: |
A small update on comment spammer behavior
|
| 2007-06-25: |
ZFS's issues with long term storage management
The advantage of a SAN
Painless long term storage management without disturbing users
|
| 2007-06-23: |
Weekly spam summary on June 23rd, 2007
|
| 2007-06-22: |
One reason why the Debian package format is not my favorite
A thought on web server capacity measurement
|
| 2007-06-20: |
More on slot wrapper objects
|
| 2007-06-19: |
Thinking about types of bugs (and static analysis)
|
| 2007-06-18: |
What are slot wrapper objects?
|
| 2007-06-17: |
A use for CSS adjacent selectors
|
| 2007-06-16: |
Weekly spam summary on June 16th, 2007
|
| 2007-06-15: |
Why I am in system administration instead of programming
|
| 2007-06-14: |
Getting source RPMs with yumdownloader (part 2)
|
| 2007-06-13: |
What NFS file-based locking problems can happen
|
| 2007-06-12: |
'Argument list too long' is a misleading message
|
| 2007-06-11: |
Getting source RPMs with yumdownloader
|
| 2007-06-10: |
How NFS is unreliable for file-based locking
|
| 2007-06-09: |
Weekly spam summary on June 9th, 2007
|
| 2007-06-08: |
Some thoughts on Slashdot's moderation system
|
| 2007-06-07: |
Why I hate firewalls, especially stateful firewalls
|
| 2007-06-06: |
Why you want a filesystem consistency checker
|
| 2007-06-05: |
RPM's multi-architecture file ownership problem
|
| 2007-06-04: |
RAID-5 versus RAID-6
Why we need our SAN RAID controllers to support logical drives
|
| 2007-06-02: |
Weekly spam summary on June 2nd, 2007
|
| 2007-06-01: |
Why our Solaris fileservers still use the automounter
|
| 2007-05-31: |
Please test your error paths
|
| 2007-05-30: |
A gotcha with the automounter and loopback mounts
|
| 2007-05-29: |
On storing source code in some non-text format
|
| 2007-05-28: |
Why ZFS's data integrity is less important than Solaris's usability
|
| 2007-05-27: |
Paying for security exploits
|
| 2007-05-26: |
Weekly spam summary on May 26th, 2007
|
| 2007-05-25: |
If you want work done, you need to pay for it
The risks of spam filtering (part 1)
|
| 2007-05-24: |
Firefox preferences settings that I use
|
| 2007-05-23: |
The danger of a web server writeable document area
|
| 2007-05-22: |
A case for breaking the web server ownership guidelines
|
| 2007-05-21: |
Linux is a Unix
|
| 2007-05-20: |
Properties relevant to finding what class supplies a method
|
| 2007-05-19: |
Weekly spam summary on May 19th, 2007
|
| 2007-05-18: |
The difficulty of throwing things away
|
| 2007-05-17: |
Determining what superclass supplies a method in Python
|
| 2007-05-16: |
My rules of thumb for picking conference talks
|
| 2007-05-15: |
Sizing your swap space (part 2)
|
| 2007-05-14: |
Sizing your swap space (part 1)
|
| 2007-05-13: |
Unix folklore: your swap should be twice your RAM
|
| 2007-05-12: |
Weekly spam summary on May 12th, 2007
|
| 2007-05-11: |
Building your own kernel with the Fedora kernel configuration
|
| 2007-05-10: |
The other problem with network booting
|
| 2007-05-09: |
CSS separates layout from content less than you'd like
|
| 2007-05-08: |
Supporting the real world
|
| 2007-05-07: |
What computer security is
|
| 2007-05-06: |
What Linux bind mounts are really doing
|
| 2007-05-05: |
Weekly spam summary on May 5th, 2007
|
| 2007-05-04: |
A little twitch I have in X Windows
|
| 2007-05-03: |
A stupid switch configuration trick
|
| 2007-05-02: |
My view of Ubuntu
|
| 2007-05-01: |
Some good practices for web servers
|
| 2007-04-30: |
Being specific about where your systems are
|
| 2007-04-29: |
What matters about object oriented operating systems
Weekly spam summary on April 28th, 2007
|
| 2007-04-28: |
Why I no longer bother to complain to ISPs about spam
|
| 2007-04-27: |
My view of Solaris 10 summarized
|
| 2007-04-26: |
A clever way of doing IP address assignment
|
| 2007-04-25: |
What do Unix errno values mean?
|
| 2007-04-24: |
RPC is surprisingly expensive
|
| 2007-04-23: |
Extra security systems for Unix should be explicit, not implicit
|
| 2007-04-22: |
Why Red Hat 7.3 is (still) so present on servers
|
| 2007-04-21: |
Weekly spam summary on April 21st, 2007
|
| 2007-04-20: |
Why organizations buy software from commercial companies
|
| 2007-04-19: |
A thought about attitudes towards support requests
|
| 2007-04-18: |
An advantage of CSS layouts for accessibility
|
| 2007-04-17: |
Why the University of Toronto can't just use Google Mail
A disappointment with ZFS
|
| 2007-04-16: |
Using CSS instead of tables is still using a hack
|
| 2007-04-15: |
chkconfig --add considered misleading
|
| 2007-04-14: |
Weekly spam summary on April 14th, 2007
|
| 2007-04-13: |
A little gotcha about binding services to interfaces
|
| 2007-04-12: |
Why Evolution is not my favorite mail reader
|
| 2007-04-11: |
Users don't really benefit from filing bug reports
|
| 2007-04-10: |
A limitation of Debian's /etc/network/interfaces control file
|
| 2007-04-09: |
Why indirect xdm probably doesn't work on your Linux machine
|
| 2007-04-08: |
A limitation of Python properties
Weekly spam summary on April 7th, 2007
|
| 2007-04-07: |
An interesting observation about web cracker behavior
|
| 2007-04-06: |
Why network booting is not a good answer
|
| 2007-04-05: |
Wanted: remote controllable DVD drives
An irritation about rails
|
| 2007-04-04: |
A brief sad note about root passwords
Social problems are the real problems
|
| 2007-04-03: |
Why charging for email won't do what people want
|
| 2007-04-02: |
Some lighttpd bits
|
| 2007-04-01: |
An advantage of virtualization for license servers
Please leave IOError and OSError alone
Weekly spam summary on March 31st, 2007
|
| 2007-03-31: |
Created functions and exception stack backtraces
Microsoft has another problem
Link: you are what you code
A simple debugger feature that I would really like
|
| 2007-03-30: |
What an Ethernet splitter looks like
|
| 2007-03-29: |
Usability issues with blog URLs
|
| 2007-03-28: |
A surprise to remember about starting modern machines
Dual identity routing with Linux's policy based routing
|
| 2007-03-27: |
The VPN routing problem
Some problems with iSCSI on Solaris 10 (on x86)
|
| 2007-03-26: |
Quality Solaris 10 software:
|
| 2007-03-25: |
Fitts' Law and edge-flipping in window managers
|
| 2007-03-24: |
Weekly spam summary on March 24th, 2007
How comment spammers behave
Randomly engaging NumLock considered irritating
|
| 2007-03-23: |
Counterintuitive RAID read performance
|
| 2007-03-22: |
An irony of conditional GET for dynamic websites
Making user home directories on a stock Solaris machine
|
| 2007-03-21: |
Users are almost always right
|
| 2007-03-20: |
On educating users
|
| 2007-03-19: |
The three strata of virtualization
|
| 2007-03-18: |
Why Unix setuid is incompatible with real network filesystems
|
| 2007-03-17: |
Weekly spam summary on March 17th, 2007
|
| 2007-03-16: |
GRE is a translucent tunnel
Things I have learned while doing GRE tunnels on Linux
|
| 2007-03-15: |
An annoying limitation of Linux IPSec
|
| 2007-03-14: |
The problem of machine startup order dependencies
|
| 2007-03-13: |
Machine room archaeology
What I currently do to stop comment spam on WanderingThoughts
|
| 2007-03-12: |
New warning messages might as well be fatal errors
|
| 2007-03-11: |
I consider __dict__ an implementation detail
Weekly spam summary on March 10th, 2007
|
| 2007-03-10: |
What a sysadmin's machine should be able to do
|
| 2007-03-09: |
Why hashcash schemes for email will never be adopted
|
| 2007-03-08: |
A bad popup dialog
A belated set of more power consumption numbers
|
| 2007-03-07: |
A gripe about sun.com
|
| 2007-03-06: |
Why I don't like USB keyboards
|
| 2007-03-05: |
Some useful new Linux software RAID features
|
| 2007-03-04: |
Handling lines with something-separated fields for Python
Weekly spam summary on March 3rd, 2007
|
| 2007-03-03: |
On useful front-panel LEDs
|
| 2007-03-02: |
A story of network weirdness
|
| 2007-03-01: |
An irritating limitation of listening sockets
|
| 2007-02-28: |
Using Unix domain sockets from Python
|
| 2007-02-27: |
Things I did not know about until recently: Ethernet splitters
|
| 2007-02-26: |
Things I have learned about effective sysadmin meetings
|
| 2007-02-25: |
Ordered lists with named fields for Python
How CSLab currently does email anti-spam stuff
Weekly spam summary on February 24th, 2007
|
| 2007-02-24: |
Thesis: any server push technology inevitably breeds spam
The problem with browser minimum font size settings
Most world-editable wikis are doomed
Some things to remember when implementing __getitem__
|
| 2007-02-23: |
The downside of distinctive hostnames
|
| 2007-02-22: |
A simplified summary of Python's method resolution order
My zeroth law of compromised machines
A note about the ordering of mixin classes
|
| 2007-02-21: |
Fixing Python's string .join()
The quick overview of DiskSuite failover
|
| 2007-02-20: |
Getting around LiveJournal's new minimum page width
|
| 2007-02-19: |
What I currently know about Fibrechannel versus iSCSI versus AoE
Another aphorism of system administration
|
| 2007-02-18: |
Why we do NFS fileserving with a SAN
Weekly spam summary on February 17th, 2007
|
| 2007-02-17: |
Programming fun
|
| 2007-02-16: |
I hate hardware (Dell 2950 edition)
QOTD: There are three types of authentication
|
| 2007-02-15: |
Something all full-service backup systems should have
|
| 2007-02-14: |
RPM tricks for dealing with multiarch machines
|
| 2007-02-13: |
On Python's grammar
|
| 2007-02-12: |
Why thin clients are doomed (part 2)
|
| 2007-02-11: |
How to do locking in shell scripts
|
| 2007-02-10: |
Weekly spam summary on February 10th, 2007
A temptation with challenge/response anti-spam systems
Link: Why the ease of installing Java matters
|
| 2007-02-09: |
What System V did to the poor ln command
|
| 2007-02-08: |
The danger of validating your XHTML
|
| 2007-02-07: |
Why I think thin clients are doomed
|
| 2007-02-06: |
What the Solaris 8 nfs3_max_threads parameter probably controls
|
| 2007-02-05: |
An irritation with yum localupdate
Another small user interface suggestion
|
| 2007-02-04: |
A sysadmin twitch about dump
|
| 2007-02-03: |
Weekly spam summary on February 3rd, 2007
|
| 2007-02-02: |
A modern environment's need for broadband
Why don't SQL servers do a lot of caching?
|
| 2007-02-01: |
Transparent versus non-transparent caching
|
| 2007-01-31: |
The inherent fragility of complex systems (in system administration)
Why I am not fond of DHCP in lab environments
|
| 2007-01-29: |
A gotcha with <textarea>
How to have your web spider irritate me intensely (part 2)
|
| 2007-01-28: |
Why DWiki doesn't use fully REST-ful URLs
Weekly spam summary on January 27th, 2007
|
| 2007-01-27: |
Why I think that DNS whitelists are going to fail
|
| 2007-01-26: |
First impressions of pyOpenSSL
|
| 2007-01-25: |
A clever trick to deal with students powering off workstations
|
| 2007-01-24: |
An irritation with current GUI interfaces
|
| 2007-01-23: |
How to stop DiskSuite resyncing a mirror on Solaris 8
|
| 2007-01-22: |
Why host authentication has to check who the certificate belongs to
|
| 2007-01-21: |
Sometimes system administration requires a hacksaw
|
| 2007-01-20: |
Weekly spam summary on January 20th, 2007
Browsers are the wrong place to report HTML validation errors
|
| 2007-01-19: |
Link: Peter Gutmann on PKI
|
| 2007-01-18: |
Why I want direct certificate checking instead of having to rely on CAs
|
| 2007-01-17: |
A grump about the socket module's SSL support
|
| 2007-01-16: |
Why I don't have a GPG key
|
| 2007-01-15: |
Configuring VLANs on Fedora Core
|
| 2007-01-14: |
Wrapping exceptions versus propagating them untouched
An alarming reflex in my use of find
|
| 2007-01-13: |
Weekly spam summary on January 13th, 2007
|
| 2007-01-12: |
The easy way to get me to not comment on a weblog
|
| 2007-01-11: |
Xen versus VMware for me
An interesting Bourne shell limitation
|
| 2007-01-10: |
A gotcha with inetd/xinetd and popular UDP services
|
| 2007-01-09: |
Solving an automounter timeout problem with brute force
|
| 2007-01-08: |
What I really want from an automounter
|
| 2007-01-07: |
Another issue with C's volatile
|
| 2007-01-06: |
Weekly spam summary on Janury 6th, 2007
Fixing up .rpmnew files
|
| 2007-01-05: |
Henry Spencer on C's volatile
|
| 2007-01-04: |
The scars of my NPTL experience
|
| 2007-01-03: |
The problem with C's volatile qualifier
|
| 2007-01-02: |
My current views on webmail providers
|
| 2007-01-01: |
Solaris's impressive ABI compatibility
Link: Threads Cannot be Implemented as a Library
|
| 2006-12-31: |
A (Solaris 8) automounter irritation
|
| 2006-12-30: |
Weekly spam summary on December 30th, 2006
|
| 2006-12-29: |
What can go wrong if your compiler is not thread aware
|
| 2006-12-28: |
A thought on the advance of X auto-configuration
|
| 2006-12-27: |
Solaris 8 DiskSuite's lack of good monitoring
HTTP as it is seen in the wild
|
| 2006-12-26: |
Link: OpenBSD spamd
Link: varnish, a HTTP accelerator
|
| 2006-12-25: |
The problem with #ifdef
A thought of the day
Link: A lovely summary of the XHTML issue
|
| 2006-12-24: |
What Google Sitemaps isn't
|
| 2006-12-23: |
Weekly spam summary on December 23rd, 2006
|
| 2006-12-22: |
Another example of why Bourne shell quoting makes me grumpy
|
| 2006-12-21: |
Something to avoid in callback email address verification
|
| 2006-12-20: |
How many root DNS servers are reachable over Internet II?
|
| 2006-12-19: |
An Internet dependency
|
| 2006-12-18: |
A basic principle of website security
|
| 2006-12-17: |
How to get me to block your web ads in a flash
Weekly spam summary on December 16th, 2006
|
| 2006-12-15: |
An unsurprising discovery about spammer behavior
|
| 2006-12-14: |
Fedora Core's memory problem
|
| 2006-12-13: |
An example of Unix's slow fossilization
A SMTP implementor's conundrum
|
| 2006-12-12: |
A limitation of OpenBSD bridging NAT firewalls
|
| 2006-12-10: |
An irony of web serving
Weekly spam summary on December 9th, 2006
|
| 2006-12-09: |
How DWiki uses partial function evaluation
|
| 2006-12-08: |
What I want out of a Linux partitioning program
Why I don't expect result-oriented work hours to work out
|
| 2006-12-07: |
Another obnoxious discovery about Ubuntu's /var/run stuff
How not to set up your DNS (part 13)
|
| 2006-12-06: |
Setting up switches to avoid unwanted VLAN leakage
|
| 2006-12-05: |
A small annoyance with Unix wildcards
|
| 2006-12-04: |
How SSH achieves forward secrecy
|
| 2006-12-03: |
More fun with Python's indentation rules
|
| 2006-12-02: |
Weekly spam summary on December 2nd, 2006
|
| 2006-12-01: |
Ubuntu's attention to detail in init.d scripts
|
| 2006-11-30: |
How Python parses indentation
|
| 2006-11-29: |
Turning off HTTP basic authentication in urllib
|
| 2006-11-28: |
Progress towards an all 64-bit application world
|
| 2006-11-27: |
Some words of wisdom on email certification programs
Why I don't rip my CDs
|
| 2006-11-26: |
An irritating X Windows limitation with wheel mice
Link: Serif vs. Sans Serif Legibility
Weekly spam summary on November 25th, 2006
|
| 2006-11-25: |
The quest for a nice Linux CD player application
|
| 2006-11-24: |
A classical Unix tape gotcha
|
| 2006-11-23: |
Why I don't file bug reports very often
|
| 2006-11-22: |
Why ssh validates host keys using the exact name you supplied
|
| 2006-11-21: |
A small script: bsearch-nums
|
| 2006-11-20: |
A DiskSuite annoyance: metastat
|
| 2006-11-19: |
How https: should work
Weekly spam summary on November 18th, 2006
|
| 2006-11-18: |
Link: Golden Rules for Bad User Interfaces
Should you care about whether you can upgrade hardware?
The good old days of Unix
|
| 2006-11-17: |
How to quiesce NFS traffic the brute force way
|
| 2006-11-16: |
An annoying omission in the Solaris 8 DiskSuite toolset
|
| 2006-11-15: |
A little regexp thing to remember about \b (and \w)
Why the Bourne shell is not my favorite language
|
| 2006-11-14: |
Some more power consumption numbers
|
| 2006-11-13: |
People aren't suspicious
|
| 2006-11-12: |
Some ways to break your syndication feed
Broken syndication feeds are worse than no feed
|
| 2006-11-11: |
Weekly spam summary on November 11th, 2006
A thought about disaster recovery planning
|
| 2006-11-10: |
Link: On Bots
|
| 2006-11-09: |
A fundamental problem with challenge/response anti-spam systems
The importance of printable objects
|
| 2006-11-08: |
Link: Pumas on Hoverbikes
The quest for the mythical C.UTF-8 locale
|
| 2006-11-07: |
Link: Unicode Spaces
|
| 2006-11-06: |
HTML character sets
|
| 2006-11-05: |
An interesting Python garbage collection bug
|
| 2006-11-04: |
Weekly spam summary on November 4th, 2006
|
| 2006-11-03: |
Installing Wine on Fedora Core 5 x86_64
|
| 2006-11-02: |
Knowing things versus being able to prove them
|
| 2006-11-01: |
The downsides of remailing
|
| 2006-10-31: |
A Solaris 8 make bug
An Internet rule of thumb
|
| 2006-10-30: |
A brief Exim observation
First irritations with Fedora Core 6
|
| 2006-10-29: |
Python's assert is a weak debugging tool
|
| 2006-10-28: |
Weekly spam summary on October 28th, 2006
|
| 2006-10-27: |
In (modest) praise of Solaris DiskSuite
|
| 2006-10-26: |
Languages need comments
|
| 2006-10-25: |
Another advantage of distributed version control systems
|
| 2006-10-24: |
Google and YouTube
|
| 2006-10-23: |
A dump performance hint: the block size really matters
|
| 2006-10-22: |
Why cursors blink
|
| 2006-10-21: |
Weekly spam summary on October 21st, 2006
An irritating iptables limitation
|
| 2006-10-20: |
Why releases are important
|
| 2006-10-19: |
A paradox of ignorance
An Ubuntu astonishment
|
| 2006-10-18: |
CSS is assembly language
Getting your spam crossed
|
| 2006-10-17: |
Link: HTML Doctype declarations inventoried
An Amanda gotcha with dumps to disk
|
| 2006-10-16: |
Why have an MX record to yourself?
|
| 2006-10-15: |
On the various meanings of <tag />
|
| 2006-10-14: |
Weekly spam summary on October 14, 2006
|
| 2006-10-13: |
Why quoting in the Bourne shell makes me grumpy
Link: Warning Signs for Tomorrow
|
| 2006-10-12: |
How stable my AMD 64-bit systems have been
|
| 2006-10-11: |
Getting nice looking TrueType fonts on Fedora Core
A spectacular web spammer failure
|
| 2006-10-10: |
Cross building i386 RPMs on an x86_64 Fedora Core 5 machine
A trivial script: wcat
|
| 2006-10-09: |
I ♥ Fedora Extras
|
| 2006-10-08: |
A reason to read blogs in reverse chronological order
|
| 2006-10-07: |
Weekly spam summary on October 7th, 2006
|
| 2006-10-06: |
A Python quoting irritation
|
| 2006-10-05: |
Thoughts on machine identity
|
| 2006-10-04: |
A pyramid of little scripts: nsdig
|
| 2006-10-03: |
Some numbers for modern disk performance
|
| 2006-10-02: |
The longevity of old hardware
|
| 2006-10-01: |
The advantage of vendor packages
|
| 2006-09-30: |
Weekly spam summary on September 30th, 2006
|
| 2006-09-29: |
Gnome daemons you'll want to run in a custom environment
|
| 2006-09-28: |
Why I hate $LANG and locales on Unix
|
| 2006-09-27: |
How not to set up your DNS (part 12)
|
| 2006-09-26: |
Why people still like TCL/TK
Web site security theatre
|
| 2006-09-25: |
Some reactions to a dual monitor X setup
|
| 2006-09-24: |
Two approaches to Unix environments
Weekly spam summary on September 23rd, 2006
|
| 2006-09-22: |
A NFS mount accident on Linux
|
| 2006-09-21: |
The danger of relying on Javascript for input validation
An amusingly truthful hostname
|
| 2006-09-20: |
A peculiarity of hardware at universities
|
| 2006-09-19: |
One of the reasons I dislike SELinux
|
| 2006-09-18: |
Why /var/log/btmp may be using up a lot of space in your /var
My current view of Linux system filesystem sizes
|
| 2006-09-17: |
How to convert a time string in GMT to seconds since the epoch
|
| 2006-09-16: |
Weekly spam summary on September 16th, 2006
|
| 2006-09-15: |
The temptation of LVM
|
| 2006-09-14: |
A bonus to writing documentation
The brute-force way to install missing Solaris 9 packages
|
| 2006-09-13: |
The really irritating thing about voicemail
|
| 2006-09-12: |
A quick note about how extended partitions work
|
| 2006-09-11: |
Python's extra-clever help() function
'In place' filesystem defragmentation with Disksuite
|
| 2006-09-10: |
A thought on iTunes and similar online services
Weekly spam summary on September 9th, 2006
|
| 2006-09-09: |
Something I really wish vendor product pages did
|
| 2006-09-08: |
A Solaris 8 Disksuite single user mode surprise
I hate hardware (AMD CPU edition)
Link: IRON File Systems
|
| 2006-09-07: |
Industrial strength Python
Some wise words from Henry Spencer on backups
|
| 2006-09-06: |
How fast an LCD refresh rate is going to be fast enough?
|
| 2006-09-05: |
Stupid web spammer tricks
|
| 2006-09-04: |
A thought about interactive development environments
|
| 2006-09-03: |
Why writing documentation is no fun
|
| 2006-09-02: |
Weekly spam summary on September 2nd, 2006
|
| 2006-09-01: |
Link: The Single Unix Specification et al
Why Postfix is not my favorite mailer
|
| 2006-08-31: |
SIGCHLD versus Python: a problem of semantics
How dd does blocking
|
| 2006-08-30: |
A problem with debugging threaded Python programs
How to lose readers of your syndication feed
|
| 2006-08-29: |
An interesting filesystem corruption problem
Documentation should be cheap
|
| 2006-08-27: |
Documentation is not free
|
| 2006-08-26: |
Weekly spam summary on August 26th, 2006
|
| 2006-08-25: |
Please don't use session cookies
Another stupid spider mistake
|
| 2006-08-24: |
More on the Solaris ssh stuff (part 3)
How not to get our business
|
| 2006-08-23: |
Why I am irritated with evince
An update on impending changes to access to Solaris patches
|
| 2006-08-22: |
How not to set up your DNS (part 11)
Link: Csh Programming Considered Harmful
fork(), wait(), and threads
|
| 2006-08-21: |
Most new products are upgrades
How not to set up your DNS (part 10)
|
| 2006-08-20: |
Finally, a good reason to periodically reboot servers
|
| 2006-08-19: |
Weekly spam summary on August 29th, 2006
Documentation needs testing
|
| 2006-08-18: |
Why apt-get is not my favorite application (part 2)
|
| 2006-08-17: |
Idealist versus Realist
The quick secret to bootable USB keys
|
| 2006-08-16: |
The fun of 32-bit bugs
|
| 2006-08-15: |
Hardware RAID versus software RAID
|
| 2006-08-14: |
The importance of numerical literacy
Distributions: keep your hands off vi
|
| 2006-08-13: |
The real Bourne shell problem
|
| 2006-08-12: |
Weekly spam summary on August 12th, 2006
|
| 2006-08-11: |
An unhappy spam milestone
|
| 2006-08-10: |
A Bourne shell gotcha: redirection order
|
| 2006-08-09: |
A Bourne shell irritation
|
| 2006-08-08: |
Slashdot's tacit admission of failure
|
| 2006-08-07: |
A problem in Python's implementation of closures
|
| 2006-08-06: |
A fun little regular expression bug
|
| 2006-08-05: |
Weekly spam summary on August 5th, 2006
|
| 2006-08-04: |
My current set of Firefox extensions
|
| 2006-08-03: |
Link: When the "best tool for the job"... isn't.
How to irritate your successor (on Solaris)
|
| 2006-08-02: |
In praise of installing from Live CDs
|
| 2006-08-01: |
One serial problem I should remember
|
| 2006-07-31: |
The limitations of Unix atime
|
| 2006-07-30: |
XHTML on the web is for masochists
Weekly spam summary on July 29th, 2006
|
| 2006-07-29: |
Link: Ten Risks of PKI
Another little sysadmin twitch or two
|
| 2006-07-28: |
A plug for blastwave.org
|
| 2006-07-27: |
Unix files do not have creation times
|
| 2006-07-26: |
xterm's ziconbeep feature
|
| 2006-07-25: |
An awk idiom: getting fields backwards from the end of the line
Reading Unix manpages
|
| 2006-07-24: |
Link: Linguistic blindness illustrated
A brief history of cut and paste in X
Walking away from Slashdot: a story of design
|
| 2006-07-23: |
Weekly spam summary on July 22nd, 2006
|
| 2006-07-22: |
Solaris's sparseness
|
| 2006-07-21: |
What Linux distributions we use (and sort of why)
|
| 2006-07-20: |
Why I like Python more than Perl
Link: non-errors in English
|
| 2006-07-19: |
A sysadmin habit: screen locking
Using Python to test system behavior
Link: 'Document Centric'
|
| 2006-07-18: |
Why you can't mix wildcard IP port binding with other bindings
|
| 2006-07-17: |
Thesis: SMP is a failure for most Internet servers
|
| 2006-07-16: |
Weekly spam summary on July 15th, 2006
|
| 2006-07-15: |
A robot wish
|
| 2006-07-14: |
SELinux bites man: a story
Pointers to some SELinux explanations
|
| 2006-07-13: |
A thought on Linux installation versus Solaris 9 installation
|
| 2006-07-12: |
Why I like 'lib64' better than 'lib32' for the x86_64 transition
|
| 2006-07-11: |
Why nofollow is useful and important
|
| 2006-07-10: |
A suggestion for people with 'Out of Office' autoreplies
|
| 2006-07-09: |
Weekly spam summary on July 8th, 2006
|
| 2006-07-08: |
The problem of IT winning arguments
|
| 2006-07-07: |
Sysadmins are an overhead
|
| 2006-07-06: |
More on tabs
|
| 2006-07-05: |
On tabs
|
| 2006-07-04: |
A surprise with using object() instances
|
| 2006-07-03: |
Why Solaris is not my favorite operating system
|
| 2006-07-02: |
Weekly spam summary on July 1st, 2006
|
| 2006-07-01: |
Link: The virtual furniture police
Another annoying RSS feed trick
|
| 2006-06-30: |
Some thoughts on the Fedora Core 5 Gnome desktop
|
| 2006-06-29: |
screen -x
|
| 2006-06-28: |
The problem with cool URLs
|
| 2006-06-27: |
More on the Solaris ssh stuff (part 2)
Microsoft has a problem
|
| 2006-06-26: |
How not to report spam (part 1)
WSGI versus asynchronous servers
|
| 2006-06-25: |
Weekly spam summary on June 24th, 2006
|
| 2006-06-24: |
A problem with signals in Python
|
| 2006-06-23: |
Respecting Unix signals
|
| 2006-06-22: |
An extreme example of C preprocessor (ab)use
|
| 2006-06-21: |
A year (and a bit) of WanderingThoughts
More on the Solaris ssh stuff
|
| 2006-06-20: |
How to improve programming productivity
|
| 2006-06-19: |
Impending changes to access to Solaris patches
An odd choice of hostname
WSGI: the good and the bad
|
| 2006-06-18: |
Weekly spam summary on June 17th, 2006
|
| 2006-06-17: |
Metrics considered dangerous
|
| 2006-06-16: |
/etc/inittab versus /etc/rc.d
|
| 2006-06-15: |
How to have your web spider irritate me intensely
Dispelling a nightmare (a sysadmin tale)
|
| 2006-06-14: |
How to supply an IP address in Red Hat's Kickstart
|
| 2006-06-13: |
A web validation aphorism
|
| 2006-06-12: |
Why charging for things is deadly at a university
|
| 2006-06-11: |
Link: The Unix Heritage Society
Weekly spam summary on June 10th, 2006
|
| 2006-06-10: |
Fixing the bad Solaris ssh patch
|
| 2006-06-09: |
Seeing Quicktime movie trailers on Fedora Core 5
|
| 2006-06-08: |
Some computer power consumption numbers
|
| 2006-06-07: |
Some Fedora Core 5 experimentation
|
| 2006-06-06: |
Internet Distance (In Memoriam)
|
| 2006-06-05: |
A Python coding mistake
People are ordinary
|
| 2006-06-04: |
Weekly spam summary on June 3rd, 2006
|
| 2006-06-03: |
The fundamental problem of spam
|
| 2006-06-02: |
An object identity gotcha in Python
|
| 2006-06-01: |
Link: a Unix sysadmin rosetta stone
The cynical take on nofollow
|
| 2006-05-31: |
A simple way to get a disk space usage summary
Fiddling with X selections from shell scripts
|
| 2006-05-30: |
An shell script idiom for choosing what file to operate on
|
| 2006-05-29: |
An obvious way to do bulk initialization of dictionaries
|
| 2006-05-28: |
Weekly spam summary on May 27th, 2006
|
| 2006-05-27: |
Today's dilemma: wiki page or blog entry?
|
| 2006-05-26: |
A message you do not want to see from your backup software
The problem with treating RAID arrays as single disks
|
| 2006-05-25: |
Link: Classic Mistakes Enumerated
A Linux su surprise
SCGI is a form of caching
|
| 2006-05-24: |
The not so secret history of vmlinuz
|
| 2006-05-23: |
Link: Why overtime is bad for everyone
A defense of Unix that always irritates me
|
| 2006-05-22: |
A little failsafe feature in 3-prong electrical plugs
|
| 2006-05-21: |
My mistake with the Host: HTTP header
Weekly spam summary on May 20th, 2006
|
| 2006-05-20: |
Things that irritate me about Python's socket module
|
| 2006-05-19: |
Some modest suggestions on vendor tradeshow giveaways
|
| 2006-05-18: |
The future of spam is advance fee fraud
|
| 2006-05-17: |
Where to find package inventories on Solaris 9
|
| 2006-05-16: |
A Python limit I never expected to run into
|
| 2006-05-15: |
PlanetLab hammers on robots.txt
|
| 2006-05-14: |
Absolute versus relative URLs in syndication feeds
Link: an engineering management hack
A small user interface suggestion
Weekly spam summary on May 13th, 2006
|
| 2006-05-13: |
Safely updating Unix files
|
| 2006-05-12: |
The problem with preforking Python network servers
|
| 2006-05-11: |
Building a boot floppy for BIOS flashing
|
| 2006-05-10: |
Another really stupid web spider
The practical cost of forking in Python
|
| 2006-05-09: |
Bad patch management at Sun
|
| 2006-05-08: |
Link: an excerpt from On Writing Well
A really stupid web spider
|
| 2006-05-07: |
Link: Search engine page size limits for indexing
SCGI versus FastCGI
Weekly spam summary on May 6th, 2006
|
| 2006-05-06: |
Using a stock kernel.org kernel on Fedora Core 5
|
| 2006-05-05: |
Link: Readable colour text combinations
Peeking under mount points with NFS
|
| 2006-05-04: |
A subtle advantage of simple wikis
|
| 2006-05-03: |
Fedora Core 5's missing 32-bit shared library symlinks
|
| 2006-05-02: |
CSS and syndication (another CSS limitation)
|
| 2006-05-01: |
Emergency repairs with GRUB
|
| 2006-04-30: |
Weekly spam summary on April 29th, 2006
|
| 2006-04-29: |
Another little script: field
|
| 2006-04-28: |
Some first impressions of Fedora Core 5
|
| 2006-04-27: |
A picture of what university IT is like
|
| 2006-04-26: |
Common web spider mistakes
|
| 2006-04-25: |
Linux's %iowait statistic
|
| 2006-04-24: |
People are social
|
| 2006-04-23: |
The sort of command line I can wind up typing
Some CBL stats for the week ending on April 22nd, 2006
Weekly spam summary on April 22nd, 2006
|
| 2006-04-22: |
Link: Scaling Apache at ftp.heanet.ie
|
| 2006-04-21: |
Working on RPMs with quilt: an illustrated guide
A CSS limitation: it's not supported by lynx
|
| 2006-04-20: |
The spread of syndication
|
| 2006-04-19: |
A gotcha with analyzing syslog logs
|
| 2006-04-18: |
How Solaris matches names in NFS exports
|
| 2006-04-17: |
What do variable names mean (in Python and elsewhere)?
|
| 2006-04-16: |
Weekly spam summary on April 15th, 2006
|
| 2006-04-15: |
The problem of the growth of syndication feeds
Public interfaces and Solaris 9 patchadd exit codes
|
| 2006-04-14: |
Why del has to be a Python builtin
|
| 2006-04-13: |
An obnoxious RSS feed trick
|
| 2006-04-12: |
Something to remember about networking restarts
|
| 2006-04-11: |
A little script: howmany
|
| 2006-04-10: |
xiostat: better Linux disk IO statistics
The fun and charm of quoting URLs properly
|
| 2006-04-09: |
Weekly spam summary on April 8th, 2006
|
| 2006-04-08: |
Apple joins the webmail hall of shame
A common socket programming mistake: not handling short IO
|
| 2006-04-07: |
A bash irritation
A pleasing Python regularity with __future__
Some quick SMTP connection statistics
|
| 2006-04-06: |
Some things about smpatch
|
| 2006-04-05: |
Keeping up with new Python features
The other dynamic linking tax
|
| 2006-04-04: |
Why I don't like resorting to caching
|
| 2006-04-03: |
An ugly spam attempt
Spiders should respect rel="nofollow"
|
| 2006-04-02: |
Weekly spam summary on April 1st, 2006
|
| 2006-04-01: |
The best April Fools joke I've seen here
A Firefox CSS irritation
|
| 2006-03-31: |
The perfection trap: a lesson drawn from Worse is Better
The difficulty of punishing people at universities
|
| 2006-03-30: |
What disk IO stats you get from the Linux kernel
|
| 2006-03-29: |
Easier Solaris patch management with pca
|
| 2006-03-28: |
Hotmail spam stats revised
Using threading to implement a 'busy' cursor (a tale from long ago)
|
| 2006-03-27: |
A helpful Apache safety tip
|
| 2006-03-26: |
Weekly spam summary on March 25th, 2006
|
| 2006-03-25: |
A little gotcha with os.path.join
|
| 2006-03-24: |
Setting up to build RPMs
|
| 2006-03-23: |
Side effects are bad: a personal illustration
We apologize for the disruption in syndication feeds
Atom versus RSS
Solaris patch exit codes and what they mean
|
| 2006-03-22: |
Google Desktop and conditional GET (part 2)
|
| 2006-03-21: |
The backend for our recent mirroring
|
| 2006-03-20: |
An optimization thought
|
| 2006-03-19: |
Weekly spam summary on March 18th, 2006
|
| 2006-03-18: |
Some little things Firefox gets right
|
| 2006-03-17: |
How not to set up your DNS (part 9)
The problem with LiveJournal
|
| 2006-03-16: |
A tricky memoization decorator
|
| 2006-03-15: |
The aftermath of our mirroring
|
| 2006-03-14: |
Some problems with iostat on Linux
|
| 2006-03-13: |
Preparing a high load web mirror setup
|
| 2006-03-12: |
A DNS realization
Weekly spam summary on March 11th, 2006
|
| 2006-03-11: |
Web design trends that I don't understand (part 1)
|
| 2006-03-10: |
Why dynamic linking
The dynamic linking tax on fork()
|
| 2006-03-09: |
Making things simple for busy webmasters
Closures versus classes for capturing state
|
| 2006-03-08: |
Thinking about project failures
|
| 2006-03-07: |
A modular approach to Apache configuration
|
| 2006-03-06: |
How not to set up your mail server (part 1)
A thought about Technorati
|
| 2006-03-05: |
Weekly spam summary on March 4th, 2006
|
| 2006-03-04: |
os.walk can be surprisingly slow
|
| 2006-03-03: |
Visualizing dynamic program flow
|
| 2006-03-02: |
A robots.txt surprise
The :; shell prompt trick
|
| 2006-03-01: |
Unicode is not simple
|
| 2006-02-28: |
Practical RAID-1 read balancing
A sad day for SGI: it's now a spammer
A web spider update: not actually Uptilt's web spider
A surprising effect of RAID-1 resynchronization
|
| 2006-02-27: |
Python's extra-clever function parameters
|
| 2006-02-26: |
Weekly spam summary on February 25th, 2006
The hassle of email (as compared to RSS)
|
| 2006-02-25: |
More clever (ab)use of and and or
A trick for handling mutable default arguments
|
| 2006-02-24: |
Wanted: RSS feeds for vendor software updates
|
| 2006-02-23: |
Checking systems with RPM verification (part 1)
|
| 2006-02-22: |
Peter Drucker on the Five Deadly Business Sins
|
| 2006-02-21: |
An annoyance with $PATH on Red Hat
|
| 2006-02-20: |
More on regular expression performance
|
| 2006-02-19: |
Irony in a Referer spammer
Weekly spam summary on February 18th, 2006
|
| 2006-02-18: |
Automation promotes action
Stupid web spider tricks
|
| 2006-02-17: |
Some regular expression performance surprises
|
| 2006-02-16: |
An interesting IDE to SATA migration problem
|
| 2006-02-15: |
Fun with control characters and the web
|
| 2006-02-14: |
An advantage of using a non-standard shell
|
| 2006-02-13: |
GNU bc for the birthday paradox
The problem with <pre>
|
| 2006-02-12: |
Weekly spam summary on February 11th, 2006
|
| 2006-02-11: |
The return of how to get your web spider banned
|
| 2006-02-10: |
The charm of Sun's Freeware collection
Session IDs and the Birthday Paradox
|
| 2006-02-09: |
Using the tempfile module to get temporary files
|
| 2006-02-08: |
The id attribute considered dangerous
|
| 2006-02-07: |
$PATH in Solaris
|
| 2006-02-06: |
The sysadmin's life
More on simple markup languages
|
| 2006-02-05: |
Weekly spam summary on February 4th, 2006
|
| 2006-02-04: |
Why simple markup languages make sense
|
| 2006-02-03: |
Van Jacobson illustrates the importance of cache effects
|
| 2006-02-02: |
The rise of wikiblogs
|
| 2006-02-01: |
A suggestion: read your own syndication feed
|
| 2006-01-31: |
Getting console messages in X
|
| 2006-01-30: |
An impending Debian derailment
|
| 2006-01-29: |
Weekly spam summary on January 28th, 2006
|
| 2006-01-28: |
A bad product name
|
| 2006-01-27: |
Pointer: The Unix-Haters Handbook
|
| 2006-01-26: |
A Unix annoyance
|
| 2006-01-25: |
Site navigation stuff goes on the right side
|
| 2006-01-24: |
A digression on spelling
|
| 2006-01-23: |
Why case independent filenames are a bad idea
|
| 2006-01-22: |
Weekly spam summary on January 21st, 2005
|
| 2006-01-21: |
Please have stable ids for your feed entries
|
| 2006-01-20: |
The limits of web spider tolerance
|
| 2006-01-19: |
A Python length gotcha
|
| 2006-01-18: |
A portability gotcha with accept()
|
| 2006-01-17: |
The economics of CPU performance
|
| 2006-01-16: |
Some words of wisdom for all ISPs
The danger of specific errno values
|
| 2006-01-15: |
How not to set up your DNS (part 8)
Weekly spam summary on January 14th, 2006
|
| 2006-01-14: |
Writing HTML considered harmful
|
| 2006-01-13: |
An unconventional reason for large RAID stripe sizes
|
| 2006-01-12: |
How not to set up your DNS (part 7)
On not logging things
|
| 2006-01-11: |
Recording attribute access and method calls
|
| 2006-01-10: |
The peculiar effects of grant funding at universities
|
| 2006-01-09: |
How Linux names network interfaces
|
| 2006-01-08: |
Weekly spam summary on January 7th, 2006
Towards assessing SORBS' false positive rate
|
| 2006-01-07: |
Some notes on Solaris 9's Sunscreen IP filtering package
|
| 2006-01-06: |
The old nameserver glue record hell
|
| 2006-01-05: |
Is concurrency 'hard'?
|
| 2006-01-04: |
Python synergies in list addressing
|
| 2006-01-03: |
In practice, there are multiple namespaces for URLs
|
| 2006-01-02: |
Universities are peculiar places
|
| 2006-01-01: |
Weekly spam summary on December 31st, 2005
|
| 2005-12-31: |
Notes on getting a Solaris hardware inventory
A logical consequence of def being an executable statement
|
| 2005-12-30: |
On Lisp's fundamental data structure
A Python surprise: the consequences of variable scope
|
| 2005-12-29: |
What I use asserts for
|
| 2005-12-28: |
Unix folklore: using multiple sync commands
|
| 2005-12-27: |
A thought about free software licenses
|
| 2005-12-26: |
Thinking about a closure confusion
|
| 2005-12-25: |
Weekly spam summary on December 24th, 2005
|
| 2005-12-24: |
When comment spammers attack
|
| 2005-12-23: |
Why the (Sun) JVM is irrelevant to me
|
| 2005-12-22: |
What I really want is error-shielding interfaces
|
| 2005-12-21: |
How to get your web spider banned from here
|
| 2005-12-20: |
Another problem of secrecy
A sociopolitical advantage of distributed version control
|
| 2005-12-19: |
Initializing Python struct objects with optional defaults
|
| 2005-12-18: |
Emulating C structs in Python
Weekly spam summary on December 17th, 2005
|
| 2005-12-17: |
The problem of secrecy
On the web, text colours are an all or nothing thing
|
| 2005-12-16: |
On the name of USB flash memory drives
|
| 2005-12-15: |
Another introspection trick
Reddit versus Digg: a little detail that matters
|
| 2005-12-14: |
A thing I don't like about Linux
|
| 2005-12-13: |
What Python threads are good for
|
| 2005-12-12: |
Waiting for both network IO and inter-thread notifications
|
| 2005-12-11: |
Weekly spam summary on December 10th, 2005
|
| 2005-12-10: |
How not to set up your DNS (part 6)
|
| 2005-12-09: |
A surprising hazard of running as root all the time
Security versus resilience
|
| 2005-12-08: |
How not to set up your DNS (part 5)
|
| 2005-12-07: |
Google Desktop and conditional GET
|
| 2005-12-06: |
How not to set up your DNS (part 4)
An explanation for the popularity of threads
|
| 2005-12-05: |
Dropping packets versus rejecting them in firewall rules
|
| 2005-12-04: |
Weekly spam summary on December 3rd, 2005
|
| 2005-12-03: |
CBL listings broken down by ISP
How to do TCP keepalives in Python
|
| 2005-12-02: |
Iptables modules that aren't in the iptables manpage
|
| 2005-12-01: |
Stopping brute-force ssh scans the easy way
|
| 2005-11-30: |
An advantage to introspection and an interactive interpreter
|
| 2005-11-29: |
A little gotcha in shell scripts
|
| 2005-11-28: |
How not to set up your DNS (part 3)
What Python's global interpreter lock does (and doesn't) protect
|
| 2005-11-27: |
Weekly spam summary on November 26th, 2005
|
| 2005-11-26: |
How not to set up your DNS (part 2)
How not to set up your DNS (part 1)
|
| 2005-11-25: |
Making self-signed SSL certificates with OpenSSL
A little sysadmin twitch
|
| 2005-11-24: |
Solaris 9's slow patch installs
Multiprocessors are a leaky abstraction
|
| 2005-11-23: |
A quick outline of Firefox extension structure
|
| 2005-11-22: |
How to fiddle with Firefox .jar files relatively easily
|
| 2005-11-21: |
Why I don't write 'if (NULL == foo)' in C code
|
| 2005-11-20: |
Weekly spam summary on November 19th, 2005
|
| 2005-11-19: |
Solaris 9 sendmail irritations
|
| 2005-11-18: |
SQL as metaprogramming
|
| 2005-11-17: |
Why Linux threads use up so much memory
|
| 2005-11-16: |
How not to do DNS for internal domains
|
| 2005-11-15: |
The scope of the peril of having a highly dynamic web site
|
| 2005-11-14: |
Banning MSNBot: an open letter to MSN Search
|
| 2005-11-13: |
Weekly spam summary on November 12th, 2005
|
| 2005-11-12: |
Why using local variables is fast in Python
|
| 2005-11-11: |
The importance of understanding Python's implementation
|
| 2005-11-10: |
How doing relative name DNS lookups can shoot you in the foot
|
| 2005-11-09: |
Using Python introspection for semi-evil
|
| 2005-11-08: |
Fun with DNS: a semi-obscure problem
|
| 2005-11-07: |
Examining Python's string concatenation optimization
|
| 2005-11-06: |
Weekly spam summary on November 5th, 2005
|
| 2005-11-05: |
Minimizing object churn to optimize Python code
|
| 2005-11-04: |
Modifying Linux kernel configuration options the easy way
|
| 2005-11-03: |
Fun with upgrading our backup server
|
| 2005-11-02: |
How well do some Atom feed fetchers do conditional GETs?
|
| 2005-11-01: |
Another tip: Label your hard drives
|
| 2005-10-31: |
A tip: Always include NAT in your Linux kernel configuration
|
| 2005-10-30: |
Weekly spam summary on October 29th, 2005
|
| 2005-10-29: |
Affiliate marketing is undead
The problem with If-Modified-Since as a timestamp
|
| 2005-10-28: |
Inside building RPMs with Python distutils
|
| 2005-10-27: |
Databases are APIs
|
| 2005-10-26: |
An example of why DBAs make money
|
| 2005-10-25: |
A smooth disk swap
|
| 2005-10-24: |
On banning web search engines
|
| 2005-10-23: |
One reason why I like Unix
Weekly spam summary on October 22nd, 2005
|
| 2005-10-22: |
A gotcha with Python and Unix signals
|
| 2005-10-21: |
How ETags and If-Modified-Since headers interact
MSNbot (still) has problems with binary files
|
| 2005-10-20: |
A Python surprise: exiting is an exception
Accidentally shooting yourself in the foot in Python
|
| 2005-10-19: |
Thoughts on Jakob Nielsen on weblog usability
|
| 2005-10-18: |
Another aphorism of system administration
|
| 2005-10-17: |
The Myth of Support (Part 3)
|
| 2005-10-16: |
Weekly spam summary on October 15th, 2005
|
| 2005-10-15: |
How Hotmail is doing on the spam front
Estimating search engine popularity
|
| 2005-10-14: |
On the naming of machines
|
| 2005-10-13: |
Try things out with new machines
|
| 2005-10-12: |
Really understanding availability numbers
|
| 2005-10-11: |
Improve your web experience by turning Javascript off
|
| 2005-10-10: |
A useful resource: gmane.org
|
| 2005-10-09: |
Troubleshooting versus support
Weekly spam summary on October 8th, 2005
|
| 2005-10-08: |
Exploring some spamblogs
Solaris 9 'Power management'
|
| 2005-10-07: |
Three levels of database usage
|
| 2005-10-06: |
First irritations with Solaris 9
|
| 2005-10-05: |
Thinking about redundant power supplies
|
| 2005-10-04: |
A left-field aphorism
Keeping changing systems stable
|
| 2005-10-03: |
Some important notes on getting all objects in Python
|
| 2005-10-02: |
Weekly spam summary on October 1st, 2005
|
| 2005-10-01: |
Some problems in common definitions of 'spam email'
The many consoles of Linux
|
| 2005-09-30: |
Pinging weblogs.com in Python
|
| 2005-09-29: |
Something C programmers should not write in Python code
|
| 2005-09-28: |
MSNbot goes crazy with RSS feeds
|
| 2005-09-27: |
Some hints on debugging memory leaks in Python programs
|
| 2005-09-26: |
A peril of having a highly dynamic web site
|
| 2005-09-25: |
Weekly spam summary on September 24th, 2005
|
| 2005-09-24: |
A spammer roundup
It's a multi-protocol world after all
|
| 2005-09-23: |
Be cautious with numbers in awk
The (probable) importance of accurate Content-Types
|
| 2005-09-22: |
Excluding buggy RPMs from a yum repository
|
| 2005-09-21: |
More Fedora Core 4 problems with X
What vendor updates are pending on your Linux system?
|
| 2005-09-20: |
Some words of wisdom for free webmail providers
Two Python import tricks
|
| 2005-09-19: |
Function definition order in Python
|
| 2005-09-18: |
Weekly spam summary on September 17th, 2005
|
| 2005-09-17: |
Demon Internet joins the webmail hall of shame
|
| 2005-09-16: |
Getting a list of all objects in Python
Web browsers make bad text editors
|
| 2005-09-15: |
Efficiently distributing huge files to lots of workstations
|
| 2005-09-14: |
Why I really dislike the Singleton design pattern
|
| 2005-09-13: |
Concurrency is tricky
The problem of being overcautious
|
| 2005-09-12: |
Things not do for your network daemon's debugging option
The annoyance of arbitrary limits
|
| 2005-09-11: |
Weekly spam summary on September 10th, 2005
Comment spam writ large
|
| 2005-09-10: |
Hotmail's Other Spam Problem
Hotmail has a spam problem
More Fedora Core 4 Anaconda fun
|
| 2005-09-09: |
When Python classes are pointless
|
| 2005-09-08: |
Another Fedora Core 4 Anaconda bug
|
| 2005-09-07: |
The MSN search spider has gone crazy
|
| 2005-09-06: |
Two sides of Internet identity
|
| 2005-09-05: |
Why print-based debugging is so popular
|
| 2005-09-04: |
Weekly spam summary on September 3rd, 2005
|
| 2005-09-03: |
Varying interpretations of improper CIDRs
|
| 2005-09-02: |
The 'Trade Press' and blogs
|
| 2005-09-01: |
On blocking access from large IP ranges
|
| 2005-08-31: |
LILO vs GRUB: why LILO still wins for servers
|
| 2005-08-30: |
The Version Control System dependency problem
|
| 2005-08-29: |
Python's dangerous automatic Unicode conversions
|
| 2005-08-28: |
Weekly spam summary on August 27th, 2005
|
| 2005-08-27: |
How not to package software in RPMs
|
| 2005-08-26: |
Two faces of RSS
|
| 2005-08-25: |
Explaining rubber duck debugging
|
| 2005-08-24: |
Another aphorism of system administration
Completely using an alternate yum configuration
|
| 2005-08-23: |
Diagnosing an install problem: a case study in indirect failures
|
| 2005-08-22: |
On being nibbled to death by moths
|
| 2005-08-21: |
Weekly spam summary on August 20th, 2005
Mutating Referer Spammers
|
| 2005-08-20: |
Disk setup in our Fedora Core 4 Kickstart environment
|
| 2005-08-19: |
The March of the Cheap
|
| 2005-08-18: |
The pains of modern disk storage
|
| 2005-08-17: |
Parallelizing DNS queries with split
Remember to think about the scale of things
Annoying RSS Feed Tricks
|
| 2005-08-16: |
Things that could happen to your backups
|
| 2005-08-15: |
Check your backups
|
| 2005-08-14: |
Weekly spam summary for August 13th, 2005
Those amusing Referer spammers
|
| 2005-08-13: |
The anatomy of a DWiki bug
|
| 2005-08-12: |
Chiming in on static versus dynamic typing
|
| 2005-08-11: |
Some interesting software tools (part 1)
An aphorism of system administration
|
| 2005-08-10: |
Why open source needs distributed version control
|
| 2005-08-09: |
My first comment spam
|
| 2005-08-08: |
Security is a pain
|
| 2005-08-07: |
XBL rejection stats, August 6th 2005
|
| 2005-08-06: |
The importance of 'transparency' in data structures
|
| 2005-08-05: |
Perimeter firewalls and universities
|
| 2005-08-04: |
Keep your hands off my font size
|
| 2005-08-03: |
Why Perl is not my favorite language
|
| 2005-08-01: |
Multilevel list comprehensions in Python
Spam breakdown by SBL listing, July 31st 2005
|
| 2005-07-31: |
Spam storm aftermath, July 30th 2005
|
| 2005-07-30: |
Briefly doing DNS queries in Perl
|
| 2005-07-29: |
How spammers seem to be coping with greylisting
|
| 2005-07-28: |
Doing DNS queries in Python
|
| 2005-07-27: |
Spam Storm, July 26th 2005
|
| 2005-07-26: |
What ASNs are most actively spamming us
|
| 2005-07-25: |
Reliably archiving things
|
| 2005-07-24: |
Spam summary for July 23rd 2005
The necessary evolution of mail servers
|
| 2005-07-23: |
The Myth of Support (Part 2)
|
| 2005-07-22: |
The Myth of Support (Part 1)
|
| 2005-07-20: |
Please produce useful error messages
|
| 2005-07-19: |
Exceptions as efficient programming
Exceptions and casual programming
|
| 2005-07-17: |
Skills I use when troubleshooting
How many places actually send us email?
|
| 2005-07-15: |
First Irritations with Fedora Core 4
How AMD killed the Itanium
|
| 2005-07-13: |
The legend of Debian Linux
|
| 2005-07-12: |
Chasing a problem in our Gnome customizations
|
| 2005-07-11: |
Adding submenus to Gnome
|
| 2005-07-10: |
Tools versus frontends in systems programs
|
| 2005-07-09: |
The minimum antispam features of a modern SMTP server
|
| 2005-07-08: |
Why apt-get is not my favorite application
|
| 2005-07-07: |
What RSS can learn from Usenet
|
| 2005-07-06: |
Mozilla versus SeaMonkey
|
| 2005-07-05: |
Fedora Core 4's buggy Anaconda
|
| 2005-07-04: |
The big trick of running lots of systems
There's two sorts of large systems
|
| 2005-07-03: |
Checking for dead DNSBls
|
| 2005-07-02: |
What shouldn't be a method function
|
| 2005-07-01: |
Why this site has almost no design
|
| 2005-06-29: |
Reconsidering network authentication delays
|
| 2005-06-28: |
Scripting and automation capture knowledge
|
| 2005-06-27: |
Some quick CBL stats
Dangerously over-broad error catching
|
| 2005-06-26: |
Some spam stats at June 25th, 2005
|
| 2005-06-24: |
An open letter to free webmail providers
An unchanging system should be stable
|
| 2005-06-23: |
A real use for staticmethod
|
| 2005-06-22: |
Future Sysadmin Jobs
|
| 2005-06-21: |
The problems with enforced UTF-8 only filenames
|
| 2005-06-20: |
Small details can matter (or: a little nifty Python bit)
|
| 2005-06-18: |
SMTP IP firewall stats at June 18th, 2005
|
| 2005-06-17: |
The problem with CPAN (and other similar systems)
|
| 2005-06-16: |
AJAX vs Dialups
Iterator & Generator Gotchas
|
| 2005-06-14: |
Putting a pleasant Python surprise to use
Pitfalls in generating Last-Modified:
|
| 2005-06-12: |
Making a Python mountain out of a molehill
Why a Blog?
|
| 2005-06-11: |
web/HTTPRedirects
web/CSSIrritation
|