Planet Croquet

blogs about Squeak, Pharo, Croquet and family
planet squeak - planet squeak es - planet squeak jp - planet squeak fr - planet croquet - planet squeak code - planet smalltalk

May 03, 2012

Howard Stearns

Meanwhile, Back in the Real World — Hunger on Martha’s Vineyard

Dear Wife is in Philadelphia for the “Beyond Hunger: Real People, Real Solutions”  conference. Right about now she’s sitting on a panel about “hidden hunger” in communities that are perceived to be affluent.

Below the fold, a draft of …

by John at May 03, 2012 03:47 PM

April 27, 2012

Howard Stearns

CISPA Passes House, But I See Reasons For Optimism — Lessons From 2006 And How to COPE With A House Defeat.

In the face of a remarkably successful public outcry, the House Republican leadership moved up the vote on the Cyber Intelligence Sharing and Protection Act (CISPA) by a full day and amended it to make it even more awful

by Harold at April 27, 2012 03:50 PM

April 25, 2012

Nikolay Suslov

«Пеssнy Rусалкi» Надежде Толоконниковой «Pussy Riot»



Визуальный ряд:

«Вход Христа в Брюссель в 1889 г.» 258х431 см. Холст, масло. Картина написана в 1888 г. великим бельгийским художником Джеймсом Энсором.

Стихи:

«Песня Русалки» 1919 г. великого русского поэта Велимира Хлебникова.


Всюду тени те,
Меня тянете!
Только помните —
Здесь пути не те,
Здесь потонете!

Жмурился вечер,
Жмуря большие глаза,
Спрячась в озерах во сне голубых.
Тогда я держала в руках голубей,
Сидя на ветке шершавой и старой.

И опрокинутой глыбой
Косы веселий
Висели.
В осине осенней
То было.

