Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,4 @@ Thumbs.db
ehthumbs.db
Desktop.ini

.obsidian/
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider ignoring additional Obsidian artifacts beyond the vault directory.

Obsidian generates not only the .obsidian/ vault metadata directory, but also per-vault .obsidian.json files and workspace-specific configuration. Depending on your project philosophy (treat vault config as project state vs. ignore editor state), you may need:

.obsidian/
.obsidian.json
.obsidian-sync.json

Verify whether .obsidian.json should be gitignored in this repository.

🤖 Prompt for AI Agents
In .gitignore around line 111, the repo currently ignores only the .obsidian/
directory but not per-vault and workspace files; update the .gitignore to also
ignore .obsidian.json and .obsidian-sync.json if you want to exclude Obsidian
workspace/config files from VCS. Confirm whether this repo treats vault config
as project state—if not, add entries for .obsidian.json and .obsidian-sync.json
(and any other Obsidian-generated files) to .gitignore; if the files are
intentionally tracked, leave as-is and document the decision.

🛠️ Refactor suggestion | 🟠 Major

Misplaced entry: Relocate .obsidian/ to the dedicated editor section.

This entry is positioned orphaned after the "Other generic editor/OS clutter" section. Given that Obsidian is a first-class editor/IDE, it belongs with the other structured editor entries (VS Code, JetBrains, Xcode, etc.) starting at line 79, complete with its own subsection comment. Grouping it at the tail end of the file dilutes the organizational coherence.

Restructure as follows—remove the orphaned entry and add it to the editor section:

 # Emacs
 *~
 \#*\#
 .\#*
 
 # Other generic editor/OS clutter
 Thumbs.db
 ehthumbs.db
 Desktop.ini
 
+# Obsidian
+.obsidian/
-
-.obsidian/

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In .gitignore around line 111 the `.obsidian/` entry is orphaned after the
"Other generic editor/OS clutter" section; remove that line and relocate the
`.obsidian/` entry into the dedicated editor section around line 79, adding a
subsection comment (e.g., "# Obsidian") consistent with the existing editor
blocks (VSCode, JetBrains, Xcode), and ensure you don't create a duplicate entry
elsewhere in the file.

24 changes: 24 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
SHELL := /bin/bash
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Hardcoding bash is fine, but document why.

You're forcing /bin/bash for the progress target's bashisms (arrays, (( )) arithmetic). This breaks POSIX sh compatibility. Add a comment explaining this dependency so future maintainers don't waste time wondering why dash explodes.

+# Bash required for progress target (uses arrays and (( )) arithmetic)
 SHELL := /bin/bash
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
SHELL := /bin/bash
# Bash required for progress target (uses arrays and (( )) arithmetic)
SHELL := /bin/bash
🤖 Prompt for AI Agents
In Makefile around line 1, you hardcode SHELL := /bin/bash but don't document
why; add a concise comment above this line stating that the progress target uses
Bash-specific features (e.g., arrays and (( )) arithmetic) which are not POSIX
sh-compatible, so SHELL is intentionally set to /bin/bash to avoid breakage and
to warn maintainers not to switch to dash or /bin/sh.


