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

Workshop repositories available on GitHub
See links further below

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% offEarly bird discount on all workshops
(only for first 3 participants)

20% offRepeat student discount
(for participants of any previous workshop)

Upcoming workshops

Due to other commitments, we're not offering any new workshops until further notice.

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:

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

Date:20 - 21 August 2016
Location:North London
Audience:Beginner/intermediate embedded device programming
Repository:Github repo
  • 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

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.