<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>SysAdmin1138 Explains</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/" />
    <link rel="self" type="application/atom+xml" href="https://sysadmin1138.net/mt/blog/atomic.xml" />
    <id>tag:sysadmin1138.net,2022-02-11:/mt/blog//5</id>
    <updated>2026-02-18T15:46:50Z</updated>
    <subtitle><![CDATA[Observations of a Staff Engineer in platform (Linux & AWS; formerly Windows and NetWare in hardware). This started as an academic blog and just kept going. Currently private sector and genderqueer. Not an official blog by any stretch. Really.]]></subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.2.13</generator>

<entry>
    <title>Growth vs throughput mindsets</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2026/02/growth-vs-throughput-mindsets.shtml" />
    <id>tag:sysadmin1138.net,2026:/mt/blog//5.2888</id>

    <published>2026-02-18T15:00:00Z</published>
    <updated>2026-02-18T15:46:50Z</updated>

    <summary>I&apos;ve talked about this one to various managers over the years when the topic of work-scheduling humans comes up. There are two big frameworks for deciding who works which tickets: Throughput: Assign the person who will complete the task fastest...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="culture" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>I've talked about this one to various managers over the years when the topic of work-scheduling humans comes up. There are two big frameworks for deciding who works which tickets:</p>
<ul>
<li><strong>Throughput</strong>: Assign the person who will complete the task fastest to the ticket or story. Helpdesks often work on this model, since they're frequently quite under water.</li>
<li><strong>Growth: </strong>Assign the second most knowledgeable person to the ticket/story (or third, or fourth if you have that many people) so they can get experience solving the problem. This method solves the cross-training problem.</li>
</ul>
<p>Both approaches are valid, and which approach a team takes is balanced against the incentives the team operates in. For a Helpdesk team, which is often under-staffed, throughput tends to be highly prioritized. For a Dev team with on-call responsibilities, growth tends to be the norm to make sure problems can be handled by anyone and to stop burning out your senior talent. Security teams tend to be a blend of both; with ticket-based security reviews urging throughput mindsets, where incident-response prioritizes growth. For Platform teams that tend to be involved in <em>a lot</em> of incidents due to running the systems that problems happen on, even if the problem wasn't actually the platform system, throughput mindsets are hard to avoid.</p>
<p>Now add coding LLMs to the mix.</p>
<p>The on-label reason to use agents such as Claude is throughput: spend less time working on tasks to improve your throughput. For Engineering Directors this is a great thing, because you can get throughput advances in your reporting teams without sacrificing engineering maturity, letting you lean on the product roadmap a little harder.</p>
<p>I'd argue that the throughput nature of LLM agents actually sacrifices some growth at population-scale when used in currently typical tech-companies. By moving from a purely generative mindset when building code to a revisionary mindset, going from writing code to reviewing and editing generated code, engineers spend less time learning problem-spaces in detail. Less time learning means taking more calendar time building up true domain knowledge. Coding agents are a somewhat different thing than the decades of "just add another abstraction layer and forget about the lower level details" we've been doing since 1970. It is true that most engineers in SaaS companies aren't spending lots of time hand-tuning assembly for execution on their ISA, and doing so is actually very bad practice unless you're in extremely specific problem domains. The difference between <em>yet another abstraction</em> and <em>coding agent</em> is the difference between abstraction and synthesis.</p>
<p><strong>Abstraction</strong> is a distillation of a problem-space into an API, which can represented by grpc protobufs or function-calls, or whatever. You have inputs, expected actions, and expected results; the abstraction handles the details so you don't have to and often <em>someone else</em> is responsible for updates over time.</p>
<p><strong>Synthesis</strong> is building novel functionality through combining multiple things to create a new thing. Humans traditionally have been the synthesis engines of code-production, but coding agents are beginning to automate portions of this.</p>
<p>Writing code is <strong>synthesis</strong>. Until the advent of coding agents, your IDE would give you support through syntax highlighting and API short-cuts, reducing the cognitive load of bare syntax problems to let you focus on higher level problems like how a function should handle bad inputs. The IDE gives you support for <em>abstractions</em>, but leaves the synthesis to you.</p>
<p>Once coding agents get added in, you shift from generating code, synthesis, to reviewing automatically generated code whenever the agent creates something for you. This is when cognitive biases come into play. Remember the mindset thing I opened this post with? An engineer under throughput stress is going to be less diligent about checking generated code in detail, and will shift more of their domain learning to troubleshooting test-failures and incident-response. Less domain knowledge will be developed during the initial writing. An engineer with no throughput stress, perhaps they're doing some for-fun coding, is more likely to take a fine toothed comb to generated code to learn what the generated code is trying to do, why it works the way it does, and what best-practices it seems to be following; in this throughput-free case the coding agent is a driver of growth.</p>
<p>Coding agents end up <em>magnifying</em> the biases present in the team's environment, enhancing positive feedback loops. The advertised reason to adopt coding agents is to increase developer throughput! The throughput bias is baked into the technology and its marketing, which means organizations requiring coding agent use need to take steps to provide some negative feedback loop enhancement to avoid large-scale degradation in coding quality and incident severity. Use of these agents make an organization <em>more sensitive</em> to growth/throughput bias shifts prompted by org-chart and quarterly goal shifts.</p>
<p>Combine the bias-enhancing quality of coding agents with the industry-wide retraction in US-based jobs for economic reasons, and you should be seeing a general retraction in overall growth mindsets among US-based engineers.</p>]]>
        
    </content>
</entry>

<entry>
    <title>The tech community needs so much repair</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/11/the-tech-community-needs-so-much-repair.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2887</id>

    <published>2025-11-24T18:00:00Z</published>
    <updated>2025-11-24T18:36:41Z</updated>

    <summary>This BlueSky thread from Cat Hicks is on the money. There actually has not been enough reflection in the tech community about DOGEall I see are &quot;they&apos;re not engineers&quot; &quot;that&apos;s not what engineering is&quot; I want a thick good really...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="culture" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p><a href="https://bsky.app/profile/grimalkina.bsky.social/post/3m6f7n4fnv22g">This BlueSky thread from Cat Hicks is on the money</a>. </p>
<blockquote>
<p>There actually has not been enough reflection in the tech community about DOGE<br />all I see are "they're not engineers" "that's not what engineering is" I want a thick good really real piece to sink my teeth in about all the parts of this that ARE "like engineering"<br />I would write it except I want to stay safe<br />Engineering can be so much better than this and more than this. It's absurd how much we're resigned to this entire area of human work being held hostage by this kind of culture.<br />I do not believe that the majority of the software people I have worked with all these years sit around thinking, "I want cancer research to be destroyed." We have mountains to climb no doubt, we are trapped in some bad cultures no doubt, but I do not believe this of you for one moment.<br /><em>Our tech community needs SO much more repair, processing, and collective reflection</em>. The people who worked to support government and science were so betrayed by other groups. The people in flashy big tech cos feeling like their values were betrayed. Just so much repair needed here</p>
</blockquote>
<p>I absolutely agree that our tech community needs quite a lot of collective reflection, processing, and work on repair. For a variety of reasons I've done a fair amount of casual research into recovering from trauma of various types. Some of this comes from having lived through the dot-com, great recession, and profitability-crunch contractions in the tech market, and some from good old fashioned life experience outside of the workplace. Trauma is trauma, and we have some pretty good ideas what chronic (ongoing, persistent) trauma does vs acute (single traumatic event) trauma.</p>
<p>Acute trauma: sudden-death layoff.</p>
<p>Chronic trauma: never being allowed to stay on one project long enough to get something good for your performance review, making you constantly fear the next layoff will have your name in the list.</p>
<p>Each of these affects the body and mind differently, and when entire populations are subjected to chronic traumas you get population-level reactions. When those chronic traumas are <em>structural</em>, as is the case with management culture in all of big US-tech, remediation becomes next to impossible. When individuals in this chronically traumatized population can't fix it, you get three big trauma-responses:</p>
<ul>
<li><strong>Cynicism</strong>. I can't fix it, that's just how it is. If you set your expectations low enough, you get to be happily surprised once in a while! It's great.</li>
<li><strong>Heroism</strong>. Rally your fellow workers to overthrow the corrupt system! Who is with me? If not, I'll do what I can alone.</li>
<li><strong>Trauma harder as a way of life.</strong> Obviously, we're in a cut-throat system which means I need to cut throats. QED.</li>
</ul>
<p>Big-tech management likes workers in the trauma harder category, is somewhat tolerant of cynics, and is designed from the org-chart out to prevent the heroes from getting anywhere <em>useful</em> and to redirect their energies in positive directions like burnishing the company's reputation among diversity hires. Do this for a few decades and you have an entire population of highly educated workers who have been trained their entire careers to look at the next sprint/month/quarter's deliverable for your team and kinda ignore what the rest of the company is doing. How your quarter's project to reduce stream latency by 15% at the p95 level relates to the efficiency of data-analysis in ICE isn't always obvious, don't look up or you might find out.</p>
<p>So take these workers who live in this pit of oppression every day for their day-jobs, and put them into an open-source community for their fun-time activity. What happens then?</p>
<ul>
<li>The <strong>cynics</strong> contribute as they're able, expecting corporate malfeasance to show up at any point, often seeing it when it isn't there.</li>
<li>The <strong>heroes</strong> go about building a community that actually is healthy for a change! Whew.</li>
<li>The <strong>trauma harder</strong> crew perpetuate corporate-style power structures because that's how tech works, accidentally reinforcing the cynics and frustrating the heroes</li>
</ul>
<p>Fixing this sort of thing requires so much work.</p>
<ul>
<li>The <strong>cynics</strong> need to be taught that their defensive pessimism is not appropriate by repairing the structural injustices</li>
<li>The <strong>heroes</strong> need to understand they're not alone and are being listened to through an effort of collective reflection</li>
<li>The <strong>trauma harder</strong> crew needs to realize that alternate structures are viable, and understand the damage they've endured in the existing system through extensive processing</li>
</ul>
<p>You can't do this overnight, it will take a revolution of some kind. Some revolutions are slow, like the heroes getting somewhere with governmental support allowing unionization to creep in higher and higher numbers until union contracts dominate worker terms and conditions rather than Radford salary reports. Some revolutions come quick like whole industries getting nationalized after a socialist junta and remodeled away from oligarchic control. Some come generationally, like China overtaking the US for big-tech exports forcing the oligarchs to look elsewhere to stay fat.</p>
<p><em>Our tech community needs SO much more repair, processing, and collective reflection</em>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>The desperation of Windows</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/11/the-desperation-of-windows.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2886</id>

    <published>2025-11-07T15:00:00Z</published>
    <updated>2025-11-06T21:54:25Z</updated>

    <summary>It is no secret I&apos;m a long time now-former Windows system administrator. The first Windows I professionally administered was Windows NT, and I was with it up through Windows 2008 (and a touch of 2012). I ran into an observation...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="microsoft" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>It is no secret I'm a long time now-former Windows system administrator. The first Windows I professionally administered was Windows NT, and I was with it up through Windows 2008 (and a touch of 2012). I ran into an observation today that made me to Hmm, and that leads to blogposts.</p>
