Bubbling Beaker Awards (Award #33, February 07 2025)

I’ve modified the original post so the code formatting works properly again.

2 Likes

This week’s prize, Bubbling Beaker Award® #31, is – like the most recent prize – presented to @eu1. In this award-winning post, he demonstrates a method for allowing the printed text of an object to vary depending on whether it is being referred to using a definite or indefinite article.

The sample code presented is a point solution requiring designation of a custom indefinite article property for each noun in question. It would probably be possible to install code to generically set the required flag at the I6 level, but this fundamentally more mad science approach is left as an exercise for the reader.

This is eu1’s fourth BBA, and the second one awarded to him in a row. Congratulations again, eu1!


… and with that prize issued, we’ve wrapped up a full year of Bubbling Beaker Awards. I’ve pretty much run out of posts that I had banked for nominations, so I think it’s a good time to call an end to the series. I may issue awards on an occasional basis, should anyone post anything particularly clever, on an ad hoc basis.

Until then: Thanks for reading, and keep those beakers bubbling!

12 Likes

Thank you for this great series, Otis!

4 Likes

Yes, thank you for this year of mad science!

1 Like

Even though I’m not doing BBAs on a regular basis any more, I did say that anything “particularly clever” might receive an award in the future. This week’s prize, Bubbling Beaker Award® #32, certainly qualifies and is presented to @Draconis. In his award-winning post, he demonstrates a method for effectively deploying free-standing conditions within an I7 table by embedding those conditions within I7 texts.

It’s a terrible hack but beautiful in its effect. There’s not much to explain that isn’t immediately obvious from looking at the example; the genius is in spotting this potential for productive abuse in the first place.

This is Draconis’s fifth BBA, putting him just behind Zed for the title of Maddest Scientist. Congratulations, Draconis!

2 Likes

The wonderful thing about I7 texts is that they’re also effectively lambdas! Dealing with phrases and rules as first-class entities is somewhat awkward, but texts can often do the same job in a more straightforward way.

Versatile Listing relies on a similar hack, using a text to decide which property or phrase to print: passing “the description property” or a phrase that accesses the description to a list-writer is difficult, but “[the description of the object in question]” is easy!

1 Like

I happened across another interesting item that seems notable to me. This week’s prize, Bubbling Beaker Award® #33, is presented to @vlaviano, who was a significant presence on the forum for a while but hasn’t been around for some years.

In this award-winning post, vlaviano demonstrates a method for triggering a taking all action via a phrase. The technique is dependent on the Editable Stored Actions extension by Ron Newcomb, which may be out of date for 10.1.2, though there is an earlier iteration on the same thread that has no dependencies (but is a little less robust).

The I7 compiler won’t allow the author to do this with a direct call such as try taking all, because “all” does not correspond to a single object and because the meaning of the word is context-sensitive to the world state so can’t be defined at compile time. The demonstration code gets around this limitation by creating an I6 phrase that does the job of “parsing all” on demand.

This is vlaviano’s first BBA, but I have run across many of his posts which were useful in understanding deeper parts of the system, and I appreciate his contributions to the mad science tradition. Congratulations, vlaviano!

4 Likes

An all-I7 method for going about this particular trick occurred to me:

The all-thing is a thing.

Instead of an actor taking the all-thing (this is the translate taking all-thing to taking all rule):
	repeat with item running through things that can be seen by the actor:
		try the actor taking item.

The basic accessibility rule does nothing when the noun is the all-thing.

Then you can just use a phrase like:

try [insert actor here] taking all-thing.

I was surprised to learn today that the built-in deciding whether all includes rules are specific to the player, but if you wanted to redefine those you could probably modify the above to take that activity into account.

Note that this does not invalidate vlaviano’s award! Quite often the important part of mad science is thinking up the goal.

3 Likes