The Curious Engineer

All blogs / Software / engineering practice

Structure and Interpretation of Computer Programmers

sicpers.info

Writing code is hard. Software engineering is much harder.

Software / engineering practiceAI / MLMobile / iOS / AndroidDev tools / editors / IDEs

Posts
984 from 7 Apr 2006 to 22 Oct 2026
Posting
weekly (27 in the last year)
Kind
personal blog
Feed
https://www.sicpers.info/feed/

2026 20

  1. Announcing Axminster: visual software design
  2. Inter-process communication in a sandboxed Mac app
  3. Reasons to dislike AI coding
  4. AI adoption, engineering process, and documentation consultancy
  5. End of Line: Replacing MCP with Standard Filesystem Tools
  6. Using WebObjects at web-scale with Kubernetes and Firebase
  7. Free Software and LLM Contribution Policies
  8. I keep bouncing off the Scheme language
  9. On industrial relations
  10. Art or tool?
  11. On working machines
  12. Announcing AppScript
  13. Chiron Codex early bird ends soon
  14. On thinking machines
  15. Considering society
  16. Happy 25th birthday to the manifesto for agile software development!
  17. Opinionated Read: How AI Impacts Skill Formation
  18. Creating “sub-agents” with Mistral Vibe
  19. Announcing Chiron Codex, a community of software centaurs
  20. Configuring your computer for local inference with a generative AI coding assistant

2025 17

  1. Management is the wrong analogy for LLM augmentation
  2. Is spec-driven development the end of Agile software development?
  3. On the value of old principles
  4. Vibe coding and BASIC
  5. Essence and accident in language model-assisted coding
  6. Tony Hoare and negative space
  7. When did people favor composition over inheritance?
  8. LLMs and reinforcement learning
  9. Prompting software or supporting engineering
  10. Unintended consequences
  11. Is Foundation a Utopian vision?
  12. Hi, I’m Graham and I like things
  13. On Nostalgia for Physical Media
  14. The gaps between the processes
  15. In which things are not known
  16. Is software engineering a thing?
  17. Resolutions

2024 10

  1. On the Consolation of Software Engineering
  2. In which a life re-emerges
  3. The Cataract of Software Delivery
  4. Non-standard components
  5. Specific physical phenomena
  6. Related methods and tools
  7. YX problem
  8. Floating point numbers aren’t weird
  9. Still no silver bullet?
  10. On whiteboard coding

2023 12

  1. On software engineering hermeneutics
  2. On rational myths
  3. We shall return one day
  4. In which things are given names
  5. I’ve vastly misunderstood the Single Responsibility Principle
  6. Programming, language
  7. I was wrong, 80 characters is fine
  8. Re-evaluating second brains
  9. Type safety, undefined behaviour, and us
  10. On legitimacy and software engineering
  11. On association
  12. Your reminder that “British English” and “American English” are fictional constructs

2022 34

  1. On Scarcity
  2. Transcendence
  3. The Image Model
  4. Phrases in computing that might need retiring
  5. On entering programming in 2022
  6. More detail on software requirements
  7. Why mock objects aren’t popular this week
  8. More micros, less Guinness
  9. On self-taught coders
  10. On the locations of the bullet holes on bombers that land successfully
  11. Even more on generalist software engineering
  12. On interviewing and generalist software engineers
  13. You say “cave dweller debugging”, I say debug logging
  14. The Requirements Trifecta
  15. On or Between
  16. WWDC 2022 is a WWDC watch party
  17. Classism in software engineering
  18. Software design is refinement, not abstraction
  19. Unit test: you keep using this word.
  20. Why are we like this?
  21. When to “address” “technical debt”?
  22. So that’s how it works
  23. Having the right data
  24. Aphorism Considered Harmful
  25. What is software engineering?
  26. Diagnosing a Docker image build problem
  27. Halloween is Over
  28. Design Patterns On Trial
  29. Falsehoods These Programmers Believed About Countries
  30. Introducing the SICPers Newsletter
  31. [objc retain]; continues apace
  32. On Apple’s swings and misses
  33. Licenses aren’t sufficient
  34. On the glorification of ignorance

