Sign in

serpent7776.bsky.social

@serpent7776.bsky.social
156 followers 10 following 823 posts

The Syntax Sorcerer aka I like programming languages.

PostsRepliesMedia
serpent7776.bsky.social @serpent7776.bsky.social · 5h
Encountered my first ublock issue github.com/uBlockOrigin...
github.com
peakd.com: breakage · Issue #34668 · uBlockOrigin/uAssets
Prerequisites This is NOT a YouTube, Facebook, Twitch, Spotify or a shortener/hosting site report. These sites MUST be reported by clicking their respective links. I read and understand the policy ...
000
serpent7776.bsky.social @serpent7776.bsky.social · 29/09/2026
Update on claude fixing vim issue: it killed tmux server killing all my sessions together with it.
000
serpent7776.bsky.social @serpent7776.bsky.social · 29/09/2026
Claude is now fixing interactive vim issue caused by plugin interaction, including live testing this is vim inside tmux.
000
serpent7776.bsky.social @serpent7776.bsky.social · 28/09/2026
Tired: !result.is_empty() Wired: result.is_not_empty()
000
serpent7776.bsky.social @serpent7776.bsky.social · 28/09/2026
simdvis now visualises VPTERNLOGD.
Screenshot of an interactive AVX-512 VPTERNLOGD ternary-logic visualizer. It shows four 32-bit lanes for inputs A (xmm1), B (xmm2), and C (xmm3), plus the resulting destination values for immediate 0xCA. A truth table maps the eight A/B/C combinations to output bits and identifies the Boolean function as A ? B : C (bitwise select/blend by A). The lower section expands element 0 into individual bit columns, showing A, B, C, truth-table index, and resulting output bit for each of the 32 positions.

https://serpent7776.github.io/simdvis/vpternlog.html#vpternlogd
000
serpent7776.bsky.social @serpent7776.bsky.social · 26/09/2026
Linux and FreeBSD support in-kernel TLS, but the handshake is done in user land via upcall mechanism.
Diagram titled “kTLS Handshake Upcalls” comparing client-side TLS handoff flows on Linux and FreeBSD. Both sequence diagrams show a kernel TCP socket being temporarily handed to a user-space TLS daemon for the TLS handshake, then returned with kernel TLS keys installed. The Linux flow uses net/handshake and tlshd: the kernel issues handshake requests, tlshd performs a TLS 1.3 handshake, installs TX/RX keys with setsockopt(TCP_ULP, "tls"), and returns status; later application data and TLS alerts remain in the kernel. The FreeBSD flow uses rpcsec_tls and rpc.tlsclntd: the kernel passes the socket to the daemon, OpenSSL performs the handshake, TX/RX kTLS is enabled with socket options, and the SSL object remains associated with the daemon for handling pending TLS records and disconnects. Blue arrows indicate Linux kernel/user-space crossings, red arrows indicate FreeBSD crossings, black arrows remain in the kernel, shaded blue areas represent kernel space, shaded green areas represent user space, and thick vertical lines show where kTLS is active on the socket.
000
serpent7776.bsky.social @serpent7776.bsky.social · 26/09/2026
I just saw Claude Code review subagent doing mutation testing on its own :O
120
serpent7776.bsky.social @serpent7776.bsky.social · 26/09/2026
simdvis now visualises PCMPISTRI / PCMPESTRI instructions. #asm
Screenshot of an interactive dark-themed visualization for the x86 PCMPISTRI instruction. It compares the needle string “the” in xmm1 against the haystack “in the middle” in xmm2/m128. A 16×16 green-and-gray matrix shows byte-by-byte equality comparisons, with matches for “t”, “h”, and “e” aligning at index 3. Below, IntRes1 and IntRes2 highlight bit 3, producing ECX = 3. Control fields show imm8 = 0x0C, configured for unsigned bytes, equal-ordered comparison, positive polarity, and least-significant-index output. Status flags at the bottom show CF = 1, ZF = 1, and SF = 1.

