# Stroming by Bart Simons

## The work and its context

Stroming sets curved sequences of coloured marks against circles, grids and other geometric forms. Some marks appear to cross the geometry; others disappear behind it. In the four outputs examined here, this alternation makes a static picture suggest directional movement without requiring the image itself to animate. The relationships between ground, geometry and stream are more consequential than any one motif in isolation. [^S05][^S07]

Bart Simons released the 256-work project through Art Blocks Factory in June 2021. It is project 86 on its Ethereum contract, and the current index records 256 invocations against a maximum of 256. The artist's own project page also identifies the edition size and month. These records establish the series around which the following code and visual analysis is organised. [^S01][^S02][^S14]

Simons describes a system in which hash-derived attributes vary scene, colour and other properties. The inspected program makes those decisions concrete through a scene-selection array, literal palettes and a field of angles that guides repeated marks. The normal rendering path calls noLoop; the inspected #80 also remained visibly unchanged between two observations. [^S14][^S02][^S05]

## Conception and development

The artist's own Stroming page supplies a concise description of colourful streams arranged around geometric shapes and identifies the work as a June 2021 Art Blocks edition. It also provides a numbered gallery of the mints. The inspected description does not, however, supply a detailed chronology of experiments, revisions or influences. [^S14]

The program offers evidence of design decisions without standing in for such a development account. Its scene-selection array repeats one grid routine while retaining several other geometric arrangements. This lets a related drawing mechanism encounter different structures: a circular centre, a divided grid or a set of diagonals can direct attention differently even before coloured marks are added. The repetition in the selection array also means that the number of slots is not the number of distinct routines. [^S02]

Colour is constrained across the whole picture. After an optional reversal, two palette entries determine ground and geometry, while the remaining entries supply the streams. That is a rule joining different visual roles rather than a series of unrelated colour choices. Its aesthetic consequences can be assessed in individual works without claiming that the artist intended a particular emotional response. [^S02]

The token metadata includes a scene named 10PRINT. That name suggests a reference, but this review recovered no artist explanation of the name or the lineage it might imply. Similarly, the palette names are not present in the literal colour arrays of the inspected program. They can identify recorded traits without being treated as evidence of an otherwise undocumented development story. [^S04][^S02]

## How the work was constructed

The inspected program combines a geometric scene with trails of repeated marks. Its sixteen-entry scene-selection array contains fourteen distinct routines: the grid routine occupies three entries. Counting entries as sixteen different algorithms would overstate the library. The routines include rings, nested squares, grids, arcs, bars and a diagonal pattern, as well as a stream-only arrangement. Their differences provide compositional structures against which the flowing marks can be read. [^S02]

The token hash supplies both direct parameters and seeds. Thirty-two hexadecimal byte values determine such properties as scene selection, palette, padding, mark shape, stream count, step length and angular range. Separately, the noise seed parses the first sixteen characters of the full hash string, including its initial 0x. That means fourteen hexadecimal digits follow the prefix, rather than sixteen. A second slice, characters at indices sixteen through thirty, is parsed in base fifteen for the random seed. [^S02]

The base-fifteen expression deserves particular care in any reconstruction. A hexadecimal f is not a valid base-fifteen digit, so parsing stops there. If it is the first character in the slice, the result is NaN rather than a numeric prefix. If there is no f, the remaining digits are still interpreted with base-fifteen place values. This is an observed property of the expression, not evidence of the artist's intention. Its downstream effect must be checked against the exact p5 implementation rather than assumed from a different random generator. [^S02]

Sixteen literal palettes contain between five and seven HSB colours. For eligible palettes, an inversion condition reverses their order before the first two colours become background and geometric colour. Those entries are then removed from the pool available to streams. The rule relates ground, geometry and marks without guaranteeing that every resulting image will seem harmonious. Palette names in token metadata are a descriptive layer; they do not appear in these colour arrays. [^S02][^S04]