<blockquote>
<p>@xgranade The common complaint is that you need to be a professional software developer to use Linux. But to use Windows 11 (and have it be usable) you need to be a professional sysadmin who uses terms like "group policy".</p>
<cite><a href="https://aus.social/@natarasee/115501020317612539">https://aus.social/@natarasee/115501020317612539</a></cite></blockquote>
<p>Because this is spot on. I'd argue Linux is usable by non-devs these days, but you still need a tolerance for fiddling and non-standard UI. The Windows side is extremely true. Windows <em>in a corporate context</em> is way more tolerable than Windows in a home context because the corporate context has a group of grumpy Windows sysadmins setting new Group Policy every time a security or feature release comes out to turn down the suck. Those grumpy sysadmins are as grumpy at Microsoft pulling this consent-violating shit as you are, and Windows lets you centrally shut it off (in a corporate context.) </p>
<p>Windows has been losing desktop market-share to Apple for years, and the old "Wintel" cash-cow they used to enjoy is not milking as much as it used to. When software makers see flagging revenue and soft user demand, it's time to do demand forcing! And demand forcing leads to shittier experiences as the <em>use more software!</em> message gets ever more aggressive.</p>
<p>The long time followers of this blog have seen enough of this industry to know the cycle when they see it.</p>
<ul>
<li>Darling product stops being darling for whatever reason. Competition, flagging significance, major incident spoiling user trust, private equity takeover, whatever.</li>
<li>The product's Product org has to <em>make number go up</em> in spite of all this so jacks renewal prices.</li>
<li>Renewal prices only jack so far before growth reverses, so Product has to ship new features to justify the price increases.</li>
<li>Bad uptake of new features means features get added to base plans to justify jacking the price.</li>
<li>Bad uptake of now baseline features means more aggressive prompting of those features to drive up Monthly Active Users metrics</li>
<li>Repeat</li>
</ul>
<p>Do this for enough years and you get the sclerotic Windows 11, full of demand-forcing promptware that pisses your customers off.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Paul Cantrell&apos;s Treatise Against Efficiency</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/10/paul-cantrells-treatise-against-efficiency.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2885</id>

    <published>2025-10-02T14:33:00Z</published>
    <updated>2025-10-02T14:32:14Z</updated>

    <summary>On Fediverse, Paul Cantrell, CompSci professor at Macalester in St. Paul Minnesota, posted the following list: Here&#8217;s the lightning sketch of Paul&#8217;s Treatise Against Efficiency that I&#8217;ve never written:1. Efficiency is asymptotically inefficient: as costs approach zero, the cost of...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="sysadmin" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>On <a href="https://hachyderm.io/@inthehands/115296127359612980">Fediverse</a>, Paul Cantrell, <a href="https://www.macalester.edu/mscs/">CompSci professor at Macalester</a> in St. Paul Minnesota, posted the following list:</p>
<blockquote>
<p>Here&#8217;s the lightning sketch of Paul&#8217;s Treatise Against Efficiency that I&#8217;ve never written:<br /><br />1. Efficiency is asymptotically inefficient: as costs approach zero, the cost of further reducing them approaches infinity.<br />2. Efficiency prioritizes the measurable over the difficult-to-measure.<br />3. Efficiency prioritizes what those in power see (or imagine) over on-the-ground reality.<br />4. Following from 2 and 3, efficiency reduces the amount and quality of information flowing into a human system.<br />5. Efficiency foments institutional inflexibility.<br />6. By removing slack, efficiency causes small failures to cascade more readily and increases the risk of catastrophic failure.<br />7. Following rom 4, 5, and 6, efficiency trades small costs for massive risks: from failures, from missed opportunities, and from inability to adjust.<br />8. Efficiency, when pushed, strangles the emergent phenomena that in the long term create all new things of value.<br />9. Thus, although it can be a by-product of evolution, efficiency as a goal in itself strangles evolution.<br />10. Efficiency as a goal strangles joy.</p>
</blockquote>
<p>It turns out I do have time to write an article about that, below the fold.</p>]]>
        <![CDATA[<p><strong>1. Efficiency is asymptotically inefficient: as costs approach zero, the cost of further reducing them approaches infinity.</strong></p>
<p>This is a long-standing axiom of "nines" thinking. Where each "nine" of uptime costs rather more than the previous nine. I won't spend time on this, because this is widely understood. Fighting for better uptime, no matter how good it already was, is a big part of why Site Reliability Engineering came into being: we needed a way to quantify this, and frameworks for deciding when <em>moar uptime!</em> was not actually called for given business realities.</p>
<p>In areas where efficiency is not a proxy for uptime, where we have an entire engineering practice created to manage realities surrounding the topic, you get what we had before SRE was everywhere: managers attempting to score points by driving up efficiencies of operation and damn the costs! Improved efficiency will pay for itself! It wasn't a good time in the tech industry.</p>
<p><strong>2. Efficiency prioritizes the measurable over the difficult-to-measure.</strong></p>
<p>This is an axiom of management overall: you can't manage what you can't measure. Efficiency is a management problem, therefore efficiency is based on what you can measure. QED. Managing through vibes is not based in science.</p>
<p><strong>3. Efficiency prioritizes what those in power see (or imagine) over on-the-ground reality.</strong></p>
<p>This is another emergent axiom out of US tech industry management practices. In any organization with more than three levels on the org chart, the people making the big decisions on costs are at a great remove from the people doing the work. In theory, if your quantization is good enough (point 2) this shouldn't matter. Theory is not reality, though; which is why the big tech orgs often have Staff+ engineers (Staff, Principal, Distinguished Engineers, Architects) partnering with higher level managers to improve the odds of ground-truth being an input to the big decision. Improving the odds is not the same as 'shall.' The management context always wins in a conflict with ground-reality.</p>
<p><strong>4. Following from 2 and 3, efficiency reduces the amount and quality of information flowing into a human system.</strong></p>
<p>By restricting information solely to things that can be quantized (point 2) and with a tall enough org chart that the people who make the big decisions are heavily divorced from the people doing the work (point 3) you are making decisions on heavily summarized data based on a restricted subset of all the data, which makes deriving a high quality solution rather harder. This is a fundamental feature of modern management and data practices.</p>
<p><strong>5. Efficiency foments institutional inflexibility.</strong></p>
<p>Efficiency is a form of optimization.</p>
<p>Optimization requires building your organization and management structure to be fit for the given tasks, with no surplus.</p>
<p>Every time the task changes, you have to reoptimize. Reoptimization has a real cost, so don't change the task for little things.</p>
<p>This leads to inflexibility, and missed innovation opportunities; it simply costs too much to experiment with a new thing.</p>
<p><strong>6. By removing slack, efficiency causes small failures to cascade more readily and increases the risk of catastrophic failure.</strong></p>
<p>Efficiency of management becomes brittle when one failure causes other managers to get overloaded with work even with routine 'failures' like parental leaves. Slack allows you to better buffer these routine failures, and improves the odds of the whole thing avoiding a catastrophic failure when some unplanned failure happens.</p>
<p>Technical efficiency in distributed systems becomes brittle when the ability to scale up to meet demand is compromised, or a changed usage-pattern causes cascading failures due to lack of optimization in the new pattern. Slack, inefficiency, allows better buffering of changed usage patterns, allowing time to reoptimize for the new shape.</p>
<p><strong>7. Following rom 4, 5, and 6, efficiency trades small costs for massive risks: from failures, from missed opportunities, and from inability to adjust.</strong></p>
<p>As efficiency increases, slack decreases.</p>
<p>As slack decreases, tolerance of failure decreases. Even some 'planned' failures can prompt greater incidence-rates of major failure. Unplanned failures are far more likely to result in major failure.</p>
<p>As slack decreases, the cost of innovation increases, leading to missed opportunities. Certain innovations become classed as failures as a result.</p>
<p><strong>8. Efficiency, when pushed, strangles the emergent phenomena that in the long term create all new things of value.</strong></p>
<p>Efficiency by necessity creates brittleness and reduced failure tolerance.</p>
<p>Lack of failure tolerance means lack of tolerance for experimentation, which is the foundation of innovation. Such systems are more likely to wall innovation off into a 'safe' part of the organization, and be chronically underfunded.</p>
<p><strong>9. Thus, although it can be a by-product of evolution, efficiency as a goal in itself strangles evolution.</strong></p>
<p>Efficiency is optimization. While evolution can produce some amazingly optimized builds, such builds do not tolerate changed circumstances. Take the oxygen out of the system, and most of life as we know it has a much harder time working. Efficiency increases change <em>intolerance</em>, which slows evolution.</p>
<p><strong>10. Efficiency as a goal strangles joy.</strong></p>
<p>The joy of making is introducing change. A new, more efficient process. A better way of handling changed usage patterns. A fundamental rethink of how features are planned. A better platform system that's less annoying to keep running.</p>
<p>Efficiency increases change intolerance. Change is joy. Efficiency decreases joy.</p>]]>
    </content>
</entry>

<entry>
    <title>ServerFault spam issues</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/09/serverfault-spam-issues.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2884</id>

    <published>2025-09-05T16:59:29Z</published>
    <updated>2025-09-05T17:49:36Z</updated>

    <summary>For the maybe three of you still there, the StackExchange sites have been experiencing a multi-month spam wave from a certain group of spammers who&apos;ve built automation for our sites. SuperUser gets it harder than ServerFault, but we both get...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="stats" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>For the maybe three of you still there, the StackExchange sites have been experiencing a multi-month spam wave from a certain group of spammers who've built automation for our sites. SuperUser gets it harder than ServerFault, but we both get hit. So I did some diving today to figure out just how bad the floods are.</p>
<p>For 2025:</p>
<ul>
<li>Non-deleted questions: 2512</li>
<li>Deleted questions (mostly spam): 9748</li>
<li>One specific spam type: 6863</li>
</ul>
<p>Yes, we're getting way more spam than legitimate questions right now, and have all year.</p>
<p>The Metasmoke people are doing a lot to make sure you rarely see it, but it's still a burden on the moderation staff due to the need to delete the spam-users. That deletion helps the StackExchange anti-spam systems identify bad IPs and others which increases the burden on spam-campaigners like these.</p>
<p></p>]]>
        
    </content>
</entry>

<entry>
    <title>Where &quot;software telemetry&quot; fits in the observability ecosystem</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/06/where-software-telemetry-fits-in-the-observability-ecosystem.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2883</id>

    <published>2025-06-24T14:00:00Z</published>
    <updated>2025-06-23T17:34:22Z</updated>

    <summary>I wrote a weird little book. I&apos;m still getting royalties, so thank you all for buying, but this book does not easily fit into 2025 concepts of &quot;observability engineering,&quot; so I want to talk about my goals and how it...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="telemetry" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p><a href="https://www.manning.com/books/software-telemetry?a_aid=sysadmin1138&amp;a_bid=c3fefe6b">I wrote a weird little book</a>. I'm still getting royalties, so thank you all for buying, but this book does not easily fit into 2025 concepts of "observability engineering," so I want to talk about my goals and how it still fits.</p>