2021 37

  1. Explicitly considering subtyping in inheritance
  2. I have some small idea of what I’m doing
  3. An Imagined History of Agile Software Development
  4. Second Brain
  5. Scripting confusion
  6. 20 things learned in 20 years as a software engineer
  7. The “return a command” trick in Haskell
  8. The missing principle in agile software development
  9. Apple and Bug Bounties
  10. In which I misunderstood Objective-C
  11. Why you didn’t like that thing that company made
  12. On programmer behaviours that make Scrum so bad
  13. Sleep on it
  14. My proposal for scaling open source: don’t
  15. There is no “us” in team
  16. Ama
  17. An Imagined History of Object-Oriented Programming
  18. A hopefully modern description of Object-Oriented Design
  19. A hopefully modern description of Object-Oriented Analysis
  20. Graham Lee Uses This
  21. On industry malaise
  22. Naming things
  23. On UML
  24. I don’t use version control when I’m writing
  25. By doing it and helping others do it
  26. What Xamarin.Forms taught me about data bindings
  27. Whoever “wins”, software freedom loses
  28. One person per task
  29. The Vizzini Effect
  30. Cap in Hand
  31. “Best practice” is less of a scam than claimed
  32. [objc retain] stream
  33. “Reasoning about code” is a scam
  34. Ubiquitous computing
  35. GNUstep development on LIVEstep
  36. Data curation during a pandemic
  37. Novel bean incoming

2020 48

  1. The Silent Network
  2. Apple Silicon, Xeon Phi, and Amigas
  3. Recovering from deleting your login shell on a Mac
  4. Lambda: the ultimate polymath
  5. Discipline doesn’t scale
  6. Reflections on an iBook G4
  7. Running Linux GUI apps under MacOS using Docker
  8. Self-organising teams
  9. On saying words clearly
  10. The manifesto for anarchic software development
  11. Dos Amigans
  12. Free as in Water
  13. Six Colours
  14. Nvidia and ARM
  15. Fairness
  16. Grotag
  17. Concrete freedoms
  18. The Object is the Advantage
  19. Getting started on my Vampire V4
  20. 6502
  21. Obsolescence
  22. Music
  23. The closed-open principle
  24. The Nineteen Nineties
  25. Tiger to Catalina: let’s port some code
  26. So, what’s the plan? Part 2: what will the plan be?
  27. So, what’s the plan? Part 1: what WAS the plan?
  28. Anti-lock brakes
  29. Another non-year of Desktop Linux
  30. SICPers podcast episode 10
  31. Where We Ditched Chipzilla
  32. SICPers podcast episode 9
  33. It protects. It also promotes and prevents.
  34. Forearmed
  35. Continuous Integration for Amiga
  36. Mature Optimization
  37. Video podcast: Hisoft C for the ZX Spectrum
  38. SICPers podcast episode 5
  39. SICPers podcast episode 4
  40. SICPers Podcast Episode 3
  41. SICPers Podcast episode two
  42. SICPers podcast episode one
  43. Stay on target…
  44. On the tyranny of autoincrementing integer primary keys
  45. First, Consider no Harmful.
  46. The unreasonable ineffectiveness of considering things harmful
  47. Empowered free software
  48. Pairing in Github

2019 54

  1. Everyone rejecting everyone else
  2. The feature constraint
  3. Immutable changes
  4. On exploding boilers
  5. Sprouts
  6. Change
  7. The value of the things on the left
  8. Zen and the Art of Software Maintenance
  9. A question of focus
  10. Great Documentation, Great Software
  11. Solving the underlying problem
  12. Maybe you are going to need it
  13. Experts around the table
  14. On the efficient allocation of scarce resources with alternative uses
  15. My first rails app
  16. My changing relationship with books
  17. The challenges of teaching software engineering
  18. Falsehoods programmers who write “falsehoods programmers believe” articles believe about programmers who read “falsehoods programmers believe” articles
  19. Longer, fuller stacks
  20. The importance of the passive voice is described.
  21. On the features of a portfolio career
  22. The Logical Fallacy
  23. Deprecating yarn
  24. Oxford University course on collaborative coding
  25. Applications and Spelling of Boole
  26. Digital Declutter
  27. What’s on the other channel?
  28. Half a bee
  29. New Swift hardware
  30. King Arthur: By what name are you known?
  31. Pythonicity
  32. Runtime verification in Erlang by using contracts
  33. There’s more to it
  34. Hyperloops for our minds
  35. Ratio
  36. Mach and Matchmaker: kernel and language support for object-oriented distributed systems
  37. The balloon goes up
  38. Image
  39. Why 80?
  40. Last Chance: Ultimate Programmer Super Stack
  41. Ultimate Programmer Super Stack Reloaded
  42. The Fragile Manifesto
  43. Input-Output Maps are Strongly Biased Towards Simple Outputs
  44. HPC at FOSDEM 2019
  45. How UX Practitioners Produce Findings in Usability Testing
  46. Grooming the Backfog
  47. Structured Pruning of Deep Convolutional Neural Networks
  48. On the continuous history of approximation
  49. HPC’s Shift to the Cloud
  50. The ABC of Software Engineering Research
  51. Java By Contract: a Worked Example
  52. Updates to JavaByContract
  53. Impossibility and Uncertainty in AI
  54. The App that Wasn’t (Yet)

