Diagnostics
Output
Gestalten in Code (GiC or giclang or gic) is a small C-style language for creating two-dimensional generative graphics and teaching programming fundamentals.
It is born as part of research in speculative software design at the University of Applied Science Potsdam. Inspired by the simplicity of Design by Numbers and Processing and the malcontent of the complexity modern software development presents to beginners. giclang is designed as a learning tool in the area of creative coding. There are other languages that are more powerful and feature-rich. gic is not intended to replace these excellent creative coding tools.
It is an attempt to answer the question: "How can we still teach programming in the zeitgeist of vibe code?" With the advent of large language models, that became powerful enough to generate high quality code, we need tools methods that rethink our dicatical concepts.
The environment leaves out features we are accustomed to from traditional coding environments, e.g. edit predictions or full coding agent integrations. The built in agent is primed to provide a socratic discourse rather than a just solving the problem at hand. It asks questions and guides. The agent panel even does not allow copy and paste. It forces students to type out the code.
GiC has a deliberately narrow surface and only one way to do things. Features like interactivity, typography, or image loading are left out on purpose. Also animmation and complex structures like objects and arrays are not supported.
Once students have grasped the basic constructs of programming they are encouraged to move on to more complex tools like p5.js, Processing or even leave the c style languages behind and use VVVV or cables.gl to name a few.
What can and can't GiC do?
The idea of GiC is to create a constrained programming environment. Therefore many features where left out intentionally.
It can:
- have conditional statements like
if,else,else ifusing operators like==,!=,>,<,>=,<=,&&,||,!,- - do loops (we call it
repeat) - create variables for numbers, booleans and strings (it can even concat strings, wow!) and reassing them
- print strings, numbers, and booleans to its own console (for debugging)
- create colors as named colors, hex values or oklch colors with alpha channels
- draw points, lines, circles and ellipses, rectangles and quads, triangles, and arcs
- colirize fills and strokes and backgrounds
- generate random numbers and use random seeds (thank you p5.js totally stolen from you)
- do arithmetic operations like
+,-,*,/,% - do more complex math using
sin,cos,radians,degrees,pow,sqrt,abs,round,floor,ceil - create user defined functions
It cannot:
- do animation (might come at some point, not sure yet)
- read and write files
- load or draw images
- Use font files
- import other files (i.e. libraries or modules)
- change its canvas size (yes everything you do must look good in 100 × 100 pixels)
- shadow variables
- even more complex structures like Arrays, Objects, or Classes are not supported (Arrays might come eventually)
And also:
- It has its own editor that works online and as a progressive web app for those parts of your journey where you need to write code but have no internet.
- The editor can export images from your sketches and generate a standalone HTML document that can be run without a server (double click and open it. file://… protocol goodness)
- The desktop app runs on Mac, (Windows and Linux not yet tested but it will soon-ish be done) and works fully offline with documentation built in.
- In the desktop app is a built in agent that can be connected to Opencode (Zen and Go), OpenRouter or ChatGPT subscription to use as a coding assistant.
- That assistant cant generate the code it only can provide guidance. You still need to write the code yourself. (Remember "learn code the hard way! Because the hard way is the right way!")
- Has its own filetype called
.gic
Built with, Inspired by, Runs on
Inspiration
- Design by Numbers
- Processing
- p5.js
- Basil.js
- craftinginterpreters.com by Robert Nystrom
- Gestalten in Code (2016)
Tools
- React
- Vite
- Tauri
- Monaco Editor
- FlexLayout
- Base UI
- Pixel Art Icons (MIT License)
Runs on
About the Author (me) and the Intentions
Fabian Morón Zirfas (that"s me) has been teaching programing to designers since 2012/13 using various tools like, Processing, p5.js, Basil.js, Arduino, JavaScript, HTML, CSS Node.js and more. During these years the complexity of the tools around the programming increased. Which is actually wired since humankind invented more stuff to make it easier. In many workshops time is spent with setting up environments and tools, gathering documentation and resources. Then the amount of possibilities overwhelmes the students.
This lead to the conclusion to do it the other way around and go back to simpler times.
One place where all students need is bundled. Like the Processing IDE did for many 20 years ago. Write one line of code and get immediate feedback. Sane defaults. Simplicty. Every concept in expressed in a 100 by 100 image. It should be enough for communicating the concepts of programming.
About AI in the Project and Education
This project was built with the assistance of AI. The core is implemented manually with the AI as tutor to prove the system of the socratic method and for the auhor to understand the concepts of programming languages. You can see the commit frequency below.
| Month | Commits | Average commits / calendar day |
|---|---|---|
| April 2026 | 1 | 0.03 |
| May 2026 | 14 | 0.45 |
| June 2026 | 0 | 0.00 |
| July 2026 | 54 | 1.74 |
| August 2026 | 127 | 4.10 |
| September 2026 | 567 | 18.90 |
Source: full Git history reachable from main, including merge commits. History spans 10 April–30 September 2026.
To tooling around it was mostly generated with a human in the loop for guiding the AI (see the September). For every learning endevour using AI is like taking the forklift to the gym. There will be weights moved with no effect. Besides the political, environmental and ethical implications of AI, it still can be used to broaden access to knowledge. We are looking forward to the point where the agent for this project does nmot have to be a subscription but rather a part of the operating system itself. We are not there yet but it is on the horizon.