Monthly Archives: January 2014

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

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

End of Iteration 2014w04

Previous Post
Next Post

I worked on my open source projects:


My Erlang implementation as interpreter in C#:

First mailbox tests, including delayed message; adding lists as predefined module; write and test lists:map, lists:filter, lists:any, lists:all, lists:sum.

Parsing fun, with one clause and multiple match clauses.


My Scala-like interpreter in C#

I added binary arithmetic functions, variable expression first implementation (with context to hold the values), val command, object command.


Updates in: Dylan as interpreter in C# Clojure as interpreter in C# Ruby as interpreter in JavaScript Scala as interpreter in JavaScript Lisp interpreter in JavaScript

I worked on three non-public projects.

More fun is coming.

Keep tuned!

Angel “Java” Lopez

MongoDB: Links, News, And Resources (2)

Previous Post
Next Post

Powered by MongoDB: Rafflecopter
Rafflecopter is a web app that helps online publishers run sweepstakes on
their own blogs and other sites.

Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs
Neo4j comparison

ric03uec / nodeblox
an extensive nodejs tutorial

MongoDB for Akka Persistence

MongoDB, Java and Object Relational Mapping
Today’s NoSQL landscape includes a number of very capable contenders
tackling big data problems in many different ways. One of these contenders
is the very capable MongoDB. MongoDB is a document-oriented schema-less
storage solution that uses JSON-style documents to represent, query and
modify data.

A Year with MongoDB

How can I set up MongoDB on a Node.js server using node-mongodb-native in
an EC2 environment?

Creating a simple blog with node.js, express and mongodb

Getting Started with MongoDB and Node.js

A simple log server using express, nodejs, and mongodb

Building Backbone.js Apps With Ruby, Sinatra, MongoDB and Haml

Making a ToDo list with node.js, MongoDB, Mongoose, MongoHQ, and Heroku

ToolPartTeam / backbone-mongodb

Composition Of Responsibility vs Interface Implementation

Using MongoDB with ASP.NET Web API

Hadoop plugin for MongoDB: The Elephant in the Room

Clojure demo web application using Ring, Compojure, MongoDB and Fusion

Heroku, mongo, node.js – a problem

marcello3d / node-mongolian

Using MongoDB on Mono
Justin Dearing presents a brief introduction to MongoDB, and focuses on
interacting with it in Mono via the official 10gen driver. Techniques for
handling business logic in application code, such as LINQ are discussed.
This is a very code centric talk.

MongoDB – How To Benchmark and Test Performance Using mongo-perf

MongoDB – Operations in the New Aggregation Framework

mongodb / mongo-hadoop

Rails Caching Benchmarked: MongoDB, Redis, Memcached

My Links

Keep tuned!

Angel “Java” Lopez

Erlang: Links, News And Resources (6)

Previous Post
Next Post

Elixir – A modern approach to programming for the Erlang VM on Vimeo

15 Erlang – Distributed Programs – Node Creation – YouTube

JLOUIS Ramblings: Acme as an editor

Erlang/OTP at EE: journey and lessons learned – Erlang User Group (London, England) – Meetup

Erlang Factory – Dublin Erlang Factory Lite 2013 – Register

Aprendiendo Erlang: Comunicación entre procesos (Ping-Pong).

Erlang — Concurrent Programming

extend/bullet · GitHub
Bullet is a Cowboy handler and associated Javascript library for maintaining a persistent connection between a client and a server.

duomark/erlangsp · GitHub
Erlang Services Platform

Erlang the movie II the sequel

Erlang-style Supervisor Module for Scala Actors ←

Open Telecom Platform – Wikipedia, the free encyclopedia

What They Don’t Teach You About Running a Business When Taking Your CS Degree

Parsing packets Erlang style using core.logic

ErlangDC 2013 Conference

jacobgroundwater/federation · GitHub
Node.js. Federation is inspired by Akka and Erlang, and borrows some semantics from the actor model.

Federation by jacobgroundwater
Federation is a federated message network for distributed environments

Programming Rules

[erlang-questions] hobbyists, erlang, elixir (was Improve $handle_undefined_function)

Merge branch ‘bjorn/remove-parameterized-modules/OTP-10616’ · 35adf88 · erlang/otp

Persisting your entities in erlang

My Links

Keep tuned!

Angel “Java” Lopez

End Of Iteration 2014w03

Previous Post
Next Post

Great week extending interpreters.


My Erlang implementation as interpreter in C#

I added multi-functions, that is, functions with the same name and arity, but with different argument matching conditions. And I started to write a minimal Process, to have threads running functions. Next steps: implement process mailboxes.


I was working on my C# implementation

I started to add Java Dot Notation, to access native types and objects. So, I grabbed some code from RubySharp/PythonSharp/AjSharp to access .NET types and objects, and wrapped functions to invoke properties, methods and constructors.


More work on implementing Akka-like actor model in C#

I should refactor mailbox implementation. After a bit of design, I decided to have a worker thread by actor, consuming a concurrent queue. ActorRef could add message to the queue.

RuScript, ScaScript and SimpleGrammar

I updated the version of SimpleGrammar

to fix a bug detected consuming the library from RuScript:

I’m using SimpleGrammar in

my Scala-like interpreter in JavaScript (I just implemented only a minimal parser).


I was working in two non-public projects, and updating old PHP personal sites. I moved the code generated for Sinatra

to use a modular instead of classic approach.

More fun is comming.

Keep tuned!

Angel “Java” Lopez

TDD Rocks! (9) JavaScript and Node.Js

Previous post

Thanks to JavaScript Meetup group at Buenos Aires, I gave an introductory talk about JavaScript and Test-Driven Development, using Node.js. The sample is basic, but I hope it is an starting point to appreciate the goodness of TDD workflow in JavaScript development.

The meetup group link:

My talk in “Anglish”:

My presentation:


Full post in Spanish with additional video and text in Spanish.

Keep tuned!

Angel “Java” Lopez

End Of Iteration 2014w02

Previous Post
Next Post

A lot of work at the second iteration of the year:

More Code Generation with AjGenesis

I created

with a simple Sinatra site generated using AjGenesis for Node. I should add the entity support (list, persistence, view, edit, new) but it was created in two hours. Nice experience adapting templates


An Akka-like actor model implemented in C#. It was born on Sunday:

I’m using TDD, as usual. My ideas are implemented using baby steps, make it works, make it right, and in the future, make it fast. I’m not concerned with performance yet, but to have all the pieces in place for local run. Then, I will add distributed processing. One of the key things is the message mailbox management. By now, I have only one by actor system, implemented using a concurrent queue. I planned to add a queue by actor, if specified at creation of the actor.

Scala in JavaScript

The project

An interpreter, not a “transpiler” to JavaScript. I want to do dog fooding of my SimpleGrammar project, and learn a bit about Scala language.

Lambda Calculus

Implemented in JavaScript, a Saturday code kata:

Next steps: add named functions.


More work in my Dylan-like language implemented as an interpreter over C#:


I added minor functionality to ClojSharp (Clojure-like in C#) I worked on two non-public projects.

More fun is coming

Keep tuned!

Angel “Java” Lopez