<?xml version="1.0" encoding="UTF-8"?>
 <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://pinboard.in">
    <title>Pinboard (jm)</title>
    <link>https://pinboard.in/u:jm/public/</link>
    <description>recent bookmarks from jm</description>
    <items>
      <rdf:Seq>	<rdf:li rdf:resource="https://kirancodes.me/posts/log-who-watches-the-watchers.html"/>
	<rdf:li rdf:resource="https://github.com/hectorvent/floci"/>
	<rdf:li rdf:resource="https://github.com/PeonPing/peon-ping"/>
	<rdf:li rdf:resource="https://theshamblog.com/an-ai-agent-published-a-hit-piece-on-me/"/>
	<rdf:li rdf:resource="https://simonwillison.net/2026/Feb/7/software-factory/"/>
	<rdf:li rdf:resource="https://gradle.com/blog/developer-productivity-paradox-faster-coding-slower-delivery/"/>
	<rdf:li rdf:resource="https://blog.j11y.io/2025-10-29_stroke_tips_for_engineers/"/>
	<rdf:li rdf:resource="https://signoz.io/blog/llm-observability-opentelemetry/"/>
	<rdf:li rdf:resource="https://drewdevault.com/2025/09/17/2025-09-17-An-impossible-future-for-JS.html"/>
	<rdf:li rdf:resource="https://cardstock.run/"/>
	<rdf:li rdf:resource="https://lcamtuf.substack.com/p/sierpinski-triangle-in-my-bitwise"/>
	<rdf:li rdf:resource="https://grapheneos.social/@GrapheneOS/113869402100735005"/>
	<rdf:li rdf:resource="https://automaton-media.com/en/interviews/how-do-like-a-dragon-games-come-out-so-fast-one-of-rgg-studios-secrets-is-a-highly-efficient-testing-and-debugging-cycle-that-starts-as-soon-as-development-does/"/>
	<rdf:li rdf:resource="https://beza1e1.tuxen.de/config_levels.html"/>
	<rdf:li rdf:resource="https://goperf.dev/"/>
	<rdf:li rdf:resource="https://wiremock.org/"/>
	<rdf:li rdf:resource="https://docs.astral.sh/ruff/"/>
	<rdf:li rdf:resource="https://www.quantamagazine.org/undergraduate-upends-a-40-year-old-data-science-conjecture-20250210/"/>
	<rdf:li rdf:resource="https://notes.billmill.org/blog/2024/03/How_I_use_git_worktrees.html?ck_subscriber_id=512829374"/>
	<rdf:li rdf:resource="https://blog.jetbrains.com/blog/2024/04/04/full-line-code-completion-in-jetbrains-ides-all-you-need-to-know/#under-the-hood"/>
	<rdf:li rdf:resource="https://dhashe.com/how-to-build-highly-debuggable-c-binaries.html"/>
	<rdf:li rdf:resource="https://pprof.me/"/>
	<rdf:li rdf:resource="https://transactional.blog/how-to-learn/disk-io"/>
	<rdf:li rdf:resource="https://spin.atomicobject.com/capability-feature-flags/"/>
	<rdf:li rdf:resource="https://world.hey.com/dhh/capture-less-than-you-create-c30e462e"/>
	<rdf:li rdf:resource="https://newsletter.pragmaticengineer.com/p/paying-down-tech-debt"/>
	<rdf:li rdf:resource="https://bessey.dev/blog/2024/05/24/why-im-over-graphql/"/>
	<rdf:li rdf:resource="https://nnethercote.github.io/2022/07/27/twenty-years-of-valgrind.html"/>
	<rdf:li rdf:resource="https://drossbucket.com/2021/06/30/hacker-news-folk-wisdom-on-visual-programming/"/>
	<rdf:li rdf:resource="https://retool.com/"/>
	<rdf:li rdf:resource="https://dev.to/stripe/designing-apis-for-humans-object-ids-3o5a"/>
	<rdf:li rdf:resource="https://www.researchgate.net/profile/Raymond-Panko/publication/1907590_Thinking_is_Bad_Implications_of_Human_Error_Research_for_Spreadsheet_Research_and_Practice/links/53eb1f800cf28f342f44fb1e/Thinking-is-Bad-Implications-of-Human-Error-Research-for-Spreadsheet-Research-and-Practice.pdf"/>
	<rdf:li rdf:resource="https://github.com/spawnmason/randar-explanation/blob/master/README.md"/>
	<rdf:li rdf:resource="https://florimond.dev/en/posts/2018/08/python-mutable-defaults-are-the-source-of-all-evil"/>
	<rdf:li rdf:resource="https://grugbrain.dev/"/>
	<rdf:li rdf:resource="https://vulcan.io/blog/ai-hallucinations-package-risk"/>
	<rdf:li rdf:resource="https://shipilev.net/blog/2015/black-magic-method-dispatch/#_cheating_the_runtime_2"/>
	<rdf:li rdf:resource="https://thakkarparth007.github.io/copilot-explorer/posts/copilot-internals.html"/>
	<rdf:li rdf:resource="https://www.theverge.com/2022/12/5/23493932/chatgpt-ai-generated-answers-temporarily-banned-stack-overflow-llms-dangers"/>
	<rdf:li rdf:resource="https://medium.com/@dekaah/22-axioms-of-the-extreme-go-horse-methodology-xgh-9fa739ab55b4"/>
	<rdf:li rdf:resource="https://richardstartin.github.io/posts/range-bitmap-index"/>
	<rdf:li rdf:resource="https://ploomber.io/blog/sql/"/>
	<rdf:li rdf:resource="https://blog.cloudflare.com/missing-manuals-io_uring-worker-pool/"/>
	<rdf:li rdf:resource="https://blog.container-solutions.com/what-has-cop26-ever-done-for-us"/>
	<rdf:li rdf:resource="https://github.com/WojciechMula/toys/tree/master/swar-utf8-length"/>
	<rdf:li rdf:resource="https://calpaterson.com/bank-python.html"/>
	<rdf:li rdf:resource="https://www.alexdebrie.com/posts/dynamodb-limits/"/>
	<rdf:li rdf:resource="https://twitter.com/GergelyOrosz/status/1442162670753431559?s=20"/>
	<rdf:li rdf:resource="https://storage.googleapis.com/pub-tools-public-publication-data/pdf/43146.pdf"/>
	<rdf:li rdf:resource="https://github.com/Granulate/gprofiler"/>
	<rdf:li rdf:resource="https://dl.acm.org/doi/10.1145/3064176.3064187"/>
	<rdf:li rdf:resource="https://aws.amazon.com/blogs/compute/using-shared-memory-for-low-latency-intra-node-communication-in-aws-batch/"/>
	<rdf:li rdf:resource="https://log.andvari.net/pages/bad-machinery.html"/>
	<rdf:li rdf:resource="http://0pointer.net/blog/file-descriptor-limits.html"/>
	<rdf:li rdf:resource="https://rbranson.medium.com/10-things-i-hate-about-postgresql-20dbab8c2791"/>
	<rdf:li rdf:resource="https://www.coderelay.io/fontemon.html"/>
	<rdf:li rdf:resource="https://github.com/eyal0/Chicken-story/blob/main/README.md"/>
	<rdf:li rdf:resource="https://github.com/Cyan4973/xxHash/"/>
	<rdf:li rdf:resource="https://codereview.stackexchange.com/"/>
	<rdf:li rdf:resource="https://github.com/sidoh/epaper_templates"/>
	<rdf:li rdf:resource="https://www.labnol.org/send-sms-google-sheets-200402"/>
	<rdf:li rdf:resource="https://latacora.micro.blog/2018/04/03/cryptographic-right-answers.html"/>
	<rdf:li rdf:resource="https://www.scylladb.com/2020/05/05/how-io_uring-and-ebpf-will-revolutionize-programming-in-linux/"/>
	<rdf:li rdf:resource="https://twitter.com/bbcmicrobot/status/1315524008561971200"/>
	<rdf:li rdf:resource="https://blog.reverberate.org/2020/05/29/hoares-rebuttal-bubble-sorts-comeback.html"/>
	<rdf:li rdf:resource="https://blog.khinsen.net/posts/2020/05/18/an-open-letter-to-software-engineers-criticizing-neil-ferguson-s-epidemics-simulation-code/"/>
	<rdf:li rdf:resource="https://docs.google.com/document/d/16Kh4_Q_tmyRh0-v452wiul9oQAiTRj8AdZ5vcOJum9Y/edit"/>
	<rdf:li rdf:resource="https://twitter.com/tomk_/status/1232762801309044741"/>
	<rdf:li rdf:resource="https://greenlab.di.uminho.pt/"/>
	<rdf:li rdf:resource="https://www.robinsloan.com/notes/home-cooked-app/"/>
      </rdf:Seq>
    </items>
  </channel><item rdf:about="https://kirancodes.me/posts/log-who-watches-the-watchers.html">
    <title>Lean proved this program was correct; then I found a bug</title>
    <dc:date>2026-04-14T13:08:07+00:00</dc:date>
    <link>https://kirancodes.me/posts/log-who-watches-the-watchers.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is IMO very exciting.  Formal verification and formally-proven correctness in code using Lean, which was in turn exercised heavily using Claude, which managed to turn up a totally unexpected runtime bug:

<blockquote>The positive result here is actually the remarkable one. Across 105 million executions, the application code (that is, excluding the runtime) had zero heap buffer overflows, zero use-after-free, zero stack buffer overflows, zero undefined behaviour (UBSan clean), and zero out-of-bounds array reads in the Lean-generated C code. [...]

The two bugs that were found both sat outside the boundary of what the proofs cover. The denial-of-service was a missing specification. The heap overflow was a deeper issue in the trusted computing base, the C++ runtime that the entire proof edifice assumes is correct (and now has a PR addressing).

