Wandering Thoughts archives

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

Page tools: See As Normal.
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.