<p>At the base, I ended up writing a book for Platform teams looking to deliver internally deployed observability systems. That's not quite what I had in mind when I started writing in 2020, but that's where it lives five years later. My actual goal was to write a book that was usable by people in the SaaS industry, but also in businesses where the main user of internally developed software was internal users. The non-SaaS population often gets ignored in book targeting, and I wanted something that would let these people feel <em>seen</em> in a way that reading yet another Observability for Cloud Systems book would. In 2025, this book is a Platform book.</p>
<p>In 2019 and early 2020 when I was working with Manning on the title and terms, the word "observability" came up. It seems hard to remember in 2025, but "observability' was still a vague term that didn't yet have industry consensus behind it. OpenTelemetry was a thing at the time, but the "metrics" leg of OTel was still in beta, and "logs" was merely roadmapped. In 2025 there are debates around whether the fourth pillar is <em>profiles</em>, performance traces, or <em>errors</em>, which could be stack-dumps or a category of logs. If we had decided to use "observability" instead of "telemetry" the book may have sold better, but the term "telemetry" works better <em>for me</em> because observability is a practice built on top of telemetry signals. I wasn't writing a book about practice, I was writing about herding signals.</p>
<p>Herding signals, not interpreting them.</p>
<p>In 2025, most of the herding is supposed to be done through OpenTelemetry these days. Or if it isn't OTel, the signals are being herded through other systems like Apache Spark. This is industry consensus; instrument your code, add attributes in the emitters and collectors, change your vendors as you need to, build dashboards in your vendor's platform. A rewrite of <em>Software Telemetry</em> would reference OTel far more often than I did, but I would still make sure to mention non-OTel styles due to OTel not actually being supported (or in some cases, a good fit) in certain environments like network telemetry.</p>
<p>Whatever the API format of the signals getting herded, platform engineers need to know the fundamentals of how telemetry systems operate and that's what I wrote about. <em>But also,</em> I wrote about storing those signals, which is something that OpenTelemetry deliberately leaves out as a detail for the implementer. As I extensively wrote about, storing signals and creating a reporting interface is a hard enough part of telemetry that you can build a business around it. In fact, the Observability Tools market in 2025 is valued at around $2.75 Billion, and they all would love for you to use OTel to send them data to store and present.</p>
<p>In the language of my book, OpenTelemetry is an early <em>shipping stage</em> technology. Early because it has no role in storage. OTel arguably has a role in the <em>emitting stage</em> through explicit markup in code itself. OpenTelemetry's impact to the <em>presentation stage</em> is mostly in tagging and attribute schemas and how they get represented in storage. Observability needs to consider every stage, but also the SRE Guide problems of figuring out what to instrument, to which markup standards, following which procedures to ensure reliability. Observability sits on top of telemetry.</p>
<p>One of the consistent comments I got during the pre-publication reviews was: "I want to know what to track."</p>
<p>My answer was simple: that's not the book I'm writing.</p>
<p>This book is for you, the growth engineer tasked with taking a Kafka topic (or group of topics) of logging data, sent there by OTel, and transform it in the big Databricks instance with all  the other business data.</p>
<p>This book is for you, the network engineer tasked with extracting network metrics out of a proprietary system, so you can chart network things in the main engineering dashboarding platform.</p>
<p>This book is for you, the security engineer tasked with extracting security event data out of a cloud provider to put into the SIEM system.</p>
<p>This book is for you, the project manager who has just been given a <em>digital transformation</em> project to revitalize how all the internally developed apps will produce telemetry, and how engineers will observe the system.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Nostalgia over blogging vs the current social media hellscape</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/06/nostalgia-over-blogging-vs-the-current-social-media-hellscape.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2882</id>

    <published>2025-06-03T14:00:00Z</published>
    <updated>2025-06-04T13:09:24Z</updated>

    <summary>A sentiment just crossed Fediverse recently, which is in the vein of &quot;RSS was peak social media, change my mind&quot;. The original post was from https://hachyderm.io/@Daojoan@mastodon.social and is quoted below: RSS never tracked you.Email never throttled you.Blogs never begged for...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="blogger" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>A sentiment just crossed Fediverse recently, which is in the vein of "RSS was peak social media, change my mind". The original post was from https://hachyderm.io/@Daojoan@mastodon.social and is quoted below:</p>
