An open source collection of computational design tools for Clojure & ClojureScript.

New London workshops announced!
Get in touch for other locations

Clojure and its sibling ClojureScript are amazing languages, fostering simple designs, free-form sketching with code and rapid development cycles. The thi.ng collection of open source libraries supplements the ecosystem in the field of computational design. We approach the field from two opposite ends of the spectrum, using both extremely high-level languages (like Clojure), but also believe that working closer to the silicon can strongly inform our praxis. Hence, not all workshops offered here will be purely focused on Clojure / ClojureScript and we also offer occasional training for low-level, embedded device programming.

If you're interested in creative coding, interactive design, data visualization, embedded devices and want a fast-track to start harnessing and mastering new skills for web development, generative design, 2d/3d visualization, IoT, audio, digital fabrication, UI/UX prototyping, interactive installations etc. - then these workshops below might be just what the doctor prescribed...

Small groups of max. 6-12 people and taught by Karsten Schmidt, who's been leading intensive, result oriented, creative coding workshops internationally since 2009 (and too is the author of the thi.ng collection), these workshops will give you a strong foundation over a few intense days...

From own experience, we know the right combination of different approaches often yields the best results. We think important skills and lessons can be learned from blending languages & disciplines. There's a large void in the available educational offerings between short 1-day-or-less workshops (focused on single topics and often barely scratching the surface) and long-term, in-depth, academic training. The thi.ng workshops aim to fill this gap by targeting combined topics, providing participants with practical, hands-on experience, context and the confidence to further develop their careers with these skills.

No spamming!

We also can offer private workshops tailored to your specific needs or locations. Get in touch with any questions or register interest for a workshop in a city closer to you!

Projects created with Clojure(script) & thi.ng

Testimonials

"Thanks to you I haven't learnt so much in a long time and can't wait for the next workshop... And the next... And the next! :)"
— Javier A.
"Super fun! Will definitely recommend your workshops!"
— Anthony W.
"Great workshop and great to meet you... looking forward to the next one!"
— Bertrand L.
"Thanks for a great workshop. Digesting everything is going to keep me busy for a while!"
— Nick R.
"Thanks again for the workshop. Very informative and fun indeed."
— Juan U.
"I can really recommend Karsten's workshops as a good way to get started."
— Steve M.
"Thank you very much for 3 days full of new stuff I wanted to learn."
— Dawid G.
"Thanks, Karsten! I had a great time at the workshop."
— Anthony A.
"Truly amazed how much I've learned over the past few days! Rock on!"
— Thomas M.

15% off

Early bird discount on all workshops
(only for first 3 participants)

20% off

Repeat student discount
(for participants of any previous workshop)

Upcoming workshops

The schedules for each workshop state the topics aimed and prepared for. They're realistic estimates based on similar workshops taught in the past. However, each workshop group is individual and unpredictable until the event and so please consider these as a roadmap, which of course we will try to follow as closely as possible!

Embedded music & DIY Synth ARM programming with arm.thi.ng

Date:20 - 21 August 2016
Location:North London
Audience:Beginner/intermediate embedded device programming
Capacity:6 participants
 
Price:
£325.00 (+ 20% VAT in UK only),
(includes STM32F746G discovery board & cable)
Discount:15% for first 3 participants
Checkout code: WS-LDN-12-EARLY

We'll be using the STM32F746 discovery board, featuring a 216MHz Cortex-M7 CPU, 1MB Flash, 8MB SDRAM, 340KB RAM, 4.3" LCD multitouch screen, 2x USB, 48kHz audio, 2x microphone, microSD card, Ethernet

Work-in-progress sound samples: soundcloud.com/forthcharlie/sets/stm32f4

This workshop is NOT related to Clojure and has already run a few times by now, but as the thi.ng/synstack project is constantly being further developed, each session is slightly different. In this workshop we will introduce you to the exciting world of programming ARM embedded devices outside the world of Arduino, working 'baremetal' with the powerful ARM Cortex-M processor family. We will use the STM32F746 discovery board (included in workshop fee), the first device featuring the latest and most powerful CPU in the Cortex-M family. After an introduction to the ARM CPU family and baremetal topics, including basic examples demonstrating how to work with core peripherals of the board, we’ll then start using some C libraries from the thi.ng project (still unreleased) and learn to create a few fully featured applications based on our own programmable, polyphonic stereo synthesizer and a multi-track MIDI step sequencer with interactive touchscreen GUIs to control the instrument – all of which you can take home later.

Commented source code scaffolding will be provided to maximize time for experimentation.

