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 POST s 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
|