Музыка и постановка: Суслов Николай (http://www.krestianstvo.ru)
Исполнение: Суслов Николай и студенты музыкального факультета.

by Suslov Nikolay (noreply@blogger.com) at April 25, 2012 09:07 PM

April 23, 2012

Howard Stearns

Verizon/SpectrumCo: Spectrum Gap v. Spectrum Crunch, Why Competition Is Actually Worse Off If Verizon Swaps AWS For 700 MHz (Part III)

For those just joining, Part I recounted how Verizon suddenly encountered unusually strong headwinds in its effort to acquire AWS-1 spectrum from the cable consortium known as SpectrumCo (Comcast, Time Warner Cable, and Bright House) along with the AWS-1 spectrum …

by Harold at April 23, 2012 07:25 PM

Verizon/SpectrumCo Spectrum Gap v. Spectrum Crunch — Verizon’s Brilliant Aikido Move (Part II)

When last we left our story, the good folks at Verizon had recognized that the FCC’s concerns around spectrum concentration, the “spectrum gap” between AT&T and Verizon and everyone else, had grown exponentially in the last few months as …

by Harold at April 23, 2012 06:01 PM

Verizon/SpectrumCo: The Spectrum Concentration Gap v. The Spectrum Crunch (Why VZ’s 700 MHz Divestiture Offer Doesn’t Help) Part I

Verizon has clearly studied everything AT&T did wrong last year when it tried to acquire T-Mobile. That includes staying alert for early signs of trouble and taking preemptive moves to keep the course of approval running smoothly. It also includes …

by Harold at April 23, 2012 02:49 PM

April 14, 2012

Howard Stearns

Behind the Bobo

Following in the tradition of behind-the-scenes posts like The Making of Idiot’s Mask, I invite you now to take a look at the genesis of my most recent serialization effort, Bobo, in which I will share my originating …

by Cheeseburger Brown at April 14, 2012 01:22 AM

April 09, 2012

Nikolay Suslov

Virtual World Framework (aka Croquet 2) goes live!

"The Virtual World Framework (VWF) is a fast, light-weight, web-based architecture for creating and distributing secure, scalable, component-based, and collaborative virtual spaces. It leverages existing web-based standards, infrastructure, and emerging technologies with the intent of establishing a powerful yet simple to use platform that is built on top of the next generation of web browsers. " from http://virtualworldframework.com/

Here is the information about VWF, that is available on Internet for now:
Official site: http://virtualworldframework.com/
The VWF source code, published during the conference http://www.gametechconference.com/
Video showing the Virtual World Framework, starting from 0:40 min.
Slides from WebGl camp 4 about VWF architecture.
I have tested the installation process of VWF server on Mac OS X Lion 10.7.3, here are the steps:
Launch a terminal window:
1. Load the source code from VWF Git repository:
$ git clone https://github.com/virtual-world-framework/vwf.git vwf
2. Install RVM
$ curl -L get.rvm.io | bash -s stable
2. Reload your shell environment
$ source ~/.bash_profile
3. Find the requirements (follow the instructions)
$ rvm requirements
4. Install ruby
$ rvm install 1.9.3
5. cd to your VWF development directory
$ cd vwf/
6. Install bundler
$gem install bundler
7. Install the RubyGems to the system
$bundle install --binstubs
8. Edit the file "config.ru", correcting the file paths:
require "init.rb"
change to
require "./init.rb"
5. Set Ruby 1.9.3 as the default for current shell.
$ rvm use 1.9.3
6. Run the VWF server:
$ ./bin/thin start
7. Open http://localhost:3000 in WebGL enabled web-browser (for full experience you will need the latest Mozilla Firefox web browser)
If you want to start VWF server as a background service, just add -d key:
$ ./bin/thin start -d
Also I tested the installation procedure on FreeBSD 8.1
and has successfully ran the VWF server instance on http://www.krestianstvo.org:3000/plane

Happy Birthday to Virtual World Framework!

by Suslov Nikolay (noreply@blogger.com) at April 09, 2012 08:03 PM

April 04, 2012

Howard Stearns

The Day The Public Interest Died: Media Access Project Shuts Its Doors After 40 Years of Public Service

Outside of our small world of telecom wonkery, few will notice that my old employer, The Media Access Project, announced that it will cease operations on May 1. After 40 years of fighting to protect the public interest, including …

by Harold at April 04, 2012 12:24 AM

March 23, 2012

Howard Stearns

Trayvon Martin and Toulouse

This is not telecom. But for the reasons I explain below, I have been struggling for days with the twin tragedies of the killing of Trayvon Martin and the killing of three Jewish children, a Rabbi, and three French soldiers …

by Harold at March 23, 2012 09:05 PM

March 22, 2012

Howard Stearns

My Insanely Long Field Guide To The Verizon/SpectrumCo/Cox Deal.

The more I look, poke and prod at the VZ/SpectrumCo/Cox deal the more convinced I am that this becomes one of the defining moments in telecom for 2012 – possibly for the foreseeable future. If AT&T/T-Mo represented the last stand …

by Harold at March 22, 2012 05:37 AM

March 16, 2012

Howard Stearns

Heinäsirkka, heinäsirkka, mene täältä hiiteen — another economical reposting

Don’t know why I’ve fallen into a Wetmachine non-posting funk; trying hard to get back in the swing of things. But even though I haven’t posted anything in a month or so, I’ll be Dang-blasted if I’ll let St. Urhu’s …

by John at March 16, 2012 05:10 PM

March 15, 2012

Howard Stearns

Spectrum Efficiency v. Competition Part II: Why Do Verizon and AT&T Keep Ending Up With All The Spectrum?

Recently, I talked about the tension between spectrum efficiency and competition policy in auctions.  Briefly, for reasons I will elaborate below, the largest wireless providers (AT&T and Verizon) can extract more value out of a wireless license than their …

by Harold at March 15, 2012 12:58 PM

March 02, 2012

Howard Stearns

And Now for Your Dancing Pleasure: Flying Robots Play the James Bond Theme Song

Looks like the Robopocalypse will have a live soundtrack!

Courtesy of the Christian Science Monitor.…

by Gary at March 02, 2012 01:55 AM

February 28, 2012

Howard Stearns

But Why Time Warner Cable’s Bandwidth Cap May Be A Good Thing. See How Complicated This Is?

So no sooner do I cast a very suspicious eye over AT&T Wireless’ new scheme to allow ap developers to pay the overage charges for users who exceed their 2 GB monthly cap when I see that Time Warner Cable

by Harold at February 28, 2012 06:46 PM

AT&T Poised To Fulfill Ed Whitacre’s Vision? Charging Aps For Customers and The Future of Wireless.

It has been just over 6 years since Ed Whitacre, then CEO of AT&T, kicked off the Network Neutrality movement by famously declaring that rival services would not “use my pipes for free,” neatly side stepping the fact that customers …

by Harold at February 28, 2012 12:14 PM

February 24, 2012

Howard Stearns

Why Genachowski’s Cybersecurity Initiative Is So Radical (In A Good Way)

When people think of “cybersecurity,” they usually think about the big stuff like Iranian hackers bringing down the power grid or master criminals hacking Bank of America. We associate it with the Department of Homeland Security (DHS) and institutions generally …

by Harold at February 24, 2012 04:15 PM

February 16, 2012

Howard Stearns

Spectrum Auction Theory v. Competition Theory

As I’ve previously reported, Congress is weighing spectrum legislation as part of the Payroll Tax Holiday and Everything Else extension. One critical change pushed by House Republicans (with the enthusiastic support of AT&T, surprise surprise . . .) involves …

by Harold at February 16, 2012 12:12 AM

February 14, 2012

Howard Stearns

The Keystone XL Pipeline — A project IG-Farben would be proud of

You’ve heard of the Keystone tar-sands pipeline by now. You may not have heard that the Reactionary Right in the U.S. Senate is attempting to revive it yet again, after their last gambit failed.

We must not let this …

by John at February 14, 2012 01:50 PM

February 13, 2012

Howard Stearns

“A false sense of precision”

“Whenever you hear the term ‘Darwinian’ from anyone other than historians of science, assume the crash position; it’s going to get real ugly.”

The quote is from a blogger known as Mike the Mad Biologist. The title of the post …

by Peg. at February 13, 2012 02:43 PM

February 10, 2012

Howard Stearns

RIAA — Take Us Back To The Days of Illegal Price Fixing.

One final point about Recording Industry Association of America (RIAA) CEO Cary Sherman’s NYT Op Ed on “how the Internets did us wrong.” Mr. Sherman notes that:

They [Congress] knew that music sales in the United States are less than

by Harold at February 10, 2012 02:57 PM

Mr. Sherman’s Magical Thinking

I am always impressed with the utter unwillingness of the Entertainment industry to acknowledge the world as it actually is, rather than the world as they want it to be. Perhaps it is a side effect of being in the …

by Harold at February 10, 2012 01:30 PM

February 01, 2012

Howard Stearns

AT&T, Anger Management and Spectrum Legislation

Based on recent statements, it’s hard to tell whose angrier at the Federal Communications Commission (FCC) and its Chair, Julius Genachowski: AT&T’s Upper Management or the House Commerce Committee Republicans. Mere mention of Genachowski’s name converts House Commerce Committee …

by Harold at February 01, 2012 08:59 PM

January 25, 2012

Nikolay Suslov

Krestianstvo SDK at C5-2012 conference


This year I was very happy to be at the The Tenth International Conference on Creating, Connecting and Collaborating through Computing 18-20 January 2012 (Institute for Creative Technologies, University of Southern California, CA, USA) and to demonstrate Krestianstvo SDK's projects and quit new features of it, like Microsoft Kinect and CAVE support for OpenQwaq. The primerily proceedings are available for download (publication to appear).

Almost all Viewpoints research institute's team was there!
There was a great tour of USC Institute for Creative Technologies and demonstrations of their projects.


Coach Mike (programming robot with blocks)

ICT Graphics Lab: Light Stage X, Gunslinger: Virtual Human integration demonstration, ICT Mixed Reality.

in.. Los Angeles, California...

by Suslov Nikolay (noreply@blogger.com) at January 25, 2012 08:22 PM

Howard Stearns

What The SOTU “Piracy” Reference Means: Back In The USTR With Special 301 and The Trans-Pacific Partnership Agreement.

It don’t take much to excite the Twitterverse. Obama makes a passing reference to intellectual property enforcement as a sop to the MPAA by saying foreign piracy hurts trade, and my reader explodes with “Obama’s flipping on PIPA/SOPA! Betrayal!” While …

by Harold at January 25, 2012 12:25 PM

The PIPA Aftermath — Will Senate Democrats Drive Off A Cliff For Hollywood?

One of the more surprising developments in PIPA/SOPA politics has been the transition of Hollywood-backed legislation from a bipartisan issue with both Republican and Democratic proponents and opponents to a partisan issue. Democrats (particularly Senate Democrats) are increasingly identified as

by Harold at January 25, 2012 12:08 AM

January 20, 2012

Howard Stearns

An Astounding Week In PIPA/SOPA Comes To A Close

Today brought a dramatic conclusion to an extraordinary week and the culmination of months of amazing activism on PIPA/SOPA. A month ago, hardly anyone had heard of PIPA and a few more had heard of SOPA and its passage was …

by Harold at January 20, 2012 09:43 PM

December 21, 2011

Nikolay Suslov

David A. Smith has revealed a new Croquet-like framework available in March 2012

David A. Smith, one of six principal architects of the Croquet Project has revealed a new Croquet-like framework that is built on WebGL and HTML, on which he is working now!
"We plan to have an open beta in March 2012" - David A. Smith said.
That's incredible!
Merry Christmas and Happy New Year!

by Suslov Nikolay (noreply@blogger.com) at December 21, 2011 09:32 PM

December 15, 2011

Takashi Yamamiya

Various examples in Haskell's FRP.Reactive

After playing with Flapjax library in Javascript, I moved to Reactive to learn more about FRP. Because research on Functional Reactive Programming is most active in Haskell, I thought it would be better to do that. Reactive seems to be a nice library, but unfortunately I couldn't find many working code examples. So I show some of them as my exercise. To write this, I owe a maoe's great article in Japanese.

As I didn't have much time, I couldn't write a good explanation now. But still I hope it helps some people who learn Reactive like me. I used Haskell Platform 2010 (slightly old) and did cabal install reactive --enable-documentation to install Reactive.

The first example shows "Hello, World!" after three seconds. atTime generates a timer event, and <$> convert this event to IO action (\_ -> putStrLn "Hello, World!") which writes a string.

This is as same as above, but it makes events each second.

This makes running Fibonnaci numbers. You can use scanlE to process previous value and current value of the event in a function. In this case, (0, 1) is the initial value, and when an event occurs, the function \(n0, n1) _ -> (n1, n0 + n1) calculates next value, and the result (the first case is (1, 1)) is used as a next argument when a new event occurs.

It shows characters as you type. It looks difficult but you don't have to worry about run function. The important part is machine :: Event Char -> Event (IO ()) that convert a character input event to an IO action.

This example shows how to merge two events. onType is same as machine in the previous example, and onClock is same as helloMany.hs example. I used `mappend` to merge the two events

This shows a simple state machine. The function next defines the state machine, and mealy_ convert the definition to an event. zipE is another way to merge two events. Unlike mappend, you can see two values in the two events in a same time.

by Takashi (noreply@blogger.com) at December 15, 2011 09:37 PM

December 06, 2011

Takashi Yamamiya

Flapjax vs Tangle

Functional Reactive Programming (FRP) is a framework to deal with time-varying data in a clean way. It is a combination of beauty of functional programming and dynamics of object oriented programming. The basic principle is easy enough as spreadsheets, however, its vague scope and arcane terminologies keep you from grasping it. It's not quite easy to answer the question such as what makes FRP different from Observer Pattern, Data Flow, etc ??. I think a good way to explain FRP is to compare FRP library against non-FRP library, and I could show you where FRP is special, and pros-and-cons of FRP.

I examined Flapjax as an example of FRP, and took Bred Victor's Tangle as the comparison target. Although Tangle has similar goal of FRP as he wrote "Tangle is a library for creating reactive documents", its implementation is quite different from Flapjax.

Flapjax
Side-effect is hidden inside the framework. Time-varying data is represented by dependent tree, and you can compose those trees to implement a complex behavior.
Tangle
Tangle provides a simple framework and UI widgets, but the data flow is represented by a normal imperative programming and assignments.

Because of those properties, I think comparing the two libraries is helpful to understand what FRP is. I hope it makes clear idea about FRP in your mind.

Simple Calorie Calculator in Tangle

This is the first example from the Tangle's documentation. You can modify the number of cookies by dragging, and it keeps calculating the calories as you change the value.

When you eat cookies, you will consume calories.

To make this nice reactive document. This document consists with two parts, HTML for the view and javascript for the model.

<p id="tangle"
  When you eat <span data-var="cookies" class="TKAdjustableNumber" data-min="2" data-max="100"> cookies</span>,
  you will consume <span data-var="calories"></span> calories.
</p>

The HTML part is straightforward, this is just a normal HTML except special attributes for Tangle. Data-var is used to connect HTML elements to Tangle object's properties. Class name TKAdjustableNumber makes a draggable input control. Data-min and data-max are its parameters.

var element = document.getElementById("tangle");

new Tangle(element, {
  initialize: function () {
    this.cookies = 4;
  },
  update: function () {
    this.calories = this.cookies * 50;
  }
});

The actual model of the document is described in the second argument of Tangle object's constructor (new Tangle). It consists with just two parts. initialize sets up the initial state, and update is invoked whenever you modify the input value. Tangle connects the model and the HTML element specified by getElementById("tangle").

This initialize-update structure is fairly common among end-user programming language like Processing and Arduino.

Simple Calorie Calculator in Flapjax

Let's move on to Flapjax. Unfortunately, Flapjax doesn't have a nice input widget as Tangle has. Instead, we use a traditional input field. But other than that, the behavior is identical.

When you eat cookies, you will consume calories.

As Tangle, the Flapjax version has HTML part and Javascript part. Note that Flapjax provides "Flapjax Syntax" which allows you to write a simpler notation, but we don't use it because I want to compare those as Javascript libraries.

<p id="flapjax" class="example">
  When you eat <input id="cookies" value="4" /> cookies,
  you will consume <span id="calories"></span> calories.
</p>

Flapjax's HTML part is similar as Tangle's. The element identifiers (cookies and calories) are given by id attributes. Unlike Tangle, the initial number of cookies is written in the input field.

var behavior = extractValueB("cookies");
var colories = behavior.liftB(function (n) { return n * 50; });
insertDomB(colories, "calories");

In Flapjax, time-varying data is called behavior. The goal of the program is to make a behavior which always calculates calories of the cookies. It's not so difficult than it seems. ExtractValueB creates a behavior from a form element, in this case, extractvalueB("cookies") tracks every changes happening in the input field named "cookies". This created behavior is processed by the function at the argument of liftB, in this case, whenever you modify "cookies" field, colories represents a value which is always 50 times by the number of cookies.

Eventually, insertDomB insert the content of colories where HTML element "calories" is and the calories are shown on the screen. This element is automatically updated.

Unlike Tangle, there is no side-effect in the program. One advantage of FRP is that you are not confused between old values and new values. In Tangle's example, this.cookies is old value (input) and this.calories is new value (output). But you are free to be mixed up those. In Flapjax, a new value is always the return value of a function, and there is no chance to be mistaken.

Implement Adjustable Number Widget in Flapjax

One of advantages of FRP is its composability. You can make a complicated behavior by combining simple behaviors (occasionally, imperative programming gives you a hard time for debugging if the bug involves with connected program modules with side-effects). To demonstrate this feature, I will show you how to make a Tangle-style draggable widget in Flapjax. This problem is particularly interesting because processing drag and drop involves a state machine, but a state machine is not quite fit with a functional programming style. So you might find pros and cons of FRP clearly from this example.

When you eat cookies, you will consume calories.

The HTML part is almost identical except adjustable class in the input field which points a Tangle like (but not fashionable enough) stylesheet.

<p id="flapjax-drag" class="example">
  When you eat <input id="cookies-drag" value="4" class="adjustable"/> cookies,
  you will consume <span id="calories-drag"></span> calories.
</p>

The main Javascript part is also similar as above. But in this time, we are implementing makeAdjustableNumber to make a draggable widget from the element named "cookies-drag".

var element = document.getElementById("cookies-drag");
var behavior = makeAdjustableNumber(element);
var colories = behavior.liftB(function (n) { return n * 50; });
insertDomB(colories, "calories-drag");

A drag gesture consists of three events, mousedown, mousemove, and mouseup. After a mousedown is detected, it has to track mousemove events to know how far you are dragging. You can make such a state machine to construct a higher order event stream. Here are two new concepts. An event stream is similar as behavior, but it is a stream of discrete events instead of continuous values. But you don't have to worry about that. It's just another object which has slightly different API. A higher order event stream is an event stream of event streams. This is used to make a stream which behavior is switched depends on the input.

This mouseDownMove makes a higher order event stream that tracks mousedown and mousemove. extractEventE(element,"mousedown") extracts mousedown event in the element. When the event signaled, the function inside the mapE is evaluated. MapE is similar as liftB but it is only for an event stream. Inside the function, extractEventE(document,"mousemove") find mousemove events and track the distance from mousedown. Note that I used document to find the event because occasionally you drag a mouse to outside the widget.

function mouseDownMove (element) {
  return extractEventE(element,"mousedown").mapE(function(md) {
    var initValue = parseInt(element.value);
    var offset = md.layerX;

    return extractEventE(document,"mousemove").mapE(function(mm) {
      var delta = mm.layerX - offset;
      return Math.max(1, Math.round(delta / 20 + initValue));
    });
  });
}

We need to handle mouseup event also. The mouseUp function returns a higher order event stream that find mouseUp event and the zeroE happily does nothing.

function mouseUp (element) {
  return extractEventE(document,"mouseup").mapE(function() {
    return zeroE();
  });
}

And these two event stream make by mouseDownMove and mouseUp are going to be merged by the mouseDownMoveUp function to complete a mousedown, mousemove, and mouseup cycle. MergeE is used to merge two events streams. We need one more step switchE to convert a higher order stream to a nomal stream, in this case, a stream of numbers (distance).

function mouseDownMoveUp(element) {
  var downMoveUp = mouseDownMove(element).mergeE(mouseUp(element));
  return downMoveUp.switchE();
}

Finally, we connect the event stream into an HTML element. Here I did slightly dirty work. Whenever a drag gesture happens, the element.value attribute is set. Probably using insertDomB to make an output element is cleaner way, but I chose this dirty way to make it simple. At the last line, the event stream is converted to a behavior object by startsWith. And that's how makeAdjustableNumber is implemented.

function makeAdjustableNumber (element) {
  var drag = mouseDownMoveUp(element);
  drag.mapE(function(n) { element.value = n; });
  return drag.startsWith(element.value);
}

Honestly, Flapjax doesn't seems to be too easy to use. But part of the reasons might be that I chose to show a plain Javascript syntax to introduce the mechanism. Flapjax also provides its own compiler which provides cleaner syntax. This Flapjax syntax should improve readability a lot. Anyway, I hope this short note helps you to grab a brief idea of Flapjax and FRP.

References

by Takashi (noreply@blogger.com) at December 06, 2011 09:12 AM

December 04, 2011

Howard Stearns

Mostly Reliable Performance of Software Processes by Dynamic Control of Quality Parameters

[I wrote this just over four years ago for a conference I never went to. I'm submitting it now in the sprit of my "Disclose This" entry, in which I promised to disclose ideas that I'd like myself and others

by Stearns at December 04, 2011 02:59 AM

November 14, 2011

Nikolay Suslov

Krestianstvo SDK2 goes CouchDB and OSC through the Web


After some silence the new version Krestianstvo SDK v.2.0.4 is available.
The updated version contains just the preloaded packages, which will allow to realize a lot of interesting things in near future!

1. Seaside 3 and Pier 2 for ForumPages and web-services.
2. OSC support for TUIO, Kinect, FaceAPI and WebApp controllers.
3. OMeta for user-defined markup languages.
4. CouchDB for services serialization on distributed DB, instead of platform-dependent file system.
+ some fixes, mainly Windows dependent

So, feel free to Download, Register and enter the Krestianstvo.
Looking forward to meet you online in space!

by Suslov Nikolay (noreply@blogger.com) at November 14, 2011 07:27 AM

Howard Stearns

Disclose This

When one of my children was learning to speak and to control the world around her, we told her that some behavior was a good idea. (I don’t remember what the behavior was.) She declared, “I do not like this …

by Stearns at November 14, 2011 04:12 AM

November 01, 2011

Bert Freudenberg

Squeak Etoys on ARM-based OLPC XO-1.75

First post this year, yikes! The last one was about ESUG 2010 in Barcelona, now I just returned from ESUG 2011 in Edinburgh. While I was there, a package with the shiny new XO-1.75 prototype arrived.

Incredibly, the pre-installed Etoys simply worked! Never mind the change in processor architecture, the Fedora folks have done a great job compiling the Squeak VM for ARM and so Etoys just works. Of course that's just as it should be, but it's still awesome. And e.g. Squeakland's own Etoys-To-Go would not have worked, as it only includes binaries for Intel-compatible processors.

Another great addition is a 3-axis accelerometer. The Linux kernel's driver exposes it as a file at /sys/devices/platform/lis3lv02d/position. Gotta love the unix design of exposing devices as files. All it took to make this usable from an Etoys project was just an object with ax, ay, and az variables that get set with one simple textual script:

Another simple script can use this to control a ball (the "rebound" script just keeps it on-screen):
Fun all around—it's a bit a hard to see the yellow ball in the Video, but Jakob enjoys it anyway:
Also, uploading from Etoys directly to Squeakland using Wifi just worked. Yay!

Update: If you want to try my uploaded project on your XO-1.75, you need to save it once from Etoys, quit Etoys, and run it again. Otherwise it won't work - it was signed by my key so the Etoys security sandbox prevents it from opening the accelerometer device. The saved copy will be signed using your key so no sandboxing happens.

by Bert (noreply@blogger.com) at November 01, 2011 01:31 PM

October 26, 2011

Howard Stearns

( )

Jobs. Ritchie. McCarthy. What’s God up to? When do you think it will be out?

The 40th Anniversary of Lisp was 13 years ago. I remember being mostly relieved that the old man didn’t attend my presentation

by Stearns at October 26, 2011 04:49 AM

October 24, 2011

Howard Stearns

What Were They Thinking?

I guess I don’t have to worry about giving away any secrets regarding the strange behavior of HP in the last few months, because developers like me haven’t been told anything that isn’t available publicly. Maybe I’m a little more …

by Stearns at October 24, 2011 04:00 PM

October 23, 2011

Howard Stearns

Well, That Was Weird

On May 7, 2011, my old-man-iest birthday yet, Teleplace stopped paying me. More about the circumstances another time, but what was I to do now? I had been working on Croquet for seven Halloweens, and I had no standard-label …

by Stearns at October 23, 2011 11:57 PM

September 23, 2011

Takashi Yamamiya

Yet Another "Alligator Eggs!" Animation

Bret Victor came to our office yesterday, and we had a great chat. He is a great thinker and has a beautiful sense about visualizing abstract ideas. I really like his works. I want to learn his idea more, but as a starter, I tried to implement his early famous Alligator Eggs! game. This game was made to teach about lambda calculus to eight years old kids. But it's even more fun to adult hackers!

Alligator and an egg : λx.x

This is a green alligator and her egg. This family shows a lambda expression λx.x (because I know you are not an eight years old, I use formulas without hesitation!). There is a no animation as there is nothing to eat.

An alligator eats an egg : (λx.x) y

But things are getting fun when there is something to eat before the alligator mother. In this case, a blue egg. If you click on the diagram, you see what's happening (I only tested Chrome, Safari, and Firefox). The alligator eats the poor blue egg. But price for the sacrifice is too high. The mother will die, and we will see the new baby.

And then, things are getting curiouser. The new baby doesn't look like the mother at all, rather it is like a blue egg, the victim of the slaughter. What's a amazing nature of the lambda land!

Take first : (λx.λy. x) a b

This is slightly a hard example. There are two alligators "x" and "y", and two victim eggs "a" and "b" on the right side. If there are more than two things next to an alligator, the alligator eats left one first (it is called as left associative in jargon). Can you guess what does happen after the meal? Alligator "x" eats egg "a", and alligator "y" eats egg "b". And only egg "a" survives (because it transmigrates through the green "x" egg).

You can think that this alligator family (λx.λy. x) eats two things and leave the first one. In a same way, can you think of an alligator family which eats two things and leave the second one? Here is the answer.

Old alligator : (λx.x) ((λy.y) (λz.z))

There are a few things to know more. Old alligators are not hungry. But they keep guarding their family while they guard more than one things. They behave like parenthesis in a lambda expression.

Color rule : (λx.λy.x) (λy.y)

This rule is the most tricky one. There are two blue alligators "y" at left and right, but those two are not in a same family. The only mother of the blue egg "y" is the right one. It gets trickier when the family is eaten by the green alligator because the blue family is reborn at the green egg is, where is bottom of another blue alligator. To make them different, the right blue family change the name and color to "y1" and orange.

Omega (Mockingbird hears the Mockingbird song) : (λx.x x) (λx.x x)

By these rules, you can make various kinds of alligator ecosystem. This is my favorite one. (λx.x x) is called a "Mockingbird" or, rather we should call it Mockingalligator. It doubles its prey twice. So what happens if a mockingalligator eats a mockingalligator? The result is called one of omegas, an infinite loop. They are eating forever. To stop the endless violence, please click the diagram again. But please do not to click three times! Because of my bug, something wrong will be happening.

Y combinator : λg.(λx.g (x x)) (λx.g (x x))

This is dangerous but beautiful one. The omega ecosystem above kills each other but it doesn't make any, but this Y combinator is very fertile. It produce many, so you have to watch it carefully, otherwise it consumes all the CPU power you have eventually!!

3 + 4 : (λa.λb.λs.λz.(a s (b s z))) (λs.λz.(s (s (s z)))) (λs.λz.(s (s (s (s z)))))

Actually, alligators also can do serious jobs. If you design carefully, you can teach them how to calculate 3 + 4! In this example, the middle family represents three and the right family represents four (count green eggs). And the result is a family with seven green eggs! This is called Church numbers (I don't have a time to explain the theory, so please read the link).

I only introduced very few alligator families. If you want play it, visit http://metatoys.org/alligator/ and design by your self. You can also download from http://github.com/propella/AlligatorEggs. The source code is messy because I haven't written javascript recently, but I'll clean it up soon.

by Takashi (noreply@blogger.com) at September 23, 2011 02:51 AM

August 29, 2011

Howard Stearns

for thought

Just read this.

What happens when scale meets anything that John wrote?…

by Stearns at August 29, 2011 10:41 PM

July 24, 2011

Howard Stearns

These “Clouds” Have a Dark Lining

Do you like dealing with your cable company or your bank? How would you like to resolve an account issue with them if they had cut off access to all your documents, email, contacts, pictures, links, and all else digital …

by Stearns at July 24, 2011 05:25 PM

July 10, 2011

Takashi Yamamiya

A hidden story behind the EToys Castle

http://metatoys.org/demonCastle/

Demon Castle Demon Castle Demon Castle Demon Castle Demon Castle Demon Castle

If you have played with Etoys, you might have seen The Etoys Castle (or The Demon Castle) tutorial. But you would never know how the story ends, because the Etoys distribution only includes the first chapter, and the last slide shows "To Be Continued ...". However, there are actually the hidden sequels, and the story has a happy ending.

When I first wrote the story in 2006, there were three chapters. The first chapter was about learning "handles", the second one was about the painter, and the third one was about scripting. But due to some technical issues, I gave up to publish them. Today, I happened to clean up my hard drive and I found old files. It's shame that I have never published rest of them. So I gathered the screen shots and made up one page html.

by Takashi (noreply@blogger.com) at July 10, 2011 02:24 AM

July 03, 2011

Howard Stearns

One Word

I’ve changed one term in my “Weapons of Math Destruction” post : “value” has been altered to read “interest” throughout the post.

The original public expressions of Metcalfe’s Law expressed the theoretical potential value of a communications network as being …

by Stearns at July 03, 2011 04:46 PM

June 30, 2011

Takashi Yamamiya

My personal history of Web Authorizing Tools (2)

Tinlizzie Wiki

Tinlizzie Wiki is a wiki written in Tweak. It uses OpenDocument Format (ODF) as data format, and WebDAV as server.

Although data format in StackWiki was Squeak specific binary, In Tinlizzie Wiki existing common format is used. A part of reason why I choose ODF was that it was a research project to find a possibility to exchange eToys content among different platform. So it was necessary to find platform independent and transparent format. ODF, especially its presentation format, was quite close to my demonds which are a) text based b) enable to embed graphics c) enable to use original element d) internal and external link supported.