Scheduled topics

  • Introduction to ARM CPU family and the STM32 development board
  • Open source toolchain setup (Eclipse, GCC, OpenOCD, ST-Link)
  • Overview/review of important C language concepts
  • Basic examples (clock config, timers, GPIO, 8x LED, LCD display)
  • Overview of multi-tasking via interrupts
  • Creating PWM outputs and basics on-board DAC examples
  • Digital audio introduction, theory & experimentation
  • Exploring oscillator behaviors w/ touchscreen GUIs using thi.ng/stm32-gui & jKnobman
  • Intro to USB device classes & file systems (play/record WAV files)
  • thi.ng/synstack DSP graph overview, audio/music theory, experimentation
  • Multi-track & multi-directional step sequencer
  • Introduction to MIDI & integrating with synth / sequencer
  • Generative music composition techniques (scales, cellular automata etc.)
  • Adding touchscreen GUI for whole synth

Requirements

This workshop is going to be fast paced, but primarily intended for beginners to embedded development. Previous programming experience in Arduino/C/C++ or Processing/Java/Python etc. is desired, but coding will be kept to a minimum for time reasons

All participants need to bring the following items:

  • OSX / Linux / Windows7+ laptop
  • Headphones
  • USB Memory stick (MS-DOS formatted)
  • USB OTG cable
  • USB MIDI controller if you have one (examples are prepared for Korg NanoKey / NanoKontrol2 mappings)

Included in workshop fee:

Please also see Terms & Conditions below.

ARM Cortex-M overview | Embedded C with Eclipse & GCC | Hardware Abstraction Layer | PWM | DAC | GPIO | Multitasking & interrupts | Touchscreen GUIs | Digital Audio & DSP fundamentals | USB device basics | MIDI over USB | Generative music techniques

Clojure & thi.ng for 3D Printing / Digital Fabrication

Date:10 - 11 September 2016
Location:North London
Audience:Novice/intermediate
Capacity:7 participants
 
Price:
£325.00 (+ 20% VAT in UK only),
(includes free 3D printed model)
Discount:15% for first 3 participants
Checkout code: WS-LDN-13-EARLY

Google DevArt Co(de)Factory

Google DevArt Co(de)Factory, 3.5m tall 3D printed structure designed w/ Clojure & thi.ng/geom

3D printing technology is becoming ever more affordable and there's no shortage of design tools. However, this workshop is for anyone interested in using an algorithmic approach to fabricate physical objects and do so using a language & toolset, which makes playing with data and geometry truly joyful. Over the two days of this workshop, you'll will learn hands-on some of the endless potential, which procedural generation can bring to the field of digital fabrication. And, you'll not only be able to take home your own 3D printed object, but too learn about important skills and pitfalls to watch out for in your future practice with these technologies.

Commented source code scaffolding will be provided to maximize time for experimentation.

Scheduled topics

  • Brief Clojure overview / introduction
  • Overview of relevant thi.ng libraries used for this workshop
  • 2D/3D geometry basics, defining & manipulating shapes programmatically
  • From points to lines, curves, polygons, surfaces
  • Creating complex shapes via polygon operations (clipping, offsetting, intersecting)
  • Applying geometry filters (smoothing etc.)
  • Designing for fabrication (tolerances, material properties, wall thickness, stability, angles)
  • Taking 2D designs into the 3rd dimension (lathe, extrusion, heightmap etc.)
  • Exporting assets in various fabrication formats (for 2D laser cutting & 3D printing)
  • Auto-arranging multiple export assets in a space/material saving manner (bin-packing)
  • Easy creation of complex 3D geometries via volumetric modelling & boolean operations
  • Cleaning geometries in Meshlab, Blender & Inkscape
  • Open source & commercial 3D print solutions
  • 3D printing of workshop examples

Requirements

Programming knowledge required, but only basic Clojure skills assumed. Users should also feel comfortable with using the command line.

All participants need to bring the following items:

  • OSX / Linux / Windows7+ laptop

Included in workshop fee:

  • 3D print of your workshop project
  • Food & hot drinks

Please also see Terms & Conditions below.

3D printing | Algorithmic & generative design | 2D/3D shape creation | 2D/3D conversion | Extrusions | Voxels | Geometry smoothing | Designing w/ material constraints | Automatic layouts / Bin-packing | Post-processing w/ Blender | Fabrication methods

Previous workshops

You can find details of past workshops below. For each workshop, all key exercises are recorded in a public Github repository for future reference:

High Performance ClojureScript - WebGL, WebRTC, Web workers & asm.js