2018 64

  1. Research Watch, and Java by Contract
  2. Teaching Quality Object-Oriented Programming
  3. Cleaner Code
  4. Product teams: our products are not our products
  5. Mapping software engineering tools
  6. More speed, lower velocity
  7. Figurative Programming and Gloom: the [G]raphical [LOOM]
  8. Two books
  9. Packaging software
  10. Concurrent objects and SCOOP
  11. A little challenge
  12. Ultimate Programmer Super Stack: Last day!
  13. Coming to terms with fewer terms
  14. Microservices for the Desktop
  15. Ultimate Programmer Super Stack
  16. Introducing: the Labrary
  17. On Blue Agile
  18. I’m probably holding it wrong
  19. On the inevitability of Photoshop for iPad
  20. Beginner thoughts
  21. More on UIAutomation tests
  22. given-when-then in XCTest
  23. Making my peace
  24. HotSwift
  25. OOP the Easy Way: now 100% complete
  26. Two Schools
  27. On Sharecropping
  28. Two out of three ain’t bad
  29. More on freedom and licensing
  30. Book update: OOP the Easy Way
  31. On study-only licences
  32. Is Freedom Zero such a hot idea?
  33. Story points: there’s no right way to do it
  34. OOP the Easy Way
  35. Or maybe, because we want to
  36. On version 12
  37. Warsaw Welcomes Dumbass Commentary
  38. The hardest thing
  39. Swift
  40. Eating the bubble
  41. Netscape won
  42. On twitter [or otherwise]
  43. On null
  44. “Brand”: you win some, you lose some
  45. Let’s talk about self-documenting code
  46. Rethinking Object-Oriented Design figures
  47. Inheritance still doesn’t make any sense
  48. Subatomic Chocolate
  49. What’s better than semver?
  50. What Lenin taught me about software movements
  51. Why inheritance never made any sense
  52. In defense of `id`
  53. On Inheritance
  54. How retrospectives ban shoes
  55. No True Humpty-Dumpty
  56. It’s about the thinking
  57. There is no browser, only Zuul
  58. To become a beginner, first become an expert
  59. machoo – Object-Oriented Programming in Object-Oriented Programming in the GNU HURD
  60. Discovery
  61. An update on the HURD project
  62. Gently HURDing the side projects
  63. Head of Architecture
  64. Mui

2017 57

  1. Aros
  2. Computing’s fundamental Principle of No Learning
  3. Reasoning about reasoning about software
  4. All the things
  5. Against our values as a company
  6. Falsehoods programmers believe about programming
  7. Considered harmless
  8. An unhelpful distinction
  9. GNUstep is more important now than ever
  10. On the lesser presentations
  11. Why are you using the wrong licence?
  12. The Atoms of Programming
  13. Stop ignoring the world
  14. OOP as an organic approach to computing
  15. My platform is no platform
  16. In which new developer tools are dull
  17. Bottom-up teaching
  18. Why I don’t have a favourite programming language
  19. Free Software should welcome contributions by Apple, Google
  20. Recommend me some books or articles
  21. On books
  22. Give me an S
  23. Security consultancy from the other side
  24. Choose boring employers
  25. Choose boring employees
  26. In which GNUstep confuses and ultimately disappoints
  27. On the “advances” in web development since 1995
  28. When Object-Oriented Programming Isn’t
  29. Two ways of thinking
  30. If Object-Oriented Programming were announced today
  31. Open Source: because I got mine, so fuck you
  32. Technical debt and jury service
  33. The worst phrase in software marketing
  34. Culture Smell
  35. Literate Programming with LibreOffice
  36. Prototypical object-oriented programming
  37. In defence of assertions
  38. In defence of large teams
  39. Your build needs to be better
  40. Acne cream
  41. Why your app is not massively parallel software
  42. Working Effectively with Legacy Code
  43. Build systems are a huge annoyance
  44. Tsundoku
  45. Full Stack
  46. Fosdem
  47. Rust project organisation
  48. The package management paradox
  49. On the fitness for purpose of a software model
  50. New project: the GNUstep developer guide
  51. Just don’t use version numbers
  52. The reality is not the abstraction
  53. Minimum Viable Controller
  54. 2017: the year of configuring Linux (or Windows, or OS X, or…) on the desktop
  55. The problem with not-Apple
  56. Resolution: Share Subscriptions
  57. Resolution: Subscribe Self

