HackerTrans
TopNewTrendsCommentsPastAskShowJobs

siraben

2,805 karmajoined قبل 7 سنوات
https://github.com/siraben

Vanderbilt CS and math. Yale CS.

Email me! siraben [at] siraben.dev

Submissions

Full Reverse Engineering of the TI-84 Plus Operating System

siraben.github.io
149 points·by siraben·الشهر الماضي·24 comments

Show HN: Nonograms – Friends-only puzzle room with replays and leaderboards

nonograms.siraben.dev
5 points·by siraben·قبل 5 أشهر·2 comments

Cygwin cross-compilation support added to Nixpkgs

github.com
2 points·by siraben·قبل 10 أشهر·0 comments

comments

siraben
·قبل 11 ساعة·discuss
I use croc instead of magic wormhole as of a year ago now. In my testing the throughput is higher than magic wormhole because it uses multiple TCP connections to transfer the files.
siraben
·أول أمس·discuss
This is very cool! I'd like to see a version for theorem proving/equational reasoning as well because I think the ideas behind reasoning about functional programs and proving properties about them are just many cases of rule-applying but people don't staring at equations or jump straight to a theorem prover, whereas a visual interface might make the transition a lot easier.
siraben
·قبل 18 يومًا·discuss
I got a bootable NixOS iso down to 91 MB. Pointed Claude at the Nixpkgs repo and asked it to strip things aggressively and inspect the build closure iteratively.

But the resulting ISO:

- has no network

- can't switch configurations

- doesn't have a text editor

https://gist.github.com/siraben/a8fce9912891d85e1ec3cf74081b...
siraben
·الشهر الماضي·discuss
Yes, to type a TI-BASIC program you have to go through the calculator menus which directly insert the tokenized input into the buffer.

The weird thing about TI-BASIC is how seemingly innocent changes in the input can cause huge performance regressions e.g. https://siraben.github.io/ti84p-re/sub-tibasic-for-paren.htm...

  For(I,1,N
  If 0
  1
  End
is much slower than

  For(I,1,N)
  If 0
  1
  End
siraben
·الشهر الماضي·discuss
It's highly likely that the original implementation language was assembly. The code is very idiomatic.

Regarding source build, I think reverse engineering it to the point where you can reconstruct the source is possibly legally problematic, so I don't plan to do this, but maybe for certain subsystems like MathPrint (equation display) which was especially fun to RE. I have a PR up for it and it will be live at

https://siraben.github.io/ti84p-re/mathprint
siraben
·الشهر الماضي·discuss
The plans are heavily subsidized by the AI companies so I didn't end up needing to do API usage or buy another subscription. I have ChatGPT Pro and Claude Code Max.
siraben
·الشهر الماضي·discuss
Thanks for the feedback, fixing.
siraben
·الشهر الماضي·discuss
This was made collaboratively by me directing coding agents at the binary, using Ghidra MCP extensively, disassembly and also dynamic analysis with an emulator. I don't have a writeup of the process but it was definitely not fully automatable (I wish though). I might prepare a blog post with transcripts and session history and things I learned along the way.

Broad takeaways:

- Ghidra MCP is not a silver bullet. Lots of opportunities for mis-decoding especially on older instruction sets (e.g. conflating code + data), which requires user input to flag data layout/structs.

- Agents still need a lot of user direction otherwise the RE production is just kind of a random walk. With Z80 it's decent at reading code but I expect that it has much worse performance than reading x86 or ARM for instance. The TI-84+ has a bunch of hardware quirks as well.

- GPT 5.5 is better than Opus 4.8 at RE. Opus 4.8 loves plausible-sounding RE'd logic without any checking. The gold standard is actually dynamically executing the binary and comparing the logic against the prose.

- Maintaining consistency in style and prose is a PITA across the wiki. Hard to reconcile prose <-> code. Can be somewhat mitigated by agent loops.

Was also in discussions with people in the TI calculator programming space who helped provide guidance as well. We previously did not have a catalogue of every subsystem in TI-OS yet alone most subroutines in the OS.
siraben
·قبل 3 أشهر·discuss
Without installing anything, this can also be reproduced with a shell script that uses a Nix shebang to specify the cross compilers.

https://gist.github.com/siraben/cb0eb96b820a50e11218f0152f2e...
siraben
·قبل 6 أشهر·discuss
browsh and carbonyl[0] are such lifesavers on airplane wifi. I find that carbonyl has even better chromium rendering than browsh.

[0] https://github.com/fathyb/carbonyl
siraben
·قبل 8 أشهر·discuss
See also: https://en.wikipedia.org/wiki/List_of_Germanic_and_Latinate_...
siraben
·قبل 9 أشهر·discuss
croc's throughput was also a lot better for me. I think this is due to them using multiplexed TCP streams.
siraben
·قبل 10 أشهر·discuss
Archive link in case it gets taken down: https://archive.is/8MdtL
siraben
·قبل 10 أشهر·discuss
My favorite aspect of kitty is the infinite scrollback. My scrollback is 10000 lines long and scrollback buffer itself can store 1 GB worth of history.[0] When you hit a certain shortcut, you can use any pager to search through the scrollback. It's all very fast.

[0] https://github.com/siraben/dotfiles/blob/84225d914acd226863e...
siraben
·قبل 4 سنوات·discuss
For CS, it was SICP. I read it in high school (accompanied with the lecture series[0]) and it lead to me learning about functional and logic programming, compilation, algorithms and data structures and more. It was more than enough to prepare myself for university, and even in my third year some topics have not been covered to the depth they are in SICP!

For math, it was Gödel, Escher, Bach. I was into mathematics in high school as well, but did not have a proper teacher at the time so I was stuck on trying to absorb some of the more technical undergraduate texts in abstract algebra. However, GEB was at the right level and had a nice layman explanation of the 2nd incompleteness theorem, along with beautiful exposition into philosophy, computer science, math, art, music and cognition. I enjoyed it so much I even wrote a compiler for the programming language in the book to C.[1] The exposition on formal reasoning also got me started in learning the Coq theorem prover, which I continue to use to this day.

[0] https://www.youtube.com/watch?v=2Op3QLzMgSY&list=PLE18841CAB...

[1] https://github.com/siraben/meta-yacc