Angel \”Java\” Lopez on Blog

January 18, 2013

Smalltalk: Links, News And Resources (11)

Filed under: Links, Programming Languages, Smalltalk — ajlopez @ 4:46 pm

Previous Post

Do Smalltalk have shared variables…?

http://objectmix.com/smalltalk/311676-do-smalltalk-have-shared-variables.html

Smallissimo: Lazy initialization of Shared Variable Bindings

http://smallissimo.blogspot.com.ar/2011/08/lazy-initialization-of-shared-variable.html

Class Variables

http://esug.org/data/Articles/Columns/EwingPapers/class_variables.pdf

How to Use Class Variables and Class Instance Variables

http://esug.org/data/Articles/Columns/EwingPapers/cvars&cinst_vars.pdf

Leftshore

http://leftshore.wordpress.com/

By Boris Popov

Smalltalk at 30: STIC 2013

http://www.jarober.com/blog/blogView?showComments=true&title=Smalltalk+at+30%3A+STIC+2013&entry=3531653797

InfoWorld – Google Books

http://books.google.com.ar/books?id=4S8EAAAAMBAJ&pg=PA1&lpg=PA1&dq=smalltalk-8+0+balloon&source=bl&ots=y4eGGi6_ml&sig=DVucVnBA4cJDkvXs4kObvRE3LV8&hl=en&ei=4G9gT9rOMcbOiAKBnI2_BA&redir_esc=y#v=onepage&q&f=false

SmalltalkHub

http://smalltalkhub.com/

garduino (German Arduino)

https://github.com/garduino

Cuis work by @garduino

Ten is a good number: isKindOf: considered harmful

http://blogten.blogspot.com.ar/2007/09/iskindof-considered-harmful.html

Traits: Composable Units of Behaviour

http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf

smalltalk – How to unload Traits from Pharo – Stack Overflow

http://stackoverflow.com/questions/6879432/how-to-unload-traits-from-pharo

smalltalk – What is the difference between a Squeak/Pharo Trait and a Newspeak Mixin? – Stack Overflow

http://stackoverflow.com/questions/2329724/what-is-the-difference-between-a-squeak-pharo-trait-and-a-newspeak-mixin

Code Completion and Syntax Highlighting – YouTube



Cross Platform – YouTube


Redline Smalltalk V1.0 | Indiegogo

http://www.indiegogo.com/smalltalk?c=home

Smalltalks 2012 – 6th Argentine conference

http://www.fast.org.ar/smalltalks2012/talks/Objects%20in%20the%20Mist%3A%20The%20Design%20of%20a%20Non-Traditional%20Smalltalk?_s=4NRkHHU4m6wbF97d&_k=z08U0UJhHx6E-2j9

Mist Project

Smalltalks 2012 – 6th Argentine conference

http://www.fast.org.ar/smalltalks2012/talks

Issue 2581 – pharo – COG – Float access methods – A free open-source Smalltalk-inspired language and environment – Google Project Hosting

https://code.google.com/p/pharo/issues/detail?id=2581

Squeak – Dev – detecting if method has an prim error code

http://forum.world.st/detecting-if-method-has-an-prim-error-code-td4377050.html

My Links

http://delicious.com/ajlopez/smalltalk

January 12, 2013

Code Katas in JavaScript/Node.js using TDD

These past weeks, I was working in JavaScript/Node.js modules, using TDD at each step. Practice, practice, practice, the journey to mastery.

You can see my progress, reviewing the commits I did at each new test. This is a summary of that work:

CobolScript: See my posts, an implementation of COBOL as a compiler to JavaScript, having console program samples, dynamic web pages and access to Node.js modules. See web sample, using MySQL, and SimpleWeb.

SimplePipes: A way to define message-passing using ‘pipes’ to connect different defined nodes/functions. I want to extend it to have distributed process.

SimpleBoggle: Boggle solver, it is better than me! See console sample.

SimpleMemolap: Multidimensional OLAP-like processing, with in-memory model, and SimpleWeb site see sample:

SimpleChess: Work in progress, define a board using SimpleBoard, and make moves. I’m working on SimpleGo, too, to have a board, game, and evaluators.

SimpleRules: forward-chaing rule engine. I should add rule compilation to JavaScript. The engine works a la Rete-2, detecting the changes in the current state, and triggering actions.

