Monday April 30, 2007 Seth Schroeder
- JHaskell.
- Sleep. Quoted from the site: Sleep is heavily inspired by Perl with bits of Objective-C thrown in
- Dynamic Java.
- Groovy seems like Java "lite." The groovy compiler reportedly accepts most Java source, but also permits a more flexible yet terse syntax. This gained a lot of traction at the conference. Some people complained that the name sounded too much like "Ruby." Which leads to...
- JRuby. The overall goal is to mate the slick Ruby syntax with the mature Java VM. I'm very hesitant to seriously consider it for a few reasons:
- The interpreter will variously introduce bugs and lack features. This will be an ongoing issue as Ruby is an advanced, relatively young language; 2.0 is under active development.
- The Ruby VM will get much better over time. When it does, the argument for using the excellent Java VM will be much weaker.
- For better or worse, I didn't see a competitor to Fortran.NET
Every spreadsheet application needs to support the creating, reading, updating, and deleting of sheets, columns, rows, and cells. The network protocol for an online spreadsheet could easily treat sheets, columns, etc. as resources and offer CRUD operations for manipulating them.
The requests below were hand generated and sent via telnet. The responses were copy and pasted from the console window (w/ a little pretty printing). A real frontend might use this API with XmlHttpRequest.
| operation | request | response |
|---|---|---|
| Create a sheet |
POST /fauxcel/finances HTTP/1.1 Host: 192.168.113.115:8080 |
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Wed, 25 Apr 2007 19:26:39 GMT
|
| Populate a cell |
POST /fauxcel/finances/A/1 HTTP/1.1
Host: 192.168.113.115:8080
Content-Type: text/text;charset=utf-8
Content-Length: 34
{"value":"123.45", "type":"value"}
|
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Length: 0 Date: Wed, 25 Apr 2007 19:36:37 GMT |
| Insert a column |
POST /fauxcel/finances/A HTTP/1.1 Host: 192.186.113.115:8080 |
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Length: 0 Date: Wed, 25 Apr 2007 19:36:37 GMT |
| Read a column |
GET /fauxcel/finances/B HTTP/1.1 Host: 192.168.113.115:8080 |
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Date: Wed, 25 Apr 2007 19:39:38 GMT
53
{"name":"finances","cells": [
{
"col":"B",
"row":"1",
"type":"value",
"value":"123.45"
}
]}
0
|
| Delete a row |
DELETE /fauxcel/finances/1 HTTP/1.1 Host: 192.168.113.115:8080 |
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Length: 0 Date: Wed, 25 Apr 2007 19:41:26 GMT |
Note that the back end moved the value of cell A1 into cell B1 when a column was inserted before A. More details on that in a following post!