Date:29 June - 1 July 2016
Location:North London
Audience:Intermediate Clojure / ClojureScript
Repository:Github repo
Report:Workshop report (blog post)
  • ClojureScript
  • Optimization techniques
  • WebGL
  • GLSL
  • asm.js
  • Emscripten
  • WebRTC video
  • 2D/3D geometry
  • Game development
  • GPGPU
  • C
  • Web workers
  • Websockets
  • Closure compiler modules
  • React.js
  • Figwheel

Generative & evolutionary design systems with Clojure & ClojureScript

Date:23 - 24 June 2016
Location:North London
Audience:Intermediate Clojure/ClojureScript
Repository:Github repo
Report:Workshop report (blog post)
  • Clojure
  • Clojurescript
  • Generative techniques
  • Twitter bots
  • Simulation
  • Physics
  • Agent systems
  • Evolutionary computing
  • Genetic programming
  • Digital fabrication
  • Geometry
  • OpenGL / WebGL
  • Domain-specific languages
  • Interpreters
  • Macros
  • Visualization
  • Importing / exporting assets
  • Rendering

Fast Track to Clojure / Clojurescript (Beginner)

Date:6 - 8 June 2016
Location:North London
Audience:Beginner Clojure/Clojurescript
Repository:Github repo
  • Clojure
  • Clojurescript
  • Data structures
  • Collections
  • Laziness
  • Functional programming
  • Sequence abstractions
  • Transducers
  • Polymorphism
  • Protocols
  • REST API
  • UI development
  • React.js
  • Concurrency basics
  • EDN
  • SVG
  • Visualization
  • Interactive development workflow

High Performance Clojurescript - WebGL, GPU computing, asm.js & Web workers

Date:27 - 29 April 2016
Location:North London
Audience:Intermediate Clojure/Clojurescript
Repository:Github repo
Report:Workshop report (blog post)
  • Clojurescript
  • WebGL
  • GLSL shader composition
  • asm.js
  • 2D/3D geometry
  • Game development
  • GPGPU
  • core.async
  • Web workers
  • Multi-threading
  • Websockets
  • Optimization
  • Closure compiler modules
  • React.js
  • Figwheel

Embedded music & DIY Synth ARM programming with arm.thi.ng

Date:23 - 24 April 2016
Location:North London
Audience:Beginner/intermediate embedded device programming
Repository:Github repo
  • ARM Cortex-M overview
  • Embedded C with Eclipse & GCC
  • Debugging
  • Hardware Abstraction Layer
  • GPIO
  • Multitasking & interrupts
  • Touchscreen GUIs
  • Digital Audio & DSP fundamentals
  • USB device basics
  • MIDI over USB
  • Generative music techniques

DIY Synth ARM programming with arm.thi.ng @ Resonate festival, Belgrade

Date:11 - 13 April 2016
Location:Parobrod Cultural Centre, Belgrade
Audience:Beginner/intermediate embedded device programming
  • ARM Cortex-M overview
  • Embedded C with Eclipse & GCC
  • Debugging
  • Hardware Abstraction Layer
  • GPIO
  • Multitasking & interrupts
  • Touchscreen GUIs
  • Digital Audio & DSP fundamentals
  • USB device basics
  • MIDI over USB
  • Generative music techniques
  • Collaborative music recording

Building Clojure / Clojurescript desktop apps with OpenGL4, OpenCL & Electron

Date:7 - 8 April 2016
Location:North London
Audience:Intermediate Clojure/Clojurescript
Repository:Github repo
  • Clojure
  • Java interop
  • UI design & implementation
  • OpenGL
  • OpenCL
  • Binary data
  • Shared memory
  • GLSL
  • Native libraries
  • GPGPU
  • Data visualization
  • Electron
  • Image I/O
  • Build process

High Performance Clojurescript - WebGL, GPU computing, asm.js & Web workers

Date:21 - 23 March 2016
Location:North London
Audience:Intermediate Clojure/Clojurescript
Repository:Github repo
  • Clojurescript
  • WebGL
  • GLSL shader composition
  • asm.js
  • 2D/3D geometry
  • Game development
  • GPGPU
  • core.async
  • Web workers
  • Multi-threading
  • Websockets
  • Optimization
  • Closure compiler modules
  • React.js
  • Figwheel

thi.ng x Studio NAND - Clojure(script) data visualization workshop (3 days)

Date:17 - 19 February 2016
Location:Berlin Mitte
Audience:Intermediate Clojure knowledge
  • Clojure / Clojurescript concepts
  • Live coding workflow
  • Interactive SVG & WebGL visualization
  • Reactive SPA (using Reagent)
  • Shape generation/manipulation
  • Shader composition
  • Linked Data basics & queries

Interactive DIY Synth & embedded GUIs: Getting started with ARM programming (2 days)