SimpleScript: see post, my simple language, compiled to JavaScript. See posts. WIP.

Py2Script: Python language compiler to JavaScript, first step. WIP.

SimpleWeb: web middleware, a la Connect, with web sample.

BasicScript: My first steps to compile Basic to JavaScript. I want to use it to program and compile a game.

SimplePermissions: Today code kata. It implements subjects, roles, and permissions, granted by context.

SimpleFunc: Serialization of functions.

SimpleMapReduce: Exploring the implementation of a Map-Reduce algorithm.

SimpleTuring: Turing machine implentation.

Cellular: Cellular automata implementation, including a Game of Life console sample.

I will work on:

NodeDelicious: To retrieve my links from my Delicious account, now the site was revamped and no more pagination.

SimpleDatabase: In-memory database, maybe I will add file persistence.

SimpleSudoku: Rewrite of my AjSudoku solver, from scratch.

I’m having a lot of fun, as usual ;-)

Keep tuned!

Angel “Java” Lopez

http://www.ajlopez.com


http://twitter.com/ajlopez

January 11, 2013

Smalltalk: Links, News And Resources (10)

Filed under: Links, Programming Languages, Smalltalk — ajlopez @ 5:09 pm

Previous Post
Next Post

Sport – Smalltalk Portability

http://sourceforge.net/projects/sport/

Sport is a Smalltalk portability layer.

Aida

http://comments.gmane.org/gmane.comp.web.server.aida/2655

AIDA/Web is Web Application Server and Framework for building web apps

Sport and Swazoo released

http://dolphinseaside.blogspot.com.ar/2006/07/sport-and-swazoo-released.html

Seaside for Dolphin Smalltalk

http://www.seaside.st/download/dolphin

Swazoo Smalltalk Web Server

http://www.swazoo.org/download.html

pmon / Cuis-PetitParser

https://github.com/pmon/Cuis-PetitParser

PetitParser port to Cuis

A Fan Letter to Redline Smalltalk …

http://jamesladdcode.com/2010/01/30/a-fan-letter-to-redline-smalltalk/

SUnit Tutorial

http://stephane.ducasse.free.fr/Programmez/OnTheWeb/SUnitEnglish2.pdf

SUnit

http://wiki.squeak.org/squeak/1547

Kent Beck’s SUnit testing framework for Smalltalk

SUnit

http://sunit.sourceforge.net/manual.htm

The mother of all unit testing frameworks
initialize & new


Friendly, predictable methods to cling to in a system of methods defined by seeming madmen.

Introduction to Smalltalk bytecodes

http://marianopeck.wordpress.com/2011/05/21/introduction-to-smalltalk-bytecodes/

Smalltalks 2012 Videos


Redline Smalltalk V1.0

http://www.indiegogo.com/smalltalk?c=pledges

Smalltalk: A White Paper Overview

http://web.cecs.pdx.edu/~harry/musings/SmalltalkOverview.html

Allow me to reintroduce myself. My name is MagLev

http://confreaks.com/videos/1269-rubyconf2012-allow-me-to-reintroduce-myself-my-name-is-maglev

Remember when Avi Bryant spoke at RailsConf ’07 about Ruby’s future, and how it’d be slick if we could get to where Smalltalk was 30 years ago? Well, we kinda have, in some respects, with the 1.0 release of MagLev, a Ruby implementation running on a Smalltalk VM.

Debug Mode is the Only Mode

http://gbracha.blogspot.co.uk/2012/11/debug-mode-is-only-mode.html

The Early History Of Smalltalk

http://worrydream.com/EarlyHistoryOfSmalltalk/

by Alan C. Kay

Smalltalks 2012 photos

http://blogten.blogspot.com.ar/2012/11/smalltalks-2012-photos.html

Cincom Smalltalk at Twitter

https://twitter.com/simplypossible

My Links

http://delicious.com/ajlopez/smalltalk

January 10, 2013

Python: Links, News And Resources (12)

Filed under: Links, Programming Languages, Python — ajlopez @ 5:00 pm

Previous Post

livecoding

http://livecoding.io/3411676

an interactive sketchpad

gabrielflorit / livecoding

https://github.com/gabrielflorit/livecoding/

live coding interactive sketchpad

django-lean

https://bitbucket.org/akoha/django-lean/wiki/Home