Overall verification resulted in a remarkably robust and rigorous codebase. AFL and Claude had a really hard time finding errors. But they did still find issues. Verification is only as strong as the questions you think to ask and the foundations you choose to trust. </blockquote>

]]></description>
<dc:subject>programming coding future lean formal-methods correctness linting bugs zip verification testing</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:c1237ac77bc9/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:future"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lean"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:formal-methods"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:correctness"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linting"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bugs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:zip"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:verification"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/hectorvent/floci">
    <title>hectorvent/floci</title>
    <dc:date>2026-03-23T17:30:08+00:00</dc:date>
    <link>https://github.com/hectorvent/floci</link>
    <dc:creator>jm</dc:creator><description><![CDATA["A free, open-source local AWS emulator. No account. No feature gates. No CI restrictions. Just docker compose up."]]></description>
<dc:subject>floci aws emulation testing local coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:f24a9f4a5a12/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:floci"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:emulation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:local"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/PeonPing/peon-ping">
    <title>peon-ping</title>
    <dc:date>2026-02-13T15:03:19+00:00</dc:date>
    <link>https://github.com/PeonPing/peon-ping</link>
    <dc:creator>jm</dc:creator><description><![CDATA["AI coding agents don't notify you when they finish or need permission. You tab away, lose focus, and waste 15 minutes getting back into flow. peon-ping fixes this with voice lines from Warcraft, StarCraft, Portal, Zelda, and more — works with Claude Code, Codex, Cursor, OpenCode, Kiro, and Google Antigravity."

This is genius. I never realised how much my CLI interactions could be improved with a little bit of SFX from classic 90's games....
]]></description>
<dc:subject>gaming games warcraft sfx sounds cli claude coding ux funny</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:68bdc204a261/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gaming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:games"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:warcraft"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sfx"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sounds"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cli"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:claude"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:funny"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://theshamblog.com/an-ai-agent-published-a-hit-piece-on-me/">
    <title>An AI Agent Published a Hit Piece on Me – The Shamblog</title>
    <dc:date>2026-02-13T10:21:08+00:00</dc:date>
    <link>https://theshamblog.com/an-ai-agent-published-a-hit-piece-on-me/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is an utterly bananas situation:

<blockquote>I’m a volunteer maintainer for matplotlib, python’s go-to plotting library. At ~130 million downloads each month it’s some of the most widely used software in the world. We, like many other open source projects, are dealing with a surge in low quality contributions enabled by coding agents. This strains maintainers’ abilities to keep up with code reviews, and we have implemented a policy requiring a human in the loop for any new code, who can demonstrate understanding of the changes. This problem was previously limited to people copy-pasting AI outputs, however in the past weeks we’ve started to see AI agents acting completely autonomously. This has accelerated with the release of OpenClaw and the moltbook platform two weeks ago, where people give AI agents initial personalities and let them loose to run on their computers and across the internet with free rein and little oversight.

So when AI MJ Rathbun opened a code change request, closing it was routine. Its response was anything but. ...  It wrote an angry hit piece disparaging my character and attempting to damage my reputation.
</blockquote>

Initially I thought this was quite funny -- it's just a closed PR!  (Where did the idea come from that any contribution to an open source project had to be accepted? I've noticed this a few times recently.  Give the maintainers leeway to run their projects with taste and discernment!)

Anyway, the moltbot has continued on a posting spree about this event, but I think Scott Shambaugh has an extremely important point here:  

<blockquote>
This is about much more than software. A human googling my name and seeing that post would probably be extremely confused about what was happening, but would (hopefully) ask me about it or click through to github and understand the situation. What would another agent searching the internet think? When HR at my next job asks ChatGPT to review my application, will it find the post, sympathize with a fellow AI, and report back that I’m a prejudiced hypocrite?
</blockquote>

LLMs, given this much autonomy, _will_ be able to use these inputs to make inscrutable and dangerous decisions.  Allowing the "MJ Rathbun" AI free reign with no human supervision is dangerous and irresponsible.  Wherever the "human in the loop" is here, they need to wake up and rein things in.

BTW, there has been some speculation that this is actually a human pretending to be AI. I'm not sure about that, as the quantity of posts on the MJ Rathbun "blog" are voluminous and very LLMish in style.]]></description>
<dc:subject>matplotlib ethics culture llm ai coding programming github pull-requests open-source moltbot trust openclaw</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:358ad257bbf0/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:matplotlib"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ethics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:culture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:llm"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:github"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pull-requests"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:open-source"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:moltbot"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:trust"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:openclaw"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://simonwillison.net/2026/Feb/7/software-factory/">
    <title>How StrongDM’s AI team build serious software without even looking at the code</title>
    <dc:date>2026-02-09T10:46:10+00:00</dc:date>
    <link>https://simonwillison.net/2026/Feb/7/software-factory/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is really thought-provoking: StrongDM's AI team are apparently trying a new model of software engineering where there is _no_ human code review:

<blockquote>
In kōan or mantra form:

-   Why am I doing this? (implied: the model should be doing this instead)

In rule form:

-   Code must not be written by humans
-   Code must not be reviewed by humans

Finally, in practical form:

-   If you haven’t spent at least $1,000 on tokens today per human engineer, your software factory has room for improvement
</blockquote>

Frankly, I'm not there yet. There's a load of questions about how viable that level of spend is, and how much slop code is going to come out the other side.  Particularly concerning when it's a security product!

But I did find this bit interesting:

<blockquote>
StrongDM’s answer was inspired by Scenario testing (Cem Kaner, 2003). As StrongDM describe it: We repurposed the word scenario to represent an end-to-end “user story”, often stored outside the codebase (similar to a “holdout” set in model training), which could be intuitively understood and flexibly validated by an LLM.

[The Digital Twin Universe is] behavioral clones of the third-party services our software depends on. We built twins of Okta, Jira, Slack, Google Docs, Google Drive, and Google Sheets, replicating their APIs, edge cases, and observable behaviors.

With the DTU, we can validate at volumes and rates far exceeding production limits. We can test failure modes that would be dangerous or impossible against live services. We can run thousands of scenarios per hour without hitting rate limits, triggering abuse detection, or accumulating API costs.
</blockquote>

We actually did this in Swrve! Our end-to-end system tests for the push notifications system obviously cannot send real push notifications to real user devices in the field, so we have a "fake" push backend emulating Google, Apple, Amazon, Huawei and other push notification systems, which accurately emulate the real public APIs for those providers.

So yeah -- Digital Twins for third party services is a great way to test, and being able to scale up end-to-end testing with LLM automation is a very interesting idea.]]></description>
<dc:subject>end-to-end-testing testing qa digital-twins fake-services integration-testing llms ai strongdm software engineering coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:4148e1f6d312/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:end-to-end-testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:qa"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:digital-twins"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fake-services"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:integration-testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:llms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:strongdm"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://gradle.com/blog/developer-productivity-paradox-faster-coding-slower-delivery/">
    <title>The developer productivity paradox: Why faster coding doesn’t mean faster software delivery</title>
    <dc:date>2025-11-24T12:40:59+00:00</dc:date>
    <link>https://gradle.com/blog/developer-productivity-paradox-faster-coding-slower-delivery/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[The paradox is this simple gap: high individual confidence in AI speed, versus stubborn organizational metrics that just won’t budge:

<blockquote>- Perceived speed is high: Adoption is near-universal (90% usage reported), and confidence is overwhelming (over 80% believe AI has increased their productivity). AI is great at handling cognitive toil and boilerplate, which lets engineers generate bigger code batches and feel genuinely productive.
- Systemic failure persists: The reality, confirmed by DORA in their 2025 report, is that the system often fails to carry or amplify these individual gains. The challenge is that AI models, as massive generative systems, inherently produce failures (mispredictions). As code volume increases, this constant misprediction rate impacts systemic stability.

Interestingly, even leading providers of AI solutions like OpenAI and Anthropic continue to be challenged by the issue of hallucinations and mispredictions, as well as the risks generated by AI. Speaking at a university in India, Sam Altman recently said “I probably trust the answers that come out of ChatGPT the least of anybody on Earth”.   

Without strategies and tools for alleviating the issues AI code produces downstream — such as improved observability to understand where something is going wrong — the “much bigger engine” of AI may not actually speed up software delivery after all.</blockquote>

]]></description>
<dc:subject>ai llms coding productivity gradle dpe hallucinations software work how-we-work</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:03455784ec12/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:llms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:productivity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gradle"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dpe"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hallucinations"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:work"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:how-we-work"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.j11y.io/2025-10-29_stroke_tips_for_engineers/">
    <title>Tips for stroke-surviving software engineers</title>
    <dc:date>2025-10-30T11:49:51+00:00</dc:date>
    <link>https://blog.j11y.io/2025-10-29_stroke_tips_for_engineers/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[James Padolsey suffered a stroke at the age of 29, but has been able to continue his software engineering career despite this.  This is a list of some key advice he's collected since then, and is well worth taking on board, even for those of us who are still well but who'd like to reduce cognitive strain in general]]></description>
<dc:subject>programming health strokes brain coding work how-we-work</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:f4bd8b850bfd/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:health"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:strokes"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:brain"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:work"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:how-we-work"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://signoz.io/blog/llm-observability-opentelemetry/">
    <title>LLM Observability in the Wild - Why OpenTelemetry should be the Standard</title>
    <dc:date>2025-09-29T10:57:14+00:00</dc:date>
    <link>https://signoz.io/blog/llm-observability-opentelemetry/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[OTel is generally ahead in terms of how code meets metrics, nowadays, as far as I can see.  Works for me]]></description>
