Angel \”Java\” Lopez on Blog

March 17, 2014

End Of Iteration 2014w11

Previous Post
Next Post


I finished my presentation about Node.js Distributed Applications:

Last week I gave this talk at the JSConf Uruguay Great days, interesting people, projects and ideas. I should post about my experience. In this talk I mentioned my projects:

And I did a quick description of some other basic projects I used to build the demos:


I updated my project

Now it has to samples: one, with position evaluation at browser, and another with position evalution at server side. Next steps: add worker nodes, at server side, to distributed the position evaluation, maybe with a tree search in many levels (now it explores 2 plies), or more levels using montecarlo.


After talking with @LostOracle at JSConfUy, I started an interpreter for Rust Language, in JavaScript:

The hello world is working:

I use and updated my grammar generator

Dog fooding is good!


I added new rules and some refactor to my projects:

I want to add a JavaScript application running at client side, to cover the main use case of Preciosa Project.

I worked on two non-public projects. Now, I’m back at Buenos Aires. More fun is comming!

Keep tuned!

Angel “Java” Lopez

January 31, 2014

Smalltalk, JavaScript, NodeJs, C#, and Tutti Li Fiocci

Filed under: AjTalk, C Sharp, JavaScript, NodeJs, Smalltalk, Talks, Video — ajlopez @ 5:43 pm

Past year, I gave a talk at Smalltalks 2013, Rosario, Argentina. The conference was a great experience to me, and there were many interesting talks, implementations and ideas.

My talk was about implementing Smalltalk, in C#, and JavaScript. The main repos are: (I presented it at Smalltalks 2010) (I presented it at Smalltalks 2011)

My recorded talk:

The presentation:
More talks at

The first project is an interpreted based on byte codes, written in C#. It can compile to JavaScript, but the key features is to have a VM based on bytecodes, that have access to native .NET types and objects, remote execution, actors, and more. See my posts.

The second project is an implementation of Smalltalk but in JavaScript. Internally, it have a compiler to JavaScript, but also a compiler to bytecodes and then, an interpreted VM written in JavaScript. Both projects now supports NPM (Node.js package manager) for new modules.

In 2013, I added Node.js support and access to AjTalkJs, so I can run an Express application from Smalltalk:


Next experiments: distributed message. That is, an object in one machine sends a message to an object in a remote machine/process,  in a fire and forget way. I think Node.js ecosystem is a good plate to host such experiments. My previous work at Distributed Applications with Node.js. I want a distributed Smalltalk machine/application. Maybe, if the communication protocol is easy or pluggable, I could add clients/servers implemented in other Smalltalk dialects. But baby steps first 😉

Keep tuned!

Angel “Java” Lopez

November 12, 2013

End Of Iteration 2013w45

Previous Post
Next Post

I’m exhausted, after my Node.js Knockout participation, last week end.

Node Knockout

It is my main deliverable for past week. I wrote a web application, in two days, from scratch, using Node.js and Express. Video with demo:

It’s running online at:

Now, the repo is private, but I will clone it to my public GitHub account. You can see the votes at:

TDD and JavaScript

I gave a talk at local JavaScript meetup

Code at:

Slides at:

Other works

Minor updates at

Updated require algorithm at

Keep tuned!

Angel “Java” Lopez

October 30, 2013

PHP and Node.js

Filed under: JavaScript, NodeJs, Open Source Projects, PHP, Talks — ajlopez @ 4:37 pm

This month, I gave a talk about PHP and Node.js, at PHP Dev Conference Argentina.

I should write a post about my excellent experience in that conference, full of interesting topics and people.

My talk description

We will see what Node.js means for a PHP programmer. A programming language built on top of Google’s V8 engine. Executing loops, with asynchronous IO. Node.js as a shell server, and web server. Javascript as a very flexible language, with little of the programming bloatware that’s common on other languages. A package ecosystem, very similar to PHP’s Composer. Instead of dealing with lots of functions (as we are used to with PHP), Node has modules, that we can install and utilize at any point.

Where Node.js really shines and distinguishes itself from PHP is in realtime services. We will learn about its socket and websocket support, and how important true asynchronous IO is. We will also learn about the price we have to pay for this: callbacks.

But we don’t want to walk away from our beloved PHP, so we will integrate PHP with Node.js. First approach: PHP + browser + Node.js, with little communication between PHP and Node. Then we’ll jump right into integrating Node code from PHP. dnode modules (sync and async.) And before we end the session… surprises, and tutti li fiocci!

The slides are at:

The PHP code, at:

to be viewed from a web server (I used xampp in my notebook).

The node code, many servers to launch, each one listening by different ports:

You must install Node.js, and then, run “npm install” in that folder. For example, if you want to launch the distributed canvas server, execute at command line: “node canvasserver”.

There are examples where the browser connects with node.js server, without using PHP. And there are examples where the PHP code talks to Node.js. I used:

at Node.js side. And dnode PHP clients:

At the end of the talk, I presented my PHP-to-JavaScript transpiler, written in JavaScript:

It can run minimal PHP code in the Node.js server:


Keep tuned!

Angel “Java” Lopez

October 15, 2013

End Of Iteration 2013w41

Filed under: C Sharp, Erlang, Iteration, JavaScript, NodeJs, Open Source Projects, Scala, Talks — ajlopez @ 12:59 am

Previous Post
Next Post

My past week work:


I was working improving my Python to JavaScript compiler, written in JavaScript.

I decided to implement a subset of Python language, to be prepared for the upcoming Python Argentina conference. I refactored internal implementation, add more commands, compile Python variables to ‘var’ declarations in JavaScript, etc.


My Ruby interpreter written in C#

I added support for ‘if-else’, ‘if-‘elif’. And ‘until’ command. I’m preparing my talk for RubyConf Argentina 2013.


My Erlang interpreter in C#

I added a console program, to parse and execute my first commands, including matches.


My JavaScript Smalltalk interpreter

I started to refactor chunk reader and other parts, in order to have separated source code files, instead of a big one. I planned to have a ‘browserify’ build, to create the browser distribution of the module, in one file.

Scala Talk

On Tuesday, I gave an Scala Internals talk. I updated my minimal samples at:

And my Scala slides at:

TDD with Visual Studio

On Monday, I gave a talk about TDD (Test-Driven Development) using Visual Studio 2010 and ASP.NET MVC, starting from a simple controllers. The source code is at:

I worked on two non-public projects, too.

Keep tuned!

Angel “Java” Lopez

Create a free website or blog at