django-lean aims to be a collection of tools for Lean Startups using the Django platform. Currently it provides a framework for implementing split-test experiments in JavaScript, Python, or Django template code along with administrative views for analyzing the results of those experiments.

[Python-ideas] re-implementing Twisted for fun and profit

http://mail.python.org/pipermail/python-ideas/2012-October/016938.html

by Guido van Rossum

Guido van Rossum

https://plus.google.com/u/0/115212051037621986145/posts/fnb8pqsGGb2

Wanted: experts in Twisted, Tornado, asyncore or other Python async APIs (greenlets/gevent, Stackless, libevent all welcome!).

Proyecto CDPedia

http://python.org.ar/pyar/Proyectos/CDPedia/Historia

CDPedia, la historia

Hello, Little Turtles!

http://interactivepython.org/courselib/static/thinkcspy/PythonTurtle/helloturtle.html

Seven ways to use Python’s new turt Decalz – Snaky (vodpod) | Lockerz

http://lockerz.com/u/21205615/decalz/13082004/seven_ways_to_use_python_s_new_turtle_mo

Learning Python

http://www.research.rutgers.edu/~rohanf/LP.pdf

Writing great documentation

http://jacobian.org/writing/great-documentation/

I love Django’s documentation. It clocks in at about 700 pages printed, and most of it is clear, concise, and helpful. I think Django’s among the best documented open source projects, and nothing makes me prouder.

#pythonIO presentación de Python

http://www.desarrolloweb.com/en-directo/pythonio-presentacion-django-7521.html

Ojota

http://felipelerena.com.ar/es/posts/ojota.html

PEP 380: Syntax for Delegating to a Subgenerator

http://docs.python.org/3/whatsnew/3.3.html#pep-380

PEP 380 adds the yield from expression, allowing a generator to delegate part of its operations to another generator.

Python 3.3.0

http://python.org/download/releases/3.3.0/

The random module

http://effbot.org/librarybook/random.htm

In Python We Trust


Mini-languages in Python

http://stackoverflow.com/questions/1547782/mini-languages-in-python

Creating Domain Specific Languages in Python

Online Python Tutor

http://www.pythontutor.com/

LEARN programming by visualizing code execution

An Introduction to Distutils

http://docs.python.org/2/distutils/introduction.html

Programación Python con Robots – charla abierta

http://reingart.blogspot.com.ar/2012/09/programacion-python-con-robots-charla.html

Create a Python game for the Raspberry Pi

http://www.pcpro.co.uk/features/376867/create-a-python-game-for-the-raspberry-pi

Emacs as a Python IDE

http://www.jesshamrick.com/2012/09/18/emacs-as-a-python-ide/

PyDay CBA 2012

http://www.flickr.com/photos/56563601@N08/sets/72157631556887731/

machinalis / django-template-previewer

https://github.com/machinalis/django-template-previewer/blob/master/README.md

This is a django app to be used in development environments only. Its purpose is to allow template writers to preview rendering of the templates providing a handcrafted context, without having to write view code.

https://github.com/machinalis/django-template-previewer/

My Links

http://delicious.com/ajlopez/python

January 8, 2013

Python: Links, News And Resources (11)

Filed under: Links, Programming Languages, Python — ajlopez @ 4:31 pm

Previous Post
Next Post

Modificaciones realizadas al Robot Multiplo N6
para permitir programaci on interactiva

http://www.41jaiio.org.ar/sites/default/files/11_JSL_2012.pdf

Aprendiendo a programar con Robots y Python

http://pyconar.blogspot.com.ar/2012/09/aprendiendo-programar-con-robots-y.html

Why PHP Is Fun and Easy But Python Is Marriage Material

http://onstartups.com/tabid/3339/bid/20493/Why-PHP-Is-Fun-and-Easy-But-Python-Is-Marriage-Material.aspx

Fast Non-Standard Data Structures for Python

http://kmike.ru/python-data-structures/

Getting Started with Django

http://gettingstartedwithdjango.com/

aima-python

https://code.google.com/p/aima-python/

Python implementation of algorithms from Russell and Norvig’s ‘Artificial Intelligence: A Modern Approach’

fisadev / simpleai

https://github.com/fisadev/simpleai

simple artificial intelligence utilities

Nuitka

http://nuitka.net/

Nuitka the Python compiler started out using C++0x which is now C++11