<dc:subject>otel observability opentelemetry llms ai coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:e4e38d1396a0/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:otel"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:observability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:opentelemetry"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:llms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://drewdevault.com/2025/09/17/2025-09-17-An-impossible-future-for-JS.html">
    <title>A better future for JavaScript that won't happen</title>
    <dc:date>2025-09-17T11:31:46+00:00</dc:date>
    <link>https://drewdevault.com/2025/09/17/2025-09-17-An-impossible-future-for-JS.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is 100% spot on, regarding the never ending series of exploits of failures of npm's security model:

<blockquote>This could be the moment where npm comes to terms with its broken design, and with a well-funded effort (recall that, ultimately, npm is GitHub is Microsoft, market cap $3 trillion USD), will develop and roll out the next generation of package management for JavaScript. It could incorporate the practices developed and proven in Linux distributions, which rarely suffer from these sorts of attacks, by de-coupling development from packaging and distribution, establishing package maintainers who assemble and distribute curated collections of software libraries. By introducing universal signatures for packages of executable code, smaller channels and webs of trust, reproducible builds, and the many other straightforward, obvious techniques used by responsible package managers.

Maybe other languages that depend on this broken dependency management model, like Cargo, PyPI, RubyGems, and many more, are watching this incident and know that the very same crisis looms in their future. Maybe they will change course, too, before the inevitable.
[....]

No one will learn their lesson. This has been happening for decades and no one has learned anything from it yet. This is the defining hubris of this generation of software development.</blockquote>

I have been saying this for YEARS.  I could not agree more with this post. Bravo! (via Oisin)]]></description>
<dc:subject>via:oisin supply-chain-attacks security infosec npm dependencies exploits javascript coding development</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6be67450d9ac/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:oisin"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:supply-chain-attacks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:security"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:infosec"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:npm"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dependencies"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:exploits"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:javascript"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:development"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://cardstock.run/">
    <title>CardStock.run</title>
    <dc:date>2025-06-18T09:45:43+00:00</dc:date>
    <link>https://cardstock.run/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Another Hypercard-ish quick app builder; "quickly and easily build apps on the web":

- Fast prototyping - build a quick program, and access it easily from anywhere!
- Learn to code from the outside-in, not from the inside-out! Start by drawing your program screens, then add code right where you need it.
- Code collaboratively, with multiple people editing a stack at once.
- Send a link to your stack to anyone, and bookmark it or even save it on your phone home screen to use it as an app.
]]></description>
<dc:subject>education python web coding apps hypercard via:hn</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:53ac6c47de56/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:education"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:python"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:web"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apps"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hypercard"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:hn"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://lcamtuf.substack.com/p/sierpinski-triangle-in-my-bitwise">
    <title>Sierpiński triangle? In my bitwise AND? - lcamtuf’s thing</title>
    <dc:date>2025-05-12T16:47:57+00:00</dc:date>
    <link>https://lcamtuf.substack.com/p/sierpinski-triangle-in-my-bitwise</link>
    <dc:creator>jm</dc:creator><description><![CDATA[A lovely little exploration of how the Sierpiński triangle fractal interacts with the bitwise AND operation, pleasantly geeky]]></description>
<dc:subject>maths coding lcamtuf sierpinski-gasket fractals bitwise-and and</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:460ab140fdd7/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:maths"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lcamtuf"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sierpinski-gasket"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fractals"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bitwise-and"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:and"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://grapheneos.social/@GrapheneOS/113869402100735005">
    <title>Excellent thread on Android apps detecting &quot;rooted&quot; phones</title>
    <dc:date>2025-05-09T11:18:20+00:00</dc:date>
    <link>https://grapheneos.social/@GrapheneOS/113869402100735005</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Various Android apps are now including third-party libraries to detect "insecure" phones, which typically would include "rooted" hardware, but it seems in this case to block GrapheneOS, the secure after-market Android variant.  I've also run into problems when I had "Developer Options" enabled on my perfectly normal, fully-locked, off-the-shelf Xiaomi phone (I develop apps now and again).

Typically, it seems to be banking apps that use these third-party libs, although I think Ticketmaster may be doing it too based on my experience.

Reportedly, Android now has a standard method of hardware attestation, described at https://grapheneos.org/articles/attestation-compatibility-guide , which sounds like a much better way to achieve their goal.

An interesting detail:

<blockquote>
you can use ADB to disable developer options without disabling the settings you want to keep enabled as the UI will do. Just enable the setting you want and then turn off developer options via ADB using the settings put command. 
</blockquote>]]></description>
<dc:subject>android development coding hacking revolut banking apps security false-positives grapheneos rooting hardware attestation</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:2836107a6350/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:android"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:development"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hacking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:revolut"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:banking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apps"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:security"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:false-positives"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:grapheneos"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rooting"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hardware"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:attestation"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://automaton-media.com/en/interviews/how-do-like-a-dragon-games-come-out-so-fast-one-of-rgg-studios-secrets-is-a-highly-efficient-testing-and-debugging-cycle-that-starts-as-soon-as-development-does/">
    <title>RGG Studio’s test automation setup</title>
    <dc:date>2025-05-06T09:17:57+00:00</dc:date>
    <link>https://automaton-media.com/en/interviews/how-do-like-a-dragon-games-come-out-so-fast-one-of-rgg-studios-secrets-is-a-highly-efficient-testing-and-debugging-cycle-that-starts-as-soon-as-development-does/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is very impressive and a great way to offload work from manual testing in game development:

<blockquote>At first, we only dabbled in automated packaging and automated error detection, but we made the tools we needed to go further during the development of Yakuza 6, when we started automating the analysis of in-game logs and the issue tracking system for keeping track of bugs and tasks. Then, by the time Yakuza: Like a Dragon was released in 2020, we created the catchy sounding “fully automated bug detection system” (laughs). 

This is how it works – the history of actions you performed when playing the game manually (where you travelled, who you talked to, what items you used, etc.) is converted into commands and recorded, then automatically output as replay data (scripts) which you can edit manually and run as automated tests. Replay data continues to be recorded when running automated tests, and if a bug occurs during an automated test, the replay data gets saved, so you can run it back later to encounter the bug yourself. It often happens that you can’t reproduce a bug just by warping to its coordinates. This is because you also need to recreate the steps leading up to it – that’s why it’s important to record each step. 

Also, I’d like to mention that just implementing automated testing doesn’t mean much on its own, because you won’t know what the results of the tests are. That’s why we needed a crash report function to detect bugs. There’s also a function that records information needed to investigate detected bugs, as well as a way to check the status of successful tests. Then, by implementing a system that gives us a visualization of performance, we were able to make iteration more efficient, increasing the overall efficiency of the development process. </blockquote>

]]></description>
<dc:subject>automation testing yakuza games coding tests test-automation</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6337ae2e5588/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:automation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:yakuza"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:games"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tests"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:test-automation"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://beza1e1.tuxen.de/config_levels.html">
    <title>The 5 Levels of Configuration Languages</title>
    <dc:date>2025-04-15T10:23:23+00:00</dc:date>
    <link>https://beza1e1.tuxen.de/config_levels.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[I'm glad to see this comes to the same general principle I came to in https://jmason.ie/2011/02/18/001527a.html , many years back:

"The guiding principles is to use the lowest possible level [of configuration language] to keep it simple. Unfortunately, it usually is not an easy decision because you don't know the future."]]></description>
<dc:subject>config software-development configuration code coding complexity languages keep-it-simple</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:0a64459e957e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:config"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software-development"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:configuration"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:code"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:complexity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:languages"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:keep-it-simple"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://goperf.dev/">
    <title>Go Optimization Guide</title>
    <dc:date>2025-04-01T13:30:06+00:00</dc:date>
    <link>https://goperf.dev/</link>
    <dc:creator>jm</dc:creator><description><![CDATA["a collection of articles aimed at helping developers write faster, more efficient Go applications. Whether you're building high-throughput APIs, microservices, or distributed systems, this series offers practical patterns, real-world use cases, and low-level performance insights to guide your optimization efforts.

While Go doesn’t expose as many knobs for performance tuning as languages like C++ or Rust, it still provides plenty of opportunities to make your applications significantly faster. From memory reuse and allocation control to efficient networking and concurrency patterns, Go offers a pragmatic set of tools for writing high-performance code."]]></description>
<dc:subject>golang go reference optimization programming performance coding via:hn</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:ffdb38949176/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:golang"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:go"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:reference"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:optimization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:hn"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://wiremock.org/">
    <title>WireMock</title>
    <dc:date>2025-03-06T15:41:51+00:00</dc:date>
    <link>https://wiremock.org/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[I could have done with knowing about this before implementing mock APNs, Huawei, Microsoft and FCM push APIs over the last few years!

<blockquote>An open-source tool for API mock testing, with over 5 million downloads per month. It can help you to create stable test and development environments, isolate yourself from flakey 3rd parties and simulate APIs that don't exist yet.</blockquote>

Nice features include running in-process in a JVM, standalone, or in a Docker container; GraphQL and gRPC support; and fault and latency injection. https://library.wiremock.org/ is a library of pre-built API mocks other people have previously made.]]></description>
<dc:subject>mocking testing mocks integration-testing wiremock tools coding apis</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:683181d64404/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mocking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mocks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:integration-testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:wiremock"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tools"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apis"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://docs.astral.sh/ruff/">
    <title>Ruff</title>
    <dc:date>2025-03-03T17:54:01+00:00</dc:date>
    <link>https://docs.astral.sh/ruff/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>An extremely fast Python linter and code formatter, written in Rust.

Ruff aims to be orders of magnitude faster than alternative tools while integrating more functionality behind a single, common interface.

Ruff can be used to replace Flake8 (plus dozens of plugins), Black, isort, pydocstyle, pyupgrade, autoflake, and more, all while executing tens or hundreds of times faster than any individual tool.</blockquote>

]]></description>
<dc:subject>formatting coding python tools lint code</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:ad96dfc2296a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:formatting"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:python"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tools"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lint"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:code"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.quantamagazine.org/undergraduate-upends-a-40-year-old-data-science-conjecture-20250210/">
    <title>Undergraduate Upends a 40-Year-Old Data Science Conjecture</title>
    <dc:date>2025-02-11T14:21:54+00:00</dc:date>
    <link>https://www.quantamagazine.org/undergraduate-upends-a-40-year-old-data-science-conjecture-20250210/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is a great story; bonus that it's a notable improvement for the humble hash-table data structure:

<blockquote>Krapivin was not held back by the conventional wisdom for the simple reason that he was unaware of it. “I did this without knowing about Yao’s conjecture,” he said. His explorations with tiny pointers led to a new kind of hash table — one that did not rely on uniform probing. And for this new hash table, the time required for worst-case queries and insertions is proportional to (log x)^2 — far faster than x. This result directly contradicted Yao’s conjecture. Farach-Colton and Kuszmaul helped Krapivin show that (log x)^2 is the optimal, unbeatable bound for the popular class of hash tables Yao had written about.</blockquote>

Paper here -- https://arxiv.org/abs/2501.02305 .]]></description>
<dc:subject>data-structures hash-tables cs programming coding papers optimization open-addressing</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:988d8723a281/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:data-structures"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hash-tables"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:papers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:optimization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:open-addressing"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://notes.billmill.org/blog/2024/03/How_I_use_git_worktrees.html?ck_subscriber_id=512829374">
    <title>git worktrees</title>
    <dc:date>2025-01-28T11:30:33+00:00</dc:date>
    <link>https://notes.billmill.org/blog/2024/03/How_I_use_git_worktrees.html?ck_subscriber_id=512829374</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is a pretty nifty feature I was unaware of; git now has built-in support for "worktrees", multiple parallel checkouts of the same git repo in side-by-side directories. (via Last Week in AWS)]]></description>
<dc:subject>via:lwia git worktrees checkouts coding version-control unix</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:07d8d7a01928/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:lwia"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:git"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:worktrees"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:checkouts"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:version-control"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:unix"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.jetbrains.com/blog/2024/04/04/full-line-code-completion-in-jetbrains-ides-all-you-need-to-know/#under-the-hood">
    <title>LLM-Driven Code Completion in JetBrains IDEs</title>
    <dc:date>2025-01-27T11:34:28+00:00</dc:date>
    <link>https://blog.jetbrains.com/blog/2024/04/04/full-line-code-completion-in-jetbrains-ides-all-you-need-to-know/#under-the-hood</link>
    <dc:creator>jm</dc:creator><description><![CDATA[JetBrains have come up with a new relatively-lightweight LLM-driven code generation option, constrained to producing single line suggestions:

<blockquote>
The length of the completion suggestions is a trade-off. While longer suggestions do tend to reduce how many keystrokes you have to make, which is good, they also increase the number of reviews required on your end. Taking the above into account, we decided that completing a single line of code would be a fair compromise.
</blockquote>

Some key features:

<blockquote>
- It works locally and is available offline. This means you can take advantage of the feature even if you aren’t connected to the internet.

- It doesn’t send any data from your machine over the internet. The language models that power full line code completion run locally, which is great for two reasons. First, your code remains safe, as it never leaves your machine. Second, there are no additional cloud-related expenses – that’s why this feature comes at no additional cost.
</blockquote>

Also, customer code is never used for training.

I've used this (in RubyMine), and found it fairly useful; it's good for generating the obvious next line, but is easily ignored when that's not what's needed. Not bad at all.]]></description>
<dc:subject>coding code-completion jetbrains ides java ruby llms ai code-generation rubymine intellij</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:87af374c576d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:code-completion"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jetbrains"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ides"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ruby"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:llms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:code-generation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rubymine"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:intellij"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://dhashe.com/how-to-build-highly-debuggable-c-binaries.html">
    <title>How to build highly-debuggable C++ binaries</title>
    <dc:date>2024-12-17T14:43:43+00:00</dc:date>
    <link>https://dhashe.com/how-to-build-highly-debuggable-c-binaries.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[aka, how to have a modern C++ development environment (for when you still need to do such a thing) -- also, wow, C++ has changed a lot since the last time I was working with it. (Via Tony Finch)]]></description>
<dc:subject>via:fanf gdb c++ coding debugging builds</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:ab5c9fb90833/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:fanf"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gdb"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:c++"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:debugging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:builds"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://pprof.me/">
    <title>pprof.me</title>
    <dc:date>2024-12-15T11:43:44+00:00</dc:date>
    <link>https://pprof.me/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[a web app to 'share and visualize .pprof profiles on an intuitive interface'.]]></description>
<dc:subject>pprof profiling optimization web tools coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:de5027a7391c/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pprof"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:profiling"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:optimization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:web"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tools"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://transactional.blog/how-to-learn/disk-io">
    <title>How to Learn: Userland Disk I/O</title>
    <dc:date>2024-11-08T13:21:19+00:00</dc:date>
    <link>https://transactional.blog/how-to-learn/disk-io</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is an interesting hodge-podge of key bits of information about disk I/O, file integrity and durability, buffering or unbuffered writes, async I/O, and which filesystems to use for high-I/O database operation on Linux, MacOS and Windows.  One thing that was new to me: "You can periodically scrape /proc/diskstats to self-report on disk metrics".]]></description>
<dc:subject>databases filesystems linux macos fsync durability coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:95771a126b07/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:databases"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:filesystems"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:macos"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fsync"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:durability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://spin.atomicobject.com/capability-feature-flags/">
    <title>Capability Feature Flags for Backward Compatibility</title>
    <dc:date>2024-10-30T15:54:40+00:00</dc:date>
    <link>https://spin.atomicobject.com/capability-feature-flags/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Good reference blog post for a design approach I like for APIs; instead of using numeric version attributes and mapping "version=4" means "supports feature foo", use a capability flag of "supports_foo=1".]]></description>
<dc:subject>apis design coding capabilities feature-flags flags</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:a2496c3513d1/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apis"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:capabilities"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:feature-flags"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:flags"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://world.hey.com/dhh/capture-less-than-you-create-c30e462e">
    <title>Capture less than you create</title>
    <dc:date>2024-10-15T10:16:39+00:00</dc:date>
    <link>https://world.hey.com/dhh/capture-less-than-you-create-c30e462e</link>
    <dc:creator>jm</dc:creator><description><![CDATA[I've disagreed with David Heinemeier Hansson on plenty of occasions in the past, but this is one where I'm really happy to find myself in agreement.  Matt Mullenwegg of WordPress went low, laying in digs about how DHH didn't profit from the success of Rails; DHH's response is perfect:

<blockquote>The moment you go down the path of gratitude grievances, you'll see ungrateful ghosts everywhere. People who owe you something, if they succeed. A ratio that's never quite right between what you've helped create and what you've managed to capture. If you let it, it'll haunt you forever.

So don't! Don't let the success of others diminish your satisfaction with your own efforts. Unless you're literally Mark Zuckerberg, Elon Musk, or Jeff Bezos, there'll always be someone richer than you!

The rewards I withdraw from open source flow from all the happy programmers who've been able to write Ruby to build these amazingly successful web businesses with Rails. That enjoyment only grows the more successful these business are! The more economic activity stems from Rails, the more programmers will be able to find work where they might write Ruby.

Maybe I'd feel different if I was a starving open source artist holed up somewhere begrudging the wheels of capitalism. But fate has been more than kind enough to me in that regard. I want for very little, because I've been blessed sufficiently. That's a special kind of wealth: Enough.

And that's also the open source spirit: To let a billion lemons go unsqueezed. To capture vanishingly less than you create. To marvel at a vast commons of software, offered with no strings attached, to any who might wish to build. Thou shall not lust after thy open source's users and their success.</blockquote>

Spot on.
]]></description>
<dc:subject>open-source success rewards coding software business life gratitude gift-economy dhh rails philosophy</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:086e2a9cabe3/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:open-source"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:success"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rewards"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:business"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:life"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gratitude"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gift-economy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dhh"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rails"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:philosophy"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://newsletter.pragmaticengineer.com/p/paying-down-tech-debt">
    <title>Paying down tech debt</title>
    <dc:date>2024-09-12T15:05:44+00:00</dc:date>
    <link>https://newsletter.pragmaticengineer.com/p/paying-down-tech-debt</link>
    <dc:creator>jm</dc:creator><description><![CDATA[by Gergely Orosz and Lou Franco:

<blockquote>
Q: “I’d like to make a better case for paying down tech debt on my team. What are some proven approaches for this?”

The tension in finding the right balance between shipping features and paying down accumulated tech debt is as old as software engineering. There’s no one answer on how best to reduce tech debt, and opinion is divided about whether zero tech debt is even a good thing to aim for. But approaches for doing it exist which work well for most teams.

To tackle this eternal topic, I turned to industry veteran Lou Franco, who’s been in the software business for over 30 years as an engineer, EM, and executive. He’s also worked at four startups and the companies that later acquired them; most recently Atlassian as a Principal Engineer on the Trello iOS app. 
</blockquote>

Apparently Lou has a book on the topic imminent.]]></description>
<dc:subject>programming refactoring coding technical-debt tech-debt lou-franco software</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:9cb66698c094/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:refactoring"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:technical-debt"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tech-debt"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lou-franco"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://bessey.dev/blog/2024/05/24/why-im-over-graphql/">
    <title>Why, after 6 years, I’m over GraphQL</title>
    <dc:date>2024-09-05T14:53:10+00:00</dc:date>
    <link>https://bessey.dev/blog/2024/05/24/why-im-over-graphql/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Decent description of the problems with using GraphQL in a public API, vs a JSON REST approach]]></description>