The flow field stores 180 by 180 angles. Perlin noise sampled at each grid position is mapped between two hash-derived angular limits. A wider range can make nearby sampled values point in more varied directions, but a label such as Wildest belongs to the feature record and should not be treated as a separately inspected feature-extraction algorithm. Grid lookup also depends on viewport-derived quantities, so the rendering dimensions matter when studying exact reproduction. [^S02]

Each stream begins at a pseudorandom position within a padded region and chooses one available colour. Successive marks use the field angle at the current point, then the point advances by a hash-derived step length. Hue and saturation increase with the step index while brightness decreases. Rectangles rotate with the field; circles make direction legible through their succession. These mechanisms can produce a ribbon-like sequence without drawing one continuous path. [^S02]

Mark size uses an absolute-value expression involving the step index. It can decrease toward a minimum and then increase; the program does not prescribe a simple progression from thin to thick at every step. Rectangles retain a fixed width while their height changes, and circles vary in diameter. The visible outline consequently depends on mark overlap, field direction and size variation together. [^S02]

Many scene routines interleave geometric marks with stream calls, giving later elements opportunities to cover earlier ones. The stream-only routine is an exception to the idea that every scene has an underlay. The split and quad branches also alter the available scene list before selecting multiple scenes. Under a uniformly distributed first byte, their conditions cover six and three values respectively out of 256. These are conditional input ranges, not a promise of six split and three quad outputs in a particular minted edition. [^S02]

The texture sequence contains an easily missed discarded intermediate result. The program builds a first graphics buffer and copies it into another, but then replaces the destination with a new graphics object. That replacement receives a second noise-based texture, and only this final texture is drawn onto the artwork in multiply mode. The earlier work can still advance the seeded random sequence, so it cannot simply be deleted from a reconstruction without checking the consequences. It is inaccurate to describe two visible texture layers being applied to the finished canvas. [^S02]

The setup routine calls noLoop, and the drawing routine constructs the image once under normal p5 operation. No artist-defined input handlers or audio mechanism appear in the inspected program. These code findings support describing its normal output as static. They do not independently establish what a particular browser displayed or what a researcher heard. The submitted runtime observations are retained separately from this code review. [^S02][^S05]

## The mint

The fresh index records a first mint on 11 June 2021, activation on 17 June, and both the second mint and completion on 20 June. The collection page presents 20 June as its release date. Those records refer to different events; the first token's earlier existence does not itself establish when public purchasing opened. Full timestamps remain in the evidence record. [^S01][^S02]

The interval from the second mint at 19:06:00 to completion at 19:49:08 is 43 minutes and 8 seconds. This is arithmetic between named indexed events, not a verified public sellout duration. Likewise, a gap between activation and the second mint cannot prove that purchasing was impossible throughout that gap. Transaction classifications and contemporary sale information would be needed to establish the public-sale chronology. [^S02]

The token records place #10 at 19:06:08 and #20 at 19:06:31. Since #0 existed earlier, the later invocation number should not be converted into a claim that twenty-one new works minted during those thirty-one seconds. The AB5D holding, #80, is recorded at 19:14:12. These observations locate particular tokens within the sequence without reconstructing every recipient or payment. [^S03]

The currently configured price is 0.085 ETH. No contemporary announcement establishing the original public price was recovered in this review, so this setting is not presented as proof of what every recipient paid. Current secondary-market listings are excluded because they do not resolve the original mint terms. [^S02]

## Copyright and licensing

The current indexed artwork label is CC BY-NC 4.0. Although the record supplies no terms link, the named Creative Commons standard can be identified. Its deed describes sharing and adaptation subject to attribution, indication of changes and a noncommercial restriction. Linking that standard explains the reported label; it does not establish the history of earlier grants or revisions. [^S02][^S12]

The submitted contract-wide census found variation in licence labels and missing links. That observation is not a reason to treat this recognisable standard as unidentifiable. The specific project label remains the relevant record, while historical terms remain an unresolved research question. [^S08][^S02]

No separate permission notice was found in the inspected artist program. Public availability of that program does not by itself establish a reuse grant. Its declared p5.js 1.0.0 dependency has a separate upstream licence file identifying LGPL version 2.1; that library licence should not be attributed to Simons's program without evidence. [^S02][^S13]