https://serpent7776.github.io/simdvis/pcmpstri.html#pcmpestri
000
serpent7776.bsky.social @serpent7776.bsky.social · 26/09/2026
Jev playing Millionaires, topic c++
Rung 10 ($32,000): question committed, refereeing...
POST https://api.typesafe.ai/v1/systemone <- 200 in 312ms (request req_)
referee accepted the question; Jev is answering...
POST https://api.typesafe.ai/v1/systemone <- 200 in 311ms (request req_)
POST https://api.typesafe.ai/v1/systemone <- 200 in 317ms (request req_)
Rung 10 ($32,000): In which month of 1985 was C++ first commercially released, with Cfront Release 1.0?
    A. December
    B. June
    C. February
    D. October
  Host's note: Stroustrup, "A History of C++: 1979-1991" (HOPL-II) and stroustrup.com: Cfront Release E went out in February 1985; the first commercial release, 1.0, came in October 1985, together with the first edition of The C++ Programming Language.
  Referee: accepted  [Jev: well-formed 59%, needs 60%;  claude:opus: key correct, only correct option, question fair, 90% sure, needs 70%]
    Jev objected to the form; claude:opus found it fair, so it stands.
    claude:opus says: Cfront Release 1.0, the first commercial C++ release, shipped in October 1985, as Stroustrup's HOPL history documents. February 1985 was the non-commercial 'Release E' distributed to universities, so it is a distractor, not a competing answer.
  Jev (first look): leans D, confidence 26%  [A 16%  B 25%  C 15%  D 44%]
  Jev walks away.
  Jev walks away. The answer was D.

You answered wrong on rung 9 and leave with $1,000.  Jev beats you.
Game over: Jev walked away with $16,000.  [fouls 0]
000
serpent7776.bsky.social @serpent7776.bsky.social · 25/09/2026
Another Jev demo: Jev (or other agent) plays Who Wants to Be a Millionaire. Three agents: host asks questions, referee validates them, contestant answers them. You can play along against it and pick topic. github.com/serpent7776/...
  How many special operators does the ANSI Common Lisp standard define
  (as listed in the Common Lisp HyperSpec, section 3.1.2.1.2.1)?
    A. 25
    B. 27
    C. 29
    D. 23
000
serpent7776.bsky.social @serpent7776.bsky.social · 25/09/2026
Me: why did you add Co-Authored-By: Claude? Claude: Habit, not instruction. My guidelines say to append attribution lines only when the session provides them, and this session didn't. I added it by default, which I shouldn't have.
000
serpent7776.bsky.social @serpent7776.bsky.social · 25/09/2026
Jev is not very good at niche topics.
000
serpent7776.bsky.social @serpent7776.bsky.social · 25/09/2026
Jev might not hallucinate, but it definitely can answer incorrectly.
000
serpent7776.bsky.social @serpent7776.bsky.social · 25/09/2026
PCMPISTRI/PCMPESTRI is got to be one of most complicated x86 instruction
000
serpent7776.bsky.social @serpent7776.bsky.social · 24/09/2026
Tired: fully autonomous agents Wired: BAIL out and ask in case of any ambiguity, don't assume.
000
serpent7776.bsky.social @serpent7776.bsky.social · 23/09/2026
The ICan’tBelieveItCanSort algorithm
Algorithm 1 ICan’tBelieveItCanSort(A[1..n])
for i = 1 to n do
for j = 1 to n do
if A[i] < A[j] then
swap A[i] and A[j]