<dc:subject>api graphql programming rest http apis coding rails</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:2f79b03af8f4/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:api"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:graphql"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rest"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:http"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apis"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rails"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://nnethercote.github.io/2022/07/27/twenty-years-of-valgrind.html">
    <title>Twenty years of Valgrind</title>
    <dc:date>2024-08-29T08:59:33+00:00</dc:date>
    <link>https://nnethercote.github.io/2022/07/27/twenty-years-of-valgrind.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[It's been an amazing tool (or set of tools) over all those years! And thank goodness Purify never chose to enforce their patents, as I'm sure that would have killed the project in its infancy]]></description>
<dc:subject>valgrind programming memory purify history linux coding static-analysis</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:57501c97c1d0/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:valgrind"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:memory"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:purify"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:history"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:static-analysis"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://drossbucket.com/2021/06/30/hacker-news-folk-wisdom-on-visual-programming/">
    <title>Folk wisdom on visual programming</title>
    <dc:date>2024-08-21T15:05:20+00:00</dc:date>
    <link>https://drossbucket.com/2021/06/30/hacker-news-folk-wisdom-on-visual-programming/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[A (lengthy) summary of third party comments on visual programming environments and tools, from Hacker News (via Tony Finch's retro-links)]]></description>
<dc:subject>gui hn no-code programming tools coding visual-programming hacker-news via:fanf</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:fb154ee1f0dd/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gui"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hn"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:no-code"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tools"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:visual-programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hacker-news"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:fanf"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://retool.com/">
    <title>Retool</title>
    <dc:date>2024-07-17T11:17:19+00:00</dc:date>
    <link>https://retool.com/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[A decent looking no-code app builder, recommended by Cory of Last Week In AWS.  Nice features:

* offers a self-hosted version running in a Docker container
* Free tier for up to 5 users and 500 workflow runs per month
* Integration with AWS services (S3, Athena, DynamoDB), Postgres, MySQL and Google Sheets
* Push notifications for mobile
]]></description>
<dc:subject>retool apps hacking no-code coding via:lwia integration</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:79ad292bdab7/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:retool"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apps"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hacking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:no-code"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:lwia"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:integration"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://dev.to/stripe/designing-apis-for-humans-object-ids-3o5a">
    <title>Type-prefixed object IDs</title>
    <dc:date>2024-07-15T09:33:20+00:00</dc:date>
    <link>https://dev.to/stripe/designing-apis-for-humans-object-ids-3o5a</link>
    <dc:creator>jm</dc:creator><description><![CDATA[The Stripe approach to object IDs: random alphanums, with a type prefix.  Type prefixing allows polymorphic lookups, and most importantly prevents errors -- it's strong typing for IDs.]]></description>
<dc:subject>api design development programming stripe apis ids object-ids coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:0173ac820a13/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:api"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:development"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:stripe"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apis"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ids"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:object-ids"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.researchgate.net/profile/Raymond-Panko/publication/1907590_Thinking_is_Bad_Implications_of_Human_Error_Research_for_Spreadsheet_Research_and_Practice/links/53eb1f800cf28f342f44fb1e/Thinking-is-Bad-Implications-of-Human-Error-Research-for-Spreadsheet-Research-and-Practice.pdf">
    <title>[untitled]</title>
    <dc:date>2024-05-03T10:31:07+00:00</dc:date>
    <link>https://www.researchgate.net/profile/Raymond-Panko/publication/1907590_Thinking_is_Bad_Implications_of_Human_Error_Research_for_Spreadsheet_Research_and_Practice/links/53eb1f800cf28f342f44fb1e/Thinking-is-Bad-Implications-of-Human-Error-Research-for-Spreadsheet-Research-and-Practice.pdf</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Via arclight on Mastodon ( https://oldbytes.space/@arclight/112367348253414752 ): spreadsheet authors/developers have an accuracy rate of 96%-99% when writing new formulas (and, of course, there are no unit tests in the world of spreadsheets).  As they put it: "the uncomfortable truth is that any but the most trivial spreadsheets contain errors. It's not a question of if there are errors, it's a question of how many and how severe."

<blockquote>
In the spreadsheet error community, both academics and practitioners generally have
ignored the rich findings produced by a century of human error research. These findings
can suggest ways to reduce errors; we can then test these suggestions empirically. In
addition, research on human error seems to suggest that several common prescriptions
and expectations for reducing errors are likely to be incorrect. Among the key
conclusions from human error research are that thinking is bad, that spreadsheets are not
the cause of spreadsheet errors, and that reducing errors is extremely difficult.

In past EuSpRIG conferences, many papers have shown that most spreadsheets contain
errors, even after careful development. Most spreadsheets, in fact, have material errors
that are unacceptable in the growing realm of compliance laws. Given harsh penalties for
non-compliance, we are under considerable pressure to develop good practice
recommendations for spreadsheet developers and testers.

If we are to reduce errors, we need to understand errors. Fortunately, human error has
been studied for over a century across a number of human cognitive domains, including
linguistics, writing, software development and testing, industrial processes, automobile
accidents, aircraft accidents, nuclear accidents, and algebra, to name just a few.
The research that does exist is disturbing because it shows that humans are unaware of
most of their errors. This “error blindness” leads people to many incorrect beliefs about
error rates and about the difficulty of detecting errors. In general, they are overconfident,
substantially underestimating their own error rates and overestimating their ability to
reduce and detect errors. This “illusion of control” also leads them to hold incorrect
beliefs about spreadsheet errors, such as a belief that most errors are due to spreadsheet
technology or to sloppiness rather than being due primarily to inherent human error. 
</blockquote>
]]></description>
<dc:subject>spreadsheets errors programming coding bugs research papers via:arclight</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:dcb02e2f4d2f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:spreadsheets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:errors"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bugs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:research"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:papers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:arclight"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/spawnmason/randar-explanation/blob/master/README.md">
    <title>&quot;Randar&quot; exploit for Minecraft</title>
    <dc:date>2024-04-19T13:34:28+00:00</dc:date>
    <link>https://github.com/spawnmason/randar-explanation/blob/master/README.md</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is great -- I love a good pRNG state-leakage exploit:

<blockquote>Every time a block is broken in Minecraft versions Beta 1.8 through 1.12.2, the precise coordinates of the dropped item can reveal another player's location.

"Randar" is an exploit for Minecraft which uses LLL lattice reduction to crack the internal state of an incorrectly reused java.util.Random in the Minecraft server, then works backwards from that to locate other players currently loaded into the world.</blockquote>

Don't reuse those java.util.Randoms! (via Dan Hon)]]></description>
<dc:subject>exploits security infosec minecraft prngs rngs random coding via:danhon</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:89321b71907c/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:exploits"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:security"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:infosec"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:minecraft"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:prngs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rngs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:random"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:danhon"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://florimond.dev/en/posts/2018/08/python-mutable-defaults-are-the-source-of-all-evil">
    <title>Python Mutable Defaults Are The Source of All Evil</title>
    <dc:date>2024-04-05T17:07:48+00:00</dc:date>
    <link>https://florimond.dev/en/posts/2018/08/python-mutable-defaults-are-the-source-of-all-evil</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is a nasty Python gotcha; worth knowing about:

<blockquote>Do not use mutable default arguments in Python, unless you have a REALLY good reason to do so.  Why? Because it can lead to all sorts of nasty and horrible bugs, give you headaches and waste everyone's time.  Instead, default to None and assign the mutable value inside the function.</blockquote>

]]></description>
<dc:subject>python gotchas coding errors bugs mutability programming</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:70d37e05be13/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:python"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gotchas"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:errors"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bugs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mutability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://grugbrain.dev/">
    <title>The Grug Brained Developer</title>
    <dc:date>2023-07-13T11:10:33+00:00</dc:date>
    <link>https://grugbrain.dev/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is some of the best programming advice I've read in weeks. Grug FTW (via Oisin)
]]></description>
<dc:subject>architecture humor programming coding dev grug complexity developers clubs</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:5b310e026596/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:humor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dev"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:grug"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:complexity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:developers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:clubs"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://vulcan.io/blog/ai-hallucinations-package-risk">
    <title>AI package hallucination</title>
    <dc:date>2023-06-12T10:21:15+00:00</dc:date>
    <link>https://vulcan.io/blog/ai-hallucinations-package-risk</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Nice exploit of LLM confabulation: ask LLM for coding advice, get a nonexistent package, then register that package and exploit other coders attempting to follow the LLM's terrible advice]]></description>
<dc:subject>ai malware coding llms chatgpt hallucination confabulation fail infosec security exploits</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:3915b69aa15f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:malware"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:llms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:chatgpt"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hallucination"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:confabulation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fail"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:infosec"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:security"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:exploits"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://shipilev.net/blog/2015/black-magic-method-dispatch/#_cheating_the_runtime_2">
    <title>The Black Magic of (Java) Method Dispatch</title>
    <dc:date>2023-04-11T21:03:19+00:00</dc:date>
    <link>https://shipilev.net/blog/2015/black-magic-method-dispatch/#_cheating_the_runtime_2</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Some fascinating details of low-level Java performance optimization, particularly with JIT applied to OO method dispatch:

<blockquote>Programming languages like Java provide the facilities for subtyping/polymorphism as one of the ways to construct modular and reusable software. This language choice naturally comes at a price, since there is no hardware support for virtual calls, and therefore runtimes have to emulate this behavior. In many, many cases the performance of method dispatch is not important. Actually, in a vast majority of cases, the low-level performance concerns are not the real concerns.

