Monthly Archives: November 2012

Working on AjTalk: Smalltalk VM, C# version

After working on my Node.js distributed examples (Genetic Algorithms), and my Python interpreter (Spanish Post, GitHub repo), I went back to work on AjTalk, my Smalltalk VM implementation. I have three projects (C# version, Java version, JavaScript/NodeJs version), but now I’m working on the C# one.

The past weeks, I added a simple/naive but functional save/load binary images, and I have a new bytecode compiler: instead of parsing code and directly generates the bytecodes, AjTalk builds an AST-like structure in memory, and using visitors, it can generate the bytecodes (past year, I had implemented a visitor that transforms the AST to JavaScript code, to use in my JavaScript VM version). The visitor pattern could be used to generate different outcomes using the same AST input (litmus test: a third visitor generating Python, Ruby or C# code (in this case, using dynamic objects)).

I can load more than one Machine at the same time: in my jargon, a Machine has the objects and classes of a living image. Instead of being a singleton, I can create, populate and load from images more than a Machine. The main code at:

I could generate a minimal image for a hello world (< 300 bytes!), see the code at:

I exercised the parsers loading and executing the Pharo file outs:

All written using TDD, as usual 🙂

Now I have many machines in memory, I would like to implement this idea:

– Load a Machine A (with its classes, methods, objects) having a complete class library
– Load a Machine B, having only some classes and objects
– Set Machine A to be the host of Machine B.
– Reimplement #doesNotUnderstand message processing in Machine B so, if a message is not located in that machine, the search of the corresponding method continues in the similar classes at Machine A. In this way, I could use all the power of Machine A, to operate on a slim Machine B. Machine A could have all the development tools/classes/methods, meanwhile Machine B still have a minimal size. A similar ideas is being explored by @morplenauta (Squeak committer), see Spanish email list.

Another project: to have a minimal static files web server, using native .NET objects (System.NET).

Keep tuned!

Angel “Java” Lopez

Python: Links, News And Resources (10)

Previous Post
Next Post

Se vienen PyCamp y PyCon Argentina (+ video)

A rewrite of the Django tutorial with Test Driven Development

hjwp / Test-Driven-Django-Tutorial
source code & text for a tutorial on using doing TDD django

chrisclark / PythonForDataScience

Up And Running With Python – My First Kaggle Entry

NINJA-IDE: A Powerful IDE For Developing Python Apps

ErlPort – Erlang port protocol for Python

RESTful Pyramid
Pragmatic Unicode

Preview: NINJA-IDE Code Completion Inheritance

Building a distributed concurrent queue with Apache ZooKeeper

fisadev / fisa-vim-config
my vim configuration (lot of python, autocompletition, fuzzy finder, debugger, …)

bvdelft / PyOpaque
PyOpaque is a module to screen or control the access to an object’s attributes and methods, by wrapping Python objects in build-in objects.

marianoguerra / feedformatter
feedformatter is a Python (2 & 3) library for generating news feeds in RSS and Atom formats.

PyPy is a fast, compliant alternative implementation of the Python language (2.7.2)

15.18. ctypes — A foreign function library for Python
It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these libraries in pure Python.

Design Patterns in Python

General Python FAQ

30.6. importlib – An implementation of import
The purpose of the importlib package is two-fold. One is to provide an implementation of the import statement (and thus, by extension, the __import__() function) in Python source code. This provides an implementation of import which is portable to any Python interpreter. This also provides a reference implementation which is easier to comprehend than one implemented in a programming language other than Python.

Implementing Python

Python in .NET

Preview: NINJA-IDE Code Completion – Functions Return

My Links

Game Development: Links, News, Resources (6)

Previous Post

Building a Real-Time Location-Based Urban Geofencing Game with, Redis, Node.js and Sinatra Synchrony
How we planned, built and tested a truly real-time location-based game with, Redis, Node.js, and what we learned along the way.

Light Table
An Open Software project in San Francisco, CA by Chris Granger

ibdknox / live-cljs
a clojurescript version of bret victor’s editable game

Bidirectional binary streams with WebSocket

Graphwar Tutorial
Graphwar is an artillery game in which you must hit your enemies using mathematical functions.

Game development company

Rapid game development
Chilly Framework is a platform for HTML5 game development.

Basic Programming and Game Development with Scratch

Achieving Performance: An Approach to Optimizing a Game Engine

robashton / MolyHole

Node.js experiment: MMO Asteroids

Will the Next Generation of Top Guns Be Gamer Geeks? The Unmanned X-47B Makes Its First Flight

Kinect Star Wars

The life of a Sim in SimCity

Spaceship Pilot
Node.js, accelerometer, HTML5

Battlefield Simulator

Zynga compra la compañía OMGPOP por 180 millones de dólares

Learning Python: Child’s Play with RUR-PLE!

Lessons learned building a multiplayer game in NodeJS and WebGL

cocos2d is a framework for building 2D games, demos, and other graphical/interactive applications. It is built over pyglet. It provides some conventions and classes to help you structure a "scene based application".

C# y OpenGL (Parte I: Inicialización de OpenGL)

SharpGL: A C# OpenGL Class Library

My Links

Keep tuned!

Angel “Java” Lopez

Game Development: Links, News, Resources (5)

Previous Post
Next Post

Learn OpenGL and C#

The Open Toolkit is an advanced, low-level C# library that wraps OpenGL, OpenCL and OpenAL. It is suitable for games, scientific applications and any other project that requires 3d graphics, audio or compute functionality.

The Tao Framework
The Tao Framework for .NET is a collection of bindings to facilitate cross-platform game-related development utilizing the .NET platform.

JBullet – Java port of Bullet Physics Library

Bullet Physics Library

Aaron Dignan: How to Use Games to Excel at Life and Work
Real life isn’t always satisfying, but games almost always are. So how can we take the principles that make Angry Birds so addictive and apply them to work? Games researcher and author Aaron Dignan schools us at the 99% Conference.

adgeville is the world’s first behavior platform. We bring the best of gamification, social networking, reputation, and behavior analytics to any brand’s web and mobile experiences.

Initial Results From Co-operative Co-evolution
for Automated Platformer Design
We present initial results from ACCME,A Co-operative Co-evolutionary
Metroidvania Engine, which uses co-operative co-evolution to automatically evolve
simple platform games. We describe the system in detail and justify the use of
co-operative co-evolution.

Artificial intelligence project builds video games from scratch
A project from Imperial College in London puts together whole video games …

Building a multiplayer HTML5 game using Node,

Es un motor para hacer videojuegos de manera sencilla desde C++

hugoruscitti / sbfury
Shaolin’s Blind Fury

Video: Inventing on Principle

Connect With Your Creation Through a Real-Time Editor

Pygame is a set of Python modules designed for writing games.
Pygame adds functionality on top of the excellent SDL library.

Pilas Engine

Ruby for Kids

Is 2012 the Year for Gamification?

Wooga, A Case Study In No-Cash Bonus Culture

Lisp REPL in Vendetta Online

Vendetta Online

Asteroids, C#, 3D and OpenGL

My Links

Keep tuned!

Angel “Java” Lopez

Game Development: Links, News, Resources (4)

Previous Post
Next Post

Game development for fun, for profit. Exercises for our neuron.

Screencast: Coding Conway’s Game of Life in Ruby the TDD Way with RSpec

Ric-rac-roe in a soup of technologies
It all started with a desire to experiment a few things: Sinatra, Shoes, and the context testing framework. So I decided to write a simple application – the classic tic-tac-toe game. I ended up with 3 interfaces:
command line interface (cli)
web app (using Sinatra)
GUI desktop app (using Shoes)

Empresas de videojuegos pisan cada vez más fuerte en el país y buscan sumar desde ingenieros hasta músicos
Hace una década era una industria inexistente en la Argentina. Hoy, sin embargo, cuenta con 65 compañías, que sufren el déficit de mano de obra calificada y buscan perfiles de los más variados e insólitos. Conozca este mundo por dentro

Developing MMO Game Servers in PHP and JavaScript
Theory of Everything – an MMORPG written in CoffeeScript on node.js and HTML5/CSS3/WebGL

MMO server/client test

Javascript browser MMORPG [closed]


TileGen – Mystalia MMORPG Engine
Using PHPGD and called from Node.js (argv) we can dynamically create tilesets for each map to reduce load time.

An Interview with Rob Evans of Isogenic Engine: Building Real-Time, MMO Games with HTML5 and Node.js

NodeJS Pokemon: MMO iPad, iPhone, Chrome, Safari Card Game

NowJs, Multiplayer Map example

HTML5 Canvas MMORPG Games using Node.js and Nowjs

Multi-User Dungeon Definition Language

The MUDDL programming language, “Multi User Dungeon Definition Language”, is a domain-specific language for creation of text-based multi-user virtual worlds, i.e. MUDs.

Multi-User Dungeon, or MUD (referred to as MUD1, to distinguish it from its successor, MUD2, and the MUD genre in general) is the first MUD and the oldest virtual world in existence
…In 1980 Roy Trubshaw created MUD version 3 in BCPL (the predecessor of C), to conserve memory and make the program easier to maintain…
(ajlopez: I wrote programs in BCPL 😉

What Is a MMORPG?
MMORPG stands for massively multiplayer online role playing game, a type of massively multiplayer online game (MMOG). An MMORPG is a computer-based role playing game (RPG) which takes place in an online virtual world with hundreds or thousands of other players. In the game, a player uses a client to connect to a server, usually run by the publisher of the game, which hosts the virtual world and memorizes information about the player.
C# for Gaming: AltDevConf This Weekend

Rediscover the Early Days of Video Gaming using the Arduino Single-Board Computer

Using modern computing horsepower to stretch retro graphics hardware

Kinect for Windows SDK
Kinect For Windows Now Available
LOGO: Videojuego del Tetris

The Reality of HTML5 Game Development and making money from it
1991 Summer CES

Microsoft’s real-world 3D ‘Cut the Rope’ lets fans in London ‘jump’ into the game
Command and Conquer HTML5

Zynga buys four mobile gaming companies

My links

Keep tuned!

Angel “Java” Lopez

Game Development: Links, News, Resources (3)

Previous Post
Next Post

Recently, I was working on isometric games using HTML5 canvas. There is a lot ideas to implement (distributed game processing, artificial intelligence, etc.). Now, more links I found interesting about game development:

Kinect Is Coming to Windows Feb 1

Cut the Rope

What 2012 holds for social gaming

Asteroides : Codea Game – iPad 2


Gamification is Productivity, NOT (Just) Fun and Games

Corona SDK, una herramienta de desarrollo para iOS, Android y Kindle Fire

Game Developer Meets Demand and Prepares for Success with Scalable Cloud Solution

Writing an iPhone Game Engine (Part 7- Postmortem)

Platform Updates for Games Developers

QuakeCon 2011 – John Carmack Keynote

It’s ready when it’s ready, dammit!

Parallel Implementations
by John Carmack

Static Code Analysis
by John Carmack

Creating a Multiplayer Game with Sockets in C#

Canvas Tutorial

Gamification’s Three Disciplines

MonoGame: XNA multi-plataforma

Indie game Minecraft receiving over 240 million logins every month

Windows Azure Tookkit for Social Games 1.1 RELEASED

ThreeNodes.js: A Visual WebGL Scene Editor

The making of the Xbox: How Microsoft unleashed a video game revolution (part 1)



NGD and Regnum Online: past, present, and future

NGD Studios’ Andrés Chilkowski on Bunch of Heroes, Regnum Online & Designing Game Engines

NGD Studios

Anatomy of a Windows Phone Game Project

Erlang, the big switch in social games

Kinect unleashed for commercial Windows apps

Duck Hunt via HTML5 + JavaScript
with level creator

My Links

Keep tuned!

Angel “Java” Lopez

Python: Links, News And Resources (9)

Previous Post
Next Post

Past Saturday, I presented my work on PythonSharp (see Spanish Post). More links about Python language:

MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON but it’s faster and smaller. For example, small integers (like flags or error code) are encoded into a single byte, and typical short strings only require an extra byte in addition to the strings themselves.

tokenlib 0.1.0
This is generic support library for doing token-based authentication.

Multiprocessing y Threading
En esta receta se muestra como hacer para correr algo en otro thread o proceso con pocos cambios y como lograr comunicacion entre ellos.

Web2py / Python application for Conference Registration and Management.

Taint Mode
Taint Mode permite alertar a los desarrolladores de potenciales problemas de seguridad en su aplicación.

A Taint Mode for Python via a Library

Why I can’t extend bool in Python?
We show how to provide taint analysis for Python via a library written entirely in Python, and thus avoiding modifications in the interpreter.
Building and installing NumPy

NumPy and SciPy for IronPython / .Net

NumPy is an extension to the Python programming language, adding support for large, multi-dimensional arrays and matrices, along with a large library of high-level mathematical functions to operate on these arrays.

NumPy and SciPy for .NET

Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed.
The framework is distinct from most mainstream web server frameworks (and certainly most Python frameworks) because it is non-blocking and reasonably fast.

Supervisor: A Process Control System
Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.

Celery: Distributed Task Queue
Celery is an asynchronous task queue/job queue based on distributed message passing.

What is gevent?
gevent is a coroutine-based Python networking library that uses greenlet to provide a high-level synchronous API on top of the libevent event loop.

My Links