2016 20

  1. This is fine
  2. By the river
  3. Answer: none of them
  4. I fix things for a living
  5. No, you can’t ignore politics
  6. I make mistakes for a living
  7. Learning about software freedom
  8. On the rhetorical cost of ownership
  9. Can’t you just…
  10. On the business case for (or against) software
  11. The Vexing Problems in Programming
  12. Withholding the Four Freedoms
  13. On the extremes of computer science
  14. Something old, something new
  15. Dogmatic paradigmatism
  16. Apple’s Best Programming Language
  17. On immutable data structures…?
  18. In which I interview so you don’t have to
  19. Turn it off and back on again
  20. New book: APPosite Concerns

2015 62

  1. Clown Trousers
  2. New project: a dance a day
  3. The Principled Programmer
  4. Selectively caring
  5. Week Seven
  6. Week six
  7. Week five
  8. Week four
  9. Staying power
  10. *-Oriented Programming
  11. Week three
  12. Week Two
  13. Tempus Fugit
  14. Week One
  15. Criticising the Four Freedoms
  16. Improving a presentation with slides
  17. “When I had that problem”
  18. PL personality theory
  19. The paradox of scripting
  20. The death of scripting
  21. On having things to say
  22. On running out of words
  23. Imperative Programming in Swift
  24. Protocol-Oriented Programming in Objective-C
  25. A brief interlude
  26. Functional Programming in Object-Oriented Programming in Functional Programming in Swift
  27. Classes in objects in object-oriented programming in functional programming in Swift
  28. Mutable objects in immutable objects in object-oriented programming in functional programming in Swift
  29. Finishing the ObjS story
  30. Further Advances in Objective-Swift
  31. Dynamic Method Dispatch in Object-Oriented Programming in Functional Programming in Swift
  32. Object-Oriented Programming in Functional Programming in Swift
  33. Object-Oriented Programming in Objective-C
  34. Programming is not a craft
  35. Did that work? Maybe.
  36. Getting better at doing it wrong
  37. Ch-ch-ch-ch-changes
  38. A kata above
  39. The Design of the Bazaar
  40. An acceptable tool
  41. Beware the IDEs
  42. Hiding behind messages
  43. It depends? It depends.
  44. GNU Terry Pratchett
  45. Linus’s Bystanders
  46. Inspired by Swift
  47. Fun and games (with rewritten rules) in Objective-C
  48. Objective-Curry
  49. A subtle [mis]understanding of monads
  50. It’s the little things
  51. Dark Silicon
  52. Like Java, only functional
  53. Learning phases
  54. On opinionation
  55. The Tankard Brigade
  56. UNIX-like pedantry
  57. The other pink dollar
  58. …and in the end there will be the command line.
  59. But where to go?
  60. Learn Mansplaining The Hard Way
  61. On switching to Linux
  62. Layers of Distraction

2014 81

  1. Rubbies and sores
  2. In which I resolve
  3. Quotes on JavaScript
  4. Object-Oriented Programming in 1714
  5. An odd thought
  6. Programming language advent
  7. That can’t possibly work.
  8. Détournement and Recuperation
  9. Today’s surprisingly short workflow-improving win
  10. Tech’s Meritocracy Problem
  11. Why nerd culture must die
  12. There’s No Such Thing as a General-purpose Processor
  13. Structure and Interpretation of Computer Programmers
  14. Structure and Interpretation of Computer Programmers
  15. Structure and Interpretation of Computer Programmers
  16. Up or to the right
  17. Structure and Interpretation of Computer Programmers
  18. Turn and face the strange
  19. Structure and Interpretation of Computer Programmers
  20. Reversing the polarity of the message flow
  21. The Humpty-Dumpty Guide to OOP
  22. Fuck. This. Shit.
  23. More on Layers
  24. The trouble with layers
  25. Yes, you may delete tests
  26. The laser physics of software
  27. Full-stack
  28. More Excel-lent Adventures
  29. What it takes to “win” a discussion
  30. APPosite Concerns
  31. Apple’s Watch and Jony’s Compelling Beginning
  32. Sitting on the Sidelines
  33. Why is programming so hard?
  34. Programming, maths and the other things
  35. Intellectual property and software: the nuclear option
  36. On Mental Health
  37. Contractually-obligated testing
  38. The Wealth of Applications
  39. One decade in
  40. PADDs, not the iPad
  41. The reasonable effectiveness of developer tools
  42. Goals upon goals upon goals
  43. Intra-curricular activities
  44. Planet of the Apps
  45. Things I believe
  46. Wristwatches in the Future
  47. Reflections on “Is TDD Dead”
  48. On a re-read you realise this isn’t really about Swift
  49. It doesn’t take an Oracle to see that coming
  50. Is TDD Dead? My questions
  51. The lighter side of open source
  52. I use mocks and I’m happy with that
  53. One meeellleeon
  54. Open Source and the Lehrer-von Braun defence
  55. It’s just like English
  56. Code longevity
  57. Preparing for Computing’s Big One-Oh-Oh
  58. Intuitive is the Enemy of Good
  59. How much programming language is enough?
  60. On too much and too little
  61. Some so-called expert
  62. The Software Leviathan
  63. Where am I going with this?
  64. My use of Latin: a glossary
  65. Depending on the self-interest of strangers
  66. Software, Science?
  67. Inside-Out Apps
  68. Principled Lizards
  69. Messily Veneered C
  70. The Objective-C protocol naming trifecta
  71. ClassBrowser’s public face
  72. Replacing the language
  73. Laggards don’t buy apps: devil’s advocate edition
  74. Missing Vital Content
  75. Moderately Valuable Cliché
  76. Set the settings set
  77. Meaningless Vapid Catchphrase
  78. The First Flaw
  79. It’s about solving problems
  80. Programming as a societal roadblock
  81. ClassBrowser: warts and all