The metadata's 10PRINT scene name suggests a historical reference, but neither a public-domain dedication nor a particular third-party code licence was recovered for that reference. The resemblance is therefore not classified as proof of a rights grant. This essay's original prose is dedicated to CC0, separately from the artwork, artist software and dependency. [^S04][^S02]

## Close reading of examples

The comparison uses #0, #6, #80 and #249, with full token identifiers 86000000, 86000006, 86000080 and 86000249 on the project's Ethereum contract. Each was inspected in its original renderer, and a fresh retrieval of the complete edition corroborates the token identities. The selection includes different scene arrangements and mark shapes, rather than treating four early tokens as a representative survey. [^S03][^S04][^S05][^S07]

In #0, lighter green concentric rings remain clearly visible against a dark green ground. Cream, pink and ochre strips pass across and around them. The centre disc gives the eye a fixed point, but the brighter marks repeatedly draw attention outward. Long arcs crowd the upper and right portions of the square, while shorter, more isolated runs occupy the lower left. The result is less symmetrical than the circular scaffold initially suggests. [^S07]

The rings also interrupt the strips. A broad green curve can obscure part of a brighter run, while another run crosses a ring without interruption. This change of apparent depth makes it difficult to settle on one simple foreground and background. The code's interleaving of geometry and stream calls offers an explanation for that effect. The image reads as an accumulation of operations, yet its shared colour family keeps those operations related. This is an interpretation of the observed output, not an attributed statement of intention. [^S07][^S02]

The AB5D holding, #80, uses a sage field and pale circular forms: a disc toward the upper left, a large central ring and a smaller ring at lower right. They are lighter than the ground. Coral, cream and ochre strips form a strong diagonal gathering from the lower left toward the middle right. The circles differ in size and treatment, so the geometric scaffold has a more uneven rhythm than #0's concentric arrangement. Fresh ownership data places this token in the current linked-wallet set returned for AB5D. [^S03][^S05][^S11]

In #80, brightness can compete with scale. The large pale ring occupies much of the middle, but a narrow coral run can be more conspicuous against the muted field. Several strips disappear into the light geometry and re-emerge beyond it. That alternation makes the eye follow colour across interruptions rather than simply trace a complete contour. Fine grain is visible across both quieter fields and more active regions, lending the whole image a common surface. The inspected program supports one final composited texture, not two visible texture layers. [^S05][^S02]

The lower-right ring in #80 provides a useful counterweight to the upper-left disc. Its open centre leaves room for coloured marks to remain visible inside the geometric form. By contrast, the disc presents a broad, relatively quiet patch. Their difference creates two kinds of pause within the busier sweep of strips. The composition's apparent flow is therefore partly established by places where the marks are interrupted or given more space. [^S05]

In #249, four groups share a red ground. White pane-like grids occupy the upper-left and lower-right groups; broad white arcs appear at upper right, and a grid of white squares occupies the lower left. Navy and pale blue strips bend across all four groups in a related direction. There are no dividing rules around the quadrants. Separation comes from the placement of the groups and the intervening red space. The common colour and directional tendency hold the four arrangements together while their distinct geometry makes comparison immediate. [^S07][^S04]

In #6, broad grey-blue diagonals sit against a nearly black field. Pink, crimson, pale and burgundy circles form curved chains over and around them. The chains have scalloped edges and separate ends, so their direction emerges through succession rather than the orientation of each mark. Some diagonals interrupt the chains, while elsewhere circles cover a bar. Beside the rectangular marks of #0 and #80, these circles make the individual units more conspicuous. The same field-driven principle can therefore suggest either strips or strings of beads. [^S07][^S02]

Two screenshots of #80 showed no visible change after the image had rendered. This limited observation is consistent with the program's noLoop call. It does not independently reproduce the submitted pixel-signature test or prove behaviour across every browser. No audio was auditioned and no interaction test was performed in this coordinator review; the inspected artist program contains no audio mechanism or artist-defined controls. [^S05][^S02]