Date:23 - 24 January 2016
Location:North London
Audience:Beginner/intermediate embedded device programming
Repository:Github repo
  • ARM Cortex-M overview
  • Embedded C with Eclipse & GCC
  • Debugging
  • Hardware Abstraction Layer
  • GPIO
  • Multitasking & interrupts
  • Interactive touchscreen GUIs
  • Digital Audio & DSP fundamentals
  • USB device basics
  • MIDI over USB
  • Generative music techniques

DIY Synth - Getting started with bare-metal ARM programming

Date:5 - 6 December 2015
Location:North London
Audience:Beginner/intermediate embedded device programming
Repository:Github repo
Report:Audio examples (Soundcloud)
  • ARM Cortex-M overview
  • Embedded C programming with Eclipse & GCC toolchain
  • Debugging
  • Hardware Abstraction Layer
  • GPIO
  • Multitasking & interrupts
  • USB device basics
  • Digital Audio & DSP fundamentals
  • MIDI over USB
  • Music theory
  • Generative music techniques

Data visualization with Clojure(script) & thi.ng (Level 2)

Date:11 - 13 November 2015
Location:London
Audience:Intermediate Clojure knowledge
Repository:Github repo
Report:Workshop report (blog post)
  • Advanced Clojure / Clojurescript concepts
  • Channel based concurrency (CSP / core.async)
  • Graphs
  • Linked Data basics & queries
  • Async server setup & components
  • Interactive SVG heatmaps
  • Live coding
  • SPA w/ Reactive UIs (using Reagent)
  • Query visualization

Data visualization with Clojure(script) & thi.ng (Level 1)

Date:2 - 4 November 2015
Location:London
Audience:Beginner, intermediate Clojure knowledge
Repository:Github repo
  • Clojure / Clojurescript core concepts
  • Workflow & toolchain options
  • Collections & sequences
  • Data transformations w/ transducers
  • Protocols
  • Data visualization techniques, mapping & charting
  • CSV parsing & transformation
  • 2D/3D geometry generation & manipulation
  • SVG generation / mapping
  • React.js / Reagent examples
  • WebGL basics

Teacher

Karsten Schmidt portrait
Photo by Manomine

Karsten Schmidt

Karsten is an award-winning London based computational designer and researcher merging code, design, art & craft skills. Originally from East Germany and starting in the deep end of the early 8-bit demo scene (6502 assembly), for the past 27+ years he’s been adopting a completely trans-disciplinary way of working and has been laterally involved in a wide range of creative disciplines. With his practice PostSpectacular, he’s been actively exploring current possibilities at the intersection of software development, design, art and education and has been applying this mixture hands-on to a variety of fields: from ARM assembly & embedded programming to architecture, branding, generative design, data visualization, digital fabrication, games, interactive installations, motion graphics & music.

Karsten has been using Clojure daily since 2011, after working with Java for 15 years. Since 2009 he's been teaching, (often highly intensive) creative coding workshops internationally at various universities, incl. ETH Zurich, CIID Copenhagen, UID Umeå, Bezalel Academy Jerusalem, HEAD Geneva, UCP Porto.

When not creating, he regularly travels the world consulting, lecturing and teaching workshops about coding, open source and employing code as creative tool. He is a prolific contributor (and founder) of several large open source projects, was an early contributor to the Processing.org project and several books about programming and digital design. His work has been featured and exhibited internationally, including MoMA & Whitney New York, London Design Museum, Barbican Centre. His work is part of the Victoria & Albert Museum's permanent collection.

Terms & Conditions

Cancellation

Tickets are refundable under the following conditions:
  • 100% refund, if cancelled within 5 days of booking
  • 50% refund, if cancelled between 6-10 days of booking
  • No refund, if cancelled after 10 days since booking
Of course, you're entitled to a full refund should a workshop be cancelled by the teacher.

Venue details

Participants will be notified of the venue address and travel options at least 1 week prior to each workshop.

Daily schedule & sustenance

All workshops run from 10am - 5.45pm, incl. 1h lunch break and short coffee breaks (5 mins) every 2 hours (based on group decisions on the day).

If food & drinks are included in workshop fee (as per workshop description), you'll need to inform us of any special dietary requirements at least 48h before the workshop start.

Materials

All participants are required to bring their own laptop (OSX, Linux or Windows 7+). UK power points will be supplied.

All examples, exercises and other digital materials created during the workshop will be shared with participants at the end of the workshop.

Payments

All payment processing is handled securely by Shopify.

Accepted payment methods:

Contact

Get in touch via email, Twitter or subscribe to the newsletter.