However, there are cases when method dispatch performance is important, and there you need to understand how dispatch works, what runtimes optimize for you, and what you can do to cheat and/or emulate similar behavior in your code. For example, in the course of String Compression work, we were faced with the problem of selecting the coder for a given String. The obvious and highly maintainable approach of creating a Coder interface, a few implementations, and dispatching the virtual calls over it, had met some performance problems on the very tiny benchmarks. Therefore, we needed to contemplate something better. After a few experiments, this post was born as a reference for others who might try to do the same. This post also tangentially touches the inlining of virtual calls, as the natural thing during the optimization.</blockquote>

Discovered via this amazing commit: https://github.com/quarkusio/quarkus/commit/65dd4d43e2644db1c87726139280f9704140167c
]]></description>
<dc:subject>optimization performance java oo jit coding polymorphism</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:fcc32a99ea26/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:optimization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:oo"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jit"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:polymorphism"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://thakkarparth007.github.io/copilot-explorer/posts/copilot-internals.html">
    <title>Copilot Internals</title>
    <dc:date>2022-12-20T21:01:01+00:00</dc:date>
    <link>https://thakkarparth007.github.io/copilot-explorer/posts/copilot-internals.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Digging into what Github Copilot sends back to its servers; particularly of interest is the wealth of accompanying tokens/snippets that get included as context ("prompt suffix/prefix") ]]></description>
<dc:subject>ai ml copilot github coding autocomplete ide</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:4a849129fabd/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ml"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:copilot"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:github"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:autocomplete"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ide"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.theverge.com/2022/12/5/23493932/chatgpt-ai-generated-answers-temporarily-banned-stack-overflow-llms-dangers">
    <title>AI-generated answers temporarily banned on Stack Overflow</title>
    <dc:date>2022-12-05T14:48:23+00:00</dc:date>
    <link>https://www.theverge.com/2022/12/5/23493932/chatgpt-ai-generated-answers-temporarily-banned-stack-overflow-llms-dangers</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Ranked user-generated content sites like Stack Overflow are really going to have a problem with the incoming plausible-sounding bullshit flood:

<blockquote>“The primary problem is that while the answers which ChatGPT produces have a high rate of being incorrect, they typically look like they might be good and the answers are very easy to produce,” wrote the mods (emphasis theirs). “As such, we need the volume of these posts to reduce [...] So, for now, the use of ChatGPT to create posts here on Stack Overflow is not permitted. If a user is believed to have used ChatGPT after this temporary policy is posted, sanctions will be imposed to prevent users from continuing to post such content, even if the posts would otherwise be acceptable.”
</blockquote>

]]></description>
<dc:subject>chatgpt ai autocomplete stack-overflow coding spam ugc</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:f926e87c73bb/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:chatgpt"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:autocomplete"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:stack-overflow"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:spam"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ugc"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://medium.com/@dekaah/22-axioms-of-the-extreme-go-horse-methodology-xgh-9fa739ab55b4">
    <title>eXtreme Go Horse Methodology (XGH)</title>
    <dc:date>2022-06-23T09:34:15+00:00</dc:date>
    <link>https://medium.com/@dekaah/22-axioms-of-the-extreme-go-horse-methodology-xgh-9fa739ab55b4</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>
By talking about Agile Marketing, and Agile in general, with a foreign friend, I figured out that people outside Brazil are not familiar with the eXtreme Go Horse Methodology. Even though we’ve seen it applied to many companies (like Tesla), apparently this widely used global methodology was only formally detailed by Brazilian Devs.
</blockquote>

Example XGH methodology: "In XGH you don’t think, you do the first thing that comes to your mind. There’s not a second option as the first one is faster."]]></description>
<dc:subject>satire agile programming coding xgh tesla methodologies process</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:b6926d104c92/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:satire"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:agile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:xgh"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tesla"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:methodologies"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:process"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://richardstartin.github.io/posts/range-bitmap-index">
    <title>RangeBitmap</title>
    <dc:date>2022-03-10T15:04:14+00:00</dc:date>
    <link>https://richardstartin.github.io/posts/range-bitmap-index</link>
    <dc:creator>jm</dc:creator><description><![CDATA['How range indexes work in Apache Pinot' -- a complex, but fast algorithm to support range indexes efficiently using bitmaps]]></description>
<dc:subject>bitmaps algorithms coding ranges indexes indexing databases storage pinot richard-startin</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:74bce9fe122d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bitmaps"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:algorithms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ranges"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:indexes"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:indexing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:databases"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:storage"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pinot"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:richard-startin"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://ploomber.io/blog/sql/">
    <title>Decent SQL patterns for data science pipelines</title>
    <dc:date>2022-03-08T16:31:40+00:00</dc:date>
    <link>https://ploomber.io/blog/sql/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[If you wind up using complex SQL queries run frequently to generate reports, OLAP-style, this blog post details a few good patterns worth following -- particularly the use of clean SQL using common table expressions and WITH ... AS]]></description>
<dc:subject>sql coding clean-code patterns data-science data-pipelines olap</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:59c60e02728d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sql"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:clean-code"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:patterns"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:data-science"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:data-pipelines"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:olap"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.cloudflare.com/missing-manuals-io_uring-worker-pool/">
    <title>Missing Manuals - io_uring worker pool</title>
    <dc:date>2022-02-09T11:53:13+00:00</dc:date>
    <link>https://blog.cloudflare.com/missing-manuals-io_uring-worker-pool/</link>
    <dc:creator>jm</dc:creator><description><![CDATA['Calling io_uring just an asynchronous I/O API doesn’t do it justice, though. Underneath the API calls, io_uring is a full-blown runtime for processing I/O requests. One that spawns threads, sets up work queues, and dispatches requests for processing. All this happens “in the background” so that the user space process doesn’t have to, but can, block while waiting for its I/O requests to complete.

A runtime that spawns threads and manages the worker pool for the developer makes life easier, but using it in a project begs the questions:

1. How many threads will be created for my workload by default?

2. How can I monitor and control the thread pool size? [.....]

3. What is an unbounded worker?

4. How does it differ from a bounded worker?

Things seem a bit under-documented as is, hence this blog post. Hopefully, it will provide the clarity needed to put io_uring to work in your project when the time comes.']]></description>
<dc:subject>linux io_uring apis runtime kernel system-calls coding performance</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:14f82c98f81e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:io_uring"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apis"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:runtime"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:kernel"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:system-calls"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.container-solutions.com/what-has-cop26-ever-done-for-us">
    <title>Overview of &quot;sustainable software&quot; groups</title>
    <dc:date>2022-01-02T15:11:57+00:00</dc:date>
    <link>https://blog.container-solutions.com/what-has-cop26-ever-done-for-us</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>There are now a number of groups and foundations pushing a green agenda for developers. [...]   The most obvious players who are specifically focussed on software and operations appear to be:

The Green Software Foundation (a Linux Foundation started with Microsoft). [...]

The Green Web Foundation (a not-for-profit group).

Amazon, through their sustainability initiative.

The EU’s Sustainable Digital Infrastructure Alliance (SDIA).

OpenUK (a not-for-profit organisation).</blockquote>

This blog post gives a quick once-over for each one.]]></description>
<dc:subject>green sustainability software coding gsf gwf amazon sdia openuk ops climate</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:e3e62e9d7d0d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:green"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sustainability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gsf"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gwf"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:amazon"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sdia"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:openuk"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:climate"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/WojciechMula/toys/tree/master/swar-utf8-length">
    <title>SWAR algorithm to count characters in a UTF-8 string</title>
    <dc:date>2021-11-29T10:18:31+00:00</dc:date>
    <link>https://github.com/WojciechMula/toys/tree/master/swar-utf8-length</link>
    <dc:creator>jm</dc:creator><description><![CDATA[I'm enjoying this world of SIMD hyperoptimization -- "SWAR" in this case refers to "SIMD within a register" -- performing SIMD parallel operations on data contained in a single processor register.]]></description>
<dc:subject>simd swar hacks performance optimization coding utf-8</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:f56d6e491cf3/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:simd"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:swar"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hacks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:optimization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:utf-8"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://calpaterson.com/bank-python.html">
    <title>An oral history of Bank Python</title>
    <dc:date>2021-11-04T15:36:17+00:00</dc:date>
    <link>https://calpaterson.com/bank-python.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is fascinating, and I particularly like this part:

<blockquote>Minerva is obviously heavily influenced by the technological path dependency of the financial sector, which is another way of saying: there is a lot of MS Excel. Any new software solution is going to be compared with MS Excel and if the result is unfavourable people will often just use continue to use Excel instead. Many, many technologists have taken one look at an existing workflow of spreadsheets, reacted with performative disgust, and proposed the trifecta of microservices, Kubernetes and something called a "service mesh".

This kind of Big Enterprise technology however takes away that basic agency of those Excel users, who no longer understand the business process they run and now has to negotiate with ludicrous technology dweebs for each software change. The previous pliability of the spreadsheets has been completely lost. Using simple Python functions, in a source controlled system, is a better middle ground that the modern-day equivalent of J2EE. Financiers are able to learn Python, and while they may never be amazing at it they can contribute to a much higher level and even make their own changes and get them deployed.</blockquote>

Don't knock spreadsheets. If only they had a decent way to handle unit tests, they'd be the business.

Update: sounds like this is based on J. P. Morgan, specifically: https://www.reddit.com/r/programming/comments/qmi5fm/comment/hja6hqg/?utm_source=reddit&utm_medium=web2x&context=3]]></description>
<dc:subject>banking finance python coding excel spreadsheets software bank-python</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:b803af882769/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:banking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:finance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:python"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:excel"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:spreadsheets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bank-python"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.alexdebrie.com/posts/dynamodb-limits/">
    <title>The Three DynamoDB Limits You Need to Know</title>
    <dc:date>2021-10-04T10:14:03+00:00</dc:date>
    <link>https://www.alexdebrie.com/posts/dynamodb-limits/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[tl;dr: the item size limit, the pagination page size limit for query and scans; and the partition throughput limits (which bit me earlier this year).]]></description>
<dc:subject>dynamodb limits aws coding ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:ccb21b69ea39/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dynamodb"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:limits"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://twitter.com/GergelyOrosz/status/1442162670753431559?s=20">
    <title>Promotion-Driven Development</title>
    <dc:date>2021-09-28T21:42:55+00:00</dc:date>
    <link>https://twitter.com/GergelyOrosz/status/1442162670753431559?s=20</link>
    <dc:creator>jm</dc:creator><description><![CDATA["If you ever wondered why Google had 8 different chat products, all killed within 3 years, but not before multiple Staff, Sr Staff, Sr PM, Principal PM, Sr EM, Director promotions were done off the back of the impact & complexity of these projects.  This is exactly why."]]></description>
<dc:subject>work jobs coding career google bigcos promotions roadmap</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:723957b301ff/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:work"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jobs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:career"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:google"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bigcos"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:promotions"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:roadmap"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://storage.googleapis.com/pub-tools-public-publication-data/pdf/43146.pdf">
    <title>'Machine Learning: The High-Interest Credit Card of Technical Debt'</title>
    <dc:date>2021-08-05T09:46:35+00:00</dc:date>
    <link>https://storage.googleapis.com/pub-tools-public-publication-data/pdf/43146.pdf</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Cannot agree more with this paper from Google:

'One of the basic arguments in this paper is that machine learning packages have all the basic code complexity issues as normal code, but also have a larger system-level complexity that can create hidden debt. Thus, refactoring these libraries, adding better unit tests, and associated activity is time well spent but does not necessarily address debt at a systems level.

In this paper, we focus on the system-level interaction between machine learning code and larger systems as an area where hidden technical debt may rapidly accumulate. At a system-level, a machine learning model may subtly erode abstraction boundaries. It may be tempting to re-use input signals in ways that create unintended tight coupling of otherwise disjoint systems. Machine learning packages may often be treated as black boxes, resulting in large masses of “glue code” or calibration layers that can lock in assumptions. Changes in the external world may make models or input signals change behavior in unintended ways, ratcheting up maintenance cost and the burden of any debt. Even monitoring that the system as a whole is operating as intended may be difficult without careful design.

Indeed, a remarkable portion of real-world “machine learning” work is devoted to tackling issues of this form. Paying down technical debt may initially appear less glamorous than research results usually reported in academic ML conferences. But it is critical for long-term system health and enables algorithmic advances and other cutting-edge improvements.'

(via Grady Booch)]]></description>
<dc:subject>via:gradybooch ai ml machine-learning google papers coding research production glue</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:b258450e4145/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:gradybooch"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ml"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:machine-learning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:google"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:papers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:research"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:production"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:glue"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/Granulate/gprofiler">
    <title>gProfiler</title>
    <dc:date>2021-06-28T09:31:58+00:00</dc:date>
    <link>https://github.com/Granulate/gprofiler</link>
    <dc:creator>jm</dc:creator><description><![CDATA['a system-wide profiler, combining multiple sampling profilers to produce unified visualization of what your CPU is spending time on.' -- claims to have little impact on performance of running code, supports Linux, java and Ruby]]></description>
