@tangrammer is also called Juan Antonio Ruz. He found that playing with functional programming could be so funny like Arts, thus he changed the mutable objects by pure functions. Nowadays is difficult talk to him without some jokes about good clojure references. Currently is 41 years old and lives in Sevilla (Spain), this is his very summarised experience from 2006, thanks for reading!

2017-01 / now

RIDE ON "Shared mobility systems" Spanish company based in Madrid

First oportunity to telework as a clojure engineer for a spanish company! Times moving :)

This time, I had to take the handover of a great juxt.pro developed backend project. So far, is being great although I have to deal with a complex async system.

More info here

2016-06 / 2016-07

SWARM LOYALTY South African company based in Cape Town

Teleworking as a clojure introductor and main designer and developer for a new backend API that would mirror Star Bucks API in this world region

Two high productivity months to leave the project in a consistent state to be fully delivered in the following months

2015-03 / 2016-05

I teleworked with DEEP-IMPACT-AG a swiss company based in Winterthur that defines itself as a web passionate.

They wanted me as clojure introductor in the company so i was charged to migrate legacy projects and to define new ones. Also I was frequently required to develop in java and javascript/react_js

Following are some of the clojure libs that we fortunately used:

I took the advantage of working closely with APIs to write an interesting lib to deal with the logic flow of controller fns flowgic

Definitely, I enjoyed a lot this company, the great team and its web philosophy focused in user experience and performance.

2014-06 / 2014-12

I had the chance to telework with JUXT (one of the most important european clojurian companies based in London). During this time I worked with one of the founders Malcolm Sparks making contributions to:
  • juxt/cylon: designing and developing the TOTP two-factor authentication support, conducting the background research and co-authoring the OAuth2 support.
  • juxt/modular: adding less module and solving co-dependency pattern in stuartsierra/component library to help in some communication issues as, for example, bidi.Router < - - > bidi.WebService relation

Working in customizing systems I was also interested in getting real time visualization of component system calls. As a result of this research I wrote:

  • milesian/BigBang decomplect your stuartsierra customization system from component/start
  • milesian/identity component self reflection
  • milesian/aop uses AOP in stuartsierra/component systems
  • milesian/system-diagrams Web client for real time system visualisations. Here you can see a picture and a video , (I only clicked on opensensors.io login button and after getting the visualisations I sent the login form.) that shows the final result of real time visualization of component system calls

Some of the libraries that I had to work with in my juxt job were: stuartsierra/component, postgresql/postgresql, clojurewerkz/cassaforte, clj-time, liberator, prismatic/schema, prismatic/plumbing, core.async, bidi, clostache, cylon, joplin, clojurescript, om

2014-06 / 2014-12

As juxter developer I usually had to colaborate with opensensors.io, a scalable real time IoT messaging engine that can easily process millions of messages a second from any internet connected device. This project was co-directed by: Malcolm Sparks, Michael Klishin and Yodit Stanton.

2012 / 2013

I was teleworking with enterpriseweb.com a New Yorker company doing a lot of js (nodejs, requirejs, jquery, jasmine, D3 ...), clojure and clojurescript. During this time I had to get familiar with big data concepts and concurrent patterns. That's the reasong that I have some background on hadoop, zookeeper, solr, mongodb, accumulo and related clojure libs (liebke/zookeeper-clj, liebke/avout, nathanmarz/cascalog, alexott/clojure-hadoop). In this time I wrote some clojure code: a wrapper on top of Open Stack , a library to work with snmp4j , and a open-stack Om client.

On this time I worked with core.async, core.logic, and swannodette/om. I attach some video examples to show superficially my interest on clojurescript and client side development.

This video shows my own solution to achieve brepl live editing behavior, the same as clojurescriptone, using the React/OM framework. The pattern used here communicates the components, in a core.async/CSP manner, putting a map of channels into the component channel. Using this pattern, the developer can mix mock with real data and move between the different states of the app, only reevaluating the code on emacs (brepl + cemerick/austin)

And this other video shows a previous js experiment project that was built thinking on async compose processes (pipelines), events and aspects. This framework lets swap coding (hot reloading code without browser reload) in dev mode. This feature is built on top of requirejs, socket.io and nodemon. The AOP/EOP orientation of this framework lets you easy filter the internal processes(pipelines) to make logging on the terminal, profiling or doing d3 process visualisations (static image)

2011 / 2013

Looking forward to do a bit creative and experimental programming I decided to migrate to dynamic typed languages (Ruby and javaScript) and data visualization (processing.org, openlayers, d3.js) lands. Some examples: 1 2 3

2012 / now

I discovered clojure with quil (clojure on top of processing.org). From then, my fascination about its features and the clojure community never ends.

2006 / 2012

During this time I was highly focused in JEE, working on companies (Hewlett Packard - Senior Programmer) and as a freelance developer and consultant. I worked with patterns as MVC, ORM and DI implemented on different ways (Struts, JSF, EJB3, Hibernate, Spring, Seam, ...). From my java beginning, I always tried to develop with TDD and XP methodologies and was very passionate in Event and Aspect Oriented Programming. I worked as JavaEE teacher too, on private and public companies (+ 1500 Hours)

Here you can find full details: linked-in

And my 4clojure profile, still in progress