Category: Programming
-
JSON Schemas in Go
In 2024 I did some work on a project at Google (the Go version of Genkit) that used JSON schemas. JSON schemas let programs specify how JSON data should be structured. Basically, you can say things like ‘this JSON data must have a field “name” which is a string and a field “age” which is…
-
The Conversation Game
Some people are arguing that artificial intelligence technology has advanced so much, so quickly, that we are now close to artificial general intelligence (AGI): a computer program that has the intelligence and flexibility of a human. Popular programs like ChatGPT are examplars of what modern AI can accomplish: they can summarize text, they can answer…
-
Leaving Google
I’ve left Google after working there for 19 years. For most of that time I’ve been fortunate in being able to work on the Go programming language. Go was started by Rob Pike, Ken Thompson, and Robert Griesemer in the fall of 2007. I joined the team in June, 2008, about the same time as…
-
Go experience report: the append function
When the Go language was first publicly released it contained a package named container/vector. The type vector.Vector was a name for the type []interface{}. Vector supported methods like Len, Cap, At, Set, Insert, Delete, Push, Pop, and several more. You can see the source code at on Github. An interesting aspect of the package is that…
-
Piece of PIE
Modern ELF systems can randomize the address at which shared libraries are loaded. This is generally referred to as Address Space Layout Randomization, or ASLR. Shared libraries are always position independent, which means that they can be loaded at any address. Randomizing the load address makes it slightly harder for attackers of a running program…