SICPelago is a randomized Scheme environment where you unlock core capabilities by solving carefully selected exercises adapted from Structure and Interpretation of Computer Programs. Starting only with your trusty lambda
and the supporting quote
, climb your way to the top of the textbook, exploring math puzzles, composite data structures, and infinite sequences. Happy April Prototypes Day!
SICPelago
ROSE-8 in customasm
Last week a friend shared the existence of hlorenzi’s customasm, a tool that can serve as the assembler for arbitrary CPU architectures just by defining a mapping of instructions to encodings.
Hey, I made a CPU once! How hard would it be to make a customasm definition for ROSE-8? Turns out…not very! I played around with it for about two hours, and by the end of it I’d translated an entire ROSE-8 program to customasm, with most of the definition file looking basically the same as the text reference for the ISA encoding.
The Shell is a Program
I have a friend who switched to Linux because they didn’t want to pay for a new license for Windows and thereby end up running modern Windows. They’re not very computer-minded, so troubleshooting doesn’t come naturally, and anything that requires dropping down to the command line is something that has to be done by rote. And on one occasion, when I asked them to run something, they asked where to type it in.
Older Posts
- 2024-07-02 AnyObject
- 2024-04-07 XZ Gon' Give It To Ya
- 2024-04-06 Run-time Polymorphism in Swift
- 2024-01-20 Online Communication
- 2024-01-07 The Biggest Smallest PNG
- 2023-12-28 CellLVM
- 2023-12-14 Protobuf Is Almost Streamable
- 2023-12-13 Daylight Saving Is Temporal Time Zones
- 2023-11-26 GitMounter
- 2023-10-23 Type Erasure in Rust
- 2023-10-09 Soft Orders of Magnitude
- 2023-10-04 There's No Such Thing As "Implicitly Atomic"
- 2023-07-15 HOW TO REFER TO A MAGIC CONSTANT IN C
- 2023-04-01 sNaNs and qNaNs
- 2023-02-12 Setting up GoToSocial
- 2023-01-22 Rescuing Files From Classic Mac OS...with Swift!
- 2022-11-28 The Two Faces of Codable/Serde
- 2022-10-09 Swift was always going to be part of the OS
- 2022-05-14 Relative References in ARM64 Disassembly
- 2022-04-24 Default Arguments and Label-based Overloading
- 2022-03-19 #TalkPay
- 2022-03-02 UnsafeMutableRawBufferPointer
- 2022-02-21 Dynamic Linking Is Bad For Apps And Static Linking Is Also Bad For Apps
- 2021-12-31 Swift Regrets: Wrap-up
- 2021-12-30 Swift History: Assignment Methods
- 2021-12-28 Swift Regret: inout Syntax
- 2021-12-26 Swift Delight: Optional Conveniences
- 2021-12-23 Swift Regret: try?
- 2021-12-21 Swift Delight: try
- 2021-12-17 Swift Regret: Operator Function Lookup Rules
- 2021-12-15 Swift Regret: "Double" rather than "Float64"
- 2021-12-10 Swift Delight: Implicit Member Syntax
- 2021-12-08 Swift Regret: Weak Vars in Structs
- 2021-12-03 Swift Regret: Lazy Vars in Structs
- 2021-11-30 Swift Delight: No Unused Results
- 2021-11-24 Swift Regret: Open Protocols
- 2021-11-21 Swift Regret: Retroactive Conformances
- 2021-11-18 Swift Delight: Library Evolution
- 2021-11-10 Swift Mangling Regret: Private Discriminators
- 2021-11-05 Swift Mangling Regret: The "Old" Mangling
- 2021-11-03 Swift Mangling Regret: Library Evolution
- 2021-10-29 Swift Delight: #available
- 2021-10-22 Swift Regret: Implicitly-Hashable Payloadless Enums
- 2021-10-20 Swift Regret: Top-Level Decls in Script Mode
- 2021-10-15 Swift Delight: Names for Generic Parameters
- 2021-10-13 Swift Regret: Generic Parameters Aren't Members
- 2021-10-08 Swift Regret: OpaquePointer
- 2021-10-06 Swift Regret: Unannotated C Enums
- 2021-10-01 Swift Delight: Value Semantics Collections
- 2021-09-29 Swift Delight: guard
- 2021-09-24 Swift Regret: Inferred Property Types
- 2021-09-22 Swift Regret: Implicit Optional Initialization
- 2021-09-17 Swift Regret: Subscript Trailing Closures
- 2021-09-15 Swift Regret: Subscript Argument Label Rules
- 2021-09-10 Swift Regrets
- 2021-09-10 Swift Regret: Unapplied Instance Methods
- 2021-09-08 Swift Regret: Bound Methods
- 2021-08-29 Swift Regret: Type-based Overloading
- 2021-08-25 Swift Regret: AnyObject Dispatch
- 2021-08-20 Swift Regret: Labeled Tuple Elements
- 2021-08-18 Swift Regret: Tuples and Argument Lists
- 2021-08-13 Swift Regret: Sequence
- 2021-08-11 Swift Regret: mutating Protocol Methods vs. Classes
- 2021-08-06 Swift Regret: NSUInteger
- 2021-08-04 Swift Regret: Protocol Syntax
- 2020-11-15 Negotiate Your Offers!
- 2020-10-20 The Swift Runtime: Enums
- 2020-10-06 The Swift Runtime: Class Metadata Initialization
- 2020-09-29 The Swift Runtime: Class Metadata
- 2020-09-21 The Swift Runtime: Uniquing Caches
- 2020-09-14 The Swift Runtime: Type Metadata
- 2020-09-07 The Swift Runtime: Type Layout
- 2020-08-31 The Swift Runtime: Heap Objects
- 2020-08-26 Objective-Rust
- 2020-07-07 Suffusion: Playing with Filesystems
- 2020-05-24 ROSE-8 on Mac OS 9
- 2020-04-03 Shallow Git Repositories
- 2020-04-01 Swift on Mac OS 9
- 2020-02-06 Flexible Identities in git
- 2020-02-04 Introducing the Game 'by Color
- 2020-01-28 ROSE-8: Console Mode
- 2020-01-22 Setting up gitweb on Shared Hosting
- 2020-01-13 ROSE-8
- 2019-12-24 quasiquarantine
- 2019-09-25 Queue, Queeu, Quuee
- 2019-09-13 Presentation on PrintAsObjC
- 2019-08-01 > go east
- 2019-02-21 A Shiny Magic Number
- 2018-04-29 Misleading Metrics and UX Tradeoffs
- 2018-04-03 "FIXME" Doesn't Always Mean "Fix Me"
- 2018-03-22 My Little (String) Optimization, Part 2
- 2018-03-15 My Little Optimization: The Compiler Is Magic
- 2018-02-26 Many-to-Many Protocols
- 2018-01-29 Color Palette #8
- 2017-09-07 The New Kingdom of Nouns
- 2017-09-05 Over-abstraction
- 2016-08-21 Macromancy, Part 2
- 2016-08-07 Macromancy
- 2016-06-19 Pronoun Buttons
- 2016-05-29 Webmailer's Update Bar
- 2016-05-23 So You Want to Be a (Compiler) Wizard
- 2015-12-29 Re: Contempt Culture
- 2015-11-18 Recommendations
- 2015-05-09 Nibblesort: Adventures in Optimization
- 2015-02-22 AlterConf SF/Oakland
- 2015-01-24 “Skip the FFI”
- 2014-12-28 SIGWINCH
- 2012-12-08 How to Write a Checker in 24 Hours
- 2012-10-02 Git Tricks
- 2012-04-26 Keyboard Adventures
- 2011-08-10 "Little Big Details"
- 2011-07-29 Weak Linking
- 2011-07-25 Using Clang from SVN in Xcode
- 2011-07-22 rm vs. Time Machine
- 2011-07-14 Priorities
- 2011-06-27 git add
- 2011-06-20 Automatic Reference Counting
- 2011-06-16 Dealing with "Sandwich Code"
- 2011-06-05 gdba
- 2011-06-03 Chrome vs. Safari
- 2011-05-31 User-Side Troubleshooting
- 2011-05-30 Auspicious Continuation
- 2009-07-21 Scripting Bridge
- 2009-07-08 What Happened to Dockyard?
- 2009-06-26 Garbage Collectors and Stack Drawers
- 2009-06-21 Z shell
- 2009-05-22 “Several New Features”
- 2009-05-05 C++ Templates are Turing-Complete
- 2009-04-21 [Meme] How Many HTML Elements Can You Name in 5 Minutes?
- 2009-04-16 Safer Plugin Categories
- 2009-04-02 Hacking Safari 4...for Great Convenience
- 2009-03-27 Const Correctness
- 2009-03-19 Categories and +load
- 2009-03-15 Subversion Checksum Problems
- 2009-03-06 JavaScript Tetris
- 2008-09-04 Objective-J and Objective-C
- 2008-08-28 HTTPS and Name-based Virtual Hosting
- 2008-03-08 Alerts Without Apps (or nibs)
- 2008-01-14 NSNumber, CFNumber, and CFBoolean
- 2007-12-13 GenericToolbar and IB3
- 2007-10-27 Performance Optimization: Why We Can't Use valueForKeyPath:
- 2007-09-01 Short Xcode Tip: Plugins
- 2007-07-15 Port 25 Blocked?
- 2007-06-27 GenericToolbar Icon
- 2007-04-13 The Symbolism of Pretty URLS
- 2007-03-07 Flexible PHP
- 2007-01-12 Inauspicious Beginnings