Code: (text anonymizer)

Apr 8, 2014 | Code, Processing / Java, Workshops

New GitHub Gist: Simple Lorem Ipsum text replacer for Java/Processing. It is useful for anonymizing text content in data sets (email, SMS, direct messages etc.) Upper/lower case is preserved as best as Java String supports (Locale twiddling might be needed in some cases) and will leave all non-letters intact.

The class uses two built-in dictionaries: A list of replacement words and a “whitelist” of words that should be kept as is. For brevity, these are set as inline preset strings here. They can easily be changed in the code or changed to be customizable by adding a mechanism for setting the dictionaries.


, , , , , , ,

A Cornucopia of Quantification: QS apps + tools, Pt.1

Mar 28, 2014 | Code, Geo / locative, Links, Software, Workshops


Outline for my March 29 Quantified Self workshop (now sold out, the next date will April 12.) Diagrammed with XMind.

For anyone who has been paying attention it will be clear that 2013 was arguably the year that Quantified Self exploded. It could also be argued that the focus on pedometers and personal fitness augmentations represents a sort of “QS Lite”, limiting itself to ideas that can be conveniently explained and marketed in the form of soundbites. Good for business, visionary not so much.

The sheer number of new tracking services and apps that have emerged in the last year is both a blessing and a curse. It’s exciting to see new approaches being explored, even though the vast majority are simply re-hashing the same basic ideas. How many workout apps can the market possibly support? QS might be on the brink of becoming a cash cow, but for now it’s mostly a bubble.

Some newcomers (Moves, Tictrac, Reporter ++) do feel like a real evolution, both in terms of user experience and their underlying design concepts. Data hackers and coders should be happy to note that some developers understand their needs and value their participation. A decent export mechanism (cloud-based or not) and maybe even a GitHub repo with sample code is a good start.


, , , , , , , , , , , , , , ,

Workshop, NYC: Quantified Self and Data Visualization with Processing

Mar 19, 2014 | Code, Processing / Java, Workshops

Visualization: history

Code: ULastFM_Simple, parses and displays CSV data.

Workshop: Quantified Self and data visualization with Processing
Date: Saturday, March 29, Williamsburg, NYC

This workshop is now sold out. I will do another one in just a few weeks – watch this space.

This workshop will introduce participants to Quantified Self and personal data tracking, with the aim of creating custom code-driven visualizations.

We will use Processing to parse, analyze and visualize data (CSV, JSON) generated by popular tracking tools, establishing basic principles and useful workflows that can be applied to common QS scenarios.


  • Parsing and plotting typical QS data
  • Data structures for personal data
  • Mapping of locative and time-based data
  • Correlating multiple data sources to discover patterns of behavior
  • Useful tracking tools that are both open and code-friendly


Suitable for: Anyone with a basic knowledge of Processing or common programming languages. Familiarity with common data formats will be helpful, but not required. Ideally, participants should install and research the tracking tools mentioned above before attending.

Previous QS teaching:

Full disclosure: I am currently enjoying one year of complementary Rescue Time Premium access in connection with my teaching efforts. I also just created a Rescue Time affiliate account. RT is not the only time-tracking tool out there, but I’ve used the service for years because it provides open data access combined with just the right level of detail for QS purposes.

If you’re looking for true OCD by-the-second granularity activity tracking, have a look at tools like Manic Time, Selfspy or Slogger.


, , , , , , ,

ITP: Sound As Data workshop (code)

Nov 12, 2013 | Code, ITP-Parametric, Processing / Java, Workshops


Nov 11, 2013 | Marius Watz: Sound as Data Workshop, ITP NYU
Download: See GitHub

As part of my on-going ITP residency I am doing a few workshops on specialized code topics. This weekend I revisited my previous work on using sound as an input for visuals or geometry, using Processing and Minim. It was only a 3 hour workshop, but we covered the basics:

  • Opening line in or sound file inputs
  • Accessing sound buffer
  • Normalizing volume
  • Using damping to control FFT behavior

All code has been posted on GitHub, original description below. Continued…

, , , , , ,

Workshop NYC, Sept 21: Intro to Generative Art with Processing

Sep 12, 2013 | Code, News, Processing / Java, Workshops

Marius Watz: KBG (sound viz)

Workshop: Intro to Generative Art with Processing
Sat Sept 21, Park Slope, NYC

Participants will be introduced to the principles of Generative Art using the Processing programming tool. A generative system can take many forms, but is essentially a set of rules that when translated to code executed is capable of producing an endless variety of forms or visuals. We will look at how a generative visual can be created, from sketching in code to creating professional quality output for print or video.

