Structure and Interpretation of Computer Programmers

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

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  

Tuesday, November 17, 2020

The Silent Network

People say that the internet, or maybe specifically the web, holds the world’s information and makes it accessible. Maybe there was a time when that was true. But currently it’s not: probably not because the information is missing, but because the search engines think they know better than you what you want.

I recently had cause to look up an event that I know happened: at an early point in the iPod’s development, Steve Jobs disparaged MP3 players using NAND Flash storage. What were his exact words?

Jobs also disparaged the Adobe (formerly Macromedia) Flash Player media platform, in a widely-discussed blog post on his company website many years later. I knew that this would be a closely-connected story, so I crafted my search terms to exclude it.

Steve Jobs NAND Flash iPod. Steve Jobs Flash MP3 player. Steve Jobs NAND Flash -Adobe. Did any of these work? No, on multiple search engines. Having to try multiple search engines and getting the wrong results on all of them is 1990s-era web experience. All of these search terms return lists of “Thoughts on Flash” (the Adobe player), reports on that article, later news about Flash Player linking subsequent outcomes to that article, hot takes on why Jobs was wrong in that article, and so on. None of them show me what I asked for.

Eventually I decided to search the archives of one particular blog, which didn’t make the search engines prefer relevant results but which did reduce the quantity of irrelevant results. Finally, on the second page of articles from Daring Fireball about “Steve Jobs NAND flash storage iPod”, I found Flash Gordon. I still don’t have the quote, I have an article about a later development citing a dead link story that is itself interpreting the quote.

That’s the closest modern web searching tools would let me get.

posted by Graham at 07:59  
Next Page »

Powered by WordPress