Bluish Coder

Programming Languages, Martials Arts and Computers. The Weblog of Chris Double.


2006-03-18

DabbleDB on TechCrunch

DabbleDB gets a mention again on TechCrunch along with a lot of positive comments.

In just a few minutes, the video will show how you can start with simple, flat spreadsheet data, use Dabble DB to search and explore this data right away, then gradually evolve into a full conference-planning application (with drop-down lists, calendar views, relations, and more). While this demo shows that full app development can take place in only a few minutes, in practice it would usually happen organically over a period of time as the app editors further expand their apps.

DabbleDB is written in Squeak Smalltalk using the continuation based web framework Seaside.

Tags: seaside 

2006-03-18

Augment

If you think that we've made great progress in computer systems over the last ten years, take a look at Brad Neuberg's screencast of the Augment system developed in the 60's.

Augment is the first system developed with groupware, email, outlining and interaction with the computer. Many of the 'new' features we see today are evident in the Augment system. It must be a gold mine of prior art for some patent cases!

Mentioned in the screen cast (but not demonstrated) is audio visual conferencing, embedded graphics in documents, 'applet' style programs running within documents, etc.

The documents themselves are all outline based and reminded me a lot of the Userland's outlining facilities. Only developed 30 years ago of course.

Demonstrated are using the outliner, displaying documents, conferencing, and email. Very cool.

Keep an eye on the hyperscope project which is attempting to bring some of this to the web.

Tags: hyperscope 

2006-03-17

Partial Continuations and Factor

I've written some partial continuation support and put it in the Factor contrib directory. It implements bshift and breset as outlined by Oleg's post on comp.lang.scheme.

It's in contrib/partial-continuations.factor and can be pulled from my repository until it makes it to the official Factor repository:

darcs pull http://www.bluishcoder.co.nz/repos/factor

It should be relatively easy to convert Oleg's Scheme examples to Factor. Just remember that the partial continuation has stack effect ( a -- b ) and the quotations passed to bshift and breset have stack effect ( pcc -- v ) and ( -- v ) respectively.

'breset' marks the scope of the partial continuation. If 'bshift' is not used then the value returned by the quotation is left on the stack:

[ drop 5 ] breset
 => 5

An example with 'bshift':

[
 1 swap [ 5 swap call ] bshift +
] breset
 => 6

In this case the partial continuation passed to the 'bshift' quotation represents the computation '1 X +' where 'X' is replaced by the value passed to the partial continuation. In this case 5, resulting in a result of 6. Additional calls can be made to the same continuation:

[
 1 swap [ 5 over call swap call ] bshift +
] breset
 => 7

This calls the '1 X +' partial continuation twice. First with '5' returning the value '6'. Which is then passed to it again, returning '7'. The partial continuation does not need to be called. Values that 'fall through' cause the result to be returned from the 'breset' quotation:

[
 1 swap [ drop 5 ] bshift +
] breset
 => 5

Here's a fun example translated from Oleg's posting. The following 'range' function has some interesting properties:

: range ( r from to -- )
 rot [ ( from to pcc -- )
   -rot [ over + pick call drop ] each 2drop f
 ]  bshift ;

It uses the standard 'each' call on a 'from' and 'too' number to call a quotation on each number between 'from' and 'too' inclusive. The quotation called is the partial continuation provided by 'bshift'. This can be used in code like:

[ 1 5 range . ] breset drop
 => 1
    2
    3
    4
    5

For each item in the range it executed the partial continuation which is 'X .', printing that item in the range. So given a function that knows nothing about the special capability of 'range' can still work with it. The following prints the first five factorials:

: fact ( n -- n ) dup 1 = [ 1 ] [ dup 1 - fact ] if * ;

[ 1 5 range fact . ] breset drop
 => 1
   2
   6
   24
   120

I'm not sure how useful delimited continuations are in Factor but it gives something to play with to see how they work.

Tags: factor 

2006-03-15

Io Garbage Collector

Steve Dekorte has made the garbage collector used in Io a seperate library and released as open source. It's available at the libgarbagecollector page.

Tags: io 

2006-03-10

Erlang SMP Benchmarks

Joe Armstrong has started a weblog and on it he has posted results of some testing of the Erlang SMP snapshot.

Program 1 spawned N (typically 1000) processes on 4 processors. Each process then pings all the other processes. This an 3.6 times faster on 4 CPUs than on a single CPU.

...

Program 2 is a SIP stack - this ran 1.8 times faster on 4 processors than on 1 processor.

...

These result are pretty good - to start with the Erlang system is unoptimized, as is the application. Despite this fact the application runs almost twice as fast on a four CPU system as it ran on a single CPU system.

Tags: erlang 


This site is accessable over tor as hidden service 6vp5u25g4izec5c37wv52skvecikld6kysvsivnl6sdg6q7wy25lixad.onion, or Freenet using key:
USK@1ORdIvjL2H1bZblJcP8hu2LjjKtVB-rVzp8mLty~5N4,8hL85otZBbq0geDsSKkBK4sKESL2SrNVecFZz9NxGVQ,AQACAAE/bluishcoder/-61/


Tags

Archives
Links