The examples we will go through include useful some essential building blocks and tools-of-trade, applied to real-world problems. Topics include how to do basic composition and color in code, to more complex issues like creating geometry and animation. By adding GUI controls and print / video output to our sketches we have the makings of a full-fledged generative system.


, , , , , , ,

Workshop NYC, Sept 22: Processing – Geometry and animation

Sep 9, 2013 | Processing / Java, Workshops

From the Catenary Madness series (created with Toxiclibs, see code on OpenProcessing)

Workshop: Advanced Processing – Geometry and animation
Sun Sept 22, Park Slope, NYC

Processing is a great tool for producing complex and compelling visuals, but computational geometry can still be challenging for many coders. In this workshop we will break down some of the basic principles and making them more accessible through a set of relatively simple techniques.

Participants will learn strategies for creating generative visuals and motion in code, from defining particle systems and kinetic behavior to the creation of 3D mesh geometry. To this end we will learn to take advantage of libraries like Modelbuilder and Toxiclibs, which will take care of most complex tasks and allow us to focus on creative work.

The workshop will cover topics from the very basic (vectors and mesh creation) to advanced (physics and shading.) The focus will be on solving real-world problems through reliable techniques, making advanced techniques accessible by reducing the complexity involved. This workshop should be useful to anyone interested in more advanced techniques for coding visual forms and geometry. Being a hard core coder or math expert is not a requirement, as the focus of the workshop examples is on simplified but powerful techniques to create geometry and motion.


, , , , , ,

ITP-Parametric: Lecture #1

Sep 8, 2013 | ITP-Parametric, Theory, Workshops

Posted: Lecture slides from the first class session of Parametric Design and Digital Fabrication (ITP NYU). Features work by SOFTlab, Nervous System, Francis Bitonti, Leander Herzog, Daniel Widrig, Shajay Booshan, Benjamin Maus (and more.) Downloadable from Scribd.

, , , , , ,

ITP: Parametric Design Syllabus

Sep 5, 2013 | Code, ITP-Parametric, Workshops


This is the class breakdown and syllabus for Parametric Design for Digital Fabrication (ITPG-GT.2921). The session breakdown is likely to change as we progress, it currently does not mention exercises or hands-on work with fabbing tools. Rest assured we will be looking at that early on.

Last class is December 2nd.

#1 Introduction (Sept 6)

  • Meet and greet
  • Introduction: Parametric design and generative systems as conceptual frameworks
  • Digital fabrication – the tools, recent history and potential implications
  • Generative systems – examples and applications
  • The notion of co-discovering with machines


, , ,

Code: ProcessingData library (2.0 Data API for 1.5.1)

Sep 5, 2013 | Code, Libraries, Processing / Java

Code: ProcessingData library Source, Exported library (ZIP)

During my CIID workshop I did a quick hack to make the Processing 2.0 Data API available for 1.5.1 users. The code from the 2.0 core needed only a few minor adaptations. The data methods (like loadTable()) that are native to PApplet in 2.0 are provided through a simple helper class (

The data classes are one of the best features of 2.0, cleanly written and consistent as they are. But if you’re sticking with 1.5.1 out of preference or necessity this might be of use. All glory is owed to the Processing team, I simply repackaged the code. As proof of the quality of the 2.0 code, it took about 30 minutes to extract and refactor the data code. The biggest hurdle was exporting the JAR file and figuring out it had to be compiled to be Java 1.5 compatible

The code can be found on my Teaching repo on GitHub, the exported library can be downloaded as a ZIP file. See the included LoadSaveTable.pde example from Shiffman for a demo, it shows how to use the ProcessingData class to call loadTable() etc.

Disclaimer: Minimal testing was performed, any issues should be reported on GitHub.

, , , ,

Blog theme update

Sep 4, 2013 | News, Web dev

In anticipation of my upcoming ITP activities I have given the blog a much-needed theme update. My chosen poison is the Miniml theme by Leland Fiegel, hacked and dismembered at will to suit my purposes.

Updates are prone to breaking things, so any feedback and error reports will be appreciated. Really.



Sign up for the workshop mailing list to receive updates. Examples from previous workshops can be seen on

Also: NYU ITP, Fall 2013: Parametric Design for Digital Fabrication

CODE & FORM supports the coding and teaching activities of Marius Watz. It contains workshop documentation and miscellaneous code (mostly Processing + Java), covering issues related to "creative coding", generative systems, computational geometry and digital fabrication.

Links: Twitter, Flickr, GitHub, OpenProcessing, Generator.x,

Prints for sale: Arcs04 series

Prints for sale: Arcs04 series

Links + social

Recent Posts