Philosophy Mondays: Human-AI Collaboration
Today's Philosophy Monday is an important interlude. I want to reveal that I have not been writing the posts in this series entirely by myself. Instead I have been working with Claude, not just for the graphic illustrations, but also for the text. My method has been to write a rough draft and then ask Claude for improvement suggestions. I will expand this collaboration to other intelligences going forward, including open source models such as Llama and DeepSeek. I will also explore other moda...

Intent-based Collaboration Environments
AI Native IDEs for Code, Engineering, Science
Web3/Crypto: Why Bother?
One thing that keeps surprising me is how quite a few people see absolutely nothing redeeming in web3 (née crypto). Maybe this is their genuine belief. Maybe it is a reaction to the extreme boosterism of some proponents who present web3 as bringing about a libertarian nirvana. From early on I have tried to provide a more rounded perspective, pointing to both the good and the bad that can come from it as in my talks at the Blockstack Summits. Today, however, I want to attempt to provide a coge...
Philosophy Mondays: Human-AI Collaboration
Today's Philosophy Monday is an important interlude. I want to reveal that I have not been writing the posts in this series entirely by myself. Instead I have been working with Claude, not just for the graphic illustrations, but also for the text. My method has been to write a rough draft and then ask Claude for improvement suggestions. I will expand this collaboration to other intelligences going forward, including open source models such as Llama and DeepSeek. I will also explore other moda...

Intent-based Collaboration Environments
AI Native IDEs for Code, Engineering, Science
Web3/Crypto: Why Bother?
One thing that keeps surprising me is how quite a few people see absolutely nothing redeeming in web3 (née crypto). Maybe this is their genuine belief. Maybe it is a reaction to the extreme boosterism of some proponents who present web3 as bringing about a libertarian nirvana. From early on I have tried to provide a more rounded perspective, pointing to both the good and the bad that can come from it as in my talks at the Blockstack Summits. Today, however, I want to attempt to provide a coge...
>400 subscribers
>400 subscribers
Share Dialog
Share Dialog
In the last two posts we looked at control structures as part of the programming series here on Tech Tuesdays. We saw that loops let us repeat a sequence of instructions, which is one way of having to avoid writing the same code over and over again. Today we will learn about another and more powerful technique: the definition of new words that can then be used anywhere in the program. You may recall the example of nautical terms from the post on programming languages:
For instance, if I tell another sailor to “jump the main halyard” they will know exactly what to do because this is an expression with a precise meaning. I could of course also have given a lengthy description using general purpose instead of nautical English by saying something like “find the rope that runs from the top of the big sail to the top of the mast and then back down and then pull on it by jumping up and letting your weight help you.”
Learning the nautical terms once means that now every time you hear the term you have access to the sequence of steps for which it stands. In programming we do this by defining a new word that becomes part of the vocabulary available in that program (and potentially in other programs) going forward.
Let’s start with a simple example that we already encountered in the post on syntax. Not every programming language has a built in way of calculating the so-called factorial of n, which is the product of every number from 1 up to and including n. Here is a short piece of code that accomplishes this
In the last two posts we looked at control structures as part of the programming series here on Tech Tuesdays. We saw that loops let us repeat a sequence of instructions, which is one way of having to avoid writing the same code over and over again. Today we will learn about another and more powerful technique: the definition of new words that can then be used anywhere in the program. You may recall the example of nautical terms from the post on programming languages:
For instance, if I tell another sailor to “jump the main halyard” they will know exactly what to do because this is an expression with a precise meaning. I could of course also have given a lengthy description using general purpose instead of nautical English by saying something like “find the rope that runs from the top of the big sail to the top of the mast and then back down and then pull on it by jumping up and letting your weight help you.”
Learning the nautical terms once means that now every time you hear the term you have access to the sequence of steps for which it stands. In programming we do this by defining a new word that becomes part of the vocabulary available in that program (and potentially in other programs) going forward.
Let’s start with a simple example that we already encountered in the post on syntax. Not every programming language has a built in way of calculating the so-called factorial of n, which is the product of every number from 1 up to and including n. Here is a short piece of code that accomplishes this
No comments yet