A ODF file is just a zip archive which includes XML text and multimedia binary files. And it is easy to extract image file in a project by an another tool. Both embeded object and external resource can be represented by common URL notation. And if necessary, new tag for Tweak specific object can be used. For example, a project which includes fully dynamic behavior written as Tweak objects can be viewed on ordinary OpenOffice Org application, although dynamic feature would in it be disabled.

To export Tweak object to ODF as natural as possible, special care was needed to save. It is not the best way to define a new tag for Tweak specific object even though it is possible. It was preferable to map from Tweak to ODF properly. For example, if a Book object in Tweak is stored as a presentation within frame in ODF, the project looks somewhat more normal even on other application.

There is a issue how much detail information is needed to save an object. For example, if a text is saved during its editing, whether if position of the cursor should be saved or not?? There are two strategy in terms of implementation. One is to save everything except specified status (deep copy), another one is to save only specified status. Tinliziie Wiki adopted the latter one although Squeak and Tweak native serialize mechanism were the former.

Saving only specific status has two disadvantages. a) A user might expect to save everything including minor information because combining arbitrary objects in even any peculiar way is possible in Tweak. b) Each new widget needs to implement each exporter. But "saving everything by default" strategy has a problem of compatibility because even just one change of variable name makes trouble for old version. Especially it is problematic for sharing in Internet. So I din't choose this strategy.

