SkillAgentSearch skills...

Watson

WATSON: Wasted but Amazing Turing-incomplete Stack-based Object Notation

Install / Use

/learn @genkami/Watson
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

WATSON: Wasted but Amazing Turing-incomplete Stack-based Object Notation

ci status Go Reference

WATSON

(image from walfie gif)

Watson makes it hard but fun to write configuration files.

Index

Installation

Download latest binaries from releases.

Or you can build binaries from source code.

$ git clone git@github.com:genkami/watson.git
$ cd watson/cmd/watson
$ go install

Overview of Language Specification

For complete information, please visit full specification.

Watson internally has a stack-based virtual machine called Watson VM. Each character of Watson files is considered as an instruction to Watson VM.

Integer

Integer (Int) is a 64-bit signed integer.

Basic instructions for Int are as follows:

  • B : pushes a zero to the stack
  • u : increments a value at the top of the stack
  • b : shifts a value at the top of the stack to the left by one bit
  • a : adds two values on the top of the stack

You can create arbitrary integers by using these instructions:

$ echo 'BBuaBubaBubbbaBubbbbaBubbbbbaBubbbbbba' | watson decode -t json
123

String

String is a byte array.

There are two instructions that manipulate String values:

  • ? : pushes an empty string
  • ! : appends a lowest byte of the top of the stack to a string at the second top of the stack

Every time an empty string is pushed, the ASCII characters used for stack manipulation are updated. The above six instructions B, u, b, a, ?, and !, are changed to S, h, a, k, $, and -, respectively. Pushing an empty string again resets to the orignal characters.

$ echo '?SShaakShaaaakShaaaaakShaaaaaak-SShkShaaaaakShaaaaaak-SShkShakShaaakShaaaaakShaaaaaak-SShkShakShaakShaaakShaaaaakShaaaaaak-' | watson decode -t json
"tako"

Object

Object is a set of key-value pairs.

There are two instructions that manipulate Object values:

  • ~ : pushes an empty Object
  • M : pops three values v, k, o in this order, set o[k] = v, and then pushes o

Note that once ? is invoked these are changed to + and g respectively.

Examples

You can see more examples here.

Hello World

$ echo '
~?ShaaaaaarrShaaaaarrkShaaarrk-
SameeShaaaaaarrShaaaaarrkShaarrkShrrk-
ShaaaaaarrShaaaaakSameeShaaarrkShaarrk-
ShaaaaaarrShaaaaarrkShaaarrkShaarrk-
ShaaaaaarrShaaaaarrkShaaarrkShaarrkSharrkShrrk-$
BubbbbbbBubbbbbaBubbbbaBubbaBubaBua!
BubbbbbbBubbbbbaBubbbaBubbaBubaBua!
BubbbbbbBubbbbbaBubbbbaBuba!
BubbbbbbBubbbbbaBubbbaBubba!
BubbbbbbBubbbbbaBubba!M?
ShaaaaaaShaaaaakShaakShak-
ShaaaaaaShaaaaakShaaakShk-
ShaaaaaaShaaaaakShaaaakShak-
ShaaaaaaShaaaaakShaaaakShakShk-
ShaaaaaaShaaaaakShaaaakShaak-
^!!!!!!!!!!!!!g
' | watson decode -t yaml
first: true
hello: world

Deploying Nginx Using Kubernetes

$ echo '
@~?
SShkSharrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaaarrkShaaaaaarrk-$
BBubbaBubbbbbba!BBuaBubbaBubbbbbaBubbbbbba!BBubbbbaBubbbbbaBubbbbbba!BBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubaBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubbbaBubbbbaBubbbbbaBubbbbbba!BBuaBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubbaBubbbbbaBubbbbbba!BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBubbaBubbbbaBubbbbbaBubbbbbba!M?
SShkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SShkShaaaaarrkShaaaaaarrk-SShaarrkShaaaaarrkShaaaaaarrk-SShkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SShkShaaaaarrkShaaaaaarrk-Samee+$
BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubbbbbaBubbbbbba!BBuaBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubbaBubbbbbaBubbbbbba!?
SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaaaarrkShaaaaaarrk-SShkShaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShaaarrkShaaaarrkShaaaaarrkShaaaaaarrk-g$
BBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubbbbbaBubbbbbba!BBubaBubbbbbaBubbbbbba!BBuaBubbaBubbbbbaBubbbbbba!BBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubaBubbbbaBubbbbbaBubbbbbba!~?
SShkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrk-SShkSharrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrk-SShkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-$
BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubaBubbaBubbbbbaBubbbbbba!BBuaBubbbaBubbbbbaBubbbbbba!BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBubbbaBubbbbaBubbbbbaBubbbbbba!M?
SShkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrk-SShkSharrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrk-SShkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrk-SShkShaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SShkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-$
BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubaBubbaBubbbbbaBubbbbbba!BBuaBubbbaBubbbbbaBubbbbbba!BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBubbbaBubbbbaBubbbbbaBubbbbbba!M?
SShkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrk-SShkSharrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrk-SShkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrk-SShkSharrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-$
BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubaBubbaBubbbbbaBubbbbbba!BBuaBubbbaBubbbbbaBubbbbbba!BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBubbbaBubbbbaBubbbbbaBubbbbbba!MMM?
SShkSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaaaaarrkShaaaaaarrk-Samee+$
BBubaBubbbbaBubbbbbaBubbbbbba!BBuaBubbaBubbbbbaBubbbbbba!BBubbbbaBubbbbbaBubbbbbba!BBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubbbaBubbbbbaBubbbbbba!BBuaBubaBubbbbbaBubbbbbba!BBuaBubbbbbaBubbbbbba!BBuaBubaBubbbbaBubbbbbaBubbbbbba!BBuaBubaAAME#?
SShkSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaaaarrkShaaaaarrkShaaaaaarrk-Samee+$
BBuaBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubbbbbaBubbbbbba!BBubbaBubbbbaBubbbbbaBubbbbbba!BBuaBubaBubbbbbaBubbbbbba!BBubbbaBubbbbbaBubbbbbba!BBubbaBubbbaBubbbbbba!BBuaBubbbbbaBubbbbbba!BBubaBubbbbbaBubbbbbba!BBuaBubbaBubbbbbaBubbbbbba!BBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubaBubbbbaBubbbbbaBubbbbbba!~?
SShkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrk-SShkSharrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrk-SShkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrk-SShkSharrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SShkSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShkShaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaaaaarrkShaaaaaarrk-SShaarrkShaaaarrkShaaaaarrkShaaaaaarrk-$
BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBuaBubaBubbaBubbbbbaBubbbbbba!BBuaBubbbaBubbbbbaBubbbbbba!BBubaBubbaBubbbaBubbbbbaBubbbbbba!BBubbbaBubbbbaBubbbbbaBubbbbbba!M?
SShkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SShaaaarrkShaaaaarrkShaaaaaarrk-SSharrkShaarrkShaaarrkShaa
View on GitHub
GitHub Stars269
CategoryDevelopment
Updated1mo ago
Forks13

Languages

Go

Security Score

100/100

Audited on Feb 20, 2026

No findings