<blockquote>
<p>RSS never tracked you.<br />Email never throttled you.<br />Blogs never begged for dopamine.<br />The old web wasn&#8217;t perfect.<br />But it was yours.</p>
<cite>https://mastodon.social/@Daojoan/114587431688413845M</cite></blockquote>
<p>I was there for the rise and fall of blogging, so the rest of this post is me over thinking this particular post.</p>
<p></p>]]>
        <![CDATA[<blockquote>
<p>RSS never tracked you</p>
</blockquote>
<p>RSS never tracked you the way HTTP or HTML never tracked you. What tracks you with HTTP/HTML are rendering engines for HTML and Javascript. I can say with absolute certainty that tracking-tech during blogging's height was used to track audience, click-through rates, and other site-engagement metrics. RSS was the loss-leader for clicks on sites. This particular post uses one of those tricks; an opening paragraph promising more, which if you're reading this through RSS you will have to click through to read. Tracking RSS feeds was done through tracking pixels back in the day because you couldn't trust Javascript to run in the RSS readers but HTML rendering generally worked.</p>
<blockquote>
<p>Email never throttled you.</p>
</blockquote>
<p>Email absolutely did, absolutely. The problem with spinning up a self-hosted newsletter service in 2025 is getting your IP reputation good enough that the big mail-box vendors (Google, Microsoft, Yahoo/AOL) let you deliver. This issue was in its infancy in 2005, but was an emerging problem as IP reputation became clear as a low-cost first-pass anti-spam technique. Mailing list operators ran into this all the time back in 2005 as various subscribers moved behind security appliances doing IP reputation.</p>
<blockquote>
<p>Blogs never begged for dopamine.</p>
</blockquote>
<p>On a factual basis, this is false. Sole operators like myself lived for comments, that dopamine hit from people liking what I wrote. If I couldn't get that, I'd enjoy reshare statistics (see the first point about RSS tracking). Many commercial blogging platforms even created RSS feeds for <em>comments on specific articles</em> to make it easier to keep up on discussions. If that isn't dopamine, I don't know what is.</p>
<blockquote>
<p>The old web wasn&#8217;t perfect.<br />But it was yours.</p>
</blockquote>
<p>True, to a point. I tagged this article <em>blogger</em> because that's what I hosted this blog through for most of its first decade.  You know, a centralized blogging platform akin to LiveJournal or Dreamwidth back then, or Medium and Substack today. I didn't own the platform. After I moved to my own domain and Movable Type, this was true. And yeah, it wasn't perfect but it was most definitely mine.</p>
<hr />
<p>There is another layer to this post beyond the simply factual, and that's a critique of platforms. Blogging in its heyday was perhaps the last major gasp of the Old Internet, where a bunch of hobbyists create something beautiful and widely adopted, which then gets enclosed by commercial interests. Blogging was absolutely <em>not</em><em> centralized</em>. That lack of centralization means there was no unitary profit motive looking to drive engagement to increase sales, those were limited to individual sites.</p>
<p>Blogging's decline is traceable to two big trends:</p>
<ul>
<li>Google killed Google Reader, which was the dominant RSS reader by a long shot. This death forced a bunch of folks to look for alternate platforms. My stats show my readership plummeted over 50% on death-day.</li>
<li>Twitter and other early social media provided a much shorter dopamine feedback loop than the blog-publish-comments loop.</li>
</ul>
<p>The fact that Google Reader's death functionally killed RSS-based distribution is proof that blogging was already beginning to centralize. Google couldn't control production and distribution, only engagement; and the real money was in controlling all three. Google wanted what Twitter had, which was the entire production, distribution, and engagement framework on the same site with the same owners and tracking infrastructure. Once they had that, start engineering dopamine feedback loops to improve stickiness and engagement; and we have all the algorithmic and dark pattern pathologies we know and loathe today.</p>
<p>Modern internet users have been trained for a decade in a half to expect social media to involve a single, or small number of sites to do <em>everything</em>, and individual posts are short enough to deal with while waiting for a bus or the kids to walk from school to car. The old blog+rss model simply can't compete with this, and better fits as attention-competition to a given user's <em>news</em> media consumption. Medium and Substack both offering paid subscription options for individual blogs is proof that news media is the competition to blogging, not social media.</p>
<p>The nostalgic exhortation to set up a blog and distribute through RSS is in the same vein as calls to return to IRC and dump Slack/Teams. Some people/groups can do that, but the platform features are different enough that the old tools don't feel feature-complete and that lack nudges folk back into the commercial walled gardens.</p>]]>
    </content>
</entry>

<entry>
    <title>Storage, DoGE, and cognitive biases against tape</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/04/storage-doge-and-cognitive-biases-against-tape.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2881</id>

    <published>2025-04-07T14:00:00Z</published>
    <updated>2025-06-23T16:23:42Z</updated>

    <summary>The Department of Government Efficiency, Musk&apos;s vehicle. made news by &quot;discovering&quot; the General Services Administration uses tapes, and plans to save $1M by switching to something else (disks, or cloud-based storage). Long time readers of this blog may remember I...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="storage" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>The Department of Government Efficiency, Musk's vehicle. made news by "discovering" the General Services Administration uses tapes, and plans to save $1M by switching to something else (disks, or cloud-based storage). Long time readers of this blog may remember I used to talk a lot about storage and tape backup. Guess it's time to get my antique Storage Nerd hat out of the closet (this is my first storage post since 2013) to explain why tape is still relevant in an era of 400Gb backbone networks and 30TB SMR disks.</p>
<p>The SaaS revolution has utterly transformed the office automation space. The job I had in 2005, in the early years of this blog, only exists in small pockets anymore. So many office systems have been SaaSified that the old problems I used to blog about around backups and storage tech are much less pressing in the modern era. Where we have stuff like that are places that have decades of old file data, starting in the mid to late 1980s, that is still being hauled around. Even when I was still doing this in the late 2000s the needle was shifting to large arrays of cheap disks replacing tape arrays.</p>
<p>Where you still see tape being used here are offices with policies for "off-site" or "offline" storage of key office data. A lot of that stuff is <em>also</em> done on disk these days, but some offices still kept their tape libraries. The InfoSec space is keen to point out you can't crypto-locker an offline tape, so offline tape is a useful tool in recovering from a ransomware incident. I suspect a lot of what DoGE found was in this category of offices retaining tape infrastructure. Is disk cheaper here? Marginally, the true savings will be much less than the $1M headline rate.</p>
<p>But there is another area where tape continues to be the economical option, and it's another area DoGE is going to run into: large scientific datasets.</p>
<p>To explain why, I want to use a contrasting example: A vacation picture you took on an iPhone in 2011, put into Dropbox, shared twice, and haven't looked at in 14 years. That file has followed you to new laptops and phones, unseen, unloved, but <em>available</em>. A lot goes into making sure it's available.</p>
<p>All the big object-stores like S3, and file-sync-and-share services (like Dropbox, Box, MS live, Google Drive, Proton Drive, etc) use a common architecture because this architecture has been proven to be reliable at avoiding visible data-loss:</p>
<ul>
<li>Every uploaded file is split into 4KB blocks (the size is relevant to disk technology, which I'm not going into here)</li>
<li>Each block is written between 3 and 7 times to disk in a given datacenter or region, the exact replication factor changes based on service and internal realities</li>
<li>Each block is replicated to more than one geographic region as a disaster resilience move, generally at least 2, often 3 or more</li>
</ul>
<p>The end result of the above is that the 1MB vacation picture is written to disk 6 to 14 different times. The nice thing about the above is you can lose an entire rack-row of a datacenter and not lose data; you might lose 2 of your 5 copies of a given block, but you have 3 left to rebuild, and your other region still has full copies.</p>
<p>But I mentioned this 1MB file has been kept online for 14 years. Assuming an average disk life-span of 5 years, each block has been migrated to new hardware 3 times in those years. Meaning each 4KB block of that file has been resident on between 24 and 42 hardrives; or more, if your provider replicates to more than 2 discrete geographic region. Those drives have been spinning and using power (and therefore requiring cooling) the entire time.</p>
<p>These systems need to go to all of this effort because they need to be sure that all files are available all the time, when you need it, where you need it, as fast as possible. If a person in that vacation photo retires, and you suddenly need <em>that picture</em> for the Retirement Montage at their going away party, you don't want to wait hours for it to come off tape. You want it now.</p>
<p>Contrast this to a scientific dataset. Once the data has stopped being used for <em>Science!</em> it can safely be archived until someone else needs to use it. This is the use-case behind AWS S3 Glacier: you pay a lot less for storing data, so long as you're willing to accept delays measurable in hours before you can access it. This is also the use-case where tape shines.</p>
<p>A lab gets done chewing on a dataset sized at 100TB, which is pretty chonky for 2011. They send it to cold storage. Their IT section dutifully copies the 100TB dataset onto LTO-5 drives at 1.5TB per tape, for a stack of 67 tapes, and removes the dataset from their disk-based storage arrays.</p>
<p>Time passes, as with the Dropbox-style data. LTO drives can read between 1 and 2 generations prior. Assuming the lab IT section keeps up on tape technology, it would be the advent of LTO-7 in 2015 that would prompt a great restore and rearchive effort of all LTO-5 and previous media. LTO-7 can do 6TB per tape, for a much smaller stack of 17 tapes.</p>
<p>LTO-8 changed this, with only a one version lookback. So when LTO-8 comes out in 2017 with a 9TB capacity, a read restore/rearchive effort runs again, changing our stack of tapes from 17 to 12. LTO-9 comes out in 2021 with 18TB per tape, and that stack reduces to 6 tapes to hold 100TB.</p>
<p>All in all, our cold dataset had to relocate to new media three times, same as the disk-based stuff. However, keeping stacks of tape in a climate controlled room is vastly cheaper than a room of powered, spinning disk. The actual reality is somewhat different, as the few data archive people I know mention they do great restore/archive runs about every 8 to 10 years, largely driven by changes in drive connectivity (SCSI, SATA, FibreChannel, Infiniband, SAS, etc), OS and software support, and corporate purchasing cycles. Keeping old drives around for as long as possible is fiscally smart, so the true recopy events for our example data is likely "1".</p>
<p>So another lab wants to use that dataset and puts in a request. A day later, the data is on a disk-array for usage. Done. Carrying costs for that data in the intervening 14 years are significantly lower than the always available model of S3 and Dropbox.</p>
<p>Tape: still quite useful in the right contexts.</p>
<p></p>]]>
        
    </content>
</entry>

<entry>
    <title>Applied risk management</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/03/applied-risk-management.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2880</id>

    <published>2025-03-31T14:00:00Z</published>
    <updated>2025-03-29T21:25:34Z</updated>

    <summary>I&apos;ve been in the tech industry for an uncomfortable amount of time, but I&apos;ve been doing resilience planning the whole time. You know, when and how often to take backups, segueing into worrying about power diversity, things like that. My...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="disasters" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>I've been in the tech industry for an uncomfortable amount of time, but I've been doing resilience planning the whole time. You know, when and how often to take backups, segueing into worrying about power diversity, things like that. My last two years at Dropbox gave me exposure to how that works when you have multiple datacenters. It gets complex, and there are enough moving parts you can actually build <em>models</em> around expected failure rates in a given year to better help you prioritize remediation and prep work.</p>
<p>Meanwhile, everyone in the tech-disaster industry peeps over the shoulders of environmental disaster recoveries like hurricanes and earthquakes. You can learn a lot by watching the pros. I've talked about some of what we learned, mostly it has been procedural in nature:</p>
<ul>
<li><a href="https://sysadmin1138.net/mt/blog/2024/11/incident-response-programs.shtml">Incident response programs</a>, discussing categorization of incidents</li>
<li><a href="https://sysadmin1138.net/mt/blog/2024/07/getting-people-to-think-about-disaster-recovery.shtml">Getting people to think about disaster recovery</a>, talking about how security-type disasters have slightly different recovery phases that requires changing your thinking</li>
<li><a href="https://sysadmin1138.net/mt/blog/2024/06/correcting-a-non-compliant-teams-reliability.shtml">Correcting a non-compliant team's reliability</a>, going into helping shift mindsets as a peer, not a manager</li>
</ul>
<p>Since then, the United States elected a guy who wants to be dictator, and a Congress who seems willing to let it happen. For those of us in the disliked minority of the moment, we're facing concerted efforts to roll back our ability to exist in public. That's risk. Below the fold I talk about using what I learned from IT risk management and how I apply those techniques to assess my own risks. It turns out building risks for "dictatorship in America" can't rely on prior art as much as risks for "datacenter going offline," which absolutely has prior art to include; and even incident rates to factor in.</p>]]>
        <![CDATA[<p>The risk analysis process in overview is:</p>
<ol>
<li>Generate a list of risks through brainstorming and fears</li>
<li>Generate a list of responses to risks</li>
<li>Investigate responses for dependencies, determining any planning and execution lead-times</li>
<li>Apply responses to the list of risks, you will absolutely change your mind about what risks are worth considering</li>
<li>For each risk with a response requiring a long lead time (such as "relocate out of state") determine the dependent chain leading to that risk. This eliminated many risks from the brainstorm list.</li>
<li>For the remaining risks, group risks into those with common dependencies, or are outright duplicates using different wording</li>
<li>For grouped risks with long lead times, build dependent event chains for each, with an eye towards which events to watch out for as a herald that it is time to <em>plan</em> or <em>go</em>.</li>
<li>Build an aggregated list of events to keep an eye on before you start actively disaster-planning</li>
</ol>
<p>That's a lot of steps, but I'll walk you through some examples to help you figure out what I'm talking about. As computer professionals in the disaster recovery space, it's extremely easy to jump to the worse case scenario ("organized murders of my minority in my area," also known as an organized genocide) and base all of your planning around that. Doing so will turn you into a giant ball of anxiety, so going through the above process will give your limbic system a break.</p>
<h2>1. Generate a list of risks</h2>
<p>You probably already have specific fears, like the "organized murders of my minority in my area" one I used above. Write that down, and write everything else that may push you out of "ignore/fight" and into "do something." This will be emotional work, just get things on the page. We'll qualify the risks later on, but we need a starting set to even begin the analysis.</p>
<h2>2. Generate a list of responses</h2>
<p>For the analysis I ran regarding when "flee" becomes a good idea, I came up with the following response menu:</p>
<ul>
<li>Endure it - it's fight I can afford to lose</li>
<li>Fight it - It's a problem, and it's important that I stand up and take action to make it stop</li>
<li>Domestic move - My local area is unsafe, it's time to move somewhere else</li>
<li>International move - Nowhere in the country is safe, time to get out however possible</li>
<li>Overnight evacuation - Specific threats have been received, time to be somewhere else within 12 hours</li>
</ul>
<h2>3. Investigate response dependencies</h2>
<p>Most of this work is identifying which responses have lead-times, and determining how much time you need. This is a dependency analysis, so it's safe to get into the weeds a bit regarding procedures and lead-times. For international relocation, there ended up being a huge menu of ways to do that, multiple for each country and this one response ended up taking the majority of the time for me to qualify.</p>
<p>You're looking for two lead-times:</p>
<ol>
<li>Planning time, how long it takes to set the conditions up to do the response</li>
<li>Execution time, how long it takes to execute the response</li>
</ol>
<p>I also learned a few things. For the Domestic move option, there is a difference between ASAP and Planned move cases, and for a same-state vs different-state relocation. An ASAP move would involve moving into short term housing, such as a hotel, and then deciding if house-hunting or apartment-hunting needs to happen next. For a planned move, you can do the apartment/house hunt before executing the move. If you're employed, your employer may place restrictions on interstate moves! Find that out, because it'll affect your ability to relocate to another state.</p>
<blockquote class="callout">
<p class="callout-header">Interstate moves as a remote employee</p>
<p>Due to how tech employers in the US do geobanding, each state and city is sorted into typically three geobands. The geobands are in broad agreement due to the common use of Radford services to assess market salary bands, and run from Tier 1 (SF/NYC) to Tier 3 (cheapest places). Employers typically want you to move within a band. Or better, down a band which will let them pay you less. You might even get relocation cost-support by moving down a band.</p>
<p>Many companies will require approval to move to a new state. This has to do with how employment taxes are computed in America. Your employer needs to have an entity in your state in order to pay you. Smaller employers may be willing to set up an entity just for you. Larger ones are unlikely to do so.</p>
</blockquote>
<p>International moves have a menu of possibilities, especially if you're a late career technical professional who has been reaping great big RSUs for a while and has significant taxable savings:</p>
<ul>
<li><strong>Employer sponsored</strong> - The easiest method, but requires you working for an employer with international operations who is willing to let you do it. This is also the most reliable method to get into places like Canada, Australia, or Ireland.</li>
<li><strong>Digital nomad visa</strong> - Designed to allow people to visit a country while working remotely for a few months, before moving on. This is needed because it is illegal to do work, even for a foreign employer, while in-country on a tourist visa. Most useful for people doing 1099 work, as that puts the tax burden on you. In theory you could hop to different countries when your visa expires, but it makes your tax situation extremely tricky.</li>
<li><strong>Investment visa</strong> - You drop a large amount of money, ranging from €250K (Latvia) to several million and get a long term residency permit. This lets you work in your target country. This is the same vehicle used by Russian and Chinese oligarchs, so there is absolutely stigma attached to using this option.</li>
<li><strong>Retirement visa</strong> - You prove enough passive income (rents-received, interest earned, pensions earned) and they give you a long term residency permit. This <em>does not</em> let you work in your target country. The goal is to prove to your target country that you earn enough to not require social supports. Provable amounts range from $15K/year (Panama) to €100K/year (Ireland) in passive income. Many of the countries that have investor visa programs also have retirement visa programs.</li>
</ul>
<p>Your financial situation will tell you how many of these are viable. This may require you to change employer in order to gain the possibility of an internal transfer to another country. If so, add this to your "prep" time. If the investment or retirement visas are viable, now is the time to look at countries and where you can go and how many of them will allow you to be you.</p>
<p>Of the above, the Employer Sponsored is probably the fastest to execute once things get going. Your employer probably has professionals to work on obtaining the visa. Even so, it could take up to 6 months for you and your stuff to get to your target company. The Investment Visa option requires vetting by your target country's consulate, which can take up to a year. Or more, in the case of Portugal who is seeing a huge influx of applicants. Retirement visas are easier to get, but they require enough passive income so fewer people under IRA mandatory distribution age will qualify.</p>
<blockquote class="callout">
<p class="callout-header">The right-wing rise is everywhere that speaks English</p>
<p>Everywhere English-speaking is having a bad time of it right now. Everywhere. The UK fell to right wing extremism before the US did. New Zealand has a right wing government. India has had a right-wing government for years. Australia has major anti-immigrant sentiment. Canada was following the US until the US pissed them off enough they decided to fight, so there may be hope there; but they're also increasingly likely to cut off immigration from the US as a result of the hostilities.</p>
<p>If you're like me, and a member of the trans community, the US of March 2025 is still one of the best places around to be. That spot is actively degrading, but be aware that where you jump to may not be better. Your affordable hope may simply be "won't get as bad," and will be actively worse until the US catches up.</p>
</blockquote>
<p>The most extreme response, Overnight Evacuation, is a special one because it tells you what the execute time needs to be: 12 hours. The big work for Overnight Evacuation is planning and prep, such as maintaining go-bags and having a plan for where you can run. Go-bag maintenance takes time, especially if you're middle-aged and have a lot of prescribed medications. Depending on your circumstances, you may have to run evacuation drills to refine your procedures. For the Overnight Evacuation option you'll likely need to decide when you want to start actively prepping the 12-hour evacuation capability, because maintaining that readiness for two plus years will be a lot of work.</p>
<p>After assessment, my response table revised somewhat drastically.</p>
<table><caption>Revised risk-response table with planning and execution periods marked</caption>
<thead>
<tr><th>Response</th><th>Preparation time</th><th>Execution time</th></tr>
</thead>
<tbody>
<tr>
<td>Endure it</td>
<td>N/A</td>
<td>N/A</td>
</tr>
<tr>
<td>Fight it</td>
<td>N/A</td>
<td>N/A</td>
</tr>
<tr>
<td>ASAP domestic move</td>
<td>2 weeks</td>
<td>2 weeks</td>
</tr>
<tr>
<td>Planned domestic move </td>
<td>1 month</td>
<td>1 to 3 months</td>
</tr>
<tr>
<td>Work-visa move</td>
<td>1 year (job hunt)</td>
<td>2-6 months</td>
</tr>
<tr>
<td>Investor/retirement visa move</td>
<td>3 months</td>
<td>6-18 months</td>
</tr>
<tr>
<td>Evacuate overnight</td>
<td>1 month + regular refreshes</td>
<td>12 hours</td>
</tr>
</tbody>
</table>
<p>The international moves have incredibly long lead-times! In the absence of refugee lanes for Americans fleeing dictatorship, an international relocation simply can't be the response to an emergent problem. Knowing this tells us that any risk with "international move" as a response needs to be analyzed for what events heralding the need for an international relocation will happen 6 to 18 months beforehand.</p>
<h2>4. Apply responses to risks</h2>
<p>Now that we've gone through all the work of qualifying our responses and understanding lead times, now we look at our list of risks and apply responses to them. This is a judgment call based on vibes. If you want to get scientific about each risk and diagram out dependency chains, do whatever makes your brain happy.</p>
<p>One thing to note: risks rated Evacuate Overnight are likely part of a rising <em>pattern</em> of risks. Step 5 is where we analyze these dependencies, and Step 6 is where we start grouping risks. Don't get too hung up on dependencies here, you want to get your brainstorm list completed. Feel free to evict risks if you find any that you don't feel merit response any more, or add new risks should thinking about others remind you of risks you missed.</p>
<h2>5. Determine dependent chain for long-lead risks</h2>
<p>For the risks with responses having a long lead time, we need to analyze those risks to identify what sort of events are upstream of the risk, things that need to happen before our risk happens. Such analysis will let us know which prelude events we should track before entering planning. For example, let's look at the extreme option I opened with, "organized murders in my area," which is an Evacuate Overnight risk. One dependent chain could be:</p>
<ol>
<li>President repeatedly calls for murders</li>
<li>Right-wing media echoes calls for murders</li>
<li>Right-wing militias begin harassment campaigns</li>
<li>Regular media reports calls for murders, without condemning murders</li>
<li>Organized murders in other areas</li>
<li>Organized murders in my area</li>
</ol>
<p>This list demonstrates an escalation from a call for action to action in my area. This also elides probabilities, which is analysis you will have to do yourself. America is a huge place. The areas most at risk for a rapid escalation from 1 to 6 are deeply red areas in Republican controlled states, where State authorities are less likely to investigate murders of disliked minorities. The areas least at risk are blue cities in Democrat held states, where State authorities are quite likely to investigate coordinated murders; making it harder for murder militias to safely operate.</p>
<p>For blue state residents, violence will rise in neighboring red states before it starts leaking across borders. This affects timing. After judging the dependent chain, we can assign risks to higher levels of the chain.</p>
<ol>
<li>President repeatedly calls for murders</li>
<li>Right-wing media echoes calls for murders</li>
<li>Right-wing militias begin harassment campaigns</li>
<li>Regular media reports calls for murders, without condemning murders, <strong>plan domestic relocation to bluer state</strong></li>
<li>Organized murders in other areas</li>
<li>Organized murders in my area, <strong>evacuate overnight</strong><strong></strong></li>
</ol>
<p>We have a new risk: <em>regular media reports calls for murders, without condemning the murders</em>. This new risk is a herald of the much more severe <em>murders in my area</em> risk.</p>
<p>Repeat this exercise for each of your long-lead risks. Now is the time to get into the weeds.</p>
<p>One risk on my brainstorm list was "ACA is repealed," which was removed from my brainstorm list due to finding discussions about how the right widely views ACA as settled (their electoral drubbing in 2018 was earned by being too aggressive about repealing ACA) and attacks are focusing on Medicaid block-grants. Such grants don't affect me, so "ACA is repealed" was drop from the risks list. Taking its place was, "Coverage of trans-related care banned for ACA plans," the court-cases for which are already underway.</p>
<h2>6. Group risks with common dependencies</h2>
<p>Your dependency chain analysis likely revealed a few risks that share a dependent chain, or are actual precursors to risks with higher severity levels of response. In my analysis I was able to condense the huge brainstorm list down to four risk-types, and eliminated several more risks that weren't eliminated in Step 5. My risks were pretty broad, but cover similar themes.</p>
<ul>
<li>Coordinated murders of trans people in my area</li>
<li>Militia-style groups disappearing trans people in my area</li>
<li>Mass secret-order detention of citizens</li>
<li>My state goes fascist in the 2026 election</li>
</ul>
<p>Murder, kidnapping for ransom/torture, state disappearance squads, and my state losing safe-haven status. This was a far shorter list than I started with. This list is also extremely dark. The good thing is we're no where near anything on this list as of March 2025. Now the work turns to figuring out the joined dependencies and coming up with prelude events.</p>
<h2>7. Build dependency chains for each grouped risk</h2>
<p>This is repeating step 5, but using the merged risks. I found diagramming flow-charts to be quite helpful. While doing your work, consider what events would constitute the trigger for the following stages of response:</p>
<ul>
<li><strong>Plan</strong> - Time to pick a destination and start working the details of what a relocation would require</li>
<li><strong>Prep</strong> - Time to start working through reversible steps of the plan, such as starting conversations with lawyers, consulates, and employers</li>
<li><strong>Go</strong> - Execute the move</li>
</ul>
<h2>8. Build the aggregated list of events to watch out for</h2>
<p>Now that you've done all of this work, it's time to build the summary. This aggregated list is the one to check back on once a week or so to see if any lines have been crossed. My list is highly personal, but has 10 different events on it. We are no where near any of those 10 events I identified as significant heralds of greater danger.</p>
<p>Then refresh your analysis once a month to square your analysis with what has happened in the previous four months. My March analysis involved a major rewrite because my February one failed to identify the <em>mass secret-order detention of citizens</em> risk, in spite of it being the number one thing dictators want above all else.</p>
<hr />
<p></p>
<p>Whenever you feel an anxiety spike watching the news, and the urge to <em>flee</em> begin to take root, review your list of events. It calms me down, and once in a while I make notes for the next monthly refresh. This methodical approach absolutely did get me out of a doom-spiral, all thanks to a career in planning for disasters.</p>
<p></p>]]>
    </content>
</entry>

<entry>
    <title>Blog Questions Challenge 2025</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/01/blog-questions-challenge-2025.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2877</id>

    <published>2025-01-20T15:00:00Z</published>
    <updated>2025-01-17T15:33:17Z</updated>

    <summary>Thanks to Ben Cotton for sharing. Why did you start blogging in the first place? I covered a lot of that in 20 years of this nonsense from about a year ago. The quick version is I was charged with...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="opinion" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>Thanks to <a href="https://funnelfiasco.com/blog/2025/01/17/blog-question-challenge-2025/">Ben Cotton for sharing</a>.</p>
<p><strong>Why did you start blogging in the first place?</strong></p>
<p>I covered a lot of that in <a href="https://sysadmin1138.net/mt/blog/2024/01/20-years-of-this-nonsense.shtml">20 years of this nonsense</a> from about a year ago. The quick version is I was charged with creating a "Static pages from your NetWare home directory" project and needed something to test with, so here we are. That version was done with Blogger before the Google acquisition, when they still supported publish-by-ftp (which I also had to set up as part of the same project).</p>
<p><strong>What platform are you using to manage your blog, and why do you use it?</strong></p>
<p><span>When blogger got rid of the publish-by-ftp method, I had to move. I came to my own domain and went looking for blogging software. On advice from an author I like, I kept in mind the slashdot effect so wanted to be sure if I had an order of magnitude more traffic for an article it wouldn't melt the server it was one. So I wanted something relatively light weight, which at the time was Movable Type. Wordpress required database hits for every webpage, which didn't seem to scale. <br /></span></p>
<p><span>I stuck with it because Movable Type continues to do the job quite well, and be ergonomic for me. I turned off comments a while ago, as that was an anti-spam nightmare I needed recency to solve. Movable Type now requires a thousand dollars a year for a subscription, which pencils out to about $125 per blog post at my current posting rate. Not worth it.<br /></span></p>
<p><strong>Have you blogged on other platforms before?</strong></p>
<p><span>Like just about everyone my age, I was on Livejournal. I don't remember if this blog or LJ came first, and I'm not going to go check. I had another blog on Blogger for a while, about local politics. It has been lost to time, though is still visible on archive.org if you know where to look for it.<br /></span></p>
<p><span><strong>How do you write your posts?</strong><br /></span></p>
<p><span>Most are spur of the moment. I have a topic, and time, and remember I can be long-form about it. Once in a while I'll get into something on social media and realize I need actual wordcount to do it justice, so I do it here instead. The advent of twitter absolutely slowed down my posting rate here!<br /></span></p>
<p><span>Once I have the words in, I schedule a post for a few days hence.<br /></span></p>
<p><span><strong>When do you feel most inspired to write?</strong><br /></span></p>
<p><span>As with all writers, it comes when it comes. Sometimes I set out goals and I stick to them. But blogging hasn't been a focus of mine for a long time, so it's entirely whim. I do know I need an hour or so of mostly uninterrupted time to get my thoughts in order, which is hard to come by without arranging for it.<br /></span></p>
<p><strong>Do you normally publish immediately after writing, or do you let it simmer a bit?</strong></p>
<p>As mentioned above, I use scheduled-post. Typically for 9am, unless I've got something spicy and don't care. This is rare, I've also learned that posting spicy takes absolutely needs a cooling off period. I've pulled posts after writing them because I realize they didn't actually need to get posted, I merely needed to write them.</p>
<p><strong>What's your favorite post on your blog?</strong></p>
<p>That's changed a lot over the years as I've changed.</p>
<ul>
<li>For a long time, I was proud of my <a href="https://sysadmin1138.net/mt/blog/2010/03/know-your-io.shtml">Know your IO</a> series from 2010. That was prompted by a drop-by conversation from one of our student workers who had a question about storage technology. I infodumped for most of an hour, and realized I had a blog series. This is still linked from my sidebar on the right.</li>
<li>From recent history, the post <a href="https://sysadmin1138.net/mt/blog/2023/11/why-i-dont-like-markdown-docs-in-a-git-repo-as-documentation.shtml">Why I don't like Markdown in a git repo as documentation</a> is a still accurate distillation of why I seriously dislike this reflexive answer to workplace knowledge sharing.</li>
<li>This post about <a href="https://sysadmin1138.net/mt/blog/2020/01/lost-history-service-pack-1.shtml">the lost history of why you wait for the first service pack before deploying anything</a> is me bringing old-timer points of view to newer audiences. The experiences in this post are drawn directly from where I was working in 2014-2015. Yes Virginia, people still do ship shrink-wrap software to Enterprise distros. Some of you are painfully aware of this.</li>
</ul>
<p>I'm not stopping blogging any time soon. At some point the dependency chain for Movable Type will rot and I'll have to port to something else, probably a static site generator. I believe I'm spoiled for choice in that domain.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Incident response process for the big stuff</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2025/01/incident-response-process-for-the-big-stuff.shtml" />
    <id>tag:sysadmin1138.net,2025:/mt/blog//5.2876</id>

    <published>2025-01-09T15:00:00Z</published>
    <updated>2025-03-29T21:25:45Z</updated>

    <summary>Back in November I posted about how to categorize your incidents using the pick-one list common across incident automation platforms. In that post I said: A few organizations go so far as to have a fully separate process for the...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="disasters" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p><a href="https://sysadmin1138.net/mt/blog/2024/11/incident-response-programs.shtml">Back in November I posted about how to categorize your incidents using the pick-one list common across incident automation platforms</a>. In that post I said:</p>
<blockquote>A few organizations go so far as to have a fully separate process for the 'High' and 'Critical' urgencies of events, maybe calling them Disaster Recovery events instead of Incidents. DR events need to be rare, which means that process isn't as well exercised as Incident response. However, a separate process makes it abundantly clear that certain urgencies and scopes require different <em>process</em> overall. More on this in a later blog-post.</blockquote>
<p>This is the later blog post.</p>
<p>The SaaS industry as a whole has been referring to the California Fire Command (<a href="https://en.wikipedia.org/wiki/Incident_Command_System">now known as the Incident Command System</a>) model for inspiration on handling technical incidents. The basic structure is familiar to any SaaS engineer:</p>
<ul>
<li>There is an Incident Commander who is responsible for running the whole thing, including post-incident processes</li>
<li>There is a Technical Lead who is responsible for the technical response</li>
</ul>
<p>There may be additional roles available depending on organizational specifics:</p>
<ul>
<li>A Business Manager who is responsible for the customer-facing response</li>
<li>A Legal Manager who is responsible for anything to do with legal</li>
<li>A Security Lead who is responsible for heading security investigations</li>
</ul>
<p>Again, familiar. But truly large incidents put stress on this model. In a given year the vast majority of incidents experienced by an engineering organization will be the grass fire variety that can be handled by a team of four people in under 30 minutes. What happens when a major event happens?</p>
<p>The example I'm using here is a private information disclosure by a hostile party using a compromised credential. Someone not employed by the company dumped a database they shouldn't have had access to, and that database involved data that requires disclosure in the case of compromise. Given this, we already know some of the workstreams that incident response will be doing once this activity is discovered:</p>
<ul>
<li>Investigatory work to determine where else the attacker got access to and fully define the scope of what leaked</li>
<li>Locking down the infrastructure to close the holes used by the attacker for the identified access</li>
<li>Cycling/retiring credentials possibly exposed to the attacker</li>
<li>Regulated notification generation and execution</li>
<li>Technical remediation work to lock down any exploited code vulnerabilities</li>
</ul>
<p>An antiseptic list, but a scary one. The moment the company officially notices a breach of private information, legislation world-wide starts timers on when privacy regulators or the public need to be informed. For a profit driven company, this is <em>admitting fault in public</em> which is something none of them do lightly due to the lawsuits that will result. For publicly traded companies, stockholder notification will also need to be generated. Incidents like this look very little like an availability SLA breach SEV of the kind that happens 2-3 times a month in different systems.</p>
<p>Based on the rubric I showed back in November, an incident of this type is of <strong>Critical</strong> urgency due to regulated timelines, and will require either <strong>Cross-Org</strong> or <strong>C-level</strong> response depending on the size of the company. What's more, the need to figure out where the attacker went blocks later stages of response, so this response process will actually be a 24 hour operation and likely run several days. No one person can safely stay awake for 4+ days straight.</p>
<p>The Incident Command Process defines three types of command structure:</p>
<ul>
<li><strong>Solitary command</strong> - where one person is running the whole show</li>
<li><strong>Unified command</strong> - where multiple jurisdictions are involved and they need to coordinate, and also to provide shift changes through rotating who is the Operations Chief (what SaaS folk call the Technical Lead)</li>
<li><strong>Area command</strong> - where multiple incidents are part of a larger complex, the Area Commander supports each Incident Command</li>
</ul>
<p>Incidents of the scale of our private information breach lean into the <strong>Area Command</strong> style for a few reasons. First and foremost, there are discrete workstreams that need to be executed by different groups; such as the security review to isolate scope, building regulated notifications, and cycling credentials. All those workstreams need people to run them, and those workstream leads need to report to incident command. That looks a lot like Area Command to me.</p>
<p>If your daily incident experience are 4-7 person team responses, how ready are you to be involved in an Area Command style response? Not at all.</p>
<p>If you've been there for years and have seen a few multi-org responses in your time, how ready are you to handle Area Command style response? Better, you might be a good workstream lead.</p>
<p>One thing the Incident Command Process makes clear is that Area Commanders <em>do not </em>have an operational role, meaning they're not involved in the technical remediation. Their job is coordination, logistics, and high level decision making across response areas. For our pretend SaaS company, a good Area Commander will be someone:</p>
<ul>
<li>Someone who has experience with incidents involving legal response</li>
<li>Someone who has experience with large security response, because the most likely incidents of this size are security related</li>
<li>Someone who has experience with incidents involving multiple workstreams requiring workstream leaders</li>
<li>Someone who has experience communicating with C-Levels and has their respect</li>
<li>Two to four of these people in order to safely staff a 24 hour response for multiple days</li>
</ul>
<p>Is your company equipped to handle this scale of response?</p>
<p>In many cases, probably not. Companies handle incidents of this type a few different ways. As I mentioned in the earlier post, some categorize problems like this as a <em>disaster</em> instead of an <em>incident</em> and invoke a different process. This has the advantage of making it clear the response for these is different, at the cost of having far fewer people familiar with the response methods. You make up for the lack of in situ training, learn by doing, by regularly re-certifying key leaders on the process.</p>
<p>Other companies extend the existing incident response process on the fly rather than risk having a separate process that will get stale. This works so long as you have some people around who kind of know what they're doing and can herd others into the right shape. Though, after the second disaster of this scale, people will start talking about how to formalize procedures.</p>
<p>Whichever way your company goes, start thinking about this. Unless you're working for the hyperscalers, incidents of this response scope are going to be <em>rare</em>. This means you need to schedule quarterly time to train, practice, and certify your Area Commanders and workstream leads. This will speed up response time overall, because less time will be spent arguing over command and feedback structures.</p>]]>
        
    </content>
</entry>

<entry>
    <title>The power of columnar databases for telemetry</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2024/11/the-power-of-columnar-databases-for-telemetry.shtml" />
    <id>tag:sysadmin1138.net,2024:/mt/blog//5.2875</id>

    <published>2024-11-22T15:00:00Z</published>
    <updated>2024-11-20T20:35:19Z</updated>

    <summary>&quot;Columnar databases store data in columns, not rows,&quot; says the definition. I made a passing reference to the technology in Software Telemetry, but didn&apos;t spend any time on what they are and how they can help telemetry and observability. Over...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="telemetry" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>"Columnar databases store data in columns, not rows," says the definition. I made a passing reference to the technology in <a href="https://www.manning.com/books/software-telemetry?a_aid=sysadmin1138&amp;a_bid=c3fefe6b"><em>Software Telemetry</em></a>, but didn't spend any time on what they are and how they can help telemetry and observability. Over the last six months I worked on converting a centralized logging flow based on Elasticsearch, Kibana, and Logstash, to one based on Logstash and Apache Spark. For this article, I'll be using examples from both methods to illustrate what columnar databases let you do in telemetry systems.</p>
<p><strong>How Elasticsearch is columnar (or not)</strong></p>
<p>First of all, Elasticsearch isn't exactly columnar but it can fake it to a point. You use Elasticsearch when you need full indexing and tokenization of every field in order to accelerate query-time performance. Born as it was in the early part of the 2010s, Elasticsearch balances ingestion-side complexity in order to optimize read-side performance. There is a <em>reason</em> that if you have a search field in your app, there is a good chance that Elasticsearch or OpenSearch is involved in the business logic. While Elasticsearch is "schema-less," schema still matters, and there are clear limits to how many fields you can add to an Elasticsearch index.</p>
<p>Each Elasticsearch index or datastream has defined <em>fields</em>. Fields can be defined at index/datastream creation, or configured to auto-create on first use. Both are quite handy in telemetry contexts. Each <em>document</em> in an index or datastream has a reference for every defined field, even if the contents of that field are null. If you have 30K fields, and one document has only 19 fields defined, the rest will still exist on the document but be nulled; which in turn makes that 19 defined-field document rather larger than the same document in an index/datastream with only 300 defined fields.</p>
<p>Larger average document size slows down search for everything in general, due to the number and size of field-indexes the system has to keep track of. This also balloons index/datastream size, which has operational impacts when it comes to routine operations like patching and maintenance. As I mentioned in Software Telemetry, Elasticsearch's cardinality problem manifests in number of fields, not in unique values in each field.</p>
<p>If you are willing to get complicated in your ingestion pipeline through careful crafting of telemetry shape, and ingestion into multiple index/datastreams to bucket types of telemetry into shards of similarly shaped telemetry, you can mitigate some of the above problems. Create an <em>alias</em> to use as your search endpoint, and populate the alias with the index/datastreams of your various shards. Elasticsearch is smart enough to know where to search, which lets you bucket your field-count cardinality problems in ways that will perform faster and save space. However, this is clearly adding complexity that you have to manage yourself.</p>
<p><strong>How Apache Spark is columnar</strong></p>
<p>Spark is pretty clearly columnar, which is why it's the de facto platform of choice for <em>Business Intelligence</em> operations. You know, telemetry for business ops not engineering ops. A table defined in Spark (and most of its backing databases like Parquet or Hive) can have arbitrary columns defined in it. Data for each column is stored in separate files, which means queries like the following looking to build a histogram of log-entries per hour "COUNT timestamp GROUP BY hour(timestamp)" are extremely efficient as the system only needs to look at a single file out of thousands.</p>
<p>Columnar databases have to do quite a bit of read-time and ingestion-time optimization to truly perform fast, which demonstrates some of the tradeoffs of the style. Where Elasticsearch was trading ingestion-time complexity to speed up read-time performance, columnar databases are tilting the needle more towards increasing read-time complexity in order to optimize overall resource usage. In short columnar databases have better scaling profiles than something like Elasticsearch, but they don't query as fast as a result of the changed priorities. This is a far easier trade-off to make in 2024 than it was in 2014!</p>
<p>Columnar databases also don't <em>tokenize</em> the way Elasticsearch does. Have a free-text field that you want to do sub-string searches on? Elasticsearch is built from the bolts out to make that search as fast as possible. Columnar databases, on the other hand, do all of the string walking and searching at query-time instead of pulling the values out of some b-trees.</p>
<p>Where Elasticsearch suffers performance issues when field-count rises, Spark only encounters this problems if the query is designed to encounter it through use of "select *" or similar constructs. The files hit by the query will only be the ones for columns referenced in the query! Have a table with 30K columns in it? So long as you query right, it should perform quite well; the 19 defined fields in a row problem shouldn't be a problem so long as you're only referencing one of those 19 fields/columns.</p>
<p><strong>Why columnar is neat</strong></p>
<p>A <em>good</em> centralized logging system can stand in for both metrics and traces, and in large part can do so because the backing databases for centralized logging are often columnar or columnar-like. There is nothing stopping you from creating metric_name and metric_value fields in your logging system, and building a bunch of metrics-type queries using those rows.</p>
<p>As for emulating tracing, this isn't done through OpenTelemetry, this is done old-school through hacking. Chapter 5 in <em>Software Telemetry</em> covered how the Presentation Stage uses <em>correlation identifiers:</em></p>
<blockquote cite="https://livebook.manning.com/book/software-telemetry/chapter-5/section-5-4?origin=product-toc">"A correlation identifier is a string or number that uniquely identifies that specific execution or workflow."</blockquote>
<p>Correlation identifiers allow you to build the charts that tracing systems like Jaeger, Tempo, and Honeycomb are known for. There is nothing stopping you creating an array-of-strings type field named "span_id" where you dump the span-stack for each log-line. Want to see all the logs for a given Span? Here you are. Given a sophisticated enough visualization engine, you can even emulate the waterfall diagrams in dedicated tracing platforms.</p>
<p>The reason we haven't used columnar databases for metrics systems has to do with cost. If you're willing to accept cardinality limits, you can store a far greater number of metrics for the same amount of money as doing it in a columnar database. However, the biggest companies <em>already are</em> using columnar datastores for <em>engineering</em> metrics, and nearly all companies are using columnar for <em>business</em> metrics.</p>
<p>But if you're willing to spend the extra resources to use a columnar-like datasource for metrics, you can start answering questions like "how many 5xx response-codes did accounts with the Iridium subscription encounter on October 19th." Traditional metrics system would consider subscription-type to be too highly cardinal, where columnar databases shrug and move on.</p>
<p><strong>What this means for the future of telemetry and observability</strong></p>
<p>Telemetry over the last 60 years of computing has gone from digging through the SYSLOG printout from one of your two servers, to digging through /var/log/syslog, to the creation of dedicated metrics systems, to the creation of tracing techniques. Every decade's evolution of telemetry has been constrained by the compute and storage performance envelope available to the average system operator.</p>
<ul>
<li>The 1980s saw the proliferation of multi-server architectures as the old mainframe style went out of fashion, so centralized logging had to involve the network. NFS shares for Syslog.</li>
<li>The 1990s saw the first big scale systems recognizable as such by people in 2024, and the beginnings of analytics on engineering data. People started sending their web-logs direct to relational databases, getting out of the "tail and grep" realm and into something that kinda looks like metrics if you squint. Distributed processing got its start here, though hardly recognizable today.</li>
<li>The 2000s saw the first bespoke metrics systems and protocols, such as statsd and graphite. This era also saw the SaaS revolution begin, with Splunk being a big name in centralized logging, and NewRelic gaining traction for web-based metrics. Distributed processing got more involved, and at the end of the decade the big companies like Google and Microsoft lived and breathed these systems. Storage was still spinning disk, with some limited SSD usage in niche markets.</li>
<li>The 2010s saw the first tracing systems and the SaaS revolution ate a good chunk of the telemetry/observability space. The word <em>observability</em> entered wide usage. Distributed processing ended the decade as the default stance for everything, including storage. Storage bifurcated into bulk (spinning disk) and performance (SSD) tiers greatly reducing cost.</li>
</ul>
<p>We're part way through the 2020s, and it's already clear to me that columnar databases are probably where telemetry systems are going to end up by the end of the decade. Business intelligence is already using them, so most of our companies have them in our infrastructure already. Barriers to adoption are going to be finding ways to handle the different retention and granularity requirements of what we now call the three pillars of observability:</p>
<ul>
<li>Metrics need visibility going back years, and are <em>aggregated</em> not <em>sampled</em>. Observability systems doing metrics will need to allow multi-year retention <em>somehow</em>.</li>
<li>Tracing retention is 100% based on cost and sample-rate, which should improve over the decade.</li>
<li>Centralized logging is like tracing in that retention is 100% based on cost. True columnar stores scale more economically than Elasticsearch-style databases, which increases retention. How sample rate affects retention is less clear, and would have to involve some measure of aggregation to remain viable over time.</li>
</ul>
<p>Having columnar databases at the core allows a <em>convergence</em> of the pillars of observability. How far we get in convergence over the next five years remains to be seen, and I look forward to finding out.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Incident response programs</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2024/11/incident-response-programs.shtml" />
    <id>tag:sysadmin1138.net,2024:/mt/blog//5.2874</id>

    <published>2024-11-19T15:00:00Z</published>
    <updated>2025-03-29T21:25:58Z</updated>

    <summary>Honeycomb had a nice post where they describe dropping a priority list of incident severities in favor of an attribute list. Their list is still a pick-one list; but instead of using a 1-4 SEV scale, they&apos;re using a list...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="disasters" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p><a href="https://www.honeycomb.io/blog/against-incident-severities-favor-incident-types">Honeycomb had a nice post where they describe dropping a priority list of incident severities in favor of an attribute list</a>. Their list is still a pick-one list; but instead of using a 1-4 SEV scale, they're using a list of types like "ambiguous," "security," and "internal." The post goes into some detail about the problems with a unified list across a large organization, and the different response-level  needs of different types of incidents. All very true.</p>
<p>A good incident response program needs to be approachable by anyone in the company, meaning anyone looking to open one should have reasonable success in picking incident attributes right. The incident automation industry, tools such as PagerDuty's Jeli and the Rootly platform, has settled on a pick-one list for severity, with sometimes support for additional fields. Unless a company is looking to home build their own incident automation for creating slack channels, managing the post-incident review process, and tracking remediation action items, these de facto conventions constrain the options available to an incident response program.</p>
<p>As Honeycomb pointed out, there are two axis that need to be captured by "severity," and they are: urgency, and level of response. I propose the following pair of attributes:</p>
<p><strong>Urgency</strong></p>
<ol>
<li><strong>Planning</strong>: the problem can be addressed through normal sprint or quarterly planning processes.</li>
<li><strong>Low:</strong> the problem has long lead times to either develop or validate the solution, where higher urgency would result in a lot of human resources stuck in wait loops.</li>
<li><strong>Medium:</strong> the problem can be addressed in regular business hours operations, waiting overnight or a weekend won't make things worse. Can preempt sprint-level deliverable targets without question</li>
<li><strong>High:</strong> the problem needs around the clock response and can preempt quarterly deliverable targets without question</li>
<li><strong>Critical:</strong> the problem requires investor notification or other regulated public disclosure, and likely affects annual planning. Rare by definition.</li>
</ol>
<p><strong>Level of response</strong></p>
<ol>
<li><strong>Individual:</strong> The person who broke it can revert/fix it without much effort, and impact blast-radius is limited to one team. Post-incident review may not be needed beyond the team level.</li>
<li><strong>Team:</strong> A single team can manage the full response, such as an issue with a single service. Impact blast radius is likely one team. Post-incident review at the peer-team level.</li>
<li><strong>Peer team:</strong> A group of teams in the same department are involved in response due to interdependencies or the nature of the event. Impact blast-radius is clearly multi-team. Post-incident review at the peer-team level, and higher up the org-chart if the management chain is deep enough for it.</li>
<li><strong>Cross-org:</strong> Major incident territory, where the issue cuts across more than one functional group. These are rare. Impact blast-radius may be whole-company, but likely whole-product. Post-incident review will be global.</li>
<li><strong>C-level:</strong> High executive needs to run it because response is whole company in scope. Will involve multiple post-incident reviews.</li>
</ol>
<p><strong>Is Private?</strong> Yes/No - If yes, only the people involved in the response are notified of the incident and updates. Useful for Security and Compliance type incidents, where discoverability is actually bad. Some incidents qualify as Material Non-Public Information, which <em>matters</em> to companies with stocks being traded.</p>
<p>The combinatorics indicate that 5*5=25 pairs, 50 if you include Is Private, which makes for an unwieldy pick-one list. However, like stellar types there is a kind of main sequence of pairs that are more common, with problematic outliers that make simple solutions a troublesome fit. Let's look at a few pairs that are on the main sequence of event types:</p>
<ul>
<li><strong>Planning + Individual</strong>: Probably a feature-flag had to be rolled back real quick. Spend some time digging into the case. Incidents like this sometimes get classified "bug" instead of "incident."</li>
<li><strong>Low + Team</strong>: Such as a Business Intelligence failure, where revenue attribution was discovered to be incorrect for a new feature, and time is needed to back-correct issues and validate against expectations. May also be classified as "bug" instead of "incident."</li>
<li><strong>Medium + Team:</strong> Probably the most common incident type that doesn't get classified as a "bug," these are the highway verge grass fires of the incident world; small in scope, over quick, one team can deal with it.</li>
<li><strong>Medium + Peer Team:</strong> Much like the previous but involving more systems in scope. Likely requires coordinated response between multiple teams to reach a solution. These teams work together a lot, by definition, so it would be a professional and quick response.</li>
<li><strong>High + Cross-org:</strong> A platform system had a failure that affected how application code responds to platform outages, leading to a complex, multi-org response. Response would include possibly renegotiating SLAs between platform and customer-facing systems. Also, remediating the Log4J vulnerability, which requires touching every usage of java in the company inclusive of vendored usage, counts as this kind of incident.</li>
<li><strong>Critical + Cross-org:</strong> An event like the Log4J vulnerability, <em>and the Security org has evidence that security probes found something</em>. The same remediation response as the previous, but with added "reestablish trust in the system" work on top of it, and working on regulated customer notices.</li>
</ul>
<p>Six of 25 combinations. But some of the others are still viable, even if they don't look plausible on the surface. Let's look at a few:</p>
<ul>
<li><strong>Critical + Team</strong>: A bug is found in SOX reporting that suggests incorrect data was reported to stock-holders. While the C-levels are interested, they're not in the response loop beyond the 'stakeholder' role and being the signature that stock-holder communications will be issued under.</li>
<li><strong>Low + Cross-org:</strong> Rapid retirement of a deprecated platform system, forcing the teams still using the old system to crash-migrate to the new one.</li>
<li><strong>Planning + Cross-org</strong>: The decision to retire a platform system is made as part of an incident, and migrations are inserted into regular planning.</li>
</ul>
<p>How is an organization supposed to build a pick-one list from this mess that is usable? This is hard work!</p>
<p>Some organizations solve this by bucketing incidents using another field, and allowing the pick-one list to mean different things based on what that other field says. A Security SEV1 gets a different scale of response than a Revenue SEV1, which in turn gets a different type of response than an Availability SEV1. Systems like this have problems with incidents that cross buckets, such as a Security issue that also affects Availability. It's for this reason that Honeycomb has an 'ambiguous' bucket.</p>
<p>A few organizations go so far as to have a fully separate process for the 'High' and 'Critical' urgencies of events, maybe calling them Disaster Recovery events instead of Incidents. DR events need to be rare, which means that process isn't as well exercised as Incident response. However, a separate process makes it abundantly clear that certain urgencies and scopes require different <em>process</em> overall. More on this in a later blog-post.</p>
<p>Other orgs handle the outlier problem differently, taking them out of incidents and into another process all together. Longer flow problems, <strong>low</strong> urgency above, get called something like a <a href="https://rosslazer.com/posts/code-yellow/">Code Yellow</a> after a Google effort, or Code Red for the Critical + C-Team level to handle long flow big problems.</p>
<p>Honeycomb took the bucketing idea one step further and dropped urgency and level of response entirely, focusing instead on incident type. A process like this still needs ways to manage urgency and response-scope differences, but this is being handled at a layer below incident automation. In my opinion, a setup like this works best when Engineering is around <a href="https://en.wikipedia.org/wiki/Dunbar's_number">Dunbar's Number</a> or less in size, allowing informal relationships to carry a lot of weight. Companies with deeper management chains, and thus more engineers, will need more formalism to determine cross-org interaction and prioritization.</p>
<p>Another approach is to go <em>super broad</em> with your pick-one list, and make it apply to everyone. While this approach disambiguates pretty well between the SEV 1 highest urgency problems and SEV 2 urgent but not <em>pants on fire</em> urgent, they're less good at disambiguating SEV 3 and SEV 4 incidents. Those incidents tend to only have local scope, so local definitions will prevail, meaning only locals will know how to correctly categorize issues.</p>
<hr />
<p>There are several simple answers for this problem, but each simplification has it's own problem. Your job is to pick the problems your org will put up with.</p>
<ul>
<li>How much informal structure can you rely on? The smaller the org, the more one size is likely to fit all.</li>
<li>Do you need to interoperate with a separate incident response process, perhaps an acquisition or a parent company?</li>
<li>How often do product-local vs global incidents happen? For one product companies, these are the same thing. For companies that are truly multi-product, this distinction matters. The answer here influences how items on your pick-one list are dealt with, and whether incident <em>reporters</em> are likely to file cross-product reports.</li>
<li>Does your incident automation platform allow decision supports in their reporting workflow? Think of a next, next, next, done wizard; each screen asks clarifying questions. Helpful for folk who are not sure how a given area wants their incidents marked up, less helpful for old hands who know exactly what needs to go in each field.</li>
</ul>
<p></p>]]>
        
    </content>
