<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us">
  <title>※ hackd</title>
  <subtitle>hackd - security &amp; risk</subtitle>
  <icon>https://hackd.net/icon-512.png</icon>
  <id>https://hackd.net/</id>
  <link rel="self" type="application/atom+xml" href="https://hackd.net/atom.xml"/>
  <link rel="alternate" type="text/html" href="https://hackd.net/"/>
  <updated>2026-08-28T01:14:23.336Z</updated>
  <author>
    <name>roguesys</name>
  </author>
  <entry>
    <title>RL economics, morally charged terms, and &quot;distillation&quot;</title>
    <id>https://hackd.net/posts/rl-economics-morally-charged-terms-and-distillation/</id>
    <link rel="alternate" type="text/html" href="https://addxorrol.blogspot.com/2026/06/rl-economics-morally-charged-terms-and.html"/>
    <link rel="related" type="text/html" href="https://hackd.net/posts/rl-economics-morally-charged-terms-and-distillation/"/>
    <published>2026-08-28T01:14:23.336Z</published>
    <updated>2026-08-28T01:14:23.336Z</updated>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;It will be easy to convince yourself that the flaw in your business model that
gives your competitors a way to catch up with lesser investment is a moral
outrage - it is so unjust! - and then complain about the fact that others have
the right to do what they are doing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;— Halvar Flake&lt;/p&gt;</content>
    <category term="quote"/>
    <category term="ai"/>
    <category term="llm"/>
  </entry>
  <entry>
    <title>So what is this red teaming thing anyway?</title>
    <id>https://hackd.net/posts/so-what-is-this-red-teaming-thing-anyway/</id>
    <link rel="alternate" type="text/html" href="https://hackd.net/posts/so-what-is-this-red-teaming-thing-anyway/"/>
    <published>2026-08-17T23:57:11.111Z</published>
    <updated>2026-08-17T23:57:11.111Z</updated>
    <summary type="text">A grounding definition.</summary>
    <content type="html">&lt;p&gt;Seeing how I like to talk about offensive security around here, I should
probably clarify what I mean about some things, like red teaming. There are
plenty of running definitions out there, but just to have something to anchor on
for now: &lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-user-content-fnref-1&quot; data-footnote-ref aria-describedby=&quot;user-content-footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Red teams apply adversarial methods to identify where there’s divergence
between an organization’s intended position on a topic, and reality.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The organizational position on the topic of security could be something like:
“Our perimeter is secure and our defenses are strong, including our ability to
detect and respond to attacks.”&lt;/p&gt;
&lt;p&gt;“What if it isn’t though?”: a red team does the work to (in)validate that stated
position through repeated end-to-end testing (operations), playing the role of a
determined, goal-driven attacker. In doing so, the red team can establish the
truth about preventive, detective, and corrective controls and capabilities as
they actually exist.&lt;/p&gt;
&lt;p&gt;For a red team to be effective, what’s non-negotiable, in my view, is the
&lt;strong&gt;adversarial&lt;/strong&gt; part: the ability to think and operate free of as many
assumptions and constraints as possible. To be creative, persistent, and
unorthodox.&lt;/p&gt;
&lt;p&gt;Note that I’m very deliberately avoiding the technical specifics here. I think
those are a very important implementation detail, but fundamentally shift focus
away from the core of what red teams do. Sure, frequently it looks like: find a
bug, maybe even a 0-day vulnerability, then move internally through various
systems towards the goal, write up the findings, help with remediation. But
those aren’t requirements. Red teams are not a vulnerability-finding function
(though incidentally they do find a lot of issues), and in the extreme they
don’t even have to be technical all the time. Operations are usually live, with
attacks being executed against the production environment of the organization,
but it’s also legitimate to run tabletops when the risk is too high to do
otherwise (or to expedite the process).&lt;/p&gt;
&lt;p&gt;All the technical stuff is largely a function of what red teaming looks like in
practice today. But it’s not fundamental to the concept. Lateral thinking and
experimentation are.&lt;/p&gt;
&lt;section data-footnotes class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;user-content-footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-user-content-fn-1&quot;&gt;
&lt;p&gt;This post may get updated occasionally &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content>
    <category term="offensive security"/>
    <category term="red team"/>
    <category term="essay"/>
  </entry>
  <entry>
    <title>Fix the News</title>
    <id>https://hackd.net/posts/fix-the-news/</id>
    <link rel="alternate" type="text/html" href="https://fixthenews.com/library"/>
    <link rel="related" type="text/html" href="https://hackd.net/posts/fix-the-news/"/>
    <published>2026-08-12T21:26:12.303Z</published>
    <updated>2026-08-12T21:26:12.303Z</updated>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;Progress isn’t a rule, it’s contested terrain, fought for daily by millions of
people who refuse to give in to despair.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s easy to feel overwhelmed at times, looking upon the seemingly
insurmountable efforts needed to right the world. Yet, good things are happening
out there, every day. &lt;a href=&quot;https://fixthenews.com/library&quot;&gt;Fix the News&lt;/a&gt; has been my
favorite source of positive stories for a long while.&lt;/p&gt;</content>
    <category term="quote"/>
  </entry>
  <entry>
    <title>A policy on AI in writing</title>
    <id>https://hackd.net/posts/a-policy-on-ai-in-writing/</id>
    <link rel="alternate" type="text/html" href="https://sophiebits.com/2026/06/25/there-are-no-lossless-transformations-of-natural-language-text"/>
    <link rel="related" type="text/html" href="https://hackd.net/posts/a-policy-on-ai-in-writing/"/>
    <published>2026-08-12T01:19:22.934Z</published>
    <updated>2026-08-12T01:19:22.934Z</updated>
    <content type="html">&lt;p&gt;A good policy, well-articulated. Detail != clarity.&lt;/p&gt;
&lt;p&gt;(Related: &lt;a href=&quot;https://noslopgrenade.com/&quot;&gt;no slop grenade&lt;/a&gt;)&lt;/p&gt;</content>
    <category term="ai"/>
    <category term="llm"/>
  </entry>
  <entry>
    <title>Offensive security is a reality test</title>
    <id>https://hackd.net/posts/offensive-security-is-a-reality-test/</id>
    <link rel="alternate" type="text/html" href="https://andywgrant.substack.com/p/offensive-security-is-a-reality-test"/>
    <link rel="related" type="text/html" href="https://hackd.net/posts/offensive-security-is-a-reality-test/"/>
    <published>2026-08-05T18:11:29.239Z</published>
    <updated>2026-08-05T18:11:29.239Z</updated>
    <content type="html">&lt;p&gt;Distilling what a Red Team does can be difficult at times, because frequently
people focus on the tactical findings: this vulnerability, that
misconfiguration, some control that didn’t work or doesn’t exist. Those are all
valuable and important aspects of the work, no doubt, and they’re the common
artifacts of operations. But they’re not the essence.&lt;/p&gt;
&lt;p&gt;I like Andy’s characterization of red teaming as a truth-finding function, and
it’s very close to how I’ve been describing the work as well. Taking a
contrarian position to a given claim (“Our data is secure.”) and then working to
validate that hypothesis, to find the truth.&lt;/p&gt;</content>
    <category term="offensive security"/>
    <category term="red team"/>
  </entry>
  <entry>
    <title>Prompt injection as role confusion</title>
    <id>https://hackd.net/posts/prompt-injection-as-role-confusion/</id>
    <link rel="alternate" type="text/html" href="https://role-confusion.github.io/"/>
    <link rel="related" type="text/html" href="https://hackd.net/posts/prompt-injection-as-role-confusion/"/>
    <published>2026-06-23T03:52:27.233Z</published>
    <updated>2026-06-23T03:52:27.233Z</updated>
    <content type="html">&lt;p&gt;It seems intuitively true that it is not possible to secure a system with an
approach that’s enmeshed with the input mechanism through which attacks also
arrive; we’ve done much better using out-of-band controls to avoid commingling
code and data. Still, it’s great to see this research land and confidently show
this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Role tags were a formatting trick that became the security architecture and
the cognitive scaffolding of modern LLMs. We’ve shown that this architecture
doesn’t survive into the model’s actual representations, and that such role
confusion is linked to prompt injection.&lt;/p&gt;
&lt;p&gt;Unless LLMs achieve genuine role perception, we think injection defense will
remain a perpetual whack-a-mole game. And the continuous nature of role
boundaries opens the threat of injections designed to subtly shift LLM states
through seemingly innocuous text, legally and at scale.&lt;/p&gt;
&lt;/blockquote&gt;</content>
    <category term="ai"/>
    <category term="llm"/>
    <category term="security"/>
    <category term="quote"/>
  </entry>
  <entry>
    <title>We are living in Pinocchio&apos;s world</title>
    <id>https://hackd.net/posts/we-are-living-in-pinocchios-world/</id>
    <link rel="alternate" type="text/html" href="https://om.co/2026/05/25/we-are-living-in-pinocchios-world/"/>
    <link rel="related" type="text/html" href="https://hackd.net/posts/we-are-living-in-pinocchios-world/"/>
    <published>2026-06-03T17:06:56.518Z</published>
    <updated>2026-06-03T17:06:56.518Z</updated>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;The grifters and the hucksters and the influencers selling impossible things
succeed because audiences reward certainty and punish doubt. They honor
confidence and resist complication. A clean story about a genius who will fix
everything travels faster than a difficult story about tradeoffs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Skepticism is always healthy. Mostly everything has trade-offs, apparent or not,
so you have to keep going until you can see their shape.&lt;/p&gt;</content>
    <category term="quote"/>
  </entry>
  <entry>
    <title>uv lock files and malware on PyPI</title>
    <id>https://hackd.net/posts/uv-lockfiles-and-malware-on-pypi/</id>
    <link rel="alternate" type="text/html" href="https://hackd.net/posts/uv-lockfiles-and-malware-on-pypi/"/>
    <published>2026-04-07T15:43:05.118Z</published>
    <updated>2026-04-07T15:43:05.118Z</updated>
    <summary type="text">A potentially surprising interplay between these two systems means you might get compromised by deleted packages.</summary>
    <content type="html">&lt;p&gt;I’m pretty sure that saying “software supply chain security is important” won’t
win anyone a prize, yet we see quite an alarming ramp-up in malicious campaigns
that take advantage of various gaps in the space, despite all the industry
attention. Some problems take time to fix, but there’s a lot more we could be
doing today that isn’t for lack of technology, but organizational friction.
Anyway, we’re not here to discuss that right now.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.wiz.io/blog/threes-a-crowd-teampcp-trojanizes-litellm-in-continuation-of-campaign%3E&quot;&gt;LiteLLM compromise&lt;/a&gt; was interesting to watch, especially the
impact on downstream consumers. Essentially, everyone that installed or happened
to update the &lt;code&gt;LiteLLM&lt;/code&gt; package (or something that depended on it) got
compromised, as the newest (malicious) version was pulled in their environment.&lt;/p&gt;
&lt;p&gt;One of the ways to reduce this kind of thing from happening is to use lock files
in the package managers that support them. Lock files are a record of all
dependencies for a given package, including versions and cryptographic hashes.
Updating the lock file happens intentionally, during development, but deploying
the package in production uses the lock file as-is, installing known-good
versions as specified. This also has some other non-security related properties,
like making sure the versions of packages you’re deploying won’t magically break
things because of upstream changes. So you do your dev work, add deps as needed,
update the lock file, and ship that. It’s also best practice to pin your
dependencies to a specific version (like &lt;code&gt;==X.Y.Z&lt;/code&gt;) instead of using softer
constraints that may allow for updates (e.g., &lt;code&gt;&gt;=X.Y.0&lt;/code&gt; installing &lt;code&gt;X.Y.23&lt;/code&gt;).
This pinning usually happens in a configuration file adjacent to the lock file,
like &lt;code&gt;pyproject.toml&lt;/code&gt; or &lt;code&gt;Cargo.toml&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;The surprise&lt;/h2&gt;
&lt;p&gt;Let’s talk concretely about Python:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Define dependencies (and other stuff) in &lt;code&gt;pyproject.toml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;uv&lt;/code&gt; because it actually lets you create and use a lock file, &lt;code&gt;uv.lock&lt;/code&gt;
(and it’s fast).&lt;/li&gt;
&lt;li&gt;As needed, run &lt;code&gt;uv sync&lt;/code&gt; and record all package versions, hashes, and download
URLs in the lock file.&lt;/li&gt;
&lt;li&gt;When building for prod, use &lt;code&gt;uv sync --frozen&lt;/code&gt; which will &lt;strong&gt;only&lt;/strong&gt; use what’s
in the lock file, installing the same package versions regardless of upstream
changes. This uses the URLs directly, and won’t check for any newer versions
of packages, even if the constraints would allow for updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PyPI is the free package hosting and distribution solution for Python, and it’s
a wonderful service to be grateful for. It’s where &lt;code&gt;uv&lt;/code&gt; (and &lt;code&gt;pip&lt;/code&gt;) look for by
default for any Python dependency. So usually &lt;code&gt;uv.lock&lt;/code&gt; will contain quite a few
entries for things hosted there, and download URLs like
&lt;code&gt;https://files.pythonhosted.org/packages/12/34/big-hash/my_pkg-X.Y.Z-py3-none-any.whl&lt;/code&gt;
which provide the location of &lt;code&gt;my-pkg&lt;/code&gt; at version &lt;code&gt;X.Y.Z&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;But what if version &lt;code&gt;X.Y.Z&lt;/code&gt; is compromised and malicious? Well, PyPI or a
maintainer can delete it, which removes the package from the index, and it won’t
be installable anymore.&lt;/p&gt;
&lt;p&gt;Well, not quite.&lt;/p&gt;
&lt;p&gt;The package does get removed from the index, true, but &lt;strong&gt;the URL remains active
as a result of how storage works&lt;/strong&gt;, and the PyPI CDN will happily continue
serving it. Which means subsequent &lt;code&gt;uv sync --frozen&lt;/code&gt; invocations will install
that malicious package, since this form doesn’t consult the registry anymore,
and just directly fetches the URL.&lt;/p&gt;
&lt;p&gt;So, if during the window of time that an upstream package is compromised, one or
more lock files get updated to point to that malicious URL, the bad package will
still get installed. There can be a delay here until a defender might see these
lock files deployed, especially given the nuance of unpinned versions and other
things, so having an effective inventory of all installed packages to query is
very important to properly address this. Package aging (delaying updates) and
other mitigations are also part of the defensive story here, but ultimately it’s
worth knowing what gets installed and where.&lt;/p&gt;
&lt;p&gt;This isn’t really the fault of PyPI or &lt;code&gt;uv&lt;/code&gt;, just how these two things
interplay. &lt;code&gt;uv&lt;/code&gt; is &lt;a href=&quot;https://github.com/astral-sh/uv/issues/18781&quot;&gt;thinking about the problem&lt;/a&gt; and how to fix it.&lt;/p&gt;</content>
    <category term="security"/>
    <category term="python"/>
    <category term="supply chain security"/>
  </entry>
  <entry>
    <title>Choices and responsibility</title>
    <id>https://hackd.net/posts/choice-responsibility/</id>
    <link rel="alternate" type="text/html" href="https://hackd.net/posts/choice-responsibility/"/>
    <published>2026-02-12T18:13:53.452Z</published>
    <updated>2026-02-12T18:13:53.452Z</updated>
    <summary type="text">Brief notes on tools we choose to use, their impacts and risks, and who bears the cost.</summary>
    <content type="html">&lt;p&gt;Every time new technology comes out and becomes widely available, there is a
difficult balance to be found between the exuberance of early adopters—keen to
drive broad usage and land early wins unlocked by the new thing—&lt;sup&gt;&lt;a href=&quot;#user-content-fn-em&quot; id=&quot;user-content-user-content-fnref-em&quot; data-footnote-ref aria-describedby=&quot;user-content-footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;and those
who would seek to better understand the downsides before going too deep. There
are essential (and obvious) risks none disagree on, but these are few. The real
challenge is in negotiating the middle-ground, all the second+ order effects.
It’s fair that neither side prevails unchallenged&lt;sup&gt;&lt;a href=&quot;#user-content-fn-balance&quot; id=&quot;user-content-user-content-fnref-balance&quot; data-footnote-ref aria-describedby=&quot;user-content-footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;My primary perspective comes from doing Security Engineering work across
companies of different sizes (and cultures), some defense but mostly offense. On
either side though, I’ve largely thought about what the new technology amplifies
in terms of risk. Today, of course, it’s LLMs, but the problem space is fractal:
we run into variants&lt;sup&gt;&lt;a href=&quot;#user-content-fn-inject&quot; id=&quot;user-content-user-content-fnref-inject&quot; data-footnote-ref aria-describedby=&quot;user-content-footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; of the same meta issues all the time in security,
because that’s the nature of our work. Something shiny, often useful, almost
never designed with safety&lt;sup&gt;&lt;a href=&quot;#user-content-fn-safety&quot; id=&quot;user-content-user-content-fnref-safety&quot; data-footnote-ref aria-describedby=&quot;user-content-footnote-label&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; as a primary property.&lt;/p&gt;
&lt;p&gt;Yet, in accepting that we cannot wait for good-enough guardrails around new
technology within certain time constraints, we also &lt;strong&gt;do not get to abdicate our
responsibility&lt;/strong&gt; for the choice of using such tech. We might not be aware of all
the specific second+ order effects, but we can be sure they exist&lt;sup&gt;&lt;a href=&quot;#user-content-fn-macro&quot; id=&quot;user-content-user-content-fnref-macro&quot; data-footnote-ref aria-describedby=&quot;user-content-footnote-label&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;So it is with LLMs and all they’ve recently unlocked in terms of working with
software and systems (e.g., code assistance, vulnerability discovery, semi- or
fully- autonomous personal agents). Broadly, we’ve been able to convert A LOT of
ideas into running code, and got some pretty funny and clever things out, too.
Quite fast, generally. Yet, all of this software remains the responsibility of
whatever human actor is ultimately at the top of the pyramid, and we should
neither pretend otherwise, nor enable unaccountability in this regard.&lt;/p&gt;
&lt;p&gt;There are situations where and simply using whatever the LLM generated for code
is fine without paying it too much attention: prototypes, one-off scripts, even
tools that would only ever impact that human if there was a problem (i.e., skin
in the game), etc.&lt;/p&gt;
&lt;p&gt;Yet for code that’s to be shared with other people it remains the human’s
responsibility to review it, ensure its quality, and do so both in terms of
respect, and empathy, before sharing it in the first place. That human is still
responsible.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I really enjoyed reading (and recommend) both Russ Cox’s
&lt;a href=&quot;https://groups.google.com/g/golang-dev/c/4Li4Ovd_ehE/m/8L9s_jq4BAAJ&quot;&gt;post in &lt;code&gt;golang-dev@&lt;/code&gt;&lt;/a&gt;
on suggestions for how to approach aspects of this issue in that project, and
the &lt;a href=&quot;https://rfd.shared.oxide.computer/rfd/0576&quot;&gt;Oxide RFD (576)&lt;/a&gt; he mentions.&lt;/p&gt;
&lt;section data-footnotes class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;user-content-footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-user-content-fn-em&quot;&gt;
&lt;p&gt;I happen to know how to use em-dashes; this article is 100% organic. &lt;a href=&quot;#user-content-fnref-em&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-user-content-fn-balance&quot;&gt;
&lt;p&gt;Even this concession is uncomfortable for some cultures, which would
much rather build up a high degree of confidence/containment before allowing
anything. This moves into a different discussion on risk, and while that
conversation is interesting and worth iterating on, it is not how things
currently work in practice. &lt;a href=&quot;#user-content-fnref-balance&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-user-content-fn-inject&quot;&gt;
&lt;p&gt;Injections of all kinds are as old as computing, as is the unsafe
mixing of code and data. &lt;a href=&quot;#user-content-fnref-inject&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-user-content-fn-safety&quot;&gt;
&lt;p&gt;I think of safety in general, not just security. They are deeply
intertwined, yet the actual, meaningful property we should strive to deliver
upon has to be safety; security is a critical and related, but not
identical, attribute. &lt;a href=&quot;#user-content-fnref-safety&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 4&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-user-content-fn-macro&quot;&gt;
&lt;p&gt;At a macro scale this gets complex, and we see plenty of imbalances in
who pays for these externalities; it’s why we have regulations for some
things, frequently the result of socialized negative outcomes we want to
avoid repeating. &lt;a href=&quot;#user-content-fnref-macro&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 5&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content>
    <category term="ai"/>
    <category term="llm"/>
    <category term="security"/>
  </entry>
  <entry>
    <title>Mimestream Private Push</title>
    <id>https://hackd.net/posts/mimestream-private-push/</id>
    <link rel="alternate" type="text/html" href="https://mimestream.com/trust/private-push"/>
    <link rel="related" type="text/html" href="https://hackd.net/posts/mimestream-private-push/"/>
    <published>2026-02-07T02:19:10.320Z</published>
    <updated>2026-02-07T02:19:10.320Z</updated>
    <content type="html">&lt;p&gt;A nice bit of technical detail on how to achieve a privacy-preserving
implementation for email push. I hope many people would care about such details,
though realistically I’m unsure of it. It’s one of those things that can be done
quickly, easily, and poorly; or with a little more effort and attention, quite
well.&lt;/p&gt;</content>
    <category term="privacy"/>
  </entry>
</feed>
