Sign in

Joe Gibbs Politz

@joepolitz.bsky.social
763 followers 228 following 278 posts

jpolitz.github.io

PostsRepliesMedia
Joe Gibbs Politz @joepolitz.bsky.social · 01/06/2026
I guess now I'm just getting sassy
I have done significant work on this already in multiple agent passes, with
some hard-won lessons learned. Make sure to read this document in its entirety
– this was not generated with bloated extraneous detail by a model, but
carefully curated by me so every detail matters (or is “load-bearing”, in your
parlance).
030
Joe Gibbs Politz @joepolitz.bsky.social · 06/05/2026
What do you do for *commit messages* on work authored with agents? Write them yourself like nothing's changed? Agent drafts and you edit? Curious where folks have landed I've converged on a format where I let Claude do its thing but add a "Joe says" at the top. Example: github.com/brownplt/pyr...
A screenshot of a prefix of the commit message at the link.

Tighten isPyretNumber, fix latent leaks (log toFixnum violations for now)
Joe says:

Medium-interesting finding from Ben noticing a change to `num-to-fixnum`
behavior on CPO.

The key thing is NON-integer JS floats. They are *not* supposed to be able to
be Pyret numbers. In various places we were lax about this and things worked
out because of tostring conversions or === doing the right thing, etc.

This commit tries to make some progress on catching our own mistakes here:

- Correctly return `false` from the widely used `isPyretNumber` for values like
  2.3 (~2.3 aka Roughnum.makeInstance(2.3) still returns true)
- Add assertPyretNumber, currently used in one place (toFixnum), which based on
  its throwing of a DomainError clearly expects to get an actual Pyret number.

The rest of the commit cleans up cases where we made mistakes and returned or
passed JS floating-point across the boundary.

assertPyretNumber *should* throw, not just console.error. But I'm too scared to
do that because I'm not convinced our tests are exhaustive here at all, and an
exception in the wild could be pretty breaking. So we console.error for now.

Claude used this assert on toFixnum to find several errors, all of which come
straight from our existing tests/compiler runs.

Claude says:

Specifics of the boundary cleanups, since they're spread across four files:

- js-numbers.js atan2: the y=0 quadrants correctly wrapped Math.PI in a
  Roughnum, but the x>0 4th-quadrant and x<0 cases passed bare Math.PI and
  2*Math.PI to add(), which short-circuits on two JS numbers and returns the
  raw JS sum. So num-atan2(0, -1) returned the JS double 3.141592653589793
  rather than a Roughnum, with branch-dependent type tags visible to user
  code (num-is-roughnum was false). Wrapping the constants in
  Roughnum.makeInstance fixes it. Bug present since the original atan2
  introduction in 2016.
040
Joe Gibbs Politz @joepolitz.bsky.social · 02/05/2026
With multiple sub-agents running algorithmic improvements checked against various oracles and verifiers and fuzzers, you too can get results like these in an evening of work.
160
Joe Gibbs Politz @joepolitz.bsky.social · 09/03/2026
I'm enjoying the open-ended exit slip questions in my course this quarter
How did standards like HTTP get decided?

Broadly, two ways:
Careful design by standards bodies who select their members from experts across academia and industry and then engage in a deliberative process to do the best thing for society and the future of engineering with a well-considered balance of interests
Whoever gets something working first and spends the money to build it implicitly decides how it works and everyone else lives with it forever
Sometimes a mix (and sometimes the experts just pick the second thing)
030
Joe Gibbs Politz @joepolitz.bsky.social · 18/01/2026
Should just do Captain Teach again but mix agent code in. dl.acm.org/doi/pdf/10.1...
Second, at a more principled level, we (controversially!)
view code availability as a valuable learning opportunity for
students, in that it reflects modern software practice. Sites
such as StackOverflow and blogs give programmers ready
access to code for various tasks; the problem for users is to
assess whether the code they find is worth copying. Captain-
Teach anonymizes the work being reviewed, so students can-
not rely on the reputation of authors when deciding whether
to follow ideas seen in other students’ work; instead, they
must judge the code itself. If they make a correct judge-
ment, this demonstrates learning and a corresponding im-
provement in their grade. However, they may also copy a
wrong solution (even one we used to seed the system, which
can look quite convincing!), so copying blindly is perilous.
111
Joe Gibbs Politz @joepolitz.bsky.social · 04/01/2026
Solana Beach
020
Joe Gibbs Politz @joepolitz.bsky.social · 01/12/2025
I need to know more. Melee, Brawl, Ultimate, OG? Which stages, stock counts, timer? As written this is way underspecified and not reproducible. www.frontiersin.org/journals/imm...
A footnote from the linked paper