## Significance and limitations

Stroming places two ways of organising a picture in contact: recognisable geometry and sequences of marks guided by a field. The geometric elements can supply centres, divisions and intervals, while the marks complicate those structures through overlap and directional change. Interleaving their drawing operations allows one kind of form to interrupt the other. This relationship is a more specific account of the work than a general claim about randomness or uniqueness. [^S02][^S07]

The palette rule similarly creates relationships rather than independent colour choices. Background and geometric colour are extracted from an ordered palette, leaving the other entries for streams. Inversion can alter that order before extraction. The program therefore coordinates several parts of the composition through one decision while leaving placement and field-driven movement to create further differences. Whether those relationships feel quiet or forceful remains a matter for looking at individual outputs. [^S02]

The visual comparison spans single and quad compositions, and rectangular and circular marks. These distinctions matter because they change how the eye follows a sequence. A rectangle can indicate direction through its own orientation; a circle relies more heavily on its neighbours. A divided composition reveals several scene choices at once. The comparison should not be mistaken for a visual census of every work. [^S04][^S07]

For preservation, the base-fifteen seed and discarded texture buffer show why apparently incidental details deserve attention. Changing the parser base would change the numeric input, while removing earlier random draws could change the final texture. A faithful reconstruction needs the actual procedure and compatible library behaviour, not only a description of its apparent intention. These are findings from code inspection; no independent reconstruction is claimed here. [^S02]

Unresolved research questions:

- Locate further primary artist accounts of development and scene selection.
- Recover contemporary price and allocation evidence before defining a public-sale duration.
- Compare the indexed program with a pinned chain retrieval and test its library-dependent seed handling.
- Locate the feature extractor and establish the origin of palette and scene labels.
- Recover any separate artist-code grant and historical artwork terms. [^S02][^S04]

[^S01]: Art Blocks. [Stroming by Bart Simons, project page](https://www.artblocks.io/collection/stroming-by-bart-simons). Accessed 2026-09-18.
[^S02]: Art Blocks public GraphQL index. [Art Blocks indexed project record for stroming-by-bart-simons (GraphQL projects_metadata, including script)](https://artblocks-mainnet.hasura.app/v1/graphql). Accessed 2026-09-18.
[^S03]: Art Blocks public GraphQL index. [Art Blocks indexed token records for Stroming invocations 0, 1, 10, 20 and 80 (GraphQL tokens_metadata)](https://artblocks-mainnet.hasura.app/v1/graphql). Accessed 2026-09-18.
[^S04]: Art Blocks public GraphQL index. [Art Blocks indexed token sweep of the complete Stroming edition (GraphQL tokens_metadata, 256 rows)](https://artblocks-mainnet.hasura.app/v1/graphql). Accessed 2026-09-18.
[^S05]: Art Blocks. [Art Blocks live renderer for Stroming #80, static verification](https://generator.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/86000080). Accessed 2026-09-18.
[^S07]: Bart Simons. [Rendered preview images for Stroming invocations 0, 80, 249 and 6 (platform media proxy)](https://media-proxy.artblocks.io/1/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/86000080.png). Accessed 2026-09-18.
[^S08]: Art Blocks public GraphQL index. [Census of the licence field across all projects on the Art Blocks contract (GraphQL projects_metadata)](https://artblocks-mainnet.hasura.app/v1/graphql). Accessed 2026-09-18.
[^S11]: Art Blocks. [AB5D collector profile and linked wallet set](https://www.artblocks.io/profile/ab5d). Accessed 2026-09-18.
[^S12]: Creative Commons. [CC BY-NC 4.0 deed](https://creativecommons.org/licenses/by-nc/4.0/). Accessed 2026-09-18.
[^S13]: p5.js contributors / Free Software Foundation. [p5.js 1.0.0 licence](https://raw.githubusercontent.com/processing/p5.js/1.0.0/license.txt). Accessed 2026-09-18.
[^S14]: Bart Simons. [Stroming: artist project page](https://www.bartsimons.com/projects/stroming/). Accessed 2026-09-18.