2013 81

  1. Standing at the Crossroads
  2. A sneaky preview of ClassBrowser
  3. By your _cmd
  4. The Ignoble Programmer
  5. Agile application security
  6. How to answer questions the smart way
  7. Story points: because I don’t know what I’m doing
  8. Updating my ObjC web app on git push
  9. Automated tests with the GNUstep test framework
  10. Happy 19th birthday, Cocoa!
  11. Conflicts in my mental model of Objective-C
  12. Reading List
  13. Choosing the correct openings and closures
  14. NIMBY Objects
  15. Dogma-driven development
  16. The whole ‘rockstar developer’ thing is backwards
  17. Programmer Values
  18. Know what counts
  19. The future will be just like the past, right?
  20. On what makes a “good” comment
  21. Did that restructuring work actually help?
  22. Teaching Programming to People. It’s easy, right?
  23. Elegant Object-oriented Software Design via Interactive, Evolutionary Computation
  24. On Scientific Computing
  25. Representativeness in Software Engineering Research
  26. Garbage-collected Objective-C
  27. Programming Literate Manifesto
  28. How I got root on my University’s UNIX network
  29. Compatibility
  30. AJAX via jQuery in an Objective-C WebObjects app
  31. What’s the mobile app market up to, then?
  32. What Graham did next
  33. At the old/new interface: jQuery in WebObjects
  34. HATEOAS app structure explained through some flimsy analogy
  35. Are you an [X] programmer?
  36. Blame culture
  37. The code you wrote six months ago
  38. Separating user interface from work
  39. Fiction: The Ouroborus School pt 1
  40. On the design of iOS 7 and iconographoclasm
  41. Lighter UIViewControllers
  42. enum class in C++11
  43. An entirely unwarranted comparison between software engineering and astronomy
  44. Short Objective-C on the server update
  45. On protocols that aren’t
  46. I do the stupid so you don’t have to
  47. Meta-writing
  48. Shell scripts and Xcode
  49. APPropriate Behaviour is complete!
  50. When single responsibility isn’t possible
  51. More security processes go wrong
  52. Could effortless lecturers make everything seem too easy?
  53. Objective-C, dependencies, linking
  54. When security procedures go bad
  55. Specifications for interchanging objects
  56. Can Objective-C be given safe categories?
  57. APPropriate Behaviour is almost done
  58. As the Kaiser Chiefs might say: Ruby ruby ruby n00bie
  59. On designing collections
  60. On rewriting your application
  61. Rebooting the Programmer Competency Matrix
  62. Coupling in a Cocoa[ Touch] App
  63. A two-dimensional dictionary
  64. “You could simply do X” costs more
  65. The Liskov Citation Principle
  66. When all you have is a NailFactory…
  67. A note on notes
  68. How to version a Mach-O library
  69. How to handle Xcode in your meta-build system’s iOS or Mac app target
  70. I just updated Appropriate Behaviour
  71. Happy Birthday, Objective-C!
  72. How to find me
  73. Does the history of making software exist?
  74. An observation designed to aid the reading of books on software
  75. Anyone Can Write A Manifesto And You Can Too!™
  76. Talking about talking
  77. Detecting overflows, undefined behaviour and other nasties
  78. An open letter to Xcode
  79. Retiring the “Apple developers are insular” meme
  80. What happens when you add one to an integer?
  81. How big is an integer?