“ The co-first authorship order was determined via the best of three rounds in Super Smash Bros. Both YB and BZ contributed equally and have the right to list their name first in their CV. All authors contributed to the article and approved the submitted version.”
010
Joe Gibbs Politz @joepolitz.bsky.social · 18/11/2025
I was pretty pleased with this program I used as a motivation for understanding virtual memory.
A program listing

  1 #include <unistd.h>
  2 #include <stdio.h>
  3 #include <stdlib.h>
  4 #include <sys/wait.h>
  5
  6 int main() {
  7   int vals[] = { 1, 2, 3};
  8   int pid = fork();
  9
 10   if(pid) {
 11     printf("[parent] %p\n", &vals);
 12     wait(NULL);
 13     printf("[parent] %p %d\n", &vals, vals[0]); // will this print 9999?
 14   }
 15   else {
 16     printf("[child] %p\n", &vals); // will this print the same as line 11?
 17     vals[0] = 9999;
 18     printf("[child] %p %d\n", &vals, vals[0]);
 19   }
 20 }
 21
 22 // Possibilities:
 23
 24 /*
 25 A  Different address, parent prints 9999
 26 B  Different address, parent prints 1
 27 C  Same address,      parent prints 9999
 28 D  Same address,      parent prints 1
 29 */
2101
Joe Gibbs Politz @joepolitz.bsky.social · 05/09/2025
I think it's possible to get there, someone is going to have to mind-meld with the runtime and bun to do it. I have another experiment going to see if I can get github.com/Automattic/n... to be bundled into the binary (which is how the image library works). Currently that's ending somewhat sadly.
100
Joe Gibbs Politz @joepolitz.bsky.social · 04/09/2025
And just to confirm, a simple js program that just logs does produce a binary with sensible behavior using the same command, so I don't think I'm goofing on the basic thing to try :-)
100
Joe Gibbs Politz @joepolitz.bsky.social · 04/09/2025
At least on my system, the doing the most straightforward thing has no error messages but creates a binary that doesn't produce any output at the terminal (running the compiler blob with `node` and no arguments should print the usage).
100
Joe Gibbs Politz @joepolitz.bsky.social · 03/09/2025
Huh. OK yeah so the issue is: - we symlink node_modules in .pyret to pyret-npm/node_modules with `const nodeModulesPath = path.join(__dirname, "node_modules");` - but on `yarn global add` it flattens out the dependencies of `pyret-npm` into the node_modules above this This is fixable I think.
110
Joe Gibbs Politz @joepolitz.bsky.social · 14/08/2025
Working on two versions of my spring course offering.
A screenshot of the legend of the so-called “chart crime” GPT figure labelled "Software Engineering" with two glyphs – “Without thinking” and “With thinking”
1100
Joe Gibbs Politz @joepolitz.bsky.social · 08/07/2025
Probably dumb/ignorant language questions: Why is the gap between Rho and Sigma, and not between Pi and Rho? I could see wanting to keep some latin <-> greek-ish correspondence, but Rho is more like R than Q, right?
A listing of unicode capital greek letters:

Omicron (code point 927), Pi (code point 928), Rho (code point 929), to Sigma (code point 931).
120
Joe Gibbs Politz @joepolitz.bsky.social · 29/06/2025
Kwaay Paay Peak Trail
Ada and kiddo on a trail up Kwaay Peak
010
Joe Gibbs Politz @joepolitz.bsky.social · 10/06/2025
Teaching large classes running up against real engineering limits! (I don't really need to be “watching” all student repos from 2017. But I usually do “watch” the few hundred for an active class!)
An email from Github:

Hello,

We’re contacting you with an important update about your repository subscriptions (“Watching”) on GitHub.

What’s changing?
Starting July 3, 2025, we are introducing a new limit of 10,000 repository subscriptions per user. Your account currently exceeds this limit.

What are repository subscriptions?
Users can subscribe to receive notifications about activity in repositories through “Watching” Each repository that you Watch counts towards your total subscription count.
040
Joe Gibbs Politz @joepolitz.bsky.social · 24/05/2025
Del Mar dog beach
Ada, a medium sized tan dog, sitting in front of receding waves with one ear flapping in the wind
150
Joe Gibbs Politz @joepolitz.bsky.social · 16/05/2025
👀 Not sure if Copilot has learned from me, my workspace, or all developers that comments are likely to begin with “NOTE(joe): this is a bit of hack...” I'll just assume this isn't me-specific and carry on.
Screenshot of Copilot suggested completion “// NOTE(joe): this is a bit of a hack, but we need to provide...”
040
Joe Gibbs Politz @joepolitz.bsky.social · 22/04/2025
As far as I can tell, --umdGlobalName option has been entirely hallucinated by Google's search results here. I can't find any reference to it in any official issue or documentation, and the discussion of the relevant issue doesn't mention it: github.com/microsoft/Ty...
010
Joe Gibbs Politz @joepolitz.bsky.social · 16/03/2025
Marian Bear Memorial Park
Ada smiling in front of a fallen tree on a dirt embankment above a small stream.
030
Joe Gibbs Politz @joepolitz.bsky.social · 15/01/2025
I haven't published in math journals, but I had a phase in graduate school where I tried to get \skull into all my papers in semantically meaningful ways. These are published in real computing journals/conference proceedings.
Subsumption rule where \skull is the outcome of a subtyping operation. From https://cs.brown.edu/~sk/Publications/Papers/Published/pgk-sem-type-fc-member-name/Type used in verification where disallowed fields in a record are labelled as \skull. From https://dl.acm.org/doi/10.5555/2699784.2699787BNF syntax definition for a semantics of Python where \skull represents uninitialized variables. From https://dl.acm.org/doi/10.1145/2544173.2509536
140
Joe Gibbs Politz @joepolitz.bsky.social · 08/01/2025
I really liked the lecture so I will indulge in a screenshot
A screenshot of a lecture capture. On the left side of the screen is the class's implementation of a String struct including code for an append function called "plus", on the right is the production code for string append in CPython
010
Joe Gibbs Politz @joepolitz.bsky.social · 04/01/2025
I think they could be compiled more efficiently to never need to generate a function body/call. More analysis can avoid the overhead, but it’s more analysis. adam.chlipala.net/mlcomp/#:~:t....
160
Joe Gibbs Politz @joepolitz.bsky.social · 11/12/2024
Anyone with an 18mo who hasn’t experienced Christmas yet want this.
100
Joe Gibbs Politz @joepolitz.bsky.social · 28/11/2024
Got some family photos taken, the important shots came out OK.
Close up shot of Ada—a white and tan 40lb dog with ears like Dobby the House Elf—looking up intently.
030
Joe Gibbs Politz @joepolitz.bsky.social · 25/11/2024
Just to be super concrete, here's the day 1 handout for the most recent offering. The concepts are parsing (to an AST), (generating) assembly, linking, and running. The corresponding assignment is ucsd-compilers-s23.github.io/week1/index....
A single-page handout showing a Rust program that compiles simple programs like (sub1 (sub1 (add1 73))) to x86-64 assembly.
241
Joe Gibbs Politz @joepolitz.bsky.social · 31/10/2024
Only one of these arrays is sworded.
Joe in a pirate costume gesturing with a toy sword towards a sorted array written on a whiteboard
0142
Joe Gibbs Politz @joepolitz.bsky.social · 09/03/2024
I did a perfect datatype design – the result:
010
Joe Gibbs Politz @joepolitz.bsky.social · 06/02/2024
I may or may not have described this as “like some quantum shit” in lecture yesterday.
010
Joe Gibbs Politz @joepolitz.bsky.social · 05/02/2024
This lecture, which I did very little prep for after having the idea a little late, ended up being great. “How many files are there” and “how many lines of code are there” and “which languages/file extensions are in use” are all awesome, first-pass questions that students jumped on immediately.
Lecture handout.

These are a few commonly-used commands. There are lots more! We could fill pages with them

(examples of find, wc, grep, output redirection)

Bluesky, also known as Bluesky Social, is a microblogging social platform and a public benefit corporation. The service is focused on microblogging, and has been called "Twitter-like". Bluesky Social was made open source under the MIT license in May 2023.[27]

This is a big codebase! Hundreds of files.
What questions could we ask that we can answer with these commands?
131
Joe Gibbs Politz @joepolitz.bsky.social · 22/01/2024
Oh and this was the prompt at the top of the page. (John Regehr is cited on the front as the source for the definitions.)
Symptom: The behavior you see (terminal output, error messages, web page contents)
Bug: A flaw in a program that causes symptoms
Failure-inducing input: Data, values, or other input(s) that demonstrate a bug's symptom(s)

Consider the following EdStem posts.
What information could these students provide to help give an actionable answer?
What bugs are possible in each scenario? How could more information about input and symptoms help?
010
Joe Gibbs Politz @joepolitz.bsky.social · 22/01/2024
I lectured about asking good questions today (in the spirit of debugging) and I am far too proud of my made up student names.
Question from Anita Kwikansaur – The server from lab 2 isn't working, it just says class not found.Question from Beto Ansame – I don’t understand quiz question 2 about the paths, I tested all the options myself to check them and it still says my answer is wrong. I said options 3, 4, 5, and 7 were right and that should be the answer but it’s marked wrong.Question from Gemma Halp – My images aren’t rendering right on my lab report webpage, I just see this for all my images:
(broken image icon)
131
Joe Gibbs Politz @joepolitz.bsky.social · 12/01/2024
Sanderson's first law gives an account of the spectrum. It's not that magic *must* be explained. It suggests that magic as a solution to characters' problems is satisfying in proportion to how well the reader understands how it works. www.brandonsanderson.com/sandersons-f....
There is a reason that Gandalf doesn’t just fly Frodo to Mount Doom with magic, then let him drop the ring in. Narratively, that just doesn’t work with the magic system. We don’t know what it can do, and so if the writer uses it to solve a lot of problems, then the tension in the novel ends up feeling weak. The magic undermines the plot instead enhancing it.
100
Joe Gibbs Politz @joepolitz.bsky.social · 10/01/2024
Me to students: It's fine to use online resources, but go back and understand what you did from first principles. Me on my projects:
A commit message:

Update webpack and babel to newest version
It's hard to say exactly what the methodology was here. Some tabs I had open
were:

https://babeljs.io/docs/env/
https://www.npmjs.com/package/babel-preset-es2015
https://stackoverflow.com/questions/49182862/preset-files-are-not-allowed-to-export-objects
https://webpack.js.org/configuration/module/#ruleuse
https://stackoverflow.com/questions/42060243/invalid-configuration-object-webpack-has-been-initialised-using-a-configuration/49849670#49849670
https://babeljs.io/blog/2018/07/27/removing-babels-stage-presets
https://stackoverflow.com/questions/58915152/cannot-find-module-babel-plugin-transform-decorators-legacy
https://stackoverflow.com/questions/61888940/module-build-failed-cannot-find-module-babel-preset-env/61889105#61889105
030
Joe Gibbs Politz @joepolitz.bsky.social · 18/12/2023
World’s cutest baby
010
Joe Gibbs Politz @joepolitz.bsky.social · 02/12/2023
I’m going to be a Professor of Teaching! (As opposed to teaching professor [working title as provided by APM; formal title Lecturer with Security of Employment]) Not nearly as big a deal as the 2018 update (sabbatical!) but a nice formalization for teaching faculty at UCs.
APM - 285, Lecturer with Security of Employment Series
The policy is proposed to be revised and includes the following key revisions:
Revised name of “Lecturer with Security of Employment” (LSOE) series and ranks to “Professor of Teaching.”
130
Joe Gibbs Politz @joepolitz.bsky.social · 25/10/2023
Wrote the first three and tried to drag to autocomplete 🤦🏻‍♂️
Google Sheets cells:

Tue 9:00
Tue 9:30
Tue 10:00
Tue 9:60
Tue 9:90
Tue 10:01
Tue 9:120
Tue 9:150
Tue 10:02
130
Joe Gibbs Politz @joepolitz.bsky.social · 12/10/2023
Wow Github reports some parse errors right in the browser. I actually struggled to catch this one on my own because the static site builder just *ignored* the file with bad YAML rather than erroring, and this little in-repo warning saved me.
A view of a file in Github with an error message "Error in user YAML: (<unknown>): did not find expected key while parsing a block mapping at line 15 column 7"
000
Joe Gibbs Politz @joepolitz.bsky.social · 11/10/2023
Handout for my TA-training class today with made-up-but-plausible message board posts. How do you respond? What do you think about when replying on message boards? I think all instructors deal with this, but I don't talk about it much unless co-teaching.
A student question on a message board:

Anon Student					2h ago		(Public Post)
When I go to reset my course specific account password, I keep getting the error "You must enter a valid username". I am typing in "cse123fa23z00" as it appears on sal.ucsd.edu, but it isn't working when I try to reset it on password.ucsd.edu. I've tried a variety of different combinations but nothing is working

As a tutor, you know that accounts generally look like cs123fa23xyz with the “xyz” differing per-student. How do you respond?A sample student post and prompt.

Angry Person					4m ago		(Private Post)

Hello I have a situation with my grade on the second homework. I visited (write your name here)’s office hours and they told me that the answer I gave (which I wrote out the same as how it was derived in class) was right. But now on my grade I only have half credit for this problem. Please fix my grade.

You had really busy office hours last week with a long line of stressed students. You don’t have a specific memory of this happening; you gave a lot of advice to a lot of students in that time. How do you respond?
030