WebDAV is used as the server. Both StackWiki and Tinlizzie doesn't need server side logic, but simple storage is required. WebDAV is the best option for that matter. Even version control system can be plugged in the server with Subversion modlule in Apache for free,

Javascript Workspace

Javascript Workspace is a simple web application. It uses bare Javascript on client, and Ruby CGI on server. It behave like a Smalltalk Workspace, and the contents are managed same manner as Wiki.

Let me make sure about workspace again. Workspace is a text editor, and it has two additional commands "do it" and "print it". Do it command envokes a source code selected by user, and print it command output the result into cursor position. The function is similar to REPL shell on dynamic language, but the use case is slightly different. A typical way to use workspace is as an explanation of program. An author writes example source code inside the documentation, so that a user can try actual function while reading a text. Namely, REPL is two ways dialog between a machine and a human, but workspace is tree ways conversation among a machine, an author, and a user.

Workspace is indispensable tool for Smalltak though, which doesn't mean only for Smalltalk. It would be nice if there is a workspace for Javascript language. This was the initial motivation of Javascript Workspace. And then, it was a natural consequence that Wiki was used to save the content because Javascript lives on web browser intrinsically, and there are no way to save to local disk.

During the development, however, I realize that it can be more than just a workspace in terms of media. Javascript workspace has only simple user interface, which includes a couple of buttons and one big text area. Even there are no hyper link nor emphasized text. But variety things can be happend from such minimal configuration by source code. Hyper link is enable to make from location property, rich text can be shown to modify DOM tree, and even game can be made to set up event hander. Source code can do everthing.