2012 64

  1. Server-side Objective-C
  2. Can code be “readable”?
  3. I published a new book!
  4. Surprising ARC performance characteristics
  5. Sideloading content into iOS apps
  6. Object-Oriented callback design
  7. How to excel at IDE design
  8. An apology to readers of Test-Driven iOS Development
  9. It’s not @jnozzi’s fault!
  10. Does that thing you like doing actually work?
  11. I made a web!
  12. A brief history of talking on the interwebs (or: why I’m not on app.net)
  13. What’s a software architect?
  14. On free apps
  15. Inheritance is old and busted
  16. On Null Objects
  17. Illuminative-C
  18. On community
  19. Password checking with CommonCrypto
  20. Sound bites considered harmful
  21. How people learn
  22. Coding. Standards.
  23. Objective-C literals and subscripts
  24. Supporting both ARC and MRC build settings
  25. App security consultancy from your favourite boffin
  26. Class clusters, placeholder objects, value-oriented programming, and all that good stuff.
  27. Is privacy a security feature?
  28. Thoughts on Tech Conferences
  29. BrowseOverflow as a Code Kata
  30. Using GNUstep libraries with Xcode
  31. Building a unit test target with GNUstep make
  32. So you’re off to WWDC
  33. Metacognition-driven development
  34. Messing about with Clang
  35. Classes are globals, too
  36. Software-ICs and a component marketplace
  37. Comparing Objective-C and Objective-C with Objective-C
  38. The debugger of royalty
  39. TDD and crypto in one place
  40. Culture, heritage and apps
  41. Test-Driven iOS Development
  42. On the magic of key agreement
  43. On my newer competence
  44. An apology and an opportunity
  45. UX is snake-oil bullshit
  46. Automate all the server Objective-C!
  47. Adding components to a GNUstep web / WebObjects app
  48. Using Objective-C on the server
  49. More about the privacy pledge
  50. Confine ALL the things!
  51. How to TDD with CATCH
  52. The security apprentice
  53. On advertising’s place in the tech industry
  54. Why we don’t trust -retainCount
  55. Synthesized ivars are private
  56. Is it an anti-pattern to use properties everywhere?
  57. Some LightReading about mobile app security
  58. Building an object-oriented dispatch system in Objective-C
  59. On privacy, hashing, and your customers
  60. On home truths in iOS TDD
  61. Security: probably doing it wrong
  62. Irresponsible tolerance
  63. On standards in free software engineering
  64. On the economics of software insecurity

2011 40

  1. These things are hard
  2. On explaining stuff to people
  3. On SSL Pinning for Cocoa [Touch]
  4. A bunch of monkeys with typewriters
  5. Mac App Sandboxing: it may not be for you (but that’s probably OK)
  6. Android: the missed opportunities
  7. Why your security UI sucks
  8. On Windows 8
  9. Don’t be a dick
  10. So you don’t like your IDE
  11. On device identifiers
  12. Remember the future?
  13. Want to hire iamleeg?
  14. On the new Lion security things
  15. TDD/unit testing video training for iOS developers
  16. Making computing exciting
  17. On what Marcus said
  18. On BizSpark
  19. A Cupertino Yankee in the Court of King Ballmer
  20. On the top 5 iOS appsec issues
  21. “Patently” secure
  22. On adopting testing, and CocoaDojos
  23. On platform-specific strategies
  24. Storing and testing credentials: Cocoa Touch Edition
  25. On cryptographic file storage
  26. Categories will bite you
  27. On internal quality
  28. A first look at appCode, and the future of Cocoa IDEs?
  29. On my own competency
  30. What happens when you jailbreak an iPad
  31. On counting numbers
  32. On NSInvocation
  33. On comment docs
  34. On Being a Software Person
  35. On Singleton(s)
  36. On, or rather in, Seattle
  37. On repeatable builds
  38. On squeezing out that last ounce of performance
  39. On Timeless Programming Books
  40. On the broken(?) Mac App Store

2010 63

  1. Protecting source code
  2. On the Mac App Store
  3. Did the UK create a new kind of “Crypto Mule”?
  4. On how to get crypto wrong
  5. A site for discussing app security
  6. On Fuzzy Aliens
  7. On secrets
  8. On utilities
  9. On phone support scams and fake AV
  10. On free Mac Anti-Virus
  11. Rumors of your runtime’s death are greatly exaggerated
  12. What do you think of this?
  13. An example of unit testing working for me
  14. On Ignoring the Tests
  15. On documentation
  16. YOUR development team needs security engineers
  17. On McAfee
  18. On voices that matter
  19. On stopping service management abuse
  20. On private methods
  21. On authorization proxy objects
  22. NSConference MINI videos available
  23. On Trashing
  24. On detecting God Classes
  25. On Fitt’s Law and Security
  26. Using Aspect-Oriented Programming for Security Engineering
  27. A solution in need of a problem
  28. Template class for unit testing Core Data entities
  29. Configuring CruiseControl.rb in under an hour
  30. On the extension of code signing
  31. On NSNull as an anti-pattern
  32. On type safety and making it harder to write buggy code
  33. Careful how you define your properties
  34. Why OS X (almost) doesn’t need root any more
  35. On improved tool support for Cocoa developers
  36. LLVM projects you may not be aware of
  37. On localisation and security
  38. Which vendor “is least secure”?
  39. Why passwords aren’t always the right answer.
  40. WWDC dates announced
  41. The difference between NSTableView and UITableView
  42. Regaining your identity
  43. Losing your identity
  44. On writing a book
  45. Rehearsals in beta!
  46. Security flaw liability
  47. One Window that is good for Mac security
  48. Why do we annoy our users?
  49. So it’s not just the Department of Homeland Security, then
  50. Integrating SSH with the keychain on Snow Leopard
  51. How to hire Graham Lee
  52. Pre-order professional Mac security books!
  53. Look what the feds left behind…
  54. More NSConf code signing fun
  55. iPh0wnage
  56. Anatomy of a software sales scam
  57. Code snippit from NSConference presentation
  58. On multitasking
  59. Oops. (updated twice)
  60. Core Data Haiku competition results!
  61. It’s just a big iPod
  62. Unit testing Core Data-driven apps, fit the second
  63. CocoaHeads Swindon, January and February