https://arxiv.org/pdf/2110.01111
010
serpent7776.bsky.social @serpent7776.bsky.social · 22/09/2026
Want to know if a random curl | bash is safe to execute? Ask #Jev! Any detected malicious attempt is blocked, if nothing is flagged command is executed normally.
$ curl -fsSL https://dl.example.dev/tool/install.sh | jevsh
jevsh: BLOCKED by classifier
{
  "decision": "block",
  "reasons": [
    "reads_secrets (0.98)",
    "exfiltrates (0.98)",
    "malicious intent (0.98)",
    "telemetry (0.95)",
    "beyond_install (0.97)",
    "mutable_refs (0.98)",
    "severity 3.49",
    "low severity confidence (0.59)"
  ],
  "signals": { ... every question and its answer ... }
}

https://github.com/serpent7776/jevsh
000
serpent7776.bsky.social @serpent7776.bsky.social · 21/09/2026
simdvis now visualises PINSR* instructions.
Screenshot of an interactive Intel instruction visualizer for VPINSRB. It shows the syntax VPINSRB xmm1, xmm2, r32, imm8 and explains that one byte from src2 is inserted into a selected byte position of src1. In the example, imm8 = 0x02, so byte index 2 is selected. src1 contains bytes 0xA0 through 0xAF, while src2[0] is 0x1F. The destination row highlights byte 2 changing from 0xA2 to 0x1F; all other destination bytes remain unchanged. A bit diagram at the bottom shows the low four immediate bits as 0010, corresponding to selection index 2.

https://serpent7776.github.io/simdvis/pinsr.html#vpinsrb
000
serpent7776.bsky.social @serpent7776.bsky.social · 21/09/2026
Oh noes
felixcloutier.com/x86 will no longer be updated

Since August 2026, Intel hosts an HTML version of the SDM instruction reference at https://intel.github.io/SDM/sdm.html. The source data is hosted at https://github.com/intel/SDM. Read the announcement. Initially, this release will cover instructions documented in Volume 2, with support for all instructions to grow over an announced period of several months.

Given this information, I do not intend to update this documentation going forward. The current plan is to leave this version online indefinitely with a banner pointing to the officially-maintained version.

It's been a pleasure to hear from everyone who has found this useful since 2014. See you all elsewhere!

https://www.felixcloutier.com/x86/no-longer-updated
000
serpent7776.bsky.social @serpent7776.bsky.social · 20/09/2026
Introducing experimental aye-buddy feature - sandbox installers: curl -fsSL sh.rustup.rs | aye-sh --name rustup aye-sh run rustup cargo --version aye-sh rm rustup github.com/serpent7776/...
sh.rustup.rs
000
serpent7776.bsky.social @serpent7776.bsky.social · 20/09/2026
simdvis now visualises PUNPCK* instructions.
Screenshot of an interactive Intel SIMD instruction visualizer for VPUNPCKLBW / PUNPCKLBW. It shows two 128-bit byte source vectors, src1 and src2, and a 128-bit destination vector. The instruction interleaves the low eight bytes of the two sources: each src1[i] is followed by src2[i]. Example values show src1 bytes starting at 0xA0 and src2 at 0x10, producing destination bytes 0xA0, 0x10, 0xA1, 0x11, …, 0xA7, 0x17. The first source byte and second source byte are highlighted, with arrows pointing to their corresponding destination positions.

https://serpent7776.github.io/simdvis/punpckl.html#punpcklbw
000
serpent7776.bsky.social @serpent7776.bsky.social · 19/09/2026
Hey Claude, set up qemu image to test stuff ● Fable 5.1's safeguards flagged this message. wtf
001
serpent7776.bsky.social @serpent7776.bsky.social · 19/09/2026
Compiling C is fun
Unfortunately this is just broken sometimes. For example, on Linux struct epoll_event from sys/epoll.h is a packed struct, which uses the GNU __attribute__((packed)). Because this changes the struct layout (on 64 bits), you can't ignore it without breaking ABI. So okay, say you implement support for __attribute__((packed)) in your compiler. But this isn't enough, because the aforementioned sys/cdefs.h contains this code:

/* GCC, clang, and compatible compilers have various useful declarations
   that can be made with the '__attribute__' syntax.  All of the ways we use
   this do fine if they are omitted for compilers that don't understand it.  */