Just one textbox on a web page is a very radical idea. This is completely opposite direction to current trend of rich internet application. Web application consists with number of hidden functions these days, but Javascript Workspace can not have any invisible information. Everything what it does is shown to you as source code entirely on the screen. Javascritp Workspace looks like dangerous as it runs any Javascript code, but in fact, it is a quite safe system.

The idea of uset interface of Javascript Workspace is adopted to OMeta/JS.

TileScript

TileScript uses Scriptaculous as GUI library and WebDAV for server storage. JSON is used for its data format.

A TileScript document consists with one or more paragraphs, and a paragraph is either Javascript code, "tile script", or HTML expression. A tile script is set of tiles, which each tile represents some syntactical element in a programming language. A user can connect tiles to construct a program with drag and drop. This is an easy way to make a program avoiding syntax error. Javascript is used to represent more complicated program than tile script. And HTML is used as annotation. It can be seen as rich version of Javascript Workspace.

The initial motivation of TileScript was to remake eToys on the web environment. The research had got started by making tile available on web browser. I considered to use Lively Kernel (SVG), but it was unnecessary if Table element in HTML DOM is used as tile. Scriptaculous is used to keep the source code simple.

After tile is ported, then next step was eToys environment itself which includes event handling, scheduling, and bitmap animation, etc. But those issues seemed too difficult for nature of web document.

