Skip to main content

Posts

Improper english

Before retirement ended my last spell of unemployment, i wondered if the timing of that dismissal was ideal. one month earlier or later might have been better? improving a server log was my last assignment. like many other companies, their senior management believed in their culture, technology, and tools. like other well-funded companies, they used Splunk and wanted to use JSON format. nobody reviewed the pull request that would have established a baseline for my work. their Splunk dashboard code was not versioned. Overcommunicating JSON can be ideal, and creating a data structure to discover if a log entry describes an error is easy and reasonably fast, but computers find strings very quickly. a faster algorithm uses less electricity; computer activity is human activity. ...
Recent posts

Cat's whiskers

Online forums are good sources of information and/or habitats for groupthink. Jean Valjean ignored the smell; so can you :-) forums are biased in various ways. for example, woodworkers' opinions about linseed oil are informed by wood finish products. in another forum, we might find a recommendation for finishing wood with linseed oil sold by an art supply store. sauce for the painter is sauce for the woodworker? Slippery when wet when i became interested in safety razors, forums were invaluable sources of information. they are still helpful, but i learned enough to continue on my own. at one point i bought cheap shaving soap thinking that it couldn't be as bad as forum contributors claimed. they were right, but the soap was/is still useful: it stays at th...

Obsolete versions

Once upon a time, upgrading packages was just downloading and installing files. after a while, it also entailed compiling source code because my operating systems no longer received first-class support. Descent Into Madness after a while, upgrading a package also entailed upgrading the tools needed to make it and their dependencies. i felt like i had installed every (meta-)build system. on one of my MacBooks, Homebrew maintained two versions of Python and two versions of llvm . as projects migrated from Autotools to CMake, library versions became inconsistent. these inconsistencies puzzled me, because the first test one should perform after adding support for another build system is determining if the result is the same. any differences should be eliminated/explained. in real life, most people didn't ...

Slippery when wet

Ivory soap is known for its purity, but i thought it was harsh and eventually discovered that people in the soap industry agree (personal communication). Rinse and repeat though shampoo manufacturers direct us to apply shampoo twice, the second application often seems unnecessary. maybe it's a ploy to induce us to repurchase more often? meanwhile, everyone knows soap is poor shampoo because it makes your hair gummy. ironically, washing hair with soap can work quite well if the soap isn't too complicated and you apply it twice. more generally, soap scum often rinses off after a second washing with the same soap. when i have to wash one or two things in my kitchen, i use soap instead of detergent. another techniq...

Cache strategies

An ideal cache entry is created just before its value is first needed and destroyed just after it is no longer needed. typical cache strategies do not (try to) approximate this ideal, but half a loaf is better than none? caching doesn't necessarily help. for example, using another host to cache database query results requires more network usage. determining if the additional complexity and cost are worthwhile depends on the database server's behavior (it might be caching the results already), network connection speeds, etc. in a simpler architecture, a server and its cache are hosted by the same machine. if there are redundant servers there will be duplicate cache entries, so analyzing cost/performance still requires effort. there is no free lunch. Server requirements ...

Innocuous scraps

Nécessité fait loi. i was about to mangle Hamlet's soliloquy (slings and arrows of micromanagement?) when i found this :-) with so many ostensibly peaceable people at war, it's easy to imagine being in a situation where killing someone might be the best option. after all, sometimes there are no good choices. whether you are willing is one question. which is better is another. i'm sure i've been characterized as results-oriented at some point, and i certainly have broken rules. now i self identify as process-oriented, partly because i think it's possible to be both, mostly because a mindful focus on processes can lead to better results. metrics are situational, i.e. “better” is in the eye of the beholder. in my kitchen, using less water is important because i wasted so much. this shift t...

Sphinx supplement

Once upon a time, i was in a team led by a developer who was devoted to introducing modern standards. he didn't have much experience, so i think this devotion was essentially a cloaking device. though we didn't generate documentation, most pull requests elicited a request for a docstring change. my first post about Holistic Development focused on logging . this one is about generated documentation. though software developers habitually read code, generated documentation can become their primary source of information because it's easier to read. it also assures product owners that features are addressed, and that the design is orderly. Documentation review a docstring is just a comment until documentation is generated. at that point, evaluation of docstring quality should be based on the generate...