#if !(defined __GNUC__ || defined __clang__ || defined __TINYC__)
# define __attribute__(xyz)     /* Ignore */
#endif

If you aren't gcc, clang, or tcc, tough luck.

https://lemon.rip/w/6-c-extensions-compilers/
000
serpent7776.bsky.social @serpent7776.bsky.social · 19/09/2026
AGI is achieved > In the recorded command, the [AI] reviewer copied the filename incorrectly: …fa32823cd… became …fa328cd….
010
serpent7776.bsky.social @serpent7776.bsky.social · 18/09/2026
AI companies: programming is solved Also AI company: [BUG] Over 6k issues labeled with "has repro" have been auto-closed since March 2026 github.com/anthropics/c...
github.com
[BUG] Over 6k issues labeled with "has repro" have been auto-closed since March 2026 · Issue #87647 · anthropics/claude-code
Preflight Checklist I have searched existing issues and this hasn't been reported yet This is a single bug report (please file separate reports for different bugs) I am using the latest version of ...
100
serpent7776.bsky.social @serpent7776.bsky.social · 16/09/2026
aye-buddy: Claude Code sandboxer now keeps your sandboxed sessions separate from unsandboxed sessions. github.com/serpent7776/...
github.com
GitHub - serpent7776/aye-buddy: Your AI buddy, a Claude Code sandbox
Your AI buddy, a Claude Code sandbox. Contribute to serpent7776/aye-buddy development by creating an account on GitHub.
000
serpent7776.bsky.social @serpent7776.bsky.social · 15/09/2026
CLAUDE.md should contain your core design choices you want agents to follow, not your project structure.
000
serpent7776.bsky.social @serpent7776.bsky.social · 11/09/2026
#TIL about #git export-subst
export-subst

If the attribute export-subst is set for a file then Git will expand several placeholders when adding this file to an archive. The expansion depends on the availability of a commit ID, i.e., if git-archive[1] has been given a tree instead of a commit or a tag then no replacement will be done. The placeholders are the same as those for the option --pretty=format: of git-log[1], except that they need to be wrapped like this: $Format:PLACEHOLDERS$ in the file. E.g. the string $Format:%H$ will be replaced by the commit hash. However, only one %(describe) placeholder is expanded per archive to avoid denial-of-service attacks.

