@tangrammer
@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 / nowride-on.es
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-07swarmloyalty.co.za
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-05deep-impact.ch
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 flowgicDefinitely, I enjoyed a lot this company, the great team and its web philosophy focused in user experience and performance.
2014-06 / 2014-12juxt.pro
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
opensensors.io
2012 / 2013
enterpriseweb.com
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
RoR/js
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
js/Clojure/ClojureScript
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
JEE
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