</entry>

<entry>
    <title>Rust and the Linux kernel</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2024/09/rust-and-the-linux-kernel.shtml" />
    <id>tag:sysadmin1138.net,2024:/mt/blog//5.2873</id>

    <published>2024-09-03T14:00:00Z</published>
    <updated>2024-09-03T13:42:14Z</updated>

    <summary>One of the kernel maintainers made social waves by bad mouthing Rust and the project to rebuild the Linux kernel in Rust. The idea of rebuilding the kernel in &quot;Rust: the memory-safe language&quot; not &quot;The C in CVE stands for...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>One of the kernel maintainers made social waves by bad mouthing Rust and the project to rebuild the Linux kernel in Rust. The idea of rebuilding the kernel in "Rust: the memory-safe language" not "The C in CVE stands for C/C++" makes a whole lot of sense. However, there is more to a language than how memory safe it is and whether a well known engineer calls it a "toy" language.</p>
<p>One of the products offered by my employer is written in Elixir, which is built on top of Erlang. Elixir had an 8 or so month period of fame, which is when the decision to write that product was made. We picked Elixir because the Erlang engine gives you a lot of concurrency and async processing for relatively easy. And it worked! That product was a beast in relatively little CPU. We had a few cases of 10x usage from customers, and it just scaled up no muss no fuss.</p>
<p>Where the problems with the product came wasn't in the writing, but in the <em>maintaining and productionizing</em>. Some of the issues we've had over the years, many of which got better as Elixir as an <em>ecosystem</em> matured:</p>
<ul>
<li>The ability to make a repeatable build, needed for CI systems</li>
<li>Dependency management in modules</li>
<li>Observability ecosystem support, such as <a href="https://opentelemetry.io/docs/languages/erlang/">OpenTelemetery SDKs</a></li>
<li>Build tooling support usable by our CI systems</li>
<li>Maturity of the module ecosystem, meaning we had to DIY certain tasks that our other main product never had to bother with. Or the modules that exist only covered 80% of the use-cases.</li>
<li>Managing Erlang VM startup during deploys</li>
</ul>
<p>My opinion is that the dismissiveness from this particular Linux Kernel Maintainer had to do with this list. The Linux kernel and module ecosystem is massive, with highly complex build processes spanning many organizations, and regression testing frameworks to match. <em>Ecosystem</em> maturity matters way more for CI, regression, and repeatable build problems than <em>language</em> maturity.</p>
<p>Rust has something Elixir never had: durable mindshare. Yeah, the kernel rebuild process has taken many years, and has many years to go. Durable mindshare means that engineers are sticking with it, instead of chasing the next hot new memory safe language.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Getting people to think about disaster recovery</title>
    <link rel="alternate" type="text/html" href="https://sysadmin1138.net/mt/blog/2024/07/getting-people-to-think-about-disaster-recovery.shtml" />
    <id>tag:sysadmin1138.net,2024:/mt/blog//5.2872</id>

    <published>2024-07-12T14:00:00Z</published>
    <updated>2025-03-29T21:26:26Z</updated>

    <summary>SysAdmins have no trouble making big lists of what can go wrong and what we&apos;re doing to stave that off a little longer. The tricky problem is pushing large organizations to take a harder look at systemic risks and taking...</summary>
    <author>
        <name>SysAdmin1138</name>
        <uri>https://sysadmin1138.net/mt/blog</uri>
    </author>
    
        <category term="backup" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="disasters" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="https://sysadmin1138.net/mt/blog/">
        <![CDATA[<p>SysAdmins have no trouble making big lists of what can go wrong and what we're doing to stave that off a little longer. The tricky problem is pushing large organizations to take a harder look at systemic risks and taking them seriously. I mean, the big companies <em>have</em> to have disaster recovery (DR) plans for compliance reasons; but there are a lot of differences between box-ticking DR plans and comprehensive DR plans.</p>
<p>Any company big enough to get past the <em>running out of money is the biggest disaster</em> phase has probably spent some time thinking about what to do if things go wrong. But how do you, the engineer in the room, get the deciders to think about disasters in productive ways?</p>
<p>The really big disasters are obvious:</p>
<ul>
<li>The datacenter catches fire after a hurricane</li>
<li>The Region goes dark due to a major earthquake</li>
<li>Pandemic flu means 60% of the office is offline at the same time</li>
<li>An engineer or automation accidentally:<br />
<ul>
<li>Drops all the tables in the database</li>
<li>Deletes all the objects out of the object store</li>
<li>Destroys all the clusters/servlets/pods</li>
<li>Deconfigures the VPN</li>
</ul>
</li>
<li>The above happens and you find your backups haven't worked in months</li>
</ul>
<p>All obvious stuff, and building to deal with them will let you tick the box for compliance DR. Cool.</p>
<p>But there are other disasters, the sneaky ones that make you think and take a hard look at process and procedures in a way that the "oops we lost everything of [x] type" disasters generally don't.</p>
<ul>
<li>An attacker subverts your laptop management software (JAMF, InTune, etc) and pushes a cryptolocker to all employee laptops</li>
<li>30% of your application secrets got exposed through a server side request forgery (SSRF) attack</li>
<li>Nefarious personages get access to your continuous integration environment and inject trojans into your dependency chains</li>
<li>A key third party, such as your payment processor, gets ransomwared and goes offline for three weeks</li>
<li>A Slack/Teams bot got subverted and has been feeding internal data to unauthorized third parties for months</li>
</ul>
<p>The above are all kinda "security" disasters, and that's my point. SysAdmins sometimes think of these, but even we are guilty of not having the right mental models to rattle these off the top of our head when asked. Asking about disasters like this list <em>should</em> start conversations that generally don't happen. Or you get the bad case: people shrug and say "that's Security's problem, not ours," which is a sign you have a toxic reliability culture.</p>
<p>Security-type disasters have a phase that merely technical disasters lack: <em>how do we restore trust in production systems</em>? In technical disasters, you can start recovery as soon as you've detected the disaster. For security disasters recovery has to wait until the attacker has been evicted, which can take a while. This security delay means key recovery concepts like Recovery Time and Recovery Point Objectives (RTO/RPO) will be subtly different.</p>
<p>If you're trying to knock loose some ossified DR thinking, these security type disasters can crack open new opportunities to make your job safer.</p>]]>
        
    </content>
</entry>

</feed>
