Skip to content

Instantly share code, notes, and snippets.

@johnnyt
johnnyt / gist:3308755
Created August 9, 2012 22:47
MagLev and Big Data

MagLev is a Ruby implementation than runs on top of the GemStone/S Smalltalk VM. It can transparently manage a large amount (terabytes) of data and has a scalable built-in model for parallelism across VMs. Since all connected VMs see the same objects, it can have thousands of truly parallel threads running in a single, shared, transactional object space.

MagLev isn't a Ruby VM with an integrated NoSQL database, it's a pure object database that uses Ruby for its data manipulation language.

This session will show examples of MagLev specific collections (e.g. IdentitySet), indexes (including multi-level indexes like @address.@zip.@average_income) and benchmarks comparing MagLev with other NoSQL databases.

You will see how MagLev lets you have fun when working with Big Data by:

  • Avoiding the cruft, complexity and compromises that arise from the 'Object Relational Impedance Mismatch' (thanks Smalltalk!)
  • Working with and manipul
@johnnyt
johnnyt / gist:1854660
Created February 17, 2012 18:04
Amber Smalltalk WebServer - runs on top of node.js
Smalltalk current createPackage: 'Amber-Node' properties: #{}!
Object subclass: #WebServer
instanceVariableNames: 'port app dirname faye app express bayeux fs assets'
category: 'Amber-Node'!
!WebServer methodsFor: 'initialization'!
initialize
super initialize.
<self['@dirname'] = __dirname>.
loadAmber({
files: ['TrySmalltalk.js'],
prefix: 'examples/trysmalltalk/js',
ready: function() {
smalltalk.Browser._openOn_(smalltalk.ProfStef)
smalltalk.TrySmalltalkWidget._open();
}});
@johnnyt
johnnyt / gist:1041869
Created June 23, 2011 03:55
Squeak setup
Installer squeakmap update.
#(
'JSON'
'Sport'
'Shout'
'ShoutMonticello'
'ShoutWorkspace'
'HTML-Parser'
property apps_to_maximize : {"MacVim", "iTunes", "Dragon's Lair"}
property menubar_height : 22
property fuzzy_limit : 10 -- number of pixels that the top and bottom could be off by
property unmaximized_window_bounds : {200, 100, 1200, 700} -- size that the unmaximized window should be (it will be placed on its current monitor)
property apps_with_wacky_coords : {"Dragon's Lair", "PivotalTracker"}
property apps_without_title_bars : {"Dragon's Lair", "PivotalTracker"}
property apps_bounds_to_secondary_monitor : {"Dragon's Lair"}
-- We now move ALL apps to primary monitor (except what is listed above)
property menubar_height : 22
property fuzzy_limit : 10 -- number of pixels that the top and bottom could be off by
property unmaximized_window_bounds : {200, 100, 1200, 700} -- size that the unmaximized window should be (it will be places on its current monitor)
property apps_with_wacky_coords : {"Dragon's Lair"}
property apps_without_title_bars : {}
property apps_with_double_title_height : {"Finder", "Thunderbird"}
property not_working_apps : {"Thunderbird"}
global window_is_on_primary_monitor
set window_is_on_primary_monitor to true