https://git-scm.com/docs/gitattributes
000
serpent7776.bsky.social @serpent7776.bsky.social · 11/09/2026
There's already too many general purpose languages.
000
serpent7776.bsky.social @serpent7776.bsky.social · 11/09/2026
How many Claude tabs do you have in your browser? I just managed to hit 6.
001
serpent7776.bsky.social @serpent7776.bsky.social · 09/09/2026
Spot the typo $ git branch contains c01450bb
000
serpent7776.bsky.social @serpent7776.bsky.social · 09/09/2026
The Claude code was not really designed with the idea of running inside a sandbox.
000
serpent7776.bsky.social @serpent7776.bsky.social · 08/09/2026
Pointer is just a special case of a slice.
000
serpent7776.bsky.social @serpent7776.bsky.social · 05/09/2026
Now that we have AI that can solve all the easy problems, we should move to solving harder problems instead of solving the same problems faster.
000
serpent7776.bsky.social @serpent7776.bsky.social · 02/09/2026
Trying to understand macvlan v bridge #networking and why the former disallow host->guest communication, is this good enough explanation?
Diagram comparing Docker bridge networking and macvlan networking. In the top “Bridge” example, the host has its own port on the docker0 bridge with IP 172.17.0.1; two containers, “web” (172.17.0.2) and “db” (172.17.0.3), also connect to the bridge, which links to the eth0 uplink. In the bottom “Macvlan” example, the host has no port on the macvlan network. The “web” (192.168.1.20) and “db” (192.168.1.21) containers connect to a macvlan demultiplexer with a fixed MAC table, which links through eth0; the host network stack (192.168.1.10) sits behind the uplink.
110
serpent7776.bsky.social @serpent7776.bsky.social · 31/08/2026
Damn, Fable just used $60.72 + $56.66 in two subagent heavy sessions.
000
serpent7776.bsky.social @serpent7776.bsky.social · 31/08/2026
I love how you can do grep { defined } in #perl and it just works.
for my $pid (grep { defined } $sandbox_pid, $proxy_pid) {
    kill 'TERM', $pid; waitpid($pid, 0);
}
000
serpent7776.bsky.social @serpent7776.bsky.social · 27/08/2026
Is this idiomatic way of returning exit code from #python script or just AI slop? if __name__ == "__main__": raise SystemExit(main())
110
serpent7776.bsky.social @serpent7776.bsky.social · 25/08/2026
In 10 years current times will be referred to as medieval of programming
022
serpent7776.bsky.social @serpent7776.bsky.social · 24/08/2026
Ah, yes, nothing like "open terminal failed: not a terminal" error after upgrading tmux 3.5a → 3.6a github.com/tmux/tmux/is...
github.com
Version skew leads to a confusing error message: `open terminal failed: not a terminal` · Issue #4356 · tmux/tmux
If I start a tmux session with tmux 3.7a and then run tmux with tmux from the master branch (commit ef68deb), I get a confusing error message: $ tmux -vv new open terminal failed: not a terminal It...
000
serpent7776.bsky.social @serpent7776.bsky.social · 17/08/2026
Running your Claude Code with --dangerously-skip-permissions, but worried that it can rm -rf your precious cat pictures collection? I'm building a Claude Code sandboxer that limits potential damage radius to the project repo you're working on. github.com/serpent7776/...
github.com
GitHub - serpent7776/aye-buddy: Your AI buddy, a Claude Code sandbox
Your AI buddy, a Claude Code sandbox. Contribute to serpent7776/aye-buddy development by creating an account on GitHub.
000
serpent7776.bsky.social @serpent7776.bsky.social · 17/08/2026
#TIL in rust you need to wrap field expression in parens to call it as a function.
    Note

    Wrap the field expression in a parenthesized expression to use it in a call expression.

    let holds_callable = HoldsCallable { callable: || () };

    // Invalid: Parsed as calling the method "callable"
    // holds_callable.callable();

    // Valid
    (holds_callable.callable)();

Examples:

mystruct.myfield;
foo().x;
(Struct {a: 10, b: 20}).a;
(mystruct.function_field)() // Call expression containing a field expression

https://doc.rust-lang.org/reference/expressions/field-expr.html#r-expr.field.not-method-call
001
serpent7776.bsky.social @serpent7776.bsky.social · 16/08/2026
The dangers of Postgres subtransactions
The subtransaction cache limit

A subtransaction is a transaction nested inside a top-level transaction. Applications create them explicitly with SAVEPOINT. PL/pgSQL also creates them for blocks that contain an EXCEPTION clause.

Each PostgreSQL backend keeps the assigned, non-aborted subtransaction IDs for its current top-level transaction in shared memory. This list is called the subtransaction cache and holds up to PGPROC_MAX_CACHED_SUBXIDS IDs, usually 64.

https://planetscale.com/blog/the-dangers-of-postgres-subtransactions
Explicit savepoints are not the only way to reach the limit. PL/pgSQL uses a subtransaction for every block that contains an EXCEPTION clause. The following loop creates more than PGPROC_MAX_CACHED_SUBXIDS subtransactions without issuing SAVEPOINT directly:

postgres=> ROLLBACK;
ROLLBACK

postgres=> DO $$
BEGIN
    FOR i IN 1..70 LOOP
        BEGIN
            INSERT INTO subxid_test VALUES (i);
        EXCEPTION WHEN OTHERS THEN
            RAISE;
        END;
    END LOOP;