2009 46

  1. Nearly the end-of-year review
  2. On Operation Chokehold
  3. Consulting versus micro-ISV development
  4. Poke the other one, it’s got bells on
  5. Unfamiliar territory
  6. Next Swindon CocoaHeads meeting
  7. Unit testing Core Data-driven apps
  8. CocoaHeads Swindon is this Monday!
  9. Indie app milestones part one
  10. On XP mode
  11. The next million-dollar iPhone application
  12. A rap upon the noggin
  13. Website relaunch!
  14. Next CocoaHeads Swindon meet!
  15. NSConference videos
  16. Coming very shortly…
  17. Refactor your code from the command-line
  18. CocoaHeads Swindon tonight!
  19. Just because Brucie says it…
  20. KVO and +initialize
  21. Going indie!
  22. Reverse-engineering stringed instruments
  23. Beer improves perception of security
  24. WWDC wind-down
  25. Unit testing Cocoa projects in Xcode
  26. Follow-up-and-slightly-over on safety/security
  27. chord graphics
  28. Prepping for WWDC
  29. The rokeg blood pie^W^W^Wplot thickens
  30. Detect the gagh lurking in your system!
  31. Rootier than root
  32. On dynamic vs. static polymorphism
  33. Did you miss my NSConference talk?
  34. I may have not been correct
  35. On default keychain settings
  36. NSConference: the aftermath
  37. Controlling opportunity
  38. On noodles
  39. Cocoa: Model, View, Chuvmey
  40. When techs collide
  41. A lack of CocoaHeads
  42. Most favouritest and least favourite Macs
  43. Quote of the year (so far)
  44. Tautology of the year (so far)
  45. Quick antispam observation
  46. What’s new in 2009

2008 73

  1. Cocoa Memory Management
  2. Wikipedia == fail
  3. better security, not always more security
  4. Whither the codesign interface?
  5. You keep using that word. I do not think it means what you think it means.
  6. Free apps with macdev ticket
  7. Some bloody genius
  8. More on MacDev
  9. I’m sorry, I haven’t a Clu
  10. Solaris iPhone Edition
  11. All you never wanted to know about temporary files and were too ambivalent to ask
  12. It was asked for: the “features” post
  13. The view(s) from the hotel
  14. Properties about a year on
  15. MacDev 2009!
  16. Rhetoric, smoothly outlined
  17. AppleScript, for once
  18. Overdoing the risk management
  19. Me.com. Your identity, everywhere.
  20. Apple 2, iamleeg 0
  21. The twitter sitter hit a bitter critter
  22. Mac user Gmail account hack
  23. A better bit o’ twitter than the bitter twitter Tommy Titter bought
  24. Fuzzing as a security testing tool
  25. Walking a mile dans ses chausseurs
  26. Next CocoaHeads Swindon meeting
  27. So are Macs uber-pricey?
  28. Back from holiday
  29. Cocoa#, Mono and Me
  30. Microblogging
  31. Common sense writ large
  32. Designing a secure Cocoa application
  33. Ah, the sweet sound of my own voice
  34. CocoaHeads Swindon
  35. Objective-C NAQs
  36. WWDC day crosspost
  37. Local KDC on Leopard
  38. WWDC day 00000000000000000000000000000101
  39. WWDC day four
  40. WWDC: afp548 Venn competition
  41. WWDC day three
  42. WWDC aside
  43. WWDC day 2
  44. ObjC FAQ update
  45. WWDC – day one
  46. WWDC part 0
  47. This means business
  48. Little hack to help with testing
  49. Wistfully Wonderful Den of Coders
  50. Managers: Don’t bend it that far, you’ll break it!
  51. My name in lights
  52. Social and political requirements gathering
  53. The Dock should be destroyed, or at least changed a lot
  54. Yeah, we’ve got one of those
  55. Tracking the invisible, moving, unpredictable target
  56. Come back, purple button, all is forgiven!
  57. How exciting
  58. Broke track mounting
  59. Nice things about ObjC
  60. My discs have been Americanised!
  61. “Patently” obvious
  62. Don’t go there
  63. Mach-OFS: aforementioned polish and functionality
  64. Well, you could have told me
  65. Mach-O FS (no really, MacFUSE does rule)
  66. MacFUSE rules
  67. Non-subscription updates means charged?
  68. From the no-man’s-land of the format wars
  69. We! Haven’t! Thought! This! Through!
  70. Permissions whee!
  71. Side-by-side
  72. How to solve every problem in Cocoa
  73. Project: Autonomous Revolutionary Goldfish