Haciendo un cargador de juegos python

http://hugoruscitti.github.com/2012/08/19/haciendo-un-cargador-de-juegos-python/

Human.io

http://human.io/

Easily create and instantly deploy tiny bits of interactive code to your army of followers via their mobile devices.

Learn how to code a Facebook app in 20 minutes on PythonAnywhere

http://blog.pythonanywhere.com/35/

Introducción a la programación con Python

http://www.uji.es/bin/publ/edicions/ippython.pdf

PROGRAMACIÓN ORIENTADA A OBJETOS EN PYTHON

http://www.maestrosdelweb.com/editorial/guia-python/

Por qué Thymbra ya no es Partner de OpenERP

http://blog.thymbra.com/2011/10/por-que-thymbra-ya-no-es-partner-de.html

maritnvol / Donnees-Acquisition-Data-software

https://github.com/maritnvol/Donnees-Acquisition-Data-software

Python Powered Acquisition Data software

Donnees code released as open source project

http://volteck.net/development/2012/08/donnees-code-released-as-open-source-project/

Plataforma de Desarrollo Rápido de Aplicaciones bajo el
Proceso de Software Personal: en busqueda de agilidad,
solidez y disciplina para la Ingeniería de Software

http://www.41jaiio.org.ar/sites/default/files/17_EST_2012.pdf

Posicionamiento de V ertebras mediante Landmarks y Redes
Bayesianas

http://www.41jaiio.org.ar/sites/default/files/18_EST_2012.pdf

PyBones
Programando con Robots realizó un taller en Informática

http://robots.linti.unlp.edu.ar/index.php?title=P%C3%A1gina_principal

PyCon alrededor del mundo: becas Systers Pass-It-On

http://pyconar.blogspot.com.ar/2012/08/pycon-alrededor-del-mundo-becas-systers.html

PyCon Around the world: Make a difference with a Systers Pass-It-On Award

http://pycon.blogspot.com.ar/2012/08/pycon-around-world-make-difference-with.html

lshimokawa / codingdojo

https://github.com/lshimokawa/codingdojo

Boilerplate code for starting Coding Dojos, each folder contains a unit testing framework configured with an initial test

SnapPy

http://www.math.uic.edu/t3m/SnapPy/

SnapPy is a program for studying the topology and geometry of 3-manifolds, with a focus on hyperbolic structures.

Codecademy: Python

http://www.codecademy.com/tracks/python

Need a Game Idea? A List of Game Mechanics and a Random Mechanic Mixer.

http://inventwithpython.com/blog/2012/07/30/need-a-game-idea-a-list-of-game-mechanics-and-a-random-mechanic-mixer/

marianoguerra / SassPython

https://github.com/marianoguerra/SassPython

python bindings for libsass

cells. A massively multi-agent Python programming game

http://phonons.wordpress.com/2010/06/01/cells-a-massively-multi-agent-python-programming-game/


http://news.ycombinator.com/item?id=1395726

ninja-ide / kanzen

https://github.com/ninja-ide/kanzen

NINJA-IDE Code Completion module

HOW TO WRITE VIM PLUGINS WITH PYTHON

http://brainacle.com/how-to-write-vim-plugins-with-python.html

Flasky Goodness (Or Why Django Sucks?)

pymothoa

http://code.google.com/p/pymothoa/

A JIT extension to Python
Pymothoa extends the Python language by adding JIT compilation without any modification of the interpreter source code

Bottle: Python Web Framework

http://bottlepy.org/docs/dev/

My Links

http://delicious.com/ajlopez/python

January 2, 2013

SimpleScript (1) First ideas

The latest two week, I was busy writing CobolScript, my COBOL compiler to JavaScript (see my posts). I have console sample programs, and dynamic pages samples running on Node.js (see samples). The web samples are using the simple http node.js module, or my new SimpleWeb module, a simple middleware layer a la Connect. I started to write a Python to JavaScript compiler, see Py2Script, too. But now, after those training projecs (my first ones that are compiling to JavaScript using JavaScript), I want to push the envelope and write a simple script compiler, I named SimpleScript (see repo).

The key points:

- It compiles to JavaScript, so, it’s JavaScript-oriented. It’s not a script language to be implemented in different technologies (.NET, Java, JavaScript). It’s totally oriented to JavaScript semantic.

