Swift Regrets

For the past few weeks I’ve been writing Twitter threads on “Swift regrets”, things I wish we’d done differently early on in Swift’s development. I’ve been doing them on Twitter rather than as blog posts because of my RSI—short-form on my phone is easier than long-form at a keyboard when I spend so much time on a keyboard for work. But I’m mirroring them here, lightly edited, so they don’t get lost in the eternal history of Twitter. You can find them under the Swift regrets tag.

Keyboard Pants

A year and a half ago, I left Apple, which among other things gave me a lot more time for personal projects. In particular, last March I put a tremendous amount of effort into getting Swift running on Mac OS 9. Which made me happy and proud, but which also had an extremely deleterious effect on my body. And I didn’t really get the message, but continued stressing myself into April and May, and as a consequence, I now have chronic RSI: repetitive strain injury.

Negotiate Your Offers!

As you probably know, I joined Signal after nearly a year between jobs. Signal’s a nonprofit whose goal is to make communication secure and private for everyone, mainly through their open-source messaging app. I feel good about being there.

One of the things I kept in mind, though, was that the interview process isn’t a one-sided thing for us software developers. In particular, if you get an offer, you have some say over the terms of the offer.

Older Posts

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