All blogs / Software / engineering practice
Structure and Interpretation of Computer Programmers
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
- Announcing Axminster: visual software design
- Inter-process communication in a sandboxed Mac app
- Reasons to dislike AI coding
- AI adoption, engineering process, and documentation consultancy
- End of Line: Replacing MCP with Standard Filesystem Tools
- Using WebObjects at web-scale with Kubernetes and Firebase
- Free Software and LLM Contribution Policies
- I keep bouncing off the Scheme language
- On industrial relations
- Art or tool?
- On working machines
- Announcing AppScript
- Chiron Codex early bird ends soon
- On thinking machines
- Considering society
- Happy 25th birthday to the manifesto for agile software development!
- Opinionated Read: How AI Impacts Skill Formation
- Creating “sub-agents” with Mistral Vibe
- Announcing Chiron Codex, a community of software centaurs
- Configuring your computer for local inference with a generative AI coding assistant
2025 17
- Management is the wrong analogy for LLM augmentation
- Is spec-driven development the end of Agile software development?
- On the value of old principles
- Vibe coding and BASIC
- Essence and accident in language model-assisted coding
- Tony Hoare and negative space
- When did people favor composition over inheritance?
- LLMs and reinforcement learning
- Prompting software or supporting engineering
- Unintended consequences
- Is Foundation a Utopian vision?
- Hi, I’m Graham and I like things
- On Nostalgia for Physical Media
- The gaps between the processes
- In which things are not known
- Is software engineering a thing?
- Resolutions
2024 10
2023 12
- On software engineering hermeneutics
- On rational myths
- We shall return one day
- In which things are given names
- I’ve vastly misunderstood the Single Responsibility Principle
- Programming, language
- I was wrong, 80 characters is fine
- Re-evaluating second brains
- Type safety, undefined behaviour, and us
- On legitimacy and software engineering
- On association
- Your reminder that “British English” and “American English” are fictional constructs
2022 34
- On Scarcity
- Transcendence
- The Image Model
- Phrases in computing that might need retiring
- On entering programming in 2022
- More detail on software requirements
- Why mock objects aren’t popular this week
- More micros, less Guinness
- On self-taught coders
- On the locations of the bullet holes on bombers that land successfully
- Even more on generalist software engineering
- On interviewing and generalist software engineers
- You say “cave dweller debugging”, I say debug logging
- The Requirements Trifecta
- On or Between
- WWDC 2022 is a WWDC watch party
- Classism in software engineering
- Software design is refinement, not abstraction
- Unit test: you keep using this word.
- Why are we like this?
- When to “address” “technical debt”?
- So that’s how it works
- Having the right data
- Aphorism Considered Harmful
- What is software engineering?
- Diagnosing a Docker image build problem
- Halloween is Over
- Design Patterns On Trial
- Falsehoods These Programmers Believed About Countries
- Introducing the SICPers Newsletter
- [objc retain]; continues apace
- On Apple’s swings and misses
- Licenses aren’t sufficient
- On the glorification of ignorance
2021 37
- Explicitly considering subtyping in inheritance
- I have some small idea of what I’m doing
- An Imagined History of Agile Software Development
- Second Brain
- Scripting confusion
- 20 things learned in 20 years as a software engineer
- The “return a command” trick in Haskell
- The missing principle in agile software development
- Apple and Bug Bounties
- In which I misunderstood Objective-C
- Why you didn’t like that thing that company made
- On programmer behaviours that make Scrum so bad
- Sleep on it
- My proposal for scaling open source: don’t
- There is no “us” in team
- Ama
- An Imagined History of Object-Oriented Programming
- A hopefully modern description of Object-Oriented Design
- A hopefully modern description of Object-Oriented Analysis
- Graham Lee Uses This
- On industry malaise
- Naming things
- On UML
- I don’t use version control when I’m writing
- By doing it and helping others do it
- What Xamarin.Forms taught me about data bindings
- Whoever “wins”, software freedom loses
- One person per task
- The Vizzini Effect
- Cap in Hand
- “Best practice” is less of a scam than claimed
- [objc retain] stream
- “Reasoning about code” is a scam
- Ubiquitous computing
- GNUstep development on LIVEstep
- Data curation during a pandemic
- Novel bean incoming
2020 48
- The Silent Network
- Apple Silicon, Xeon Phi, and Amigas
- Recovering from deleting your login shell on a Mac
- Lambda: the ultimate polymath
- Discipline doesn’t scale
- Reflections on an iBook G4
- Running Linux GUI apps under MacOS using Docker
- Self-organising teams
- On saying words clearly
- The manifesto for anarchic software development
- Dos Amigans
- Free as in Water
- Six Colours
- Nvidia and ARM
- Fairness
- Grotag
- Concrete freedoms
- The Object is the Advantage
- Getting started on my Vampire V4
- 6502
- Obsolescence
- Music
- The closed-open principle
- The Nineteen Nineties
- Tiger to Catalina: let’s port some code
- So, what’s the plan? Part 2: what will the plan be?
- So, what’s the plan? Part 1: what WAS the plan?
- Anti-lock brakes
- Another non-year of Desktop Linux
- SICPers podcast episode 10
- Where We Ditched Chipzilla
- SICPers podcast episode 9
- It protects. It also promotes and prevents.
- Forearmed
- Continuous Integration for Amiga
- Mature Optimization
- Video podcast: Hisoft C for the ZX Spectrum
- SICPers podcast episode 5
- SICPers podcast episode 4
- SICPers Podcast Episode 3
- SICPers Podcast episode two
- SICPers podcast episode one
- Stay on target…
- On the tyranny of autoincrementing integer primary keys
- First, Consider no Harmful.
- The unreasonable ineffectiveness of considering things harmful
- Empowered free software
- Pairing in Github
2019 54
- Everyone rejecting everyone else
- The feature constraint
- Immutable changes
- On exploding boilers
- Sprouts
- Change
- The value of the things on the left
- Zen and the Art of Software Maintenance
- A question of focus
- Great Documentation, Great Software
- Solving the underlying problem
- Maybe you are going to need it
- Experts around the table
- On the efficient allocation of scarce resources with alternative uses
- My first rails app
- My changing relationship with books
- The challenges of teaching software engineering
- Falsehoods programmers who write “falsehoods programmers believe” articles believe about programmers who read “falsehoods programmers believe” articles
- Longer, fuller stacks
- The importance of the passive voice is described.
- On the features of a portfolio career
- The Logical Fallacy
- Deprecating yarn
- Oxford University course on collaborative coding
- Applications and Spelling of Boole
- Digital Declutter
- What’s on the other channel?
- Half a bee
- New Swift hardware
- King Arthur: By what name are you known?
- Pythonicity
- Runtime verification in Erlang by using contracts
- There’s more to it
- Hyperloops for our minds
- Ratio
- Mach and Matchmaker: kernel and language support for object-oriented distributed systems
- The balloon goes up
- Image
- Why 80?
- Last Chance: Ultimate Programmer Super Stack
- Ultimate Programmer Super Stack Reloaded
- The Fragile Manifesto
- Input-Output Maps are Strongly Biased Towards Simple Outputs
- HPC at FOSDEM 2019
- How UX Practitioners Produce Findings in Usability Testing
- Grooming the Backfog
- Structured Pruning of Deep Convolutional Neural Networks
- On the continuous history of approximation
- HPC’s Shift to the Cloud
- The ABC of Software Engineering Research
- Java By Contract: a Worked Example
- Updates to JavaByContract
- Impossibility and Uncertainty in AI
- The App that Wasn’t (Yet)
2018 64
- Research Watch, and Java by Contract
- Teaching Quality Object-Oriented Programming
- Cleaner Code
- Product teams: our products are not our products
- Mapping software engineering tools
- More speed, lower velocity
- Figurative Programming and Gloom: the [G]raphical [LOOM]
- Two books
- Packaging software
- Concurrent objects and SCOOP
- A little challenge
- Ultimate Programmer Super Stack: Last day!
- Coming to terms with fewer terms
- Microservices for the Desktop
- Ultimate Programmer Super Stack
- Introducing: the Labrary
- On Blue Agile
- I’m probably holding it wrong
- On the inevitability of Photoshop for iPad
- Beginner thoughts
- More on UIAutomation tests
- given-when-then in XCTest
- Making my peace
- HotSwift
- OOP the Easy Way: now 100% complete
- Two Schools
- On Sharecropping
- Two out of three ain’t bad
- More on freedom and licensing
- Book update: OOP the Easy Way
- On study-only licences
- Is Freedom Zero such a hot idea?
- Story points: there’s no right way to do it
- OOP the Easy Way
- Or maybe, because we want to
- On version 12
- Warsaw Welcomes Dumbass Commentary
- The hardest thing
- Swift
- Eating the bubble
- Netscape won
- On twitter [or otherwise]
- On null
- “Brand”: you win some, you lose some
- Let’s talk about self-documenting code
- Rethinking Object-Oriented Design figures
- Inheritance still doesn’t make any sense
- Subatomic Chocolate
- What’s better than semver?
- What Lenin taught me about software movements
- Why inheritance never made any sense
- In defense of `id`
- On Inheritance
- How retrospectives ban shoes
- No True Humpty-Dumpty
- It’s about the thinking
- There is no browser, only Zuul
- To become a beginner, first become an expert
- machoo – Object-Oriented Programming in Object-Oriented Programming in the GNU HURD
- Discovery
- An update on the HURD project
- Gently HURDing the side projects
- Head of Architecture
- Mui
2017 57
- Aros
- Computing’s fundamental Principle of No Learning
- Reasoning about reasoning about software
- All the things
- Against our values as a company
- Falsehoods programmers believe about programming
- Considered harmless
- An unhelpful distinction
- GNUstep is more important now than ever
- On the lesser presentations
- Why are you using the wrong licence?
- The Atoms of Programming
- Stop ignoring the world
- OOP as an organic approach to computing
- My platform is no platform
- In which new developer tools are dull
- Bottom-up teaching
- Why I don’t have a favourite programming language
- Free Software should welcome contributions by Apple, Google
- Recommend me some books or articles
- On books
- Give me an S
- Security consultancy from the other side
- Choose boring employers
- Choose boring employees
- In which GNUstep confuses and ultimately disappoints
- On the “advances” in web development since 1995
- When Object-Oriented Programming Isn’t
- Two ways of thinking
- If Object-Oriented Programming were announced today
- Open Source: because I got mine, so fuck you
- Technical debt and jury service
- The worst phrase in software marketing
- Culture Smell
- Literate Programming with LibreOffice
- Prototypical object-oriented programming
- In defence of assertions
- In defence of large teams
- Your build needs to be better
- Acne cream
- Why your app is not massively parallel software
- Working Effectively with Legacy Code
- Build systems are a huge annoyance
- Tsundoku
- Full Stack
- Fosdem
- Rust project organisation
- The package management paradox
- On the fitness for purpose of a software model
- New project: the GNUstep developer guide
- Just don’t use version numbers
- The reality is not the abstraction
- Minimum Viable Controller
- 2017: the year of configuring Linux (or Windows, or OS X, or…) on the desktop
- The problem with not-Apple
- Resolution: Share Subscriptions
- Resolution: Subscribe Self
2016 20
- This is fine
- By the river
- Answer: none of them
- I fix things for a living
- No, you can’t ignore politics
- I make mistakes for a living
- Learning about software freedom
- On the rhetorical cost of ownership
- Can’t you just…
- On the business case for (or against) software
- The Vexing Problems in Programming
- Withholding the Four Freedoms
- On the extremes of computer science
- Something old, something new
- Dogmatic paradigmatism
- Apple’s Best Programming Language
- On immutable data structures…?
- In which I interview so you don’t have to
- Turn it off and back on again
- New book: APPosite Concerns
2015 62
- Clown Trousers
- New project: a dance a day
- The Principled Programmer
- Selectively caring
- Week Seven
- Week six
- Week five
- Week four
- Staying power
- *-Oriented Programming
- Week three
- Week Two
- Tempus Fugit
- Week One
- Criticising the Four Freedoms
- Improving a presentation with slides
- “When I had that problem”
- PL personality theory
- The paradox of scripting
- The death of scripting
- On having things to say
- On running out of words
- Imperative Programming in Swift
- Protocol-Oriented Programming in Objective-C
- A brief interlude
- Functional Programming in Object-Oriented Programming in Functional Programming in Swift
- Classes in objects in object-oriented programming in functional programming in Swift
- Mutable objects in immutable objects in object-oriented programming in functional programming in Swift
- Finishing the ObjS story
- Further Advances in Objective-Swift
- Dynamic Method Dispatch in Object-Oriented Programming in Functional Programming in Swift
- Object-Oriented Programming in Functional Programming in Swift
- Object-Oriented Programming in Objective-C
- Programming is not a craft
- Did that work? Maybe.
- Getting better at doing it wrong
- Ch-ch-ch-ch-changes
- A kata above
- The Design of the Bazaar
- An acceptable tool
- Beware the IDEs
- Hiding behind messages
- It depends? It depends.
- GNU Terry Pratchett
- Linus’s Bystanders
- Inspired by Swift
- Fun and games (with rewritten rules) in Objective-C
- Objective-Curry
- A subtle [mis]understanding of monads
- It’s the little things
- Dark Silicon
- Like Java, only functional
- Learning phases
- On opinionation
- The Tankard Brigade
- UNIX-like pedantry
- The other pink dollar
- …and in the end there will be the command line.
- But where to go?
- Learn Mansplaining The Hard Way
- On switching to Linux
- Layers of Distraction
2014 81
- Rubbies and sores
- In which I resolve
- Quotes on JavaScript
- Object-Oriented Programming in 1714
- An odd thought
- Programming language advent
- That can’t possibly work.
- Détournement and Recuperation
- Today’s surprisingly short workflow-improving win
- Tech’s Meritocracy Problem
- Why nerd culture must die
- There’s No Such Thing as a General-purpose Processor
- Structure and Interpretation of Computer Programmers
- Structure and Interpretation of Computer Programmers
- Structure and Interpretation of Computer Programmers
- Up or to the right
- Structure and Interpretation of Computer Programmers
- Turn and face the strange
- Structure and Interpretation of Computer Programmers
- Reversing the polarity of the message flow
- The Humpty-Dumpty Guide to OOP
- Fuck. This. Shit.
- More on Layers
- The trouble with layers
- Yes, you may delete tests
- The laser physics of software
- Full-stack
- More Excel-lent Adventures
- What it takes to “win” a discussion
- APPosite Concerns
- Apple’s Watch and Jony’s Compelling Beginning
- Sitting on the Sidelines
- Why is programming so hard?
- Programming, maths and the other things
- Intellectual property and software: the nuclear option
- On Mental Health
- Contractually-obligated testing
- The Wealth of Applications
- One decade in
- PADDs, not the iPad
- The reasonable effectiveness of developer tools
- Goals upon goals upon goals
- Intra-curricular activities
- Planet of the Apps
- Things I believe
- Wristwatches in the Future
- Reflections on “Is TDD Dead”
- On a re-read you realise this isn’t really about Swift
- It doesn’t take an Oracle to see that coming
- Is TDD Dead? My questions
- The lighter side of open source
- I use mocks and I’m happy with that
- One meeellleeon
- Open Source and the Lehrer-von Braun defence
- It’s just like English
- Code longevity
- Preparing for Computing’s Big One-Oh-Oh
- Intuitive is the Enemy of Good
- How much programming language is enough?
- On too much and too little
- Some so-called expert
- The Software Leviathan
- Where am I going with this?
- My use of Latin: a glossary
- Depending on the self-interest of strangers
- Software, Science?
- Inside-Out Apps
- Principled Lizards
- Messily Veneered C
- The Objective-C protocol naming trifecta
- ClassBrowser’s public face
- Replacing the language
- Laggards don’t buy apps: devil’s advocate edition
- Missing Vital Content
- Moderately Valuable Cliché
- Set the settings set
- Meaningless Vapid Catchphrase
- The First Flaw
- It’s about solving problems
- Programming as a societal roadblock
- ClassBrowser: warts and all
2013 81
- Standing at the Crossroads
- A sneaky preview of ClassBrowser
- By your _cmd
- The Ignoble Programmer
- Agile application security
- How to answer questions the smart way
- Story points: because I don’t know what I’m doing
- Updating my ObjC web app on git push
- Automated tests with the GNUstep test framework
- Happy 19th birthday, Cocoa!
- Conflicts in my mental model of Objective-C
- Reading List
- Choosing the correct openings and closures
- NIMBY Objects
- Dogma-driven development
- The whole ‘rockstar developer’ thing is backwards
- Programmer Values
- Know what counts
- The future will be just like the past, right?
- On what makes a “good” comment
- Did that restructuring work actually help?
- Teaching Programming to People. It’s easy, right?
- Elegant Object-oriented Software Design via Interactive, Evolutionary Computation
- On Scientific Computing
- Representativeness in Software Engineering Research
- Garbage-collected Objective-C
- Programming Literate Manifesto
- How I got root on my University’s UNIX network
- Compatibility
- AJAX via jQuery in an Objective-C WebObjects app
- What’s the mobile app market up to, then?
- What Graham did next
- At the old/new interface: jQuery in WebObjects
- HATEOAS app structure explained through some flimsy analogy
- Are you an [X] programmer?
- Blame culture
- The code you wrote six months ago
- Separating user interface from work
- Fiction: The Ouroborus School pt 1
- On the design of iOS 7 and iconographoclasm
- Lighter UIViewControllers
- enum class in C++11
- An entirely unwarranted comparison between software engineering and astronomy
- Short Objective-C on the server update
- On protocols that aren’t
- I do the stupid so you don’t have to
- Meta-writing
- Shell scripts and Xcode
- APPropriate Behaviour is complete!
- When single responsibility isn’t possible
- More security processes go wrong
- Could effortless lecturers make everything seem too easy?
- Objective-C, dependencies, linking
- When security procedures go bad
- Specifications for interchanging objects
- Can Objective-C be given safe categories?
- APPropriate Behaviour is almost done
- As the Kaiser Chiefs might say: Ruby ruby ruby n00bie
- On designing collections
- On rewriting your application
- Rebooting the Programmer Competency Matrix
- Coupling in a Cocoa[ Touch] App
- A two-dimensional dictionary
- “You could simply do X” costs more
- The Liskov Citation Principle
- When all you have is a NailFactory…
- A note on notes
- How to version a Mach-O library
- How to handle Xcode in your meta-build system’s iOS or Mac app target
- I just updated Appropriate Behaviour
- Happy Birthday, Objective-C!
- How to find me
- Does the history of making software exist?
- An observation designed to aid the reading of books on software
- Anyone Can Write A Manifesto And You Can Too!™
- Talking about talking
- Detecting overflows, undefined behaviour and other nasties
- An open letter to Xcode
- Retiring the “Apple developers are insular” meme
- What happens when you add one to an integer?
- How big is an integer?
2012 64
- Server-side Objective-C
- Can code be “readable”?
- I published a new book!
- Surprising ARC performance characteristics
- Sideloading content into iOS apps
- Object-Oriented callback design
- How to excel at IDE design
- An apology to readers of Test-Driven iOS Development
- It’s not @jnozzi’s fault!
- Does that thing you like doing actually work?
- I made a web!
- A brief history of talking on the interwebs (or: why I’m not on app.net)
- What’s a software architect?
- On free apps
- Inheritance is old and busted
- On Null Objects
- Illuminative-C
- On community
- Password checking with CommonCrypto
- Sound bites considered harmful
- How people learn
- Coding. Standards.
- Objective-C literals and subscripts
- Supporting both ARC and MRC build settings
- App security consultancy from your favourite boffin
- Class clusters, placeholder objects, value-oriented programming, and all that good stuff.
- Is privacy a security feature?
- Thoughts on Tech Conferences
- BrowseOverflow as a Code Kata
- Using GNUstep libraries with Xcode
- Building a unit test target with GNUstep make
- So you’re off to WWDC
- Metacognition-driven development
- Messing about with Clang
- Classes are globals, too
- Software-ICs and a component marketplace
- Comparing Objective-C and Objective-C with Objective-C
- The debugger of royalty
- TDD and crypto in one place
- Culture, heritage and apps
- Test-Driven iOS Development
- On the magic of key agreement
- On my newer competence
- An apology and an opportunity
- UX is snake-oil bullshit
- Automate all the server Objective-C!
- Adding components to a GNUstep web / WebObjects app
- Using Objective-C on the server
- More about the privacy pledge
- Confine ALL the things!
- How to TDD with CATCH
- The security apprentice
- On advertising’s place in the tech industry
- Why we don’t trust -retainCount
- Synthesized ivars are private
- Is it an anti-pattern to use properties everywhere?
- Some LightReading about mobile app security
- Building an object-oriented dispatch system in Objective-C
- On privacy, hashing, and your customers
- On home truths in iOS TDD
- Security: probably doing it wrong
- Irresponsible tolerance
- On standards in free software engineering
- On the economics of software insecurity
2011 40
- These things are hard
- On explaining stuff to people
- On SSL Pinning for Cocoa [Touch]
- A bunch of monkeys with typewriters
- Mac App Sandboxing: it may not be for you (but that’s probably OK)
- Android: the missed opportunities
- Why your security UI sucks
- On Windows 8
- Don’t be a dick
- So you don’t like your IDE
- On device identifiers
- Remember the future?
- Want to hire iamleeg?
- On the new Lion security things
- TDD/unit testing video training for iOS developers
- Making computing exciting
- On what Marcus said
- On BizSpark
- A Cupertino Yankee in the Court of King Ballmer
- On the top 5 iOS appsec issues
- “Patently” secure
- On adopting testing, and CocoaDojos
- On platform-specific strategies
- Storing and testing credentials: Cocoa Touch Edition
- On cryptographic file storage
- Categories will bite you
- On internal quality
- A first look at appCode, and the future of Cocoa IDEs?
- On my own competency
- What happens when you jailbreak an iPad
- On counting numbers
- On NSInvocation
- On comment docs
- On Being a Software Person
- On Singleton(s)
- On, or rather in, Seattle
- On repeatable builds
- On squeezing out that last ounce of performance
- On Timeless Programming Books
- On the broken(?) Mac App Store
2010 63
- Protecting source code
- On the Mac App Store
- Did the UK create a new kind of “Crypto Mule”?
- On how to get crypto wrong
- A site for discussing app security
- On Fuzzy Aliens
- On secrets
- On utilities
- On phone support scams and fake AV
- On free Mac Anti-Virus
- Rumors of your runtime’s death are greatly exaggerated
- What do you think of this?
- An example of unit testing working for me
- On Ignoring the Tests
- On documentation
- YOUR development team needs security engineers
- On McAfee
- On voices that matter
- On stopping service management abuse
- On private methods
- On authorization proxy objects
- NSConference MINI videos available
- On Trashing
- On detecting God Classes
- On Fitt’s Law and Security
- Using Aspect-Oriented Programming for Security Engineering
- A solution in need of a problem
- Template class for unit testing Core Data entities
- Configuring CruiseControl.rb in under an hour
- On the extension of code signing
- On NSNull as an anti-pattern
- On type safety and making it harder to write buggy code
- Careful how you define your properties
- Why OS X (almost) doesn’t need root any more
- On improved tool support for Cocoa developers
- LLVM projects you may not be aware of
- On localisation and security
- Which vendor “is least secure”?
- Why passwords aren’t always the right answer.
- WWDC dates announced
- The difference between NSTableView and UITableView
- Regaining your identity
- Losing your identity
- On writing a book
- Rehearsals in beta!
- Security flaw liability
- One Window that is good for Mac security
- Why do we annoy our users?
- So it’s not just the Department of Homeland Security, then
- Integrating SSH with the keychain on Snow Leopard
- How to hire Graham Lee
- Pre-order professional Mac security books!
- Look what the feds left behind…
- More NSConf code signing fun
- iPh0wnage
- Anatomy of a software sales scam
- Code snippit from NSConference presentation
- On multitasking
- Oops. (updated twice)
- Core Data Haiku competition results!
- It’s just a big iPod
- Unit testing Core Data-driven apps, fit the second
- CocoaHeads Swindon, January and February
2009 46
- Nearly the end-of-year review
- On Operation Chokehold
- Consulting versus micro-ISV development
- Poke the other one, it’s got bells on
- Unfamiliar territory
- Next Swindon CocoaHeads meeting
- Unit testing Core Data-driven apps
- CocoaHeads Swindon is this Monday!
- Indie app milestones part one
- On XP mode
- The next million-dollar iPhone application
- A rap upon the noggin
- Website relaunch!
- Next CocoaHeads Swindon meet!
- NSConference videos
- Coming very shortly…
- Refactor your code from the command-line
- CocoaHeads Swindon tonight!
- Just because Brucie says it…
- KVO and +initialize
- Going indie!
- Reverse-engineering stringed instruments
- Beer improves perception of security
- WWDC wind-down
- Unit testing Cocoa projects in Xcode
- Follow-up-and-slightly-over on safety/security
- chord graphics
- Prepping for WWDC
- The rokeg blood pie^W^W^Wplot thickens
- Detect the gagh lurking in your system!
- Rootier than root
- On dynamic vs. static polymorphism
- Did you miss my NSConference talk?
- I may have not been correct
- On default keychain settings
- NSConference: the aftermath
- Controlling opportunity
- On noodles
- Cocoa: Model, View, Chuvmey
- When techs collide
- A lack of CocoaHeads
- Most favouritest and least favourite Macs
- Quote of the year (so far)
- Tautology of the year (so far)
- Quick antispam observation
- What’s new in 2009
2008 73
- Cocoa Memory Management
- Wikipedia == fail
- better security, not always more security
- Whither the codesign interface?
- You keep using that word. I do not think it means what you think it means.
- Free apps with macdev ticket
- Some bloody genius
- More on MacDev
- I’m sorry, I haven’t a Clu
- Solaris iPhone Edition
- All you never wanted to know about temporary files and were too ambivalent to ask
- It was asked for: the “features” post
- The view(s) from the hotel
- Properties about a year on
- MacDev 2009!
- Rhetoric, smoothly outlined
- AppleScript, for once
- Overdoing the risk management
- Me.com. Your identity, everywhere.
- Apple 2, iamleeg 0
- The twitter sitter hit a bitter critter
- Mac user Gmail account hack
- A better bit o’ twitter than the bitter twitter Tommy Titter bought
- Fuzzing as a security testing tool
- Walking a mile dans ses chausseurs
- Next CocoaHeads Swindon meeting
- So are Macs uber-pricey?
- Back from holiday
- Cocoa#, Mono and Me
- Microblogging
- Common sense writ large
- Designing a secure Cocoa application
- Ah, the sweet sound of my own voice
- CocoaHeads Swindon
- Objective-C NAQs
- WWDC day crosspost
- Local KDC on Leopard
- WWDC day 00000000000000000000000000000101
- WWDC day four
- WWDC: afp548 Venn competition
- WWDC day three
- WWDC aside
- WWDC day 2
- ObjC FAQ update
- WWDC – day one
- WWDC part 0
- This means business
- Little hack to help with testing
- Wistfully Wonderful Den of Coders
- Managers: Don’t bend it that far, you’ll break it!
- My name in lights
- Social and political requirements gathering
- The Dock should be destroyed, or at least changed a lot
- Yeah, we’ve got one of those
- Tracking the invisible, moving, unpredictable target
- Come back, purple button, all is forgiven!
- How exciting
- Broke track mounting
- Nice things about ObjC
- My discs have been Americanised!
- “Patently” obvious
- Don’t go there
- Mach-OFS: aforementioned polish and functionality
- Well, you could have told me
- Mach-O FS (no really, MacFUSE does rule)
- MacFUSE rules
- Non-subscription updates means charged?
- From the no-man’s-land of the format wars
- We! Haven’t! Thought! This! Through!
- Permissions whee!
- Side-by-side
- How to solve every problem in Cocoa
- Project: Autonomous Revolutionary Goldfish
2007 38
- Objective-C Design Patterns
- FSF membership
- Post #100!
- Upcoming Cocoa nerd stuff
- Verify your backups
- +1-415-312-0555
- OmniWeb 5.6 tip of the day
- The times, they mainly stay the same
- Nice-looking LaTeX Unicode
- Still trading as ClosedDarwin
- Old news
- Holding a problem in your head
- Template change
- Random collection of amazing stuff
- It’s update o’clock
- Ich habe mein Handy verloren
- The new netiquette
- A bit late for that, isn’t it?
- Apple and Google sitting in a tree, f-i-g-h…erm…t-i-ng
- Miniwindows
- Moving on
- A bit of backup script
- Official Google Mac Blog: Measuring performance of distributed notifications
- Bye bye data, hello…the same data
- All the more reason to like FOSDEM
- Summer of code
- Mail::Box++
- FOSDEM / GNUstep photos
- Apres ca, le FOSDEM
- Fairly cool update to GNUstep
- Where are we going?
- FAQ update
- Why Java is so damned lame, part exp(I*M_PI)
- TGD – expanding the field
- That syncing feeling
- Scary stuff
- Sacrilege!
- Eating one’s own dog food
2006 63
- 客観的なc計算機言語
- Copyleft
- TGD – John on acid
- TGD – begging the question
- TGD – I’m not dead yet!
- TGD – religion leaving the gene pool
- TGD Responses – selection for religion?
- e[Mac]s keyboard
- Blasty from the pasty
- One reason multiple inheritance sucks
- if ([self isKindOfClass:[whore class]]) [self promote];
- We’re off to see the Wozzard….
- I feel sorry for…
- Best. App. Evar!
- A spot of ultravaiolence, my droogs?
- Init dead; no casualties
- Gah
- WikityWebsite
- Parallels may, in fact, be completely dumb
- switching CPUs
- OPENSTEP/Parallels/VirtualPC/Spam
- ObjC FAQ update
- Comment word verification
- Better clear the office out, can’t remember what the carpet looks like
- New website
- Hell hath frozen over
- WTF is a Veo?
- NeXT Luminaries
- Report from WWDC
- Greetings, Jobs-pickers
- See you at WWDC…?
- Hidden gem
- Irritating annoying irritationnoyance of the day
- This year’s WWDC t-shirt?
- No worries, mate!
- Swedish chef
- Lest I forget
- Subconscious operation
- OS r us
- PVS file
- Use of vm_stat(1)
- free as in, well, free(1)
- NetBSD running on G5
- Parallels RC and OPENSTEP works!
- New c.l.o-c alternative FAQ
- This so goes on my CV
- Today’s broken user interface award…
- Complex things possible
- Parallels 2.1 beta 5
- Too much confidence is good for you
- The repair permissions fiasco
- Apple Technical Briefing: Scientific computing and the Intel transition
- Comrades in OpenStep
- Wolf! Wolf!
- The age-old problem
- Parallels and OpenStep: success!
- More progress on Parallels
- About NSMailDelivery and Message.framework
- Structure and Interpretation of Computer Programmers
- Structure and Interpretation of Computer Programmers
- Structure and Interpretation of Computer Programmers
- Structure and Interpretation of Computer Programmers
- Structure and Interpretation of Computer Programmers