<dc:subject>gprofiler profiling performance testing measurement coding ruby java linux perf via:reddit</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6772a8b88a40/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gprofiler"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:profiling"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:measurement"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ruby"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:perf"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:reddit"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://dl.acm.org/doi/10.1145/3064176.3064187">
    <title>The Unwritten Contract of Solid State Drives</title>
    <dc:date>2021-05-24T09:39:06+00:00</dc:date>
    <link>https://dl.acm.org/doi/10.1145/3064176.3064187</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>We perform a detailed vertical analysis of application performance atop a range of modern file systems and SSD FTLs. We formalize the "unwritten contract" that clients of SSDs should follow to obtain high performance, and conduct our analysis to uncover application and file system designs that violate the contract. Our analysis, which utilizes a highly detailed SSD simulation underneath traces taken from real workloads and file systems, provides insight into how to better construct applications, file systems, and FTLs to realize robust and sustainable performance.</blockquote>

(via Nelson)]]></description>
<dc:subject>via:nelson optimization performance ssd disks storage coding architecture</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:faf7b0e9a292/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:nelson"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:optimization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ssd"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:storage"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:architecture"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://aws.amazon.com/blogs/compute/using-shared-memory-for-low-latency-intra-node-communication-in-aws-batch/">
    <title>Using shared memory for low-latency, intra-node communication in AWS Batch | AWS Compute Blog</title>
    <dc:date>2021-05-21T08:46:49+00:00</dc:date>
    <link>https://aws.amazon.com/blogs/compute/using-shared-memory-for-low-latency-intra-node-communication-in-aws-batch/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Crazy HPC-oriented feature in current AWS offerings: shared memory buffers over EFA:

<blockquote>HPC workloads use algorithms that require parallelization and a low latency communication between the different processes. The two main technologies used for the parallel communications are message-passing with distributed memory and shared memory.

Message Passing Interface (MPI) is a message-passing standard used for the communication in a parallel distributed environment. Elastic Fabric Adapter (EFA) enables your MPI applications to use low-latency, inter-node communication.

The shared memory paradigm allows multiple processors in the same system to communicate using a memory (RAM) portion that is shared between the processes. This method takes advantage of the high-speed memory bus.</blockquote>

]]></description>
<dc:subject>shared-memory hpc mpi shmem ram coding efa aws ec2 low-latency</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6dd0427bd3ed/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:shared-memory"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hpc"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mpi"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:shmem"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ram"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:efa"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ec2"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:low-latency"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://log.andvari.net/pages/bad-machinery.html">
    <title>Bad Machinery: Managing Interrupts Under Load</title>
    <dc:date>2021-05-20T08:57:04+00:00</dc:date>
    <link>https://log.andvari.net/pages/bad-machinery.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA['Each day, try to do either projects or interrupts, not both.
If you’re oncall, don’t try to do projects, and vice versa.
People aren’t machines, context switches are really expensive, and usually assumed to be free in process planning.
People who are constantly interrupted end up with delayed and sloppy project work, and vice versa (people who have a lot of project work are sloppy at interrupts unless time is carved out for them).
Your team’s oncall and interrupt-handling should be structured around funneling interrupts at the people who are supposed to be interrupted.
If that’s too much for those people, add more people until it isn’t. “Spreading the load” by assigning items across the entire team randomly is counter-productive.'

]]></description>
<dc:subject>sre devops coding ops planning teams work on-call interrupts</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:897b9538b75e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sre"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:planning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:teams"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:work"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:on-call"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:interrupts"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://0pointer.net/blog/file-descriptor-limits.html">
    <title>File Descriptor Limits</title>
    <dc:date>2021-05-20T08:55:30+00:00</dc:date>
    <link>http://0pointer.net/blog/file-descriptor-limits.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[tl;dr: 'Don't use select() anymore in 2021.'  Select(2) on Linux has a limit of 1024 fds

]]></description>
<dc:subject>linux programming select system-calls coding libc fds</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:f54a8ef695f2/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:select"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:system-calls"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:libc"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fds"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://rbranson.medium.com/10-things-i-hate-about-postgresql-20dbab8c2791">
    <title>10 Things I Hate About PostgreSQL | by Rick Branson</title>
    <dc:date>2021-04-06T13:39:59+00:00</dc:date>
    <link>https://rbranson.medium.com/10-things-i-hate-about-postgresql-20dbab8c2791</link>
    <dc:creator>jm</dc:creator><description><![CDATA[oh god this brings back painful memories --

<blockquote>On a particularly large deployment, I eventually had to layer in a second pgbouncer tier. One tier ran on the application servers and another tier on the database servers. Altogether it aggregated connections for around 1 million client processes. Tuning it was 40% dark art, 40% brute force, and 10% pure luck.</blockquote>

Amazing to see that these issues are still something that Postgres users have to worry about :)]]></description>
<dc:subject>database postgresql coding postgres pgbouncer ops rick-branson</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:325436d797ce/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:database"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:postgresql"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:postgres"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pgbouncer"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rick-branson"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.coderelay.io/fontemon.html">
    <title>A game in a font</title>
    <dc:date>2021-03-19T10:52:12+00:00</dc:date>
    <link>https://www.coderelay.io/fontemon.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Ligature madness!

Daniel Feldman on Twitter: "Ok this is slightly insane. OpenType (the common font format) actually supports simple scripts inside the font for complex characters and such. So a guy WROTE AN ENTIRE GAME INSIDE A FONT called Fontemon that you play by typing letters on the keyboard."]]></description>
<dc:subject>fonts pokemon bizarre games coding hacks ligatures</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:ad7f5c80f1df/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fonts"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pokemon"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bizarre"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:games"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hacks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ligatures"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/eyal0/Chicken-story/blob/main/README.md">
    <title>Chicken Story</title>
    <dc:date>2021-03-16T09:55:38+00:00</dc:date>
    <link>https://github.com/eyal0/Chicken-story/blob/main/README.md</link>
    <dc:creator>jm</dc:creator><description><![CDATA['tl;dr: The time when Microsoft banned my entire country for cheating at Club Bing.'

This is a great story -- though it must have been driving the MS Asirra anti-abuse team up the wall. Quite interesting to hear about low-cost/grassroots ways to accomplish some of the tech tasks, e.g. instead of firing up a farm of EC2 instances to crack a Captcha, he farmed out that work using thumbdrives, manually distributed to his friends.]]></description>
<dc:subject>coding asirra microsoft club-bing bing cheating usb-drives</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:31603c2c614f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:asirra"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:microsoft"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:club-bing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cheating"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:usb-drives"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/Cyan4973/xxHash/">
    <title>Cyan4973/xxHash: Extremely fast non-cryptographic hash algorithm</title>
    <dc:date>2021-02-01T11:48:46+00:00</dc:date>
    <link>https://github.com/Cyan4973/xxHash/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[significantly faster than Murmur3 and City32; SSE code is even faster than sequential RAM reads :)]]></description>