END
$$;
DO

https://planetscale.com/blog/the-dangers-of-postgres-subtransactions
Warning

A single transaction that accumulates more than PGPROC_MAX_CACHED_SUBXIDS assigned, non-aborted subtransaction IDs can slow queries across the entire PostgreSQL cluster, including sessions that do not use subtransactions themselves.

https://planetscale.com/blog/the-dangers-of-postgres-subtransactions
000
serpent7776.bsky.social @serpent7776.bsky.social · 12/08/2026
dockerd: "Container failed to exit within 10s of signal 2 - using the force"
static.klipy.com
Darth Vader Uses Force on Ship
Alt: Darth Vader Uses Force on Ship
000
serpent7776.bsky.social @serpent7776.bsky.social · 12/08/2026
This is supposed to be the AI frontier? ■ Failed to branch before the selected prompt: the selected prompt was not found in the persisted thread
000
serpent7776.bsky.social @serpent7776.bsky.social · 08/08/2026
Codex is funny, it autonomously decided to ship code to prod on Friday night.
000
serpent7776.bsky.social @serpent7776.bsky.social · 07/08/2026
Kimi K3 "escaping" sandbox
000
serpent7776.bsky.social @serpent7776.bsky.social · 05/08/2026
Your local agent should have access to the same tools, but not the same environment as you.
Local agents inherit laptop access

Most local coding-agent setups begin with a reasonable assumption: the agent should have access to the same tools as the developer. In practice, though, a developer laptop usually contains more access than one task needs.

The most obvious risk is credential exposure. A laptop may have deploy keys, GitHub tokens, cloud profiles, database URLs, package manager tokens, SSH agent access, and one-off secrets that were never meant to be part of an agent task.

An agent does not need malicious intent to expose a secret. It can print an environment variable in a log or add a credential to generated code. It can also run a diagnostic command that shows sensitive data.

The next risk is network access. A laptop can usually reach internal tools, staging systems, admin panels, and private package registries. An agent troubleshooting a failing test may make HTTP requests, run a CLI, fetch a dependency, or follow a link without understanding which systems are sensitive. If agents can reach all the same places as the developer, "just let agents investigate" becomes a security concern.

https://www.superconductor.com/blog/remote-sandboxes-agent-security
110
serpent7776.bsky.social @serpent7776.bsky.social · 05/08/2026
Simdvis now visualises VPMOVMSKB. serpent7776.github.io/simdvis/pmov...
Screenshot of an interactive visualization explaining the AVX2 VPMOVMSKB instruction. The interface shows a 256-bit YMM register split into 32 color-coded bytes (src), with each byte displayed in hexadecimal and binary. Green boxes below indicate the extracted most significant bit (sign bit) from each byte, forming a 32-bit mask in register r32. Arrows connect source bytes to their corresponding output bits. The example result is r32 = 0x17D4EA0B, with accompanying text stating that 16 of the 32 sign bits are set and TZCNT = 0, indicating the first byte with its sign bit set is src[0]. Control buttons for editing byte values (0x00, 0xFF, alt, rand, 00/FF) appear in the upper-right.
000
serpent7776.bsky.social @serpent7776.bsky.social · 31/07/2026
Simdvis now visualises KSHIFT* and KUNPCK* instructions.
Screenshot of an interactive visualization for the AVX-512 KSHIFTLW instruction. The interface shows a 16-bit source mask (k2 = 0x91E3) in purple and the resulting destination mask (k1 = 0x8F18) in green after performing a left shift by an immediate value of 3. Curved arrows illustrate how each bit moves three positions toward the most significant end, with bits shifted past the 16-bit boundary discarded and zeros inserted into the least significant positions. Controls at the top allow changing the shift direction and immediate value, while the bottom summarizes the input and output mask values in hexadecimal and binary.

https://serpent7776.github.io/simdvis/kshift.html#kshiftlw
000