Flow layout, which actual position of document elements are dynamically changed by reader's browser environment, is a significant feature of web. An author don't specify concrete position of elements, but rather care about logical structure. And then, a part of document which can not be shown on the screen is accessable by a vertical scrool bar.

On the other hand, eToys provides page layout, which size and position of elements is fixed, and presume particular screen size. Althogh, it is quite fit as a metaphor of physical paper, and best for a graphical environment like eToys, but clumsy operation like zooming and horizontal scrool is required.

Because ultimate goal of TileScript was not just reinventing eToys, but investigating further possibility, flow layout is adopted to TileScript. But still absolute coordination can be supported in form of embeded object even in flow layout. TileScript provides variable watcher like eToys, but those widget is also layouted along with flow.

And then

Now I'm working on next version of Javascript Workspace, which especially its target application is Active Essays. Our group have found that Javascript is quite reasonable tool to show some ideas of computer science. One reason is language's simplicity, and other one is easiness of collaboration. We have a lot of new ideas about programming language, and some of the part should be simple enough to understand even by junior high student. I believe my tool can be used to explain such ideas.

The problem is any project intoroduced here is not intended for real use, rather just for demo or prototype of further real development. So it is not be so useful as it looks because it includes too experimental aspect, too fragile, or too slow. Now I'm thinking that it is not bad idea if I make somewhat stable version of them. Even it might not have exotic feature like tile script, but only basic and simple functions are enough to play with everyone. I really like my first idea of Javascript Workspace, which has only simple text. I admit it is extreme, so next version might support emphasized text and inline image (basic HTML elements) at least.

