Assuming there’s a user is sometimes a bad idea

Frank Shearar wrote “Squeak has a very strong (historic) assumption that there’s a(n interactive) user interface. I stumbled across another occurrence of this assumption the other day. Let’s take a look at the problem, and how to fix it.”

Breaking inter-package dependencies through Squeak’s pragma preferences

Frank Shearar wrote “The Preferences class provides a common place for all parts of a Squeak Smalltalk image to register their switches: Which update stream do we want to follow? What colour do we want our Browsers? Do we allow assignments to block parameters? Do we allow underscores in selector names? Preferences range from low level things that…”

Resumable exceptions for separating packages

Frank Shearar wrote “Resumable exceptions form a key component of the Smalltalk infrastructure. They are one of the standard means of communicating along the call stack, much like Common Lisp’s condition system. They can, however, add a “cross layer” dependency.”

One thing and one thing only

Frank Shearar wrote “Package dependencies appear in many ways, some more surprising than others. Let’s see what we’ve recently dug up in the trenches.”

A Double Fugue in Traits

Frank Shearar wrote “Traits provide a means of composing an object’s functionality out of smaller, simpler parts. Verbs being limited in number, especially good ones, sometimes you want to compose two traits that share names. Today we’re going to look at how to resolve the dispute.”

Non-blocking parsing

Frank Shearar wrote “Last month we saw one way how to produce decent error messages while parsing. I’ve also mentioned that parsing with derivatives is a non-blocking parsing technique. What’s that actually mean?”

Reporting parser errors

Frank Shearar wrote “We like parsers. One of the things that really kills the vibe with parsers is a rubbish error message. Given the technical interestingness of parsing with derivatives, can we get useful error messages out of them?”

Just In Time Development

Frank Shearar wrote “Since the dark ages of yesteryear Squeak has had a very interesting button in its Debugger – “create”. Today we’re going to teach it a new trick.”

Squeak 4.4 released

Frank Shearar wrote “Squeak 4.4 Ulam Spiral is finally ready to be born. I semi-volunteered to be its release manager, and I’d like to look back over the last six months and talk a bit about what’s happened.”

Compacting cyclic parsers

Frank Shearar wrote “When I wrote my Smalltalk deriving-with-parsers library, I ran into an issue with compaction: cycles in the parser. Self-referencing parsers (corresponding to left- and right-recursive rules) occur naturally, so I couldn’t hide from the problem. I investigated two ways to introduce circularity as well as how to compact these graphs: delegates, and “sutures”.”

Turning language recognisers into language generators

Frank Shearar wrote “I did the Coursera Natural Language Processing course at the beginning of the year. Apart from the introduction to probability it gave me, the thing that sticks most in my mind comes from one of the exercises. In the exercise we had to define a probabilistic parser to parse (an extremely limited subset of) English.…”

Parsing with Derivatives

Frank Shearar wrote “We use many different languages writing software. Not just the usual kinds – Ruby, Haskell – but data formats like HTML or JSON, and protocols like SIP or HTTP. We have a lot of tools dealing with these languages – yacc, bison, ANTLR. And Matt Might and his colleagues have added a new spanner to…”

Decomposing the Ulam spiral

Frank Shearar wrote “The Ulam spiral is a well-known mystery to mathematicians: draw a 1 in a grid, 2 in the cell to the right, 3 above the 2, and so on in a spiral: 17 16 15 14 13 18 5 4 3 12 19 6 1 2 11 20 7 8 9 10 21 22 23…”

Intercession without source changes

Frank Shearar wrote “Methods in a Smalltalk object live in the method dictionary of its class. A method dictionary maps Symbols to CompiledMethods. From the virtual machine’s perspective, anything that understands #run:with:in is compatible with a CompiledMethod, in the sense that the VM sends this message to things that it will execute. As a result, it’s easy enough…”

Monticello -> Git

Frank Shearar wrote “Back in the dark years of 2003, Avi Bryant and Colin Putney tried to use CVS to version their Smalltalk code and failed dismally. They decided to scratch their itch, and Monticello was born, a DVCS centred around managing the structured text of Smalltalk code. Years have passed, and nowadays we have Mercurial and Git…”

Serving JSON at Altitude

Frank Shearar wrote “Colin Putney recently released a preview version of a new Smalltalk web framework, Altitude. Altitude seeks to be a RESTful Seaside: an HTTP framework that uses RESTful URLs, ubiquitous use of Xtreams, and learning the lessons of years of Seaside development. Let’s take it for a spin!”