Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Blocky is a visual programming language based on Common Lisp.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
standard
testing
turtle
vomac
COPYING
CREDITS
INSTALL
README.org
blocks.lisp
blocky-init.lisp
blocky.asd
blocky.el
blocky.lisp
blocky.org
blocky.svg
browser.lisp
build-unix.lisp
build-win32.lisp
chart.lisp
console.lisp
dance.lisp
doc.lisp
guide.org
halo.lisp
hypermedia.org
keys.lisp
listener.lisp
logic.lisp
math.lisp
meta.lisp
mikmod.lisp
pak.el
path.lisp
prototypes.lisp
quadtree.lisp
rgb.lisp
syntax.lisp
tasks.org
tests.lisp
text.lisp
trees.lisp
tweak.el
universe.lisp
windows.lisp
worlds.lisp

README.org

This is the README.ORG file for the Blocky programming language. It contains general information about the project as well as an index of important files in this source distribution. More information about Blocky can be found at the Blocky home page, blocky.io.

The included file “COPYING” contains full licensing information, including the text of the GNU General Public License, Version 3.

See the included file INSTALL for installation instructions. A programmer’s guide may be found in the file GUIDE.ORG.

Blocky is a visual programming language for Common Lisp paired with an Emacs-like user interface. In addition to borrowing ideas from GNU Emacs, the language design is heavily influenced by existing research environments such as PureData, Squeak, Self Morphic, MIT Scratch, Berkeley’s BYOB project, and more recently Jens Moenig’s Smalltalk Elements.

My ultimate goal is to create an industrial-strength object-oriented visual Lisp by importing the “abstraction” concept from PureData. Such a “visual Lisp macro” facility enables much more powerful blocks to be defined in terms of simpler ones, interactively. In addition there are some improvements, such as native OpenGL support throughout, and of course the advantage of compiling your block diagrams to optimized machine code via SBCL. (Don’t forget Quicklisp either.)

I also wish to enable unfettered inquiry into computable knowledge, and to support radical autonomy of creative expression. So I have built Blocky first and foremost as a human language activity supported by free software, not as an app or platform—because language is a human right.

For more information on the design of Blocky, see http://blocky.io/design.html

For a quick start to getting familiar with Blocky internals, see the included file GUIDE.ORG (or read the first parts of the online Blocky reference manual) to get an overview of the language syntax. Then look through BLOCKS.LISP and branch out from there. I’ve placed cross references wherever possible.

Emacs users may find BLOCKY.EL useful in making Emacs behave better while editing Blocky sources and game modules.

Here is a quick index of the various files:

  • COPYING: Licensing information, including full GPLv3 text
  • CREDITS: List of thank-yous for help, influences, dependencies
  • INSTALL: How to obtain and build Blocky from source
  • rgb.lisp: X11 color set
  • keys.lisp: SDL key symbol translation table
  • math.lisp: bresenham’s and other algorithms
  • logic.lisp: several CL tools adapted from PAIP
  • dance.lisp: rhythm tools for USB dance pads and other controllers
  • prototypes.lisp: a custom Self-like object system underlying Blocky
  • console.lisp: basic device and file operations for SDL, OpenGL, etc
  • blocks.lisp: core Blocky language model and default block behaviors
  • halo.lisp: generic GUI object handles, in the style of Squeak Morphic
  • windows.lisp: generic interactive viewer for buffers
  • text.lisp: generic emacs-like textbox editing control
  • trees.lisp: drop-down menus and tree tab widgets
  • listener.lisp: Lisp data entry and command processing
  • system.lisp: treating the system and session like an object
  • worlds.lisp: places where gameplay happens
  • shell.lisp: drag-and-drop enabled editor shell
  • path.lisp: A-star pathfinding on a grid
  • meta.lisp: visual macros for implementing blocky-in-blocky
  • library.lisp: standard blocks library
  • blocky.el: emacs lisp configuration for editing blocky source
  • blocky.asd: ASDF system definition
  • blocky-init.lisp: user-specific startup configuration file for blocky
  • tasks.org: current task list and plans, in org-mode format
  • blocky.org: write-up of some future plans for Blocky
  • standard: directory with included fonts/images
  • turtle: hello world example
  • vomac: second example
  • build-unix.lisp: build script for unix
  • build-win32.lisp: build script for win32

Blocky is (C) Copyright 2006-2012 by David T. O’Toole <dto@ioforms.org> This program is dedicated to our beloved Yogi, who died 2006-10-06.

Something went wrong with that request. Please try again.