- I love C programming language tradition, but this time, I want no semicolons and curly braces. I want a syntax more Python/Ruby oriented.

- No indentation “hell”. Ok, I like Python, but indentation as part of the syntax, it’s not my preferred way.

- No command separator (no semicolon or something else) except new line or syntax. That is, I could write

if a < 1 a = 1

or

if a < 1
   a = 1
end

Notice the use of end.

You CANNOT write (semicolon is not a separator):

if a < 1 a=1; b=2

You MUST write:

if a < 1
  a = 1
  b = 2
end

- No parenthesis around conditions (see the above if example).

- Only for … in , to be discussed. I want to have for-in as in JavaScript, but with some variant to access directly the values instead the names/indexes of an object or array. Something like

for k in myarray

iterates over myarray indexes.

for k in myarray values

iterates over myarray values, directly. Range expression will be supported:

for k in 0..n

- Loops with continue, break. The main loop construction is the while.

- Functions as first class citizens.

- function keyword will be used to define anonymous functions. Maybe (to be discussed) I will use define keyword to define named functions.

- Function invocation with explicit parenthesis (forget Ruby convention, go for something like Python 3.x).

- Array access with [] (forget Basic programming convention of using parenthesis).

- External variables. I learnt this from my CobolScript work: the linkage section is useful. An external variable is something injected at runtime (not a global one), and it can be provided in the call to the program. For example, print function could be an external one, so the calling program could redirect the print to the console, or to a buffer or to the web response. at will.

- Global variables should be declared explicitly. All non-declared variable is considered local (to the function, unit where it is used).

- Functions has closures as in JavaScript. In contrast, AFAIK, Python use explicit declaration to access outer variables in a function. I like JavaScript automatic access to outer variables, so I will keep it.

- Async constructions. I added this to CobolScript, and I found it useful. It’s something like the await/async in C# 5.0

- Run on the browser and on Node.js.

- Class support: to be discussed (the only key use case I have, is the game client coding for my game project).

I know, there are other implementations, like CofeeScript. But I want to training me, on JavaScript, Node.js and TDD.

Keep tuned!

Angel “Java” Lopez

http://www.ajlopez.com


http://twitter.com/ajlopez

December 31, 2012

Smalltalk: Links, News And Resources (9)

Filed under: Links, Programming Languages, Smalltalk — ajlopez @ 4:18 pm

Previous Post
Next Post

Building a Business with Cincom Smalltalk™ by Arden Thomas and Dirk Verleysen


ProgressGrid


Introduction to Smalltalk

http://live.exept.de/doc/books/JoyOfST/IntroToST.html

Porting from VisualWorks to Squeak

http://scg.unibe.ch/wiki/howtos/portingfromvisualworkstosqueak

Namespaces (Was: MNU in tools after loading parcel)

http://forum.world.st/Namespaces-Was-MNU-in-tools-after-loading-parcel-td3160938.html

The System Browser 101

http://www.cincomsmalltalk.com/tutorials/version7/tutorial1/weblogstats7.htm

Building the VM – Second Part

http://marianopeck.wordpress.com/2011/04/16/building-the-vm-second-part/

Building the VM from scratch using Git and CMakeVMMaker

http://marianopeck.wordpress.com/2011/04/10/building-the-vm-from-scratch-using-git-and-cmakevmmaker/

Mac Squeak VM

http://smallworks.com.ar/products/vm

Reef is a framework to manage dynamic web components for Seaside

http://association.pharo.org/

Project Renaissance: Harness Emergence

http://soft.vub.ac.be/~smarr/renaissance/

Sly and the RoarVM: Exploring the Manycore Future of Programming

http://soft.vub.ac.be/~smarr/2012/11/sly-and-the-roarvm-exploring-the-manycore-future-of-programming-2/

tode

http://code.google.com/p/tode/

tODE – the Object (centric) Development Environment

Byte Magazine Volume 06 Number 08 – Smalltalk (August 1981)

http://archive.org/details/byte-magazine-1981-08

Dale Henrich’s GitHub Repositories

http://dalehenrich.github.com/

Videos Smalltalks 2010
Inline caching (Part 1) by Eliot Miranda

http://www.fast.org.ar/smalltalks2010/videos/Inline%20caching

Videos Smalltalks 2010
Code generation (Part 1) by Eliot Miranda

