Well, congratulations. Lisp-NYC has just been informed by Google that
the number of projects allocated to Lisp will be reduced unless we come
up with enough mentors IN THE NEXT TWO DAYS!!!
This is a win-win situation for me, because either we get enough mentors
by Sunday or I get to rub all your noses in it for the rest of time.
Now it occurred to me that maybe the fault is ours (ha!) for not making
things more concrete. Here are the proposal titles (laboriously edited
down from the html page source) looking for mentors (notes by kenny in
parens):
Philippe Paradis: GL-PDF library refinement
(think "cl-Quartz" of OS X fame; builds on excellent start by LispNyk
Yusuke Shinayam)
Samantha Kleinberg: CLARITY: A common lisp data alignment repository
(done good last year)
Robert Zinkov: Lithp
(CL Speech Synthesis)
Patrick Collison: Port Croma to C
(his own lispy Web app language)
Edvin Fuglebakk: cl-molecule: Developing a library for manipulating
molecular structures for computational chemistry
(proposed and mentored by Eric Moore)
Thomas Atkins: cl-molecule
Patrick Collison: Complete Croma and its web framework
(kenny yelled at Patrick for porting it to C, so he is offering the
community a different spin)
Filipe Cabecinhas: Design and implement a Common Lisp allowing access to
all feeatures fom BSD sockets, implementing it in one or two lisps
Valentin Hans: Implementing a distributed file system in Common Lisp
(think "GFS Lite")
Howard Yeh: Wispy Lisp := A Lispy Web-framework
(trying to go RoR and even LoL one better)
Cam-Hoan Ton-That: CL-2006
(lisp-1 for Common Lisp)
Miloslav Trmac: Javascript interpreter/compiler for Closure
Patrick L. Pippen: Tarsier - Object Database
Patel Juber Ahamad Abdul Bari: A Bioinformatics tool using LISP
Konrad Scorciapino: CLASH - Common Lisp Assistant and SHell
Patrick L. Pippen: CFFI interface to Berkeley's DB 4.4
Devon Krisman: Lisp LiveCD
Two days. Thx, btw, to the TWO OR THREE people who responded to earlier CPR.
kenny
--
Cells: http://common-lisp.net/project/cells/
"Have you ever been in a relationship?"
Attorney for Mary Winkler, confessed killer of her
minister husband, when asked if the couple had
marital problems.
Ken Tilton <·········@gmail.com> writes:
> Well, congratulations. Lisp-NYC has just been informed by Google that
> the number of projects allocated to Lisp will be reduced unless we
> come up with enough mentors IN THE NEXT TWO DAYS!!!
Just want to make sure you've got me on the list--I volunteered as
soon as Heow sent the mail and filled out the form at Google but
haven't heard anything else.
-Peter
--
Peter Seibel * ·····@gigamonkeys.com
Gigamonkeys Consulting * http://www.gigamonkeys.com/
Practical Common Lisp * http://www.gigamonkeys.com/book/
Peter Seibel wrote:
> Ken Tilton <·········@gmail.com> writes:
>
>
>>Well, congratulations. Lisp-NYC has just been informed by Google that
>>the number of projects allocated to Lisp will be reduced unless we
>>come up with enough mentors IN THE NEXT TWO DAYS!!!
>
>
> Just want to make sure you've got me on the list--I volunteered as
> soon as Heow sent the mail and filled out the form at Google but
> haven't heard anything else.
Yes, Peter, you are "the guy who just wants to sell more books". I will
email you a link shortly, it will probably Just Work for you. Get back
to Heow and me if not. sixty seconds.
Pascal, I could cut and paste from the mentors-only area any proposal
you are dying to read. Or you can sign on as a mentor at no risk, money
back guaranteed and eyeball them yourself. Send me an email and I will
try to set it up. No salesman will call.
thx for stepping up.
kenny
--
Cells: http://common-lisp.net/project/cells/
"Have you ever been in a relationship?"
Attorney for Mary Winkler, confessed killer of her
minister husband, when asked if the couple had
marital problems.
Ken Tilton wrote:
> Here are the proposal titles (laboriously edited
> down from the html page source) looking for mentors
...and where would we find the more detailed descriptions?
Pascal
--
3rd European Lisp Workshop
July 3 - Nantes, France - co-located with ECOOP 2006
http://lisp-ecoop06.bknr.net/
Pascal Costanza <··@p-cos.net> writes:
> ...and where would we find the more detailed descriptions?
See:
http://www.lispnyc.org/soc.clp
Paolo
--
Why Lisp? http://wiki.alu.org/RtL%20Highlight%20Film
The Common Lisp Directory: http://www.cl-user.net
Hi,
Just a little heads up, the links off of the
http://www.lispnyc.org/soc2005.clp page aren't working for me, they
seem to be generating some sort of adverspam.
--dennis
Jonathon McKitrick wrote:
> Ken Tilton wrote:
>
>>Howard Yeh: Wispy Lisp := A Lispy Web-framework
>> (trying to go RoR and even LoL one better)
>
>
> Where is the info on this one?
>
Looks like it is a shoe-in for approval:
# Misread 7500 as 7500 word limit... sorry.
Wispy Lisp := A Lispy Web-framework
by
Howard Yeh
······@gmail.com
---Synopsis---
A unified syntax for web-programming.
---Proposal---
This web-framework would provide all the necessary tools to
create a respectable, fully dynamic web-application. A
programmer would code in a unified meta-syntax that subsumes
html, css, javascript, sql, and lisp-- effectively blurring
client/server scripting.
HTML/CSS generation should paper over the (perverse)
idiosyncrasies of certain web-browsers, and conform to web
standards. The most infamous being, naturally, the box-model
interpretation. In this case, the framework's generator
should transparently attach the necessary fix
(i.e. box-model hack). User can override this behavior.
Parenscript covers primitive interface scripting. A lisp
syntax to Google's AJAXSLT would allow higher abstraction to
interface programming.
This project would also include a mini data-persistence
language by extending CLSQL. This mini-language would
provide declarative specification of table definitions,
relations, and constraint s. Instead of raw SQL for data
retrieving/storing, a simple pattern matching syntax is
used.
In a typical application under this framework, the
programmer would first specify the app's valid dataset with
a declarative schema. This data schema determines the legal
pattern matching syntax the programmer can use to
access/persist data.
The interface templating system helps the programmer to
establish robust communication channels between client and
server. By declaring 'SETFable' places in various
subtemplates, local/remote functions have well defined
places to return their response.
---Syntax---
............
Data Schema:
............
;; Defines database
;; ;; In later iterations, perhaps redefines database safely.
(def-schemas <schema>)
<schema> := (<table-name> <field>*)
<field> := <simple-field> | <complex-field>
<simple-field> := (<symbol> <data-type>)
<complex-field> := (<relation> <table-name>)
<data-type> := integer | (string <number>) | date
<relation> := :many | :one
;; Example:
(def-schemas
(brain (blood-pressure integer)
(color (string 32))
(smell (string 32))
(:many personality)
(:one obsession)
(:many dream))
(personality (complex (string 32))
(mood integer)
(:many brain))
(obsession (nature (string 255))
(shrink (string 32))
(hourly-rate integer))
(dream (expiry-date date)
(price integer))))
The 'id' fields of each schemas are implied. The ':many' relation
generates an auxiliary table, and foreign keys in the related
tables. Similarly, the ':one' relation.
...............
Data Retrieval:
...............
Now that we have a few brains in our database, we can fetch them.
;; Data query mini-language
;; ;; Data persisting is similar
(with-data <variable> <query> &key limit offset)
<query> := (<query-function>? <table-name> <field>*)
<table-name> := (<symbol> <symbol>) | <symbol>
<field> := <field-name> | (<field-name> <test-cond>) | <query>
<test-cond> := (<test-op> <var> <var>*)
<test-op> := < | <= | = | >= | > | or | and
<query-function> := :sum | :max | :min
;;Example
(let-data
((b brain) (color (= color 'jaundice'))
(smell (or (= smell 'rotten')
(= smell 'sour')))
((p personality) complex mood
((b2 brain) smell
(blood-pressure (> 150))
((p2 personality) mood))))
(out (h1: 'Down the meat grinder:')
(:div (b-smell ' stuff and ' b-color))
(:div ('Perfectly suited for ' b2-mood
' clients with blood-pressure exceeding (or at): '
(:em br-blood-pressure))))
:limit 100)
'let-data' binds the fields of the a matching record to
corresponding symbols (possibly prefixed with table
alias). The second argument provides an action to iterate
over all the matching records. The matching conditions are
collected and combined into the SQL 'where' statement. The
join conditions are generated appropriately as defined by
the schema.
...........
Templating:
...........
(def-wact ...) ;; Server action
(def-jact ...) ;; Client action
<template> := (<tag> <attribute-pair>* <template>*) |
<datum> | <s-exp>
<tag> := <keyword> | <wisp-tag> | <user-tag>
<attribute-pair> := <keyword> <s-exp>
<wisp-tag> := <mk-form> | <mk-target> | <mk-act>
<mk-form> := (mk-form (<symbol>*) <template> &key action)
<mk-target> := (mk-target <symbol> (<target-place>*)
<template>)
<mk-act> := (mk-act (s-exp) &key caption)
<target-place> := <symbol> | (<symbol> <s-exp>)
;; EXAMPLE
(def-wact enlargement (name age e-mail :key (referral 'gink maps'))
(out (:html (:body
(:h 'YOUR GIRL DISAPPOINTED WITH YOUR SIZE???!!!!')
(:b :color 'blood-red 'LOOK NO FURTHER!! 100% PRIVACY!!!')
(:div :class 'huge-sign
'ENLARGE YOUR BRAIN 3.2 INCHES!!')
(mk-form (name age e-mail)
(:div :class 'enticing-form
(:input :id name)
(:input :id age)
(:input :id e-mail))
:action (enlargement name age e-mail))
(:div 'YOU WANT ENLARGE MANY OTHER THINGS?' (:br)
(:a :href (get-partner-url referral)
'VISIT OUR TRUST PARTNER'))
(:br)
(mk-act (let ((card-num (prompt 'your visa for tiny fee')))
(if (validate card-num)
(redirect 'investment name e-mail age)
(set-target tar1
:caption 'DON'T YOU SCAM US!!'
:cuss-word (random-cuss-word))))
:caption (mk-target tar1
((caption 'OR PARTNER US FOR BIG MONEY!!')
cuss-word)
(:span caption cuss-word)))))))
This demonstrates a typical use of the templating
system. The 'enlargement' action provides an entry point
into the application. User is redirected to an error page
if arguments don't match. 'mk-form' creates a channel that
redirects back to 'enlargement'.
'mk-act' takes as its first argument an s-exp generate
javascript. If a waction is called inside 'mk-act', the
generator outputs an AJAX remote function call that
transparently return control and result back to client
javascript.
'waction' and 'jaction' defines, respectively, actions that
are mostly server-scripting or mostly client-scripting.
---Libraries---
I will build on these libraries:
TBNL - web front-end
CL-INTERPOL and CL-PCRE - String support
CLSQL - database interface
PostgreSQL - database
CL-WHO - templating
Parenscript or Peter Seibel's javascript macros
AJAXLST - XLST transform
DOJO or Prototype - AJAX support
---Timeline---
May 8 -> May 22
-Finish the first draft of wisp grammar.
May 25 -> June 26
- Implement the first draft (or working subset of it).
a) Schema definition polish. (2 days)
b) Data manipulation polish. (2 days)
c) Template. (18 days)
d) Local/remote function call channel. (7 days)
July 1 -> July 30
- Choose one extra feature to implement.
a) Integrate Prototype. (10 days)
b) Schema redefinition. (10 days, if time permits)
c) Integrate AJAXSLT. (10 days, if time permits)
August 1 -> August 15
- Wrap up.
a) Documentation. (5 days)
b) Demo. (10 days)
---Bio---
I am a 3rd year cognitive science undergraduate studying at
the University of British Columbia in Vancouver.
My experience with Lisp is a paltry 6 months, but I'd like
to think that learning from the great lisp classics outside
school is a more edifying experience than anything one could
wish for. I have experience with Common-Lisp, EmacsLisp, and
Scheme.
I've had too much exposure to Java from school, and a very
unpleasant experience programming a friendster clone in
J2EE. On the positive side, Ruby on Rails was my first
programming experience that gave me pleasure.
I am a fairly recent Linux convert. After much pain and
suffering since I quitted Windows cold-turkey, I now can
competently manage my machine and write reasonable scripts.
Jonathon McKitrick wrote:
> Ken Tilton wrote:
>
>>Howard Yeh: Wispy Lisp := A Lispy Web-framework
>> (trying to go RoR and even LoL one better)
>
>
> Where is the info on this one?
>
The proposal is doing very well in the voting and has a mentor, so it's
go go go! <g>
kenny
Wispy Lisp := A Lispy Web-framework
by
Howard Yeh
---Synopsis---
A unified syntax for web-programming.
---Proposal---
This web-framework would provide all the necessary tools to
create a respectable, fully dynamic web-application. A
programmer would code in a unified meta-syntax that subsumes
html, css, javascript, sql, and lisp-- effectively blurring
client/server scripting.
HTML/CSS generation should paper over the (perverse)
idiosyncrasies of certain web-browsers, and conform to web
standards. The most infamous being, naturally, the box-model
interpretation. In this case, the framework's generator
should transparently attach the necessary fix
(i.e. box-model hack). User can override this behavior.
Parenscript covers primitive interface scripting. A lisp
syntax to Google's AJAXSLT would allow higher abstraction to
interface programming.
This project would also include a mini data-persistence
language by extending CLSQL. This mini-language would
provide declarative specification of table definitions,
relations, and constraint s. Instead of raw SQL for data
retrieving/storing, a simple pattern matching syntax is
used.
In a typical application under this framework, the
programmer would first specify the app's valid dataset with
a declarative schema. This data schema determines the legal
pattern matching syntax the programmer can use to
access/persist data.
The interface templating system helps the programmer to
establish robust communication channels between client and
server. By declaring 'SETFable' places in various
subtemplates, local/remote functions have well defined
places to return their response.
---Syntax---
............
Data Schema:
............
;; Defines database
;; ;; In later iterations, perhaps redefines database safely.
(def-schemas <schema>)
<schema> := (<table-name> <field>*)
<field> := <simple-field> | <complex-field>
<simple-field> := (<symbol> <data-type>)
<complex-field> := (<relation> <table-name>)
<data-type> := integer | (string <number>) | date
<relation> := :many | :one
;; Example:
(def-schemas
(brain (blood-pressure integer)
(color (string 32))
(smell (string 32))
(:many personality)
(:one obsession)
(:many dream))
(personality (complex (string 32))
(mood integer)
(:many brain))
(obsession (nature (string 255))
(shrink (string 32))
(hourly-rate integer))
(dream (expiry-date date)
(price integer))))
The 'id' fields of each schemas are implied. The ':many' relation
generates an auxiliary table, and foreign keys in the related
tables. Similarly, the ':one' relation.
...............
Data Retrieval:
...............
Now that we have a few brains in our database, we can fetch them.
;; Data query mini-language
;; ;; Data persisting is similar
(with-data <variable> <query> &key limit offset)
<query> := (<query-function>? <table-name> <field>*)
<table-name> := (<symbol> <symbol>) | <symbol>
<field> := <field-name> | (<field-name> <test-cond>) | <query>
<test-cond> := (<test-op> <var> <var>*)
<test-op> := < | <= | = | >= | > | or | and
<query-function> := :sum | :max | :min
;;Example
(let-data
((b brain) (color (= color 'jaundice'))
(smell (or (= smell 'rotten')
(= smell 'sour')))
((p personality) complex mood
((b2 brain) smell
(blood-pressure (> 150))
((p2 personality) mood))))
(out (h1: 'Down the meat grinder:')
(:div (b-smell ' stuff and ' b-color))
(:div ('Perfectly suited for ' b2-mood
' clients with blood-pressure exceeding (or at): '
(:em br-blood-pressure))))
:limit 100)
'let-data' binds the fields of the a matching record to
corresponding symbols (possibly prefixed with table
alias). The second argument provides an action to iterate
over all the matching records. The matching conditions are
collected and combined into the SQL 'where' statement. The
join conditions are generated appropriately as defined by
the schema.
...........
Templating:
...........
(def-wact ...) ;; Server action
(def-jact ...) ;; Client action
<template> := (<tag> <attribute-pair>* <template>*) |
<datum> | <s-exp>
<tag> := <keyword> | <wisp-tag> | <user-tag>
<attribute-pair> := <keyword> <s-exp>
<wisp-tag> := <mk-form> | <mk-target> | <mk-act>
<mk-form> := (mk-form (<symbol>*) <template> &key action)
<mk-target> := (mk-target <symbol> (<target-place>*)
<template>)
<mk-act> := (mk-act (s-exp) &key caption)
<target-place> := <symbol> | (<symbol> <s-exp>)
;; EXAMPLE
(def-wact enlargement (name age e-mail :key (referral 'gink maps'))
(out (:html (:body
(:h 'YOUR GIRL DISAPPOINTED WITH YOUR SIZE???!!!!')
(:b :color 'blood-red 'LOOK NO FURTHER!! 100% PRIVACY!!!')
(:div :class 'huge-sign
'ENLARGE YOUR BRAIN 3.2 INCHES!!')
(mk-form (name age e-mail)
(:div :class 'enticing-form
(:input :id name)
(:input :id age)
(:input :id e-mail))
:action (enlargement name age e-mail))
(:div 'YOU WANT ENLARGE MANY OTHER THINGS?' (:br)
(:a :href (get-partner-url referral)
'VISIT OUR TRUST PARTNER'))
(:br)
(mk-act (let ((card-num (prompt 'your visa for tiny fee')))
(if (validate card-num)
(redirect 'investment name e-mail age)
(set-target tar1
:caption 'DON'T YOU SCAM US!!'
:cuss-word (random-cuss-word))))
:caption (mk-target tar1
((caption 'OR PARTNER US FOR BIG MONEY!!')
cuss-word)
(:span caption cuss-word)))))))
This demonstrates a typical use of the templating
system. The 'enlargement' action provides an entry point
into the application. User is redirected to an error page
if arguments don't match. 'mk-form' creates a channel that
redirects back to 'enlargement'.
'mk-act' takes as its first argument an s-exp generate
javascript. If a waction is called inside 'mk-act', the
generator outputs an AJAX remote function call that
transparently return control and result back to client
javascript.
'waction' and 'jaction' defines, respectively, actions that
are mostly server-scripting or mostly client-scripting.
---Libraries---
I will build on these libraries:
TBNL - web front-end
CL-INTERPOL and CL-PCRE - String support
CLSQL - database interface
PostgreSQL - database
CL-WHO - templating
Parenscript or Peter Seibel's javascript macros
AJAXLST - XLST transform
DOJO or Prototype - AJAX support
Ken Tilton <·········@gmail.com> wrote:
> Well, congratulations. Lisp-NYC has just been informed by Google that
> the number of projects allocated to Lisp will be reduced unless we come
> up with enough mentors IN THE NEXT TWO DAYS!!!
>
> This is a win-win situation for me, because either we get enough mentors
> by Sunday or I get to rub all your noses in it for the rest of time.
Who cares?
Stefan Scholl wrote:
> Ken Tilton <·········@gmail.com> wrote:
>
>>Well, congratulations. Lisp-NYC has just been informed by Google that
>>the number of projects allocated to Lisp will be reduced unless we come
>>up with enough mentors IN THE NEXT TWO DAYS!!!
>>
>>This is a win-win situation for me, because either we get enough mentors
>>by Sunday or I get to rub all your noses in it for the rest of time.
>
>
> Who cares?
>
Now there is a self-referential article if I ever saw one. You are just
mad because c.l.lisp responded magnificently and we are all mentored-up
now, so you yobbos did not get a chance to shred me in #lisp.
nyeah nyeah nyah nyeah!
:)
kenny
ps. The ALU autoresponder rejected my appeal with the reason "Quiet, we
are sleeping". Cool, never saw that one before. k
--
Cells: http://common-lisp.net/project/cells/
"Have you ever been in a relationship?"
Attorney for Mary Winkler, confessed killer of her
minister husband, when asked if the couple had
marital problems.
Kenny,
If your subject line is a metaphor to either electrical cardioversion
or defibrillation, we specify and program the machine with the number
of Joules, an energy unit, rather than voltage, historically an
electromotive force unit. This is important since we desire a certain
amount of energy directed at the myocardium (depending upon the
condition we are treating) rather than than voltage which leaves open
variables of impedeance (affecting the transthoracic current applied)
and duration (affecting the transthoracic energy delivered). As a
result of the desired transcardiac current and transthoracic
impedance, energies of 50-360J are typically specified resulting in
voltages of 200 of 1700V for monophasic devices. Current biphasic
systems are smarter in terms of measuring transthoracic impedence and
a knowledge of typical body habitus to design a waveform of particular
duration and voltage to optimize delivered transcardiac energy for
resolution of the dysrhythmia[1]. These shocks delivered with biphasic
systems are still specified in Joules, though energies needed are less
than with monophasic waveforms as in this transvenous study [2].
Good luck with SOC 2006, Kenny!
--
Kevin Rosenberg
·····@hypershots.com
[1] http://www.medical.philips.com/main/products/resuscitation/biphasic_technology/waveform_design.html
[2] http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=7567587&dopt=Abstract
Kevin Rosenberg wrote:
> Kenny,
>
> If your subject line is a metaphor to either electrical cardioversion
> or defibrillation, we specify and program the machine with the number
> of Joules, an energy unit, rather than voltage, historically an
> electromotive force unit. This is important since we desire a certain
> amount of energy directed at the myocardium (depending upon the
> condition we are treating) rather than than voltage which leaves open
> variables of impedeance (affecting the transthoracic current applied)
> and duration (affecting the transthoracic energy delivered). As a
> result of the desired transcardiac current and transthoracic
> impedance, energies of 50-360J are typically specified resulting in
> voltages of 200 of 1700V for monophasic devices. Current biphasic
> systems are smarter in terms of measuring transthoracic impedence and
> a knowledge of typical body habitus to design a waveform of particular
> duration and voltage to optimize delivered transcardiac energy for
> resolution of the dysrhythmia[1]. These shocks delivered with biphasic
> systems are still specified in Joules, though energies needed are less
> than with monophasic waveforms as in this transvenous study [2].
I love this NG. :)
>
> Good luck with SOC 2006, Kenny!
>
After showing us with an estimated ten projects throughout the entire
process, with two days to go they gave us three. So quite a few students
will be disappointed.
Maybe I should not have been so hard on Alex. :)
At least the PyCells project seems to be moving ahead over at PSF, who
got 25 projects.
kenny
--
Cells: http://common-lisp.net/project/cells/
"Have you ever been in a relationship?"
Attorney for Mary Winkler, confessed killer of her
minister husband, when asked if the couple had
marital problems.
For what it's worth, I don't have the LISP skills yet to work on any of
these projects, but I am learning LISP and use a screen reader, so if you
need someone for testing purposes I'll volunteer.
David
On Thu, 18 May 2006, Ken Tilton wrote:
> Robert Zinkov: Lithp
> (CL Speech Synthesis)
>