2014 Code Learning Wishlist (and All the Rest)

I’ve thought that “New Year Resolutions” sounds bad compared to “Wishlist” – doesn’t it? Just an excuse to post a bunch of links and inventory topics I’d like to spend time on in 2014.

Coding

Don’t you know Processing? Quoting from the official website:

Processing is a programming language, development environment, and online community. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology.

As a language, it is basically Java (yes, you’re allowed to raise your eyebrow), which is quite friendly – if you’re new to Computer Science, do a favor to yourself and follow the free Stanford’s Programming Methodology (Java based, 28 lectures plus handouts, assignments, etc) by Professor Mehran Sahami – a really entertaining teacher.

drawing-with-codeBy the way, there is a project that ports Processing in the browser as Javascript code using both the canvas 2d and OpenGL contexts. As a basic introduction on Processing, see the Hour of Code video by Daniel Shiffman – he shows applications for Art installations, 3D modeling, etc. but tons of libraries make it suitable for a wide range of purposes. Here are some basic examples showcasing Processing features with (mostly) easy to follow code. Myself, I’m fond of Generative Art and Nature simulations (just FIY).

Speaking of which, I strongly recommend you The Nature of Code (self published by the very Daniel Shiffman), an ebook/printed book which headline says:

How can we capture the unpredictable evolutionary and emergent properties of nature in software? How can understanding the mathematical principles behind our physical world help us to create digital worlds? This book focuses on the programming strategies and techniques behind computer simulations of natural systems using Processing.

The Nature of CodeI’ve found myself excited as a kid following a birds flock simulation, or even really simple experiments where you lay down implement physics laws and watch your creatures exist and behave according to them. It is amazing how clean and short your code can be to realistically reproduce real world interaction (fluid viscosity, movement, etc).

CodingMathPlaying with ChaosNo matter how simple  Processing makes it, you have to know some math. In case you feel a bit rusty, Keith Peters has just started a website called Coding Math where he’s publishing on a regular basis videos teaching you the bits of trigonometry, vectors & C. you need to know in order to write code dealing with visual effects and objects simulation. He uses the HTML canvas element and Javascript, so you can lower the eyebrow that was raised since I wrote “Java” in a previous paragraph (it’s quite easy to port the code back and forth – apparently the Processing Foundation has been using Keith Peters code to showcase some features!).

There’s also a book from Keith Peters worth mentioning, titled “Playing with Chaos: Programming Fractals and Strange Attractors in Javascript”.

OrnamismReasAs an example of Generative Art, have a look at Mario Klingermann Incubator (left, a still from an endless animation), or Casey Reas – one of the Processing authors – amazing exhibition work (right).

Photoshop

I will continue to work on Photoshop extensibility – because this blog titles “Photoshop, Coding and all the rest” for a reason. As you might (or might not) know, around mid-2014 Photoshop will discontinue the support of Flex panels, which means that at some point I (and all the developers in the world willing to support the CC version – it isn’t clear whether CS6 will keep them or not), will have to port all my panels to HTML.

Luckily enough, all my paid products exist as Scripts (and not panels – just Advanced Local Contrast Enhancer provides you with both of them) so I’m not particularly pressed – I can wait for the technology to stabilize a bit. Script support shouldn’t break, unless Adobe want to kill +15 years of retro-compatibility in one snap.

VitaminBW_icon_120Early 2014 I will release a new product called VitaminBW (guess what is it all about) and the Version 2 of PS-Projects. Then I will pause a bit: I would like to devote some time (besides Generative Art coding and Nature simulation) experimenting a merge of all the Photoshop’s extensibility layer technologies – Scripting, Generator and HTML Panels (leaving alone TCP/IP connections).

I’m very interested in the 3D context of the HTML5 canvas element. Not because I particularly dig 3D, but because it is hardware accelerated (GPU pumped) – i.e. damn fast. Eventually I’d like to test the possibility to use it as a pixel crunching machine to generate imagery within the Panel, to be finally passed back to Photoshop (if you’re faster/better than me implementing this, please let me know!).

WebGL Programming GuideI’m reading also (and want to go through it this year) the WebGL Programming Guide by Kouichi Matsuda and Rodger Lea. Among the plethora of books on WebGL and OpenGL this one is really clear and has never failed yet to anticipate a doubt of mine with a thorough explanation and some example code. Not that GLSL (actually GLSL ES 3.0, the OpenGL scripting code flavor used to program Shaders in WebGL) is the easiest of the languages, but if you’ve passed some hours with all the links I’ve scattered in this post, somehow it gets less scary.

All the Rest

I’ve just noticed that I’ve switched priorities – it’s now Coding, Photoshop and All the Rest. Which is OK – I’ve been spending my +8 hours a day on Photoshop since version 5 (not CS5) and post-production / pre-press is still what brings 80% of the food on the table; but it’s not anymore fireworks of passion – I admit, or should I say: I observe.

After about 15 years of use, I tend to notice flaws rather than functionalities, limits rather than features, missed opportunities rather than wow-factors. Grumbling is fine, but I’m happy to breath some fresh air with coding. Not that I feel particularly talented, though – on the contrary: I spend an awful amount of time on problems that officially trained (and much younger than me) programmers would solve in a snap. Plus, I have to keep learning mostly in the nighttime, or put it in standby (because life intervenes) for some days or weeks – which makes me constantly lose the thread. But that’s the way it’s going to be this year too hence no more complaining.

After all, many friends of mine (professionals in the business I’m in) are experiencing some similar, slight switch of focus – it has to be physiologic somehow.

Secchia river Flooding On the personal side, after the earthquake in my region in 2012, we’ve had whirlwind in 2013 and flooding in 2014. Next years the odds are for locusts – at least my bets are just halfway between locusts and a falling satellite. See you there!