http://www.fast.org.ar/smalltalks2010/videos/Code%20generation

Smalltalk is cool

http://astares.blogspot.com.ar/2012/11/smalltalk-is-cool.html

Do object-oriented programming languages exist that are not class-based?

http://programmers.stackexchange.com/questions/115418/do-object-oriented-programming-languages-exist-that-are-not-class-based

DBXTalk

http://dbxtalk.smallworks.com.ar/tools

Smalltalk Tutorial

http://smalltalktutorial.herokuapp.com/

Roassal


Turn your programming environment into a beauty center for objects

MicroSeeker Screenshots

http://www.huv.com/uSeeker/smalltalk/screenshots.html

Underwater Vehicles: MicroSeeker

http://www.huv.com/uSeeker/index.html

The Mist Project

http://mist-project.org/

There is no “C” in “Smalltalk”

What If: Developing Applications in the Multicore Era

http://soft.vub.ac.be/~smarr/2012/11/what-if-developing-applications-in-the-multicore-era/

Jugando con Comet en Squeak

http://diegogomezdeck.blogspot.com.ar/search?q=comet

Monticello

http://wiresong.ca/monticello/

Monticello is a distributed optimistic concurrent versioning system for Squeak code. It was written by Avi Bryant and Colin Putney, with contributions from many members of the Squeak community.

IM 101: Object Memory Management in VisualWorks

http://www.jarober.com/blog/blogView?entry=3529487736

My Links

http://delicious.com/ajlopez/smalltalk

Keep tuned!

Angel “Java” Lopez

http://www.ajlopez.com


http://twitter.com/ajlopez

December 29, 2012

CobolScript (3) Templates

Previous Post
Next Post

I like to have a template engine in my languages, so, I added one in my open source CobolScript, COBOL compiler to JavaScript. The first sample:


https://github.com/ajlopez/CobolScript/tree/master/samples/template

The code:

<#
data division.
working-storage section.
01 n.

procedure division.
#>
Factorial
---------

<#
perform show-factorial varying n from 1 to 10.

show-factorial.
local result.
perform factorial using n giving result.
#>
${n}!= ${result}
<#
.
factorial using n.
local m.
if n = 1 then return n.
subtract 1 from n giving m.
perform factorial using m giving m.
multiply n by m.
return m.
#>

The template file is compiled to COBOL transforming every text to DISPLAY … WITH NO ADVANCING (the new lines are already in the text). The code between <# and #> is copy as is to the COBOL program. Every expression between ${ and } is expanded as another parameter to a DISPLAY command. Then, after compiling all the texto to COBOL, CobolScript compile it to JavaScript. The template syntax is a kind of syntax-sugar.

The output of the program:

Factorial
---------

1!= 1
2!= 2
3!= 6
4!= 24
5!= 120
6!= 720
7!= 5040
8!= 40320
9!= 362880
10!= 3628800

I could use the template support to generate text files, that is, to implement code generation in CobolScript, as I did in AjGenesis (classic, Ruby, Node.js). I already have a dynamic web page implementation based on this template engine (yes, dynamic web pages in CobolScript ;-) . But that is a topic for another post.

Keep tuned!

Angel “Java” Lopez


http://www.ajlopez.com


http://twitter.com/ajlopez

December 28, 2012

Smalltalk: Links, News And Resources (8)

Filed under: Links, Programming Languages, Smalltalk — ajlopez @ 5:11 pm

Previous Post
Next Post

Seaside + jQuery Mobile

http://jquerymobile.seasidehosting.st/

Comas

http://cormas.cirad.fr/en/outil/presentation/

Agent-based simulations

StepTalk

http://en.wikipedia.org/wiki/StepTalk

StepTalk is the official GNUstep scripting framework that represents separate scriptable servers or applications as a single object environment. It is meant to be independent of the programming language used; its default language is Smalltalk on top of the Objective-C runtime.

thiscontext

http://thiscontext.wordpress.com/

Spoon 3 beta 2 (“Usable By Humans”) released

http://thiscontext.wordpress.com/2012/10/19/spoon-3-beta-2-usable-by-humans-released/

Ladrillos

http://www.squeaksource.com/Ladrillos/

A different way to group different existent packages / classes for specific goal.

Decomposing the Ulam spiral

