Structure and Interpretation of Computer Programmers

I make it easier and faster for you to write high-quality software.

Monday, January 25, 2021

Ubiquitous computing

I, along with many others, have written about the influence of Xerox PARC on Apple. The NeXT workstation was a great example of getting an approximation to the Smalltalk concept out using off-the-shelf parts, and Jobs often presaged iCloud with his discussion of NetInfo, NFS, and even the magneto-optical drive. He’d clearly been paying attention to PARC’s Ubiquitous Computing model. And of course the iPad with Siri is what you get if you marry the concept of the DynaBook with a desire to control the entire widget, not ceding that control to some sap who’s only claim to fame is that they bought the thing.

Sorry, they licensed the thing.

There are some good signs that Apple are still following the ubicomp playbook, and that’s encouraging because it will make a lot of their products better integrated, and more useful. Particularly, the Apple Watch is clearly the most “me” of any of my things (it’s strapped to my arm, while everything else is potentially on a desk in a different room, stuck to my wall, or in my pocket or bag) so it makes sense that that’s the thing I identify with to everything else. Unlocking a Mac with my watch is great, and using my watch to tell my TV that I’m the one plugging away at a fitness workout is similarly helpful.

To continue along this route, the bigger screen devices (the “boards”, “pads”, and “tabs” of ubicomp; the TVs, Macs, iPads, and iPhones of Apple’s parlance) need to give up their identities as “mine”. This is tricky for the iPhone, because it’s got an attachment to a phone number and billing account that is certainly someone’s, but in general the idea should be that my watch tells a nearby screen that it’s me using it, and that it should have access to my documents and storage. And, by extension, not to somebody else’s.

A scene. A company is giving a presentation, with a small number of people in the room and more dialled in over FaceTime (work with me, here). It’s time for the CTO to present the architecture, so she uses the Keynote app on her watch to request control of the Apple TV on the wall. It offers a list of her presentations in iCloud, she picks the relevant one by scrolling the digital crown, and now has a slide remote on her wrist, and her slides on the screen.

This works well if the Apple TV isn’t “logged in” to an iCloud account or Apple ID, but instead “borrows” access from the watch. Because the watch is on my wrist, so it’s the thing that is most definably “mine”, unlike the Apple TV and the FaceTime call which are “my employer’s”.

posted by Graham at 13:10  

Wednesday, January 20, 2021

GNUstep development on LIVEstep

LIVEstep is a GNUstep desktop on a FreeBSD live CD, and it comes with the GNUstep developer tools including ProjectCenter. This video is a “Hello, World” walkthrough using ProjectCenter on LIVEstep. PC is much more influenced by the NeXT Project Builder than by Xcode, so it might look a little weird to younger eyes.

posted by Graham at 19:26  

Thursday, January 14, 2021

Data curation during a pandemic

Here’s what I’ve been working on (with others, of course) since February.

posted by Graham at 18:34  

Sunday, January 10, 2021

Episode 25: A Theory of Software Engineering

In fact, while this is about a theory of software engineering, that doesn’t enter until the end of the show. Most of it is an attempt to incorrectly summarise the history of software engineering through analogy to the history of punk music.

posted by Graham at 22:49  

Saturday, January 2, 2021

Novel bean incoming

You may remember in July I updated the open source Bean word processor to work with then-latest Xcode and macOS. Over the last couple of days I’ve added iCloud Drive support (obviously only if the app is associated with an App Store ID, but everyone gets the autosave changes), and made sure it works on Big Sur and Apple Silicon.

Alongside this, a few little internal housekeeping changes: there’s now a unit test target, the app uses base localisation, and for each file I had to edit, I cleaned up some warnings.

Developers can try this new version out from source. I haven’t created a new build yet, because I’m still in the process of removing James Hoover’s update-checking code which would replace Bean with the proprietary version from his website. I’ll create and host a Sparkle appcast for automatic updates before doing a binary release, which will support macOS 10.6-11.1.

posted by Graham at 13:44  

Thursday, December 31, 2020

Episode 24: Thoughts on Swift

A discussion on whether Swift was inevitable and whether it has achieved its goals, motivated by @tolmasky’s discussion with @lorenb on the Thoughts on Flash letter.

Along the way I talk about Apple’s strategic investment into Java: I’ve discussed that in greater detail on this blog so largely lean on this article in the podcast.

posted by Graham at 11:23  

Saturday, December 19, 2020

Episode 23: Licensing Software Engineers

In which I discuss the thorny issue of whether software engineering should be a licensed profession, mostly from the perspective of the ACM’s argument against it. Also considered is how, or even if, the whole Software Engineering Body of Knowledge (SWEBoK) could be examined in a single sitting, and whether an incremental approach like the Software Engineering Institute’s CMMI would work, or even be adopted.

posted by Graham at 11:38  

Wednesday, December 9, 2020

Episode 22: Attend More Meetings

As if you couldn’t guess, the topic is that software engineers should attend more meetings. I talk about the Maker’s Schedule, Manager’s Schedule idea, why it’s a false dichotomy, and why programmers can actually get to more meetings than they think without doing worse work. In fact, it’ll make their work better.

posted by Graham at 23:07  

Monday, November 30, 2020

Episode 21: No code is better than no code

In which we recommend deleting your code.

Steve McConnell’s More Effective Agile

Ward Cunningham introduces the debt metaphor for bad code, and my guess is it won’t be familiar as he presented it if you think you’re familiar with the term “technical debt”.

posted by Graham at 17:47  

Wednesday, November 18, 2020

Episode 20: what do we know about software engineering?

I explain the gap between episodes 19 and 20, and ask whether any of the practices we follow in software engineering are defensible.

As always, I welcome discussing this topic with you! Comment here, or send email to the address I read out in the episode.

posted by Graham at 19:17  
« Previous PageNext Page »

Powered by WordPress