by Takashi (noreply@blogger.com) at June 30, 2011 09:54 PM

June 18, 2011

Nikolay Suslov

Krestianstvo SDK2 users registration is online!


Glad to invite everybody to register for exploring now the OpenQwaq's collaborative 3D forums using Krestianstvo SDK2 and ongoing Krestianstvo's 2 forums (CCSE, Learning math, Collaborative music, Art disks, ect.) in near future.
The registration page is available online now for all: http://www.krestianstvo.ru/register (RU: http://неучи.рф/регистрация ).
As soon as you get the Login and Password, you could enter into the collaborative 3D forums anywhere through the internet. But for that you'll need to download the new version of SDK.v.2.0.2: here or using an alternative link, or update the 2.0.1 one (Monticello repository here: http://krestianstvo.ru:8888/sdk/Monticello/sdk2/).
The main feature of the new 2.0.2 SDK is the new database storage logic, entirely based on XML and taking away the ODBC/MySQL usage. So, the OpenQwaq's service provider (not the Local's one) use the XML based db just as MySQL db, while storing it in Smalltalk class variable and serializing it's tables onto disc with plain XML files. That scenario is suitable for local and internet servers, thus turning OpenQwaq onto really mobile platform. Another feature is directed against Apache/PHP, meaning the coal/web/forum services running on :9991. So, the first step you could look at working online registration on Krestianstvo site and next will be having all admin pages using just Javascript and Ajax, hosted on the same Smalltalk image.

See you in the forums!

by Suslov Nikolay (noreply@blogger.com) at June 18, 2011 10:39 PM

May 16, 2011

Nikolay Suslov

Krestianstvo SDK v2 based on OpenQwaq