http://www.lshift.net/blog/2012/09/27/decomposing-the-ulam-spiral

Mist
martinmcclure / mist

https://github.com/martinmcclure/mist

Mist is a project to create a Smalltalk variant that is implemented without a virtual machine, is implemented without depending on any other language, is simple, consistent, and is reasonably fast.

Seaside Statefulness: Call-and-Answer

http://gnuu.org/2009/01/26/seaside-statefulness-call-and-answer/

Seaside without Continuations?

http://joachimtuchel.wordpress.com/2011/04/27/seaside-without-continuations/

Are continuations a key feature in Seaside?

http://stackoverflow.com/questions/8279339/are-continuations-a-key-feature-in-seaside

Seaside: Continuations and Subroutine Calls

http://seaside.gemstone.com/tutorial/chapter07.pdf

Call-with-current-continuation

http://en.wikipedia.org/wiki/Call-with-current-continuation

Tumbleweed

http://pgregory.github.com/tumbleweed/

A lightweight, image based, encapsulated development environment based around Smalltalk, specifically, “A Little Smalltalk” version 3.0 by Timothy A. Budd

LittleSmallscript

http://ympbyc.github.com/LittleSmallscript/

Little Smallscript is a dialect of Smalltalk that compiles into JavaScript.

VA Smalltalk Videos

http://archive.org/search.php?query=VA%20Smalltalk%20AND%20collection%3Aopensource_movies

U8 Newsletter

http://u8.smalltalking.net/newsletter/newsletter.html

LSW Vision Smalltalk & DNG

https://groups.google.com/forum/m/?fromgroups#!topic/comp.lang.smalltalk.dolphin/c-5kV_pKleg

ESUG European Smalltalk User Group 2012 – 20th International Smalltalk Conference

http://www.esug.org/wiki/pier/Conferences/2012

My Links

http://delicious.com/ajlopez/smalltalk

December 26, 2012

AjTalk in C# (3) Environments

Filed under: AjTalk, C Sharp, Open Source Projects, Programming Languages, Smalltalk — ajlopez @ 4:46 pm

Previous Post

Some weeks ago, I added environments to my open source AjTalk Smalltalk Virtual Machine, C# version. What is an environment, in my jargon? It’s a dictionary for named artifacts, like classes. Smalltalk global is a classical environment. But I want to add support of other named environments, to avoid class name collisions. Usually, classic Smalltalk have pool dictionaries, but I want something more dynamic. Then, I added Environment, see my tests:


https://github.com/ajlopez/AjTalk/blob/master/Src/AjTalk.Tests/AssertTests/EnvironmentTests.st

At first, Smalltalk is the current environment:

"Current environment is Smalltalk"
[Environment current == Smalltalk] assert.

You can create new environments:

env := Environment new: #MyEnvironment.

Automatically, the new environment is registered/added to the current one, in this case, Smalltalk:

"The new environment was defined as global at Smalltalk"

[(Smalltalk at: #MyEnvironment) isNil not] assert.
[(Smalltalk at: #MyEnvironment) == MyEnvironment] assert.
[(Smalltalk at: #MyEnvironment) == env] assert.

[MyEnvironment isNil not] assert.
[MyEnvironment == env] assert.

Every new Environment has an entry to Smalltalk:

"Dotted expression syntax sugar for MyEnvironment at: #Smalltalk"

[MyEnvironment.Smalltalk == Smalltalk] assert.

You can switch to a new environment:

env setCurrent.

"Current environment check"

[Environment current == env] assert.
[Environment current == Smalltalk.MyEnvironment] assert.

And then, this is the key feature, the class definitions define a new class AT CURRENT environment:

"Define a class at current env environment, no change to syntax"

Object subclass:#MyClass
    instanceVariableNames:''
    classVariableNames:''
    poolDictionaries:''
    category:''
.

[(env at: #MyClass) isNil not] assert.
[(Smalltalk at: #MyClass) isNil] assert.

Orthogonally to environments, I implemented modules: a way to search and load file outs, and running them at a new environment (similar to Python import, or (more or less) to Node.js/CommonJS require). But this is a topic for another post ;-)

Keep tuned!

Angel “Java” Lopez


http://www.ajlopez.com


http://twitter.com/ajlopez

« Newer PostsOlder Posts »

Theme: Shocking Blue Green. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

Join 37 other followers