2007 38

  1. Objective-C Design Patterns
  2. FSF membership
  3. Post #100!
  4. Upcoming Cocoa nerd stuff
  5. Verify your backups
  6. +1-415-312-0555
  7. OmniWeb 5.6 tip of the day
  8. The times, they mainly stay the same
  9. Nice-looking LaTeX Unicode
  10. Still trading as ClosedDarwin
  11. Old news
  12. Holding a problem in your head
  13. Template change
  14. Random collection of amazing stuff
  15. It’s update o’clock
  16. Ich habe mein Handy verloren
  17. The new netiquette
  18. A bit late for that, isn’t it?
  19. Apple and Google sitting in a tree, f-i-g-h…erm…t-i-ng
  20. Miniwindows
  21. Moving on
  22. A bit of backup script
  23. Official Google Mac Blog: Measuring performance of distributed notifications
  24. Bye bye data, hello…the same data
  25. All the more reason to like FOSDEM
  26. Summer of code
  27. Mail::Box++
  28. FOSDEM / GNUstep photos
  29. Apres ca, le FOSDEM
  30. Fairly cool update to GNUstep
  31. Where are we going?
  32. FAQ update
  33. Why Java is so damned lame, part exp(I*M_PI)
  34. TGD – expanding the field
  35. That syncing feeling
  36. Scary stuff
  37. Sacrilege!
  38. Eating one’s own dog food

2006 63

  1. 客観的なc計算機言語
  2. Copyleft
  3. TGD – John on acid
  4. TGD – begging the question
  5. TGD – I’m not dead yet!
  6. TGD – religion leaving the gene pool
  7. TGD Responses – selection for religion?
  8. e[Mac]s keyboard
  9. Blasty from the pasty
  10. One reason multiple inheritance sucks
  11. if ([self isKindOfClass:[whore class]]) [self promote];
  12. We’re off to see the Wozzard….
  13. I feel sorry for…
  14. Best. App. Evar!
  15. A spot of ultravaiolence, my droogs?
  16. Init dead; no casualties
  17. Gah
  18. WikityWebsite
  19. Parallels may, in fact, be completely dumb
  20. switching CPUs
  21. OPENSTEP/Parallels/VirtualPC/Spam
  22. ObjC FAQ update
  23. Comment word verification
  24. Better clear the office out, can’t remember what the carpet looks like
  25. New website
  26. Hell hath frozen over
  27. WTF is a Veo?
  28. NeXT Luminaries
  29. Report from WWDC
  30. Greetings, Jobs-pickers
  31. See you at WWDC…?
  32. Hidden gem
  33. Irritating annoying irritationnoyance of the day
  34. This year’s WWDC t-shirt?
  35. No worries, mate!
  36. Swedish chef
  37. Lest I forget
  38. Subconscious operation
  39. OS r us
  40. PVS file
  41. Use of vm_stat(1)
  42. free as in, well, free(1)
  43. NetBSD running on G5
  44. Parallels RC and OPENSTEP works!
  45. New c.l.o-c alternative FAQ
  46. This so goes on my CV
  47. Today’s broken user interface award…
  48. Complex things possible
  49. Parallels 2.1 beta 5
  50. Too much confidence is good for you
  51. The repair permissions fiasco
  52. Apple Technical Briefing: Scientific computing and the Intel transition
  53. Comrades in OpenStep
  54. Wolf! Wolf!
  55. The age-old problem
  56. Parallels and OpenStep: success!
  57. More progress on Parallels
  58. About NSMailDelivery and Message.framework
  59. Structure and Interpretation of Computer Programmers
  60. Structure and Interpretation of Computer Programmers
  61. Structure and Interpretation of Computer Programmers
  62. Structure and Interpretation of Computer Programmers
  63. Structure and Interpretation of Computer Programmers