OpenQwaq is the most awaited framework in the virtual world's development domain!
Four years left after the latest OpenCroquet release and OpenCobalt has done a lot to bring virtual worlds closer to life, but OpenQwaq set the final point!
Now anybody could set up it's own virtual space or forum and do not worry about the underlying network architecture, just create Forums, create content for them and place on the servers through the web and collaborate.
So, everything looks just fine, but... to start own server on LAN or WAN someone need to install Linux, Apache, PHP, MySql and OpenQwaq server itself following config rules and avoiding the pitfalls.
But hey? We are in Squeak/EToys platform, Smalltalk at last.. in the self-contained environment, so why all these third-party tools a needable? (Yes, for: Security reasons, Application services, Streaming, account politics ect). But in learning situation at classroom or in Art gallery during installation all of these features are not too critical.
I decided to explore, how it is possible to have just One-Click OpenQwaq image with server and client on it, that could run as internet or local server or just a client. Image, that in a few clicks could be used by children setting up the classroom's network or artists making performance / installation.
And the Krestianstvo SDK 2.0 as experimental platform was borned!
Comparable to OpenQwaq, I started Krestianstvo2 with only one image for server and client versions (the server one based on Squeak 4.2).
The aim is to start the server with no need of installing any other third party applications (apache, mysql). Of course, some (a lot of) features of OpenQwaq could not be available in such scenario, but the work is in progress...
In the current version, anybody could easily setup the running server on LAN or WAN (the server http://www.krestianstvo.ru has already running the same image as provided for download).
SDK is developed on top of OpenQwaq, so that no part of the original OpenQwaq code in image is modified from the functional point of view. So, SDK image allows to run OpenQwaq Forums just in pure mode. Nevertheless, for localization purposes the String method #translateMe was introduced and was injected into OpenQwaq code for the most of string's objects. Translation process is still in progress too.
SDK works with Russian language support by default!
----------
Try out the running space!
The demo logins and passwords, that's working on krestianstvo.ru

Login: member
Password:
member
Organization: krestianstvo
Server: kresianstvo.ru

Login: guest
Password:
guest
Organization: krestianstvo
Server: kresianstvo.ru
-----------
You could add as new members and new groups in setup, visually.
In main login screen use right mouse button to have the context menu and select: "Add new user...".


Example connection scenario:

1. On the 'A' host you start Krestianstvo with as server (type instead of krestianstvo.ru the in the 'Server:' field).
2. On the 'B' host you start Krestianstvo with IP address of 'A' host as server.
3. Then try to login with l: admin/p: admin (l: member/ p: member) accounts (or add new members in 'A' host (on the main login screen, where is proxy configuration dialog).

So, in final it will be good to have: CoalServices working with local storage database in memory (instead of mysql) with Smalltalk WebServices front-end (instead of apache/php).

The project page: http://www.krestianstvo.ru/main
Monticello: http://www.krestianstvo.ru:8888/sdk/Monticello/sdk2/
Download the image: http://krestianstvo.googlecode.com/files/Krestianstvo2.0a.zip

by Suslov Nikolay (noreply@blogger.com) at May 16, 2011 10:22 PM

March 23, 2011

Laurence Rozier

Status

This blog is an archive originally titled Croquet 2 Play by Laurence Rozier. The Croquet project no longer exists but survives in two forms:

  1. Teleplace - commercial
  2. Open Cobalt – community/open source

by Laurence at March 23, 2011 11:46 AM

March 10, 2011

Howard Stearns

Controlling Time: TeaTime

Previous: Dial-tone for Cyberspace

Many of us remember where we were when we saw some seminal event unfold on TV. We may have been doing different things, but we shared a common experience through the live broadcast. Parts of each …

by Stearns at March 10, 2011 06:57 AM

March 09, 2011

Nikolay Suslov

Krestianstvo SDK is burning at the Wikipedia stake


The history of Krestiasntvo started in 2006. And it's intensive life till now has accompanied by a lot of projects, being built on it: Igrishe installation, several multimedia discs on art, CCSE virtual learning environment, Man'j, Multitouch table and more. So, I decided to write an article in Wikipedia, that could reflect at some level the technology hidden behind all these projects: Krestianstvo SDK.
And now, it is burning at the Wikipedia stake: just here. The judges are economists, lawyers ect., analyzing the article by formal criteria like spam-bots.
This definitely prove to me, that Krestianstvo is going the right way!

by Suslov Nikolay (noreply@blogger.com) at March 09, 2011 08:07 PM

Howard Stearns

Controlling Time: The Dial-tone for Cyberspace


Previous: Weapons of Math Destruction

Imagine we are at the Nasa Operations center, and it is filled with people attending to different aspects of a space launch. The operations director checks in with the different domain specialists: “Communications?” “Go.” “Environment?” …

by Stearns at March 09, 2011 01:47 AM

March 06, 2011

Howard Stearns

Controlling Time: Weapons of Math Destruction

Previous: What Have We Made?



The potential interest in a broadcast network grows proportionally to the number of users. For example, if a radio station doubles its audience, its audience value doubles. Interest = K + S(n),…

by Stearns at March 06, 2011 05:53 PM

Controlling Time: What Have We Made?

Previous: Demoed

In 2003, two of the world’s top computer scientists introduced their latest project: Croquet. David Reed and Alan Kay proposed a radical model for making computers work together on the Internet. With co-authors…

by Stearns at March 06, 2011 12:38 AM

March 05, 2011

Howard Stearns

Controlling Time: Demoed

Previous: Done!

by Stearns at March 05, 2011 02:03 AM

March 03, 2011

Howard Stearns

Controlling Time: Done!

Previous: Intro

by Stearns at March 03, 2011 08:29 PM

Controlling Time: Intro

Six years ago I was hired by the University of Wisconsin to lead its development team on an internationally distributed open source project. Later a company named Qwaq was formed by project leaders and it later hired me and…

by Stearns at March 03, 2011 05:00 PM

March 02, 2011

Howard Stearns

The world’s best digital minds can’t be too bad

No, I’m not talking about IBM’s Watson. The Guardian has this short plug for SXSW this month. Among such uber-geek’s, note Wetmachine’s own John Sundman heading this panel. I’m very pleased to see so many women on the panel.

by Stearns at March 02, 2011 04:51 PM

December 28, 2010

Nikolay Suslov

Multi-touch table based on Krestianstvo SDK

Here is a video from the recent event, which was held in the "Museum of Science" (Russia, Vologda), where the Multi-touch table based on Krestianstvo SDK was shown. The table is controlled directly by Krestianstvo virtual space and it's objects shared on the Croquet island. So, several such tables could be organized into p2p network and become a really interactive classroom, programmable just in Smalltalk. For recognizing reacTIVision fiducial markers and TUIO protocol are used (based on Simon Holland TUIO for Squeak work). For music synthesising SuperCollider through OSC is connected, using the idea from SCIMP (SuperCollider Server client for Impromptu) and realized in Smalltalk.





by Suslov Nikolay (noreply@blogger.com) at December 28, 2010 08:53 PM

November 26, 2010

Nikolay Suslov

Microsoft Kinect sensor in Krestianstvo SDK

Want to share my early experiments with the novel controller from Microsoft: Kinect, fine working in Krestianstvo SDK (based on Smalltalk dialect Squeak/Croquet). Here you could find an interesting list of projects and ideas already evolving using Kinect in different programming languages (c, c++, of, max/msp, processing. java, ect.)
But, why not in Smalltalk?.. And in pure 3D Virtual Space (Croquet), controlling your Avatar with own body and operating on objects just with own hands..
So, using OpenKinect driver, I prepared the plugin KinectSqueak.framework and the changeset for Krestianstvo (source code is avaliable here) with Mac OS X support only for now (Window will be very soon). The latest downloadable SDK is also include Kinect support, so just download it and try the sensor, if you have one..

Happy Kinecting!

by Suslov Nikolay (noreply@blogger.com) at November 26, 2010 01:04 AM

November 03, 2010

Howard Stearns

Shallow Hiro / Deep Hiro

With all the Avatars running around this Halloween, I figured it was an appropriate time to go back to the book that introduced the world to this usage of the term. But my Hiro Protagonist felt more like a sort…

by Stearns at November 03, 2010 03:11 PM

October 25, 2010

Nikolay Suslov

World serialization support in Krestianstvo SDK | OWML

Happy to announce an October update of Krestianstvo SDK with it's main feature:

World serialization support


Meaning, that one could freely save a current work, being done in active space and then restore it at any time later. The spaces are saved into OWML text file format (check them in Resources/resources/MySpaces folder).
In the next post, I will write an introduction to this new format. Briefly to say, it is mainly based on Sophie XUL and partially C3X serialization logic.

Some other features: new objects (Text3D), Seaside and Squeak base image update, Cog VM update, UTF-8 encoding is default in Mac VM now.

Happy serializing!

by Suslov Nikolay (noreply@blogger.com) at October 25, 2010 09:52 PM

October 19, 2010

Howard Stearns

Augmented Reality Two-Step

Step 1: An R/C hoverplane with a built-in camera that displays on the control app (on an iPhone).

Step 2: Remember Rainbows End? Here’s the same as above, adding virtual weapons.

Cool stuff (and somewhat terrifying)…

by Stearns at October 19, 2010 03:27 PM