Category Archives: Software Development

Confoo: what I learned today (1)

I’m attending the Confoo conference this year. As with all those conferences, it’s a lot of information flowing, so this my self-assigned exercise to remember at the end of the day the nice things I learned. So what did I learn today?

I started with a non tech discussion about freelancing. I’ve never freelanced, but seems everybody else is doing it, so that 101 presentation was great. Some random thoughts out of it: hourly rate = yearly rate / 1900 * 1.25 to account for the overhead of insurance, retirement, … Have a strong relationship with the head hunter, avoid exclusivity. Corporations can pay off using dividends, salary or blend, and protects you. Capital sin for a staffing agency: sending your resume to a client without letting you know first. The presenter, Martin Handfield (stratweb.ca) seemed a trustworthy guy, at least I can imagine he got quite a few extra resumes out of that session 🙂

Then, a bit of a refresher on Java EE 7. It’s been a while I have left the EJB shores, so it’s fun to hear back terms like container manager transactions, brought back old memories. I like the way it’s going, using annotations like TransactionScoped and dependency injection rather than monolithic bean structured. JAX-RS Client might actually be something we could use, in place of using HttpClient directly. Seems to have some potential to simplify client code communicating with REST end points in the same way Jersey simplified the exposition of REST end points.

The following session on CSS by Rachel Andrew was great: multi-column layout, flex box and grid models, CSS regions and exclusions (go here for more). I could not resist trying the multi column layout directly on our LTI Test app:

TwoColLayoutAfter lunch, a going back the basics of Linked Data and RDF. Now that I have been acquainted with JSON-LD and REST API design, going back to the core was a good refresher. I finally understood why SPARQL, the RDF query language, seems to be a standardized alternative to one-off API to expose data and allowing cross pollination of content that APIs silos make otherwise very difficult (open data movement).

And to wrap the day, a lively presentation on Responsive Design. Is it only about media queries? In a way the web was meant to be responsive from early on (liquid flow). So nothing new around the sun in this talk, but a few snippets of good sense: viewport approach being a coarse approach (basically wrapping x alternate designs based on x viewport sizes) to which we would prefer a more progressive adaptability (almost having each component be responsive on their own with softer transitions). And also that responsive design is not the only answer: sometimes a distinct mobile experience (most likely delivered using an App) might actually be a better answer as it can natively and fully leverage the device features (GPS/Camera/Offline/…). An app does not have to replicate the website features, but needs to offer a distinctly mobile experience.

That’s it for the day! Back at it tomorrow…

Game of Life in Creation Platform

Time to play a bit with Python and KL… You probably know Python. But what is KL? Kernel Language of course 🙂 That is a compiled (at run time though) strongly typed language dedicated to writing high performing operations build with easy parallelism abstraction. The idea is you write most of your code (User Interface) in Python and let the performance part execute in KL…

For who is this for? well mostly TDs (the guys that do the coding in Studios) as Creation Platform is meant to be tool to build tools! And in a DCC (Digital Content Creation think Maya/Softimage) agnostic way. In addition of offering the creation platform SDK, the Fabric Engine team also proposes a set of rather astonishing modules built ontop of it. All that to say you should really go check those out: Fabric Engine. And those guys are from Montreal, there are some serious skills in the city 🙂 Thanks Softimage/Avid, Autodesk and all the game studios for creating such a fertile eco system.

So back to my experiment, I gave myself a try on the platform by doing a Game of Life Cellular Automata, in 3d for a spin. Rules are similar to the regular 2d, although I must say I did not get the nice emerging patterns you usually see in the 2d examples (i.e. the gliders). From an implementation standpoint, I did not achieve as much parallelism as I wanted as the KL was then missing atomic add operation. But nevertheless it worked quite fine. The code is on github, it might require some tweaking if you run it against newer version of the platform: github repo.

 

Custom ICE Node: Wave To Spectrum

It’s been something that I wanted to achieve for a quite a while, and finally got the right mix and enough to get it to work. Picking a WAVe file, get the spectrum decomposition of it (using a Fast Fourier Transform library named KISS FFT) and finally wrap the whole thing into a Custom ICE Node so that I could use it to drive particles.

Here is a few trial, one using a typical spectrum bars, and the other one using spectrum information to drive strands and deformation.

I’ve also made a tutorial on how to use the plug-in:

And finally here is a screenshot of the ICE Tree (there is a smaller ICE Tree before that that sets for each point its frequency, a normalized value between 0 and 1 covering the full frequency range from the audio file):

wavespectrum_commented

Scene is available for download: spectrumBars scene.

I am not an expert in C++ nor in Softimage Development, so there is sure some room for improvement! The code is available just for that 🙂 You can browse and fork it on Github: https://github.com/claudevervoort-perso/xsi-audio-spectrum. The DLL is also available on GitHub.

Particle Filter experiment (no ICE here!)

Sounds like another post on ICE and Softimage Particles, but not at all! This semester I took 2 of the online courses offered by Stanford (introduction to AI and Machine Learning), that was a great experiment that I’m glad will continue on next semester. If you have not yet, check out those courses: ai-class.com and ml-class.org.


particle filter in action

In the AI Course Sebastian Thurn introduced seemingly a key algorithm in Robotics: Particle Filter, which is used to derive the position of a robot based on subsequent observations of its environment. I decided to give it a try, also a good reason to play with HTML5 canvases. Although the core of the logic truly lies in a bit more than 10 lines of code, it ended up being a bit more to build all the environment around it. What I actually found the most challenging was to build the correlation between a particle’s observation and the robot’s one so that a proper weight could be derived.

Anyway, enough said. You can have a look at the experiment here: particle filter.

You can also follow some discussion on it on reddit.

Nodles: Nodes and Noodles

As you can see from my other posts, I tend to spend quite some (of my free) time in Softimage ICE and I got quite used to the Node-Based UI. As my day-to-day work is more Web related, I was wondering if there was some kind of Javascript library out there to build similar ‘languages’ which I think you could be useful to help introduce some level of logic customization.

I did not find any.

So I started working on one 🙂 and Nodles was born. Still in its infancy you can have a look at it here: Nodles Home Page. Right now the idea is just to provide a visual library to build simple trees. No evaluation framework (yet).

Nodles