ROSE-8

or, “How I put too much time into making an 8-bit ISA and accompanying virtual machine”

It all started with my colleague Cassie having fun designing a toy 8-bit ISA (“instruction set architecture”). I love encoding tables (I helped out a little with the one for Swift’s String struct representation), and I did assignments in college involving simplified CPUs. So I started thinking about what it would be like to write a program in Cassie’s ISA…and decided its four registers were too limited for me. How could I get up to 8 registers while still keeping most of the instructions in a single byte?

quasiquarantine

In Apple’s TN2206, “macOS Code Signing in Depth”, there’s a section about “Checking Gatekeeper Compliance”.

  • Package your program the way you ship it, such as in a disk image.

  • Download it from its website, or mail it to yourself, or send it to yourself using AirDrop or Message. This will quarantine the downloaded copy. This is necessary to trigger the Gatekeeper check as Gatekeeper only checks quarantined files the first time they’re opened.

  • Drag-install your app and launch it.

I figured jumping through a “download” or “send” step was overkill. Surely there’s a way to get the same effect programmatically, right?

Leaving Apple

After seven years, I’m leaving Apple. Today (November 1) is my last day in office.

Those seven years have been good for me. I started off on the Clang Static Analyzer, and eventually moved onto the secret project that became Swift. As someone interested in programming languages and compilers, Swift was…I don’t want to say the chance of a lifetime, but maybe the chance of a decade, at least. I got to shape and contribute to a language used by people all over the world during its early years, and it’s been a heck of an experience. To everyone in the Swift community, thank you and also I’m sorry for the bugs.

Older Posts

  1. 2019-08-01 > go east
  2. 2018-04-29 Misleading Metrics and UX Tradeoffs
  3. 2018-04-03 "FIXME" Doesn't Always Mean "Fix Me"
  4. 2018-03-22 My Little (String) Optimization, Part 2
  5. 2018-03-15 My Little Optimization: The Compiler Is Magic
  6. 2018-02-26 Many-to-Many Protocols
  7. 2018-01-29 Color Palette #8
  8. 2017-09-07 The New Kingdom of Nouns
  9. 2017-09-05 Over-abstraction
  10. 2016-08-21 Macromancy, Part 2
  11. 2016-08-07 Macromancy
  12. 2016-06-19 Pronoun Buttons
  13. 2016-05-29 Webmailer's Update Bar
  14. 2016-05-23 So You Want to Be a (Compiler) Wizard
  15. 2015-12-29 Re: Contempt Culture
  16. 2015-11-18 Recommendations
  17. 2015-05-09 Nibblesort: Adventures in Optimization
  18. 2015-02-22 AlterConf SF/Oakland
  19. 2015-01-24 “Skip the FFI”
  20. 2012-12-08 How to Write a Checker in 24 Hours
  21. 2012-10-02 Git Tricks
  22. 2012-05-16 Big News
  23. 2012-04-26 Keyboard Adventures
  24. 2012-04-10 Mail Aliases
  25. 2011-08-14 Header Anchors: A Safari Extension
  26. 2011-08-10 "Little Big Details"
  27. 2011-07-29 Weak Linking
  28. 2011-07-25 Using Clang from SVN in Xcode
  29. 2011-07-22 rm vs. Time Machine
  30. 2011-07-14 Priorities
  31. 2011-06-30 Quick Look in TextMate
  32. 2011-06-27 git add
  33. 2011-06-20 Automatic Reference Counting
  34. 2011-06-16 Dealing with "Sandwich Code"
  35. 2011-06-05 gdba
  36. 2011-06-03 Chrome vs. Safari
  37. 2011-05-31 User-Side Troubleshooting
  38. 2011-05-30 Auspicious Continuation
  39. 2009-07-21 Scripting Bridge
  40. 2009-07-08 What Happened to Dockyard?
  41. 2009-06-26 Garbage Collectors and Stack Drawers
  42. 2009-06-21 Z shell
  43. 2009-05-22 “Several New Features”
  44. 2009-05-05 C++ Templates are Turing-Complete
  45. 2009-04-21 [Meme] How Many HTML Elements Can You Name in 5 Minutes?
  46. 2009-04-16 Safer Plugin Categories
  47. 2009-04-02 Hacking Safari 4...for Great Convenience
  48. 2009-03-27 Const Correctness
  49. 2009-03-19 Categories and +load
  50. 2009-03-15 Subversion Checksum Problems
  51. 2009-03-06 JavaScript Tetris
  52. 2008-09-04 Objective-J and Objective-C
  53. 2008-08-28 HTTPS and Name-based Virtual Hosting
  54. 2008-03-08 Alerts Without Apps (or nibs)
  55. 2008-01-14 NSNumber, CFNumber, and CFBoolean
  56. 2007-12-13 GenericToolbar and IB3
  57. 2007-10-27 Performance Optimization: Why We Can't Use valueForKeyPath:
  58. 2007-09-01 Short Xcode Tip: Plugins
  59. 2007-07-15 Port 25 Blocked?
  60. 2007-06-27 GenericToolbar Icon
  61. 2007-04-13 The Symbolism of Pretty URLS
  62. 2007-03-07 Flexible PHP
  63. 2007-01-12 Inauspicious Beginnings