TEX_MAIN := tex/computer.tex
BUILD_DIR := build
OUT_PDF := computer.pdf
Expand All @@ -6,6 +8,7 @@ SVG_SRCS := $(wildcard svg/*.svg)
SVG_PDFS := $(SVG_SRCS:.svg=.pdf)

.PHONY: all clean
.PHONY: progress

all: $(OUT_PDF)

Expand Down Expand Up @@ -35,3 +38,24 @@ clean:
latexmk -C -output-directory=$(BUILD_DIR) $(TEX_MAIN) || true
rm -rf $(BUILD_DIR) $(OUT_PDF)
rm -f tex/computer.{aux,log,out,fls,fdb_latexmk,synctex.gz,pdf}

progress:
@set -e; \
file="ROADMAP.md"; \
done=$$(grep -ao "✅" "$$file" | wc -l | tr -d " "); \
doing=$$(grep -ao "⏳" "$$file" | wc -l | tr -d " "); \
todo=$$(grep -ao "◽️" "$$file" | wc -l | tr -d " "); \
total=$$((done + doing + todo)); \
if [ $$total -eq 0 ]; then pct=0; else pct=$$(((100*done + total/2)/total)); fi; \
width=20; filled=$$(((pct*width + 50)/100)); \
bar_short="["; for ((i=1;i<=width;i++)); do if [ $$i -le $$filled ]; then bar_short="$$bar_short█"; else bar_short="$$bar_short░"; fi; done; bar_short="$$bar_short]"; \
width2=49; filled2=$$(((pct*width2 + 50)/100)); \
bar_long="["; for ((i=1;i<=width2;i++)); do if [ $$i -le $$filled2 ]; then bar_long="$$bar_long█"; else bar_long="$$bar_long░"; fi; done; bar_long="$$bar_long]"; \
bottom="0 10 20 30 40 50 60 70 80 90 100"; \
for f in ROADMAP.md README.md; do \
[ -f "$$f" ] || continue; \
PROGPCT="$${pct}% ($${done}/$${total})" perl -0777 -CS -Mutf8 -pi -e 'my $$r=$$ENV{PROGPCT}; s|<!-- PROGRESS_PCT(?:_README)? -->.*?<!-- /PROGRESS_PCT(?:_README)? -->|<!-- PROGRESS_PCT -->$$r<!-- /PROGRESS_PCT -->|sg' "$$f"; \
PROGBAR_SHORT="$${bar_short}" perl -0777 -CS -Mutf8 -pi -e 'my $$r=$$ENV{PROGBAR_SHORT}; s|<!-- PROGRESS_BAR(?:_README)? -->.*?<!-- /PROGRESS_BAR(?:_README)? -->|<!-- PROGRESS_BAR -->$$r<!-- /PROGRESS_BAR -->|sg' "$$f"; \
PROGBAR_LONG="$${bar_long}" BOTTOM="$${bottom}" perl -0777 -CS -Mutf8 -pi -e 'my ($$r,$$b)=@ENV{qw/PROGBAR_LONG BOTTOM/}; s|(<!-- progress -->\n```text\n)[^\n]*\n[^\n]*\n(```\n<!-- /progress -->)|$$1$$r\n$$b\n$$2|sg' "$$f"; \
done; \
echo "Updated progress to $${pct}% ($${done}/$${total}) across ROADMAP.md and README.md"
Comment on lines +42 to +61
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

This target is a maintainability minefield.

Several concerns with this progress tracking implementation:

  1. Emoji matching is fragile. The ◽️ character is actually U+25FD + U+FE0F (variation selector). Depending on how the file is saved and the system's locale settings (LC_ALL, LANG), grep -ao may match zero, one, or two characters. This will silently produce wrong counts.

  2. The Perl one-liners are unreadable. Lines 57-59 are write-only code. When this breaks (and it will), nobody will be able to debug it without a Perl archaeology degree.

  3. No validation. If ROADMAP.md doesn't exist or has malformed content, this fails silently or produces garbage output.

Consider extracting this to a standalone script with proper error handling and comments:

 progress:
-	@set -e; \
-	  file="ROADMAP.md"; \
-	  done=$$(grep -ao "✅" "$$file" | wc -l | tr -d " "); \
-	  ...
+	@./scripts/update-progress.sh

Then create scripts/update-progress.sh with proper comments, error handling, and locale forcing (LC_ALL=C.UTF-8).

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 checkmake (0.2.2)

[warning] 42-42: Target body for "progress" exceeds allowed length of 5 (19).

(maxbodylength)

14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,20 @@
<p>By James Ross</p>
</div>

## Status

**Overall Progress:** <!-- PROGRESS_PCT -->39% (178/460)<!-- /PROGRESS_PCT -->
<!-- PROGRESS_BAR -->��]<!-- /PROGRESS_BAR -->

[Roadmap & checklist →](ROADMAP.md)

<!-- progress -->
```text
��]
0 10 20 30 40 50 60 70 80 90 100
```
<!-- /progress -->
Comment on lines +17 to +29
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Corrupted Unicode — progress bar is garbage.

Lines 20 and 26 contain ��] — these are replacement characters indicating failed UTF-8 decoding. Whatever emoji or block-character progress bar you intended here has been mangled.

This renders as literal garbage in the README. Either:

  1. Fix the encoding pipeline that generates these placeholders, or
  2. Use ASCII-safe progress bars (e.g., [=========> ]), or
  3. Remove the decorative bar and keep only the percentage.
-<!-- PROGRESS_BAR -->��]<!-- /PROGRESS_BAR -->
+<!-- PROGRESS_BAR -->[===============>                         ]<!-- /PROGRESS_BAR -->

 <!-- progress -->
 ```text
-��]
+[===============>                         ]
 0   10   20   30   40   50   60   70   80   90  100

<details>
<summary>🤖 Prompt for AI Agents</summary>

In README.md around lines 17 to 29 the progress bar contains corrupted Unicode
replacement characters ("��]") instead of the intended decorative bar; replace
the mangled characters with an ASCII-safe progress bar (for example
"[===============> ]"), or remove the decorative bar and
leave only the textual percentage, and ensure any generator or pipeline that
emits this file is set to UTF-8 encoding if you intend to keep non-ASCII symbols
so the characters do not get replaced during generation.


</details>

<!-- fingerprinting:phantom:medusa:ocelot -->

<!-- This is an auto-generated comment by CodeRabbit -->


## What if computation had a shape?

Not metaphorically. Not as a diagram on a whiteboard. But as a navigable geometry, where programs move through possibility space, bugs are wrong turns, optimizations are shorter paths, and every execution leaves a trail you can walk backward.
Expand Down
323 changes: 323 additions & 0 deletions ROADMAP.md

Large diffs are not rendered by default.

Binary file modified computer.pdf
Binary file not shown.
13 changes: 11 additions & 2 deletions tex/01-note-to-the-reader.tex
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,16 @@ \chapter*{Part I --- The Universe as Rewrite}
\textbf{Computation is what reality is made of, not what we do \emph{to} reality.}
\end{quote}

Up to now, most of us have only seen the shadows of this truth—projected, flattened, and made safe by decades of comforting abstractions. This book asks you to turn toward the source, to see the forms behind the shadows. Everything that follows traces the geometry of that world.
Up to now, most of us have only interacted with computation through
\emph{abstractions}—interfaces designed to hide structure, flatten history, and
sanitize the underlying machinery. What we call “code” is often just the
silhouette of a far richer process.

This book asks you to look directly at that process: to stop reasoning from
interfaces and start reasoning from \emph{structure}. Once you do, a different
picture emerges—a picture with geometry, causality, and motion. Everything that
follows is an attempt to map that deeper layer with precision.

Comment on lines +13 to +22
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Straight quotes detected — typographic sin.

Line 15 uses ASCII straight quotes: "code". In LaTeX, proper quotation marks are ``code''. This produces curly quotes in the PDF. Straight quotes look amateurish in a typeset manuscript.

-sanitize the underlying machinery. What we call "code" is often just the
+sanitize the underlying machinery. What we call ``code'' is often just the
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Up to now, most of us have only interacted with computation through
\emph{abstractions}—interfaces designed to hide structure, flatten history, and
sanitize the underlying machinery. What we call code is often just the
silhouette of a far richer process.
This book asks you to look directly at that process: to stop reasoning from
interfaces and start reasoning from \emph{structure}. Once you do, a different
picture emerges—a picture with geometry, causality, and motion. Everything that
follows is an attempt to map that deeper layer with precision.
Up to now, most of us have only interacted with computation through
\emph{abstractions}—interfaces designed to hide structure, flatten history, and
sanitize the underlying machinery. What we call ``code'' is often just the
silhouette of a far richer process.
This book asks you to look directly at that process: to stop reasoning from
interfaces and start reasoning from \emph{structure}. Once you do, a different
picture emerges—a picture with geometry, causality, and motion. Everything that
follows is an attempt to map that deeper layer with precision.
🤖 Prompt for AI Agents
In tex/01-note-to-the-reader.tex around lines 13 to 22, the text uses ASCII
straight quotes ("code") on line 15; replace them with LaTeX typographic quotes
by writing opening double backticks and closing double single quotes (i.e.,
``code'') so the PDF renders curly quotes correctly, and scan nearby lines for
any other straight ASCII double quotes and convert them the same way.


\subsection*{Why This Matters: From Black Boxes to Glass Boxes}

Expand Down Expand Up @@ -123,7 +132,7 @@ \subsection*{A Call to Action: Go Bend Some Universes}
We have laid the foundation for a computational cosmology. You now hold the keys to a system that replaces probabilistic guesswork with deterministic geometry, and opaque processes with absolute provenance. This is not an evolution. It is an architectural revolution.

\begin{quote}
\textbf{Those who finish this book will not see computation the same way again. Once you learn to perceive the geometry beneath the code, the old mindset of “just running the code” collapses into a kind of flatness. It is like stepping outside Plato’s cave: the familiar shadows of computation give way to a full, three-dimensional world of structures, laws, and histories that were always there, waiting to be seen.}
\textbf{Those who finish this book will not see computation the same way again. Once you learn to perceive the geometry beneath the code, the old mindset of “just running the code” collapses into a kind of flatness. It is like switching from a diagnostic log to a full-system trace: the flat, fragmented view of computation you once relied on is replaced by a living, three-dimensional landscape of structures, laws, and histories that were always there—just never visible at once. Once you learn to see in this geometry, the old mindset of “just running the code” collapses into something impossibly thin.}
\end{quote}
Comment on lines +135 to 136
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Egregious repetition — did you paste twice?

This single paragraph says essentially the same thing twice:

  1. "Once you learn to perceive the geometry beneath the code, the old mindset of 'just running the code' collapses into a kind of flatness."
  2. "Once you learn to see in this geometry, the old mindset of 'just running the code' collapses into something impossibly thin."

Same structure, same subject, same verb, same object. This reads like a merge conflict that was resolved by keeping both versions. Kill one.

Additionally, "just running the code" uses straight quotes — again, use ``...'' in LaTeX.

-\textbf{Those who finish this book will not see computation the same way again. Once you learn to perceive the geometry beneath the code, the old mindset of "just running the code" collapses into a kind of flatness. It is like switching from a diagnostic log to a full-system trace: the flat, fragmented view of computation you once relied on is replaced by a living, three-dimensional landscape of structures, laws, and histories that were always there—just never visible at once. Once you learn to see in this geometry, the old mindset of "just running the code" collapses into something impossibly thin.}
+\textbf{Those who finish this book will not see computation the same way again. Once you learn to perceive the geometry beneath the code, the old mindset of ``just running the code'' collapses into a kind of flatness. It is like switching from a diagnostic log to a full-system trace: the flat, fragmented view of computation you once relied on is replaced by a living, three-dimensional landscape of structures, laws, and histories that were always there---just never visible at once.}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
\textbf{Those who finish this book will not see computation the same way again. Once you learn to perceive the geometry beneath the code, the old mindset of just running the code collapses into a kind of flatness. It is like switching from a diagnostic log to a full-system trace: the flat, fragmented view of computation you once relied on is replaced by a living, three-dimensional landscape of structures, laws, and histories that were always therejust never visible at once. Once you learn to see in this geometry, the old mindset of “just running the code” collapses into something impossibly thin.}
\end{quote}
\textbf{Those who finish this book will not see computation the same way again. Once you learn to perceive the geometry beneath the code, the old mindset of ``just running the code'' collapses into a kind of flatness. It is like switching from a diagnostic log to a full-system trace: the flat, fragmented view of computation you once relied on is replaced by a living, three-dimensional landscape of structures, laws, and histories that were always there---just never visible at once.}
\end{quote}
🤖 Prompt for AI Agents
In tex/01-note-to-the-reader.tex around lines 135–136, remove the duplicated
sentence so the paragraph doesn’t repeat the same idea twice (keep the stronger
of the two sentences and delete the other), and replace the straight double
quotes around "just running the code" with LaTeX-style quotes using ``just
running the code'' throughout the paragraph.


If you are a physicist, expect parts of this to feel like an API spec for the laws you already know. If you are a computer scientist, expect ``the machine'' to suddenly include galaxies. If you are an ML person, expect models to shrink back down to what they are: ways of steering flows through a much larger space.
Expand Down
Loading