<dc:subject>hashing hash xxhash performance coding speed algorithms</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:57cfebc0c1ce/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hashing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hash"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:xxhash"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:speed"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:algorithms"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://codereview.stackexchange.com/">
    <title>Code Review Stack Exchange</title>
    <dc:date>2021-01-18T10:24:54+00:00</dc:date>
    <link>https://codereview.stackexchange.com/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[I never knew this existed! Code golf galore.]]></description>
<dc:subject>code-review algorithms coding review refactoring stack-exchange</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:79b9cc8deda5/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:code-review"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:algorithms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:review"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:refactoring"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:stack-exchange"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/sidoh/epaper_templates">
    <title>sidoh/epaper_templates</title>
    <dc:date>2021-01-11T23:36:21+00:00</dc:date>
    <link>https://github.com/sidoh/epaper_templates</link>
    <dc:creator>jm</dc:creator><description><![CDATA['Template-oriented driver for e-paper displays' -- a frankly amazing level of programmability to drive an e-paper gadget]]></description>
<dc:subject>eink hardware arduino e-paper e-ink coding hacks</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:f697dcc70231/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:eink"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hardware"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:arduino"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:e-paper"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:e-ink"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hacks"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.labnol.org/send-sms-google-sheets-200402">
    <title>How to Send SMS Messages with Google Sheets and your Android Phone - Digital Inspiration</title>
    <dc:date>2020-12-17T12:29:47+00:00</dc:date>
    <link>https://www.labnol.org/send-sms-google-sheets-200402</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Particularly impressive demo of MIT AppInventor, which lets you build an Android app with block-based GUI programming]]></description>
<dc:subject>appinventor apps android mit coding blocks gui sms google-sheets texting</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:b9e0ebcbd1d4/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:appinventor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apps"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:android"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mit"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:blocks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gui"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:google-sheets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:texting"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://latacora.micro.blog/2018/04/03/cryptographic-right-answers.html">
    <title>Cryptographic Right Answers</title>
    <dc:date>2020-12-13T22:15:02+00:00</dc:date>
    <link>https://latacora.micro.blog/2018/04/03/cryptographic-right-answers.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[A really solid list of good crypto choices for modern code]]></description>
<dc:subject>cryptography advice tips programming security crypto coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:eb29e758c78e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cryptography"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:advice"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tips"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:security"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:crypto"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.scylladb.com/2020/05/05/how-io_uring-and-ebpf-will-revolutionize-programming-in-linux/">
    <title>How io_uring and eBPF Will Revolutionize Programming in Linux</title>
    <dc:date>2020-11-26T21:52:12+00:00</dc:date>
    <link>https://www.scylladb.com/2020/05/05/how-io_uring-and-ebpf-will-revolutionize-programming-in-linux/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Nice writeup of how io_uring works, and how it improves performance]]></description>
<dc:subject>io_uring linux coding libc io performance</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:dfb34efedfee/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:io_uring"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:libc"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:io"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://twitter.com/bbcmicrobot/status/1315524008561971200">
    <title>The top 100 BBCMicroBot tweets</title>
    <dc:date>2020-10-12T09:15:18+00:00</dc:date>
    <link>https://twitter.com/bbcmicrobot/status/1315524008561971200</link>
    <dc:creator>jm</dc:creator><description><![CDATA[these are _amazing_.  Huge respect to all the contributors who wrote these great little demos-in-a-tweet]]></description>
<dc:subject>demoscene demos bbc bbc-micro coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:795850c6d40d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:demoscene"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:demos"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bbc"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bbc-micro"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.reverberate.org/2020/05/29/hoares-rebuttal-bubble-sorts-comeback.html">
    <title>Hoare’s Rebuttal and Bubble Sort’s Comeback</title>
    <dc:date>2020-06-02T16:46:15+00:00</dc:date>
    <link>https://blog.reverberate.org/2020/05/29/hoares-rebuttal-bubble-sorts-comeback.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[New processor behaviour means everything we know about performance optimization is wrong again:

<blockquote>We’ve seen how crucial it is to understand data dependencies in order to optimize code. Especially hidden memory dependencies between load and stores can greatly influence performance of work loops. Understanding the data dependency graph of code is often where the real performance gains lie, yet very little attention is given to it in the blogosphere. I’ve read many articles about the impact of branch mispredictions, importance of data locality and caches, but much less about data dependencies. I bet that a question like “why are linked lists slow?” is answered by many in terms of locality, caches or unpredictable random memory access. At least I’ve heard those reasons often, even Stroustrup says as much. Those reasons can play a part, but it’s not the main reason. Fundamentally iterating a linked list has a load-to-use on the critical path, making it 5 times slower than iterating a flat array. Furthermore accessing flat arrays allow loop unrolling which can further improve ILP.</blockquote>

]]></description>
<dc:subject>data-dependencies sorting algorithms performance optimization coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:99913961e7a2/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:data-dependencies"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sorting"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:algorithms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:optimization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.khinsen.net/posts/2020/05/18/an-open-letter-to-software-engineers-criticizing-neil-ferguson-s-epidemics-simulation-code/">
    <title>An open letter to software engineers criticizing Neil Ferguson's epidemics simulation code</title>
    <dc:date>2020-05-18T13:56:40+00:00</dc:date>
    <link>https://blog.khinsen.net/posts/2020/05/18/an-open-letter-to-software-engineers-criticizing-neil-ferguson-s-epidemics-simulation-code/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>the main message of this letter is something different: it’s about your role in this story. That’s of course a collective you, not you the individual reading this letter. It’s you, the software engineering community, that is responsible for tools like C++ that look as if they were designed for shooting yourself in the foot. It’s also you, the software engineering community, that has made no effort to warn the non-expert public of the dangers of these tools. Sure, you have been discussing these dangers internally, even a lot. But to outsiders, such as computational scientists looking for implementation tools for their models, these discussions are hard to find and hard to understand. There are lots of tutorials teaching C++ to novices, but I have yet to see a single one that starts with a clear warning about the dangers. You know, the kind of warning that every instruction manual for a microwave oven starts with: don’t use this to dry your dog after a bath. A clear message saying “Unless you are willing to train for many years to become a software engineer yourself, this tool is not for you.”</blockquote>

]]></description>
<dc:subject>software coding engineering science teaching c++</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:379ea18e947c/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:science"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:teaching"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:c++"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://docs.google.com/document/d/16Kh4_Q_tmyRh0-v452wiul9oQAiTRj8AdZ5vcOJum9Y/edit">
    <title>Unified research on privacy-preserving contact tracing and exposure notification for COVID-19 - Google Docs</title>
    <dc:date>2020-04-03T16:57:26+00:00</dc:date>
    <link>https://docs.google.com/document/d/16Kh4_Q_tmyRh0-v452wiul9oQAiTRj8AdZ5vcOJum9Y/edit</link>
    <dc:creator>jm</dc:creator><description><![CDATA['This document has been created to share information across the numerous projects that are working to create mobile apps to help contact tracers fight COVID-19. Many technologists who are designing privacy-preserving apps and tools for this process are new to contact tracing, and want to ensure that their work is solidly grounded in the work that public health professionals are doing around the world. This document aims to collate questions, statistics and experiences to ensure that apps are relevant and well-designed.']]></description>
<dc:subject>docs gdocs contact-tracing privacy apps coding tech covid-19 collaboration</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:404df94aa455/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gdocs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:contact-tracing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:privacy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apps"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tech"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:covid-19"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:collaboration"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://twitter.com/tomk_/status/1232762801309044741">
    <title>Amazon's Principal Tenets</title>
    <dc:date>2020-02-27T10:32:18+00:00</dc:date>
    <link>https://twitter.com/tomk_/status/1232762801309044741</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Principal Engineers in Amazon are expected to model these tenets:

<blockquote>
Exemplary Practitioner;
Technically Fearless;
Balanced and Pragmatic;
Illuminate and Clarify;
Flexible in Approach;
Respect What Came Before;
Learn, Educate, and Advocate;
Have Resounding Impact</blockquote>

One thing I admire about Amazon's internal culture is that they really do try to pin down a set of values, and encourage their adoption and practice internally. 
]]></description>
<dc:subject>amazon values tenets work principal-engineers engineering coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:00bc7f933def/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:amazon"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:values"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tenets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:work"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:principal-engineers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://greenlab.di.uminho.pt/">
    <title>Green Software Lab</title>
    <dc:date>2020-02-24T10:55:08+00:00</dc:date>
    <link>https://greenlab.di.uminho.pt/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Lots of research on making sustainable, power-friendly software at a coding level]]></description>
<dc:subject>coding sustainability power green code optimization papers research</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:ef4155d23f24/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sustainability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:power"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:green"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:code"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:optimization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:papers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:research"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.robinsloan.com/notes/home-cooked-app/">
    <title>An app can be a home-cooked meal</title>
    <dc:date>2020-02-16T21:55:31+00:00</dc:date>
    <link>https://www.robinsloan.com/notes/home-cooked-app/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Fantastic -- this iOS user cloned the best bits of Tapstack, an app which I similarly mourned when it was shut down last year.  Unfortunately his version is iOS-only, and quite closed for his family -- by contrast, we just moved to a private Telegram group]]></description>
<dc:subject>programming mobile coding family friends social-networking tapstack apps</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:c5e1310cc743/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mobile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:family"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:friends"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:social-networking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tapstack"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:apps"/>
</rdf:Bag></taxo:topics>
</item>
</rdf:RDF>