Re: [ANN] expresso 0.1.0 released

2013-08-30 Thread Maik Schünemann
Hi David,
The core of expresso wouldn't be much work to port to clojurescript.
The rule based translator is built on top of core.logic, so porting
that should be straightforward.
Also the manipulation routines are very much purely algorithmic so
should work without much trouble in clojurescript.

There are two things which need to be resolved, though:
1.) what execution engine: expresso is very close to core.matrix and
uses its functions to execute the expressions and it's function names
and semantics for the encoded expressions.
2.) compiling optimized expressions to functions at runtime:
In clojure I managed to compile optimized expressions to optimized
code at runtime through a code-emitting protocol and a call to eval to
create the function. Without eval in clojurescript this couldn't be
done easily. With compile-time constant expressions this could be made
to work with a macro. At runtime there would still be the normal
evaluate function which however traverses the whole expression tree.

So if anyone knows a good execution engine for expresso in
clojurescript or has thoughts about the compiling issue please post!

I think it would be a good showcase for clojurescript to bring
symbolic manipulation cababilities including solving equations etc to
the browser.

On Thu, Aug 29, 2013 at 10:19 PM, David Nolen dnolen.li...@gmail.com wrote:
 Very cool stuff :) How much work would it take for this to work with
 ClojureScript?

 David


 On Mon, Aug 26, 2013 at 4:47 AM, Maik Schünemann maikschuenem...@gmail.com
 wrote:

 Hi,
 I released a first version of my gsoc project expresso [1].
 This is an important Milestone in my gsoc project.
 What is there:
 an expressive and powerful rule based translator, on top of which many
 transformations can be based.
 functions to simplify (currently without ratio test), differentiate,
 rearrange, solve expressions.
 functions to optimize an expression (includes
 common-sub-expression-elimination, constant-folding, replacement
 with special operators, matrix-chain-optimization, ...)

 The solver can solve multiple simultaneous equations.
 currently it solves equations, which are polynomials up to degree 2, in
 which the number of occurrences of the unknown
 can be reduced to one by simplifying the expression or which consists of
 factors in above form. variables as parameters
 are supported everywhere.

 The last weeks of gsoc I will be making the above transformations more
 stable, eliminate as many bugs as I can find
 (feel free to report some you notice), and extending the range of
 expressions which can be transformed by these transformations,
 as well as thoroughly documenting the work that has been done.
 See the github repository and README.md for details [1]

 [1] https://github.com/clojure-numerics/expresso

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.


 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: ClojureScript: Keyword Breaking Change Around the Corner

2013-08-30 Thread Thomas Heller

 
 For #2, we can't intern the keywords like Clojure does on the JVM because 
 JavaScript does not provide weak references. If we interned dynamically 
 created keywords, then we'd have an exploitable memory leak.


This may actually be a non-issue for Browser Environments since you would not 
exploit your users and your users would only be able to exploit their own 
browsers unless you somehow allow them to send arbitrary data to each other 
(which you should never do anyways).

So interning might still be an option for browser targetted JS, even without 
weak references (IMHO).

Just my 2 cents,
/thomas

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [ANN] expresso 0.1.0 released

2013-08-30 Thread Shantanu Kumar


 2.) compiling optimized expressions to functions at runtime: 
 In clojure I managed to compile optimized expressions to optimized 
 code at runtime through a code-emitting protocol and a call to eval to 
 create the function. Without eval in clojurescript this couldn't be 
 done easily. With compile-time constant expressions this could be made 
 to work with a macro. At runtime there would still be the normal 
 evaluate function which however traverses the whole expression tree. 

 So if anyone knows a good execution engine for expresso in 
 clojurescript or has thoughts about the compiling issue please post! 


Not sure if it suits your needs, but I've been working on a simple 
S-expression evaluation library that works in Clojure and ClojureScript:
https://github.com/kumarshantanu/quiddity

I am implementing namespace support for the upcoming 0.3.x release (in few 
weeks) and also migrating from lein-cljsbuild's crossovers to use cljx.

Shantanu

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [ANN] expresso 0.1.0 released

2013-08-30 Thread Maik Schünemann
Hi,

 Not sure if it suits your needs, but I've been working on a simple
 S-expression evaluation library that works in Clojure and ClojureScript:
 https://github.com/kumarshantanu/quiddity

quiddity looks interesting. From what I read at the github page,
creating functions (which is the requirement for me) is listed as a
limitation and implemented using an evaluator. How is it done? Does
the created function incur overhead when excecuting (maybe by walking
the expression)? Or is there only one time an overhead and afterwards
runs like a normal function?

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [ANN] expresso 0.1.0 released

2013-08-30 Thread Shantanu Kumar
Hi Maik,

On Friday, 30 August 2013 15:04:03 UTC+5:30, Maik Schünemann wrote:

 Hi, 

  Not sure if it suits your needs, but I've been working on a simple 
  S-expression evaluation library that works in Clojure and ClojureScript: 
  https://github.com/kumarshantanu/quiddity 
  
 quiddity looks interesting. From what I read at the github page, 
 creating functions (which is the requirement for me) is listed as a 
 limitation and implemented using an evaluator. How is it done? Does 
 the created function incur overhead when excecuting (maybe by walking 
 the expression)? Or is there only one time an overhead and afterwards 
 runs like a normal function? 


At runtime, evaluation behaves like an interpreter looking up the 
expression symbols into the user-specified environment (collection of maps) 
to find their values, so the performance takes a hit there. The overhead is 
directly proportional to the depth of the expression and number of symbols 
used. If you can precompile the dependency functions (using code generation 
or macros) and use them in the environment instead of passing a large 
expression to evaluate, that should minimize the performance overhead. I 
will be happy to answer any specific questions or go into detail, please 
feel free to ask. The fn expression (via the evaluator) doesn't support 
meta-info, pre-conditions etc now but the essential functionality should 
work.

Shantanu 

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Selecting subsets of maps

2013-08-30 Thread Alex P
@ Baishampayan
@ Christophe

Accidentally crossed over this post, turned out I've had exactly same need 
(about a year after you though), and decided to write a little library, 
Balagan: https://github.com/clojurewerkz/balagan

Basically, you can run predicate-based queries on your data and apply 
transformations. 
Check it out, maybe it helps

On Tuesday, May 29, 2012 2:23:30 PM UTC+2, Baishampayan Ghose wrote:

 Great feedback, Christophe. I will get back to you with a better 
 implementation. 

 Regards, 
 BG 

 On Tue, May 29, 2012 at 5:44 PM, Christophe Grand 
 chris...@cgrand.netjavascript: 
 wrote: 
  The expansion idea is interesting: expand your selectors to a seq of 
 paths, 
  redcue with get-in/assoc-in over thme to get the extract sense, reduce 
  with update-in+dissoc to get the exclude. Could yield a nice 
 implementation. 
  
  And now for some nitpicking: 
  * nowadays I'm reluctant to extend a protocol to interfaces 
  * apply where reduce should be used (L15) 
  * what's the puprose of (juxt key val)? (L20) 
  
  Christophe 
  
  On Tue, May 29, 2012 at 12:37 PM, Baishampayan Ghose 
  b.g...@gmail.comjavascript: 

  wrote: 
  
  Christophe, 
  
   Laurent dragged me in the conversation so here is my take 
   https://gist.github.com/2823916 which strictly follows your proposed 
   syntax. 
  
  I am glad that Laurent dragged you in, I got to see your beautiful 
  solution :-) 
  
  Here is my (less beautiful) solution, `extract` along with its 
  counterpart `exclude` which does the opposite - 
  
  https://www.refheap.com/paste/2911 
  
  Comments welcome. 
  
  Regards, 
  BG 
  
  -- 
  Baishampayan Ghose 
  b.ghose at gmail.com 
  
  -- 
  You received this message because you are subscribed to the Google 
  Groups Clojure group. 
  To post to this group, send email to clo...@googlegroups.comjavascript: 
  Note that posts from new members are moderated - please be patient with 
  your first post. 
  To unsubscribe from this group, send email to 
  clojure+u...@googlegroups.com javascript: 
  For more options, visit this group at 
  http://groups.google.com/group/clojure?hl=en 
  
  
  
  
  -- 
  Professional: http://cgrand.net/ (fr) 
  On Clojure: http://clj-me.cgrand.net/ (en) 
  
  -- 
  You received this message because you are subscribed to the Google 
  Groups Clojure group. 
  To post to this group, send email to clo...@googlegroups.comjavascript: 
  Note that posts from new members are moderated - please be patient with 
 your 
  first post. 
  To unsubscribe from this group, send email to 
  clojure+u...@googlegroups.com javascript: 
  For more options, visit this group at 
  http://groups.google.com/group/clojure?hl=en 



 -- 
 Baishampayan Ghose 
 b.ghose at gmail.com 


-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [ANN] expresso 0.1.0 released

2013-08-30 Thread David Nolen
While the runtime optimizations are cool, I think ClojureScript could
benefit from just having compile time optimized expressions. Mostly
thinking about the applicability for certain interactive applications and
games.


On Fri, Aug 30, 2013 at 3:45 AM, Maik Schünemann
maikschuenem...@gmail.comwrote:

 Hi David,
 The core of expresso wouldn't be much work to port to clojurescript.
 The rule based translator is built on top of core.logic, so porting
 that should be straightforward.
 Also the manipulation routines are very much purely algorithmic so
 should work without much trouble in clojurescript.

 There are two things which need to be resolved, though:
 1.) what execution engine: expresso is very close to core.matrix and
 uses its functions to execute the expressions and it's function names
 and semantics for the encoded expressions.
 2.) compiling optimized expressions to functions at runtime:
 In clojure I managed to compile optimized expressions to optimized
 code at runtime through a code-emitting protocol and a call to eval to
 create the function. Without eval in clojurescript this couldn't be
 done easily. With compile-time constant expressions this could be made
 to work with a macro. At runtime there would still be the normal
 evaluate function which however traverses the whole expression tree.

 So if anyone knows a good execution engine for expresso in
 clojurescript or has thoughts about the compiling issue please post!

 I think it would be a good showcase for clojurescript to bring
 symbolic manipulation cababilities including solving equations etc to
 the browser.

 On Thu, Aug 29, 2013 at 10:19 PM, David Nolen dnolen.li...@gmail.com
 wrote:
  Very cool stuff :) How much work would it take for this to work with
  ClojureScript?
 
  David
 
 
  On Mon, Aug 26, 2013 at 4:47 AM, Maik Schünemann 
 maikschuenem...@gmail.com
  wrote:
 
  Hi,
  I released a first version of my gsoc project expresso [1].
  This is an important Milestone in my gsoc project.
  What is there:
  an expressive and powerful rule based translator, on top of which many
  transformations can be based.
  functions to simplify (currently without ratio test), differentiate,
  rearrange, solve expressions.
  functions to optimize an expression (includes
  common-sub-expression-elimination, constant-folding, replacement
  with special operators, matrix-chain-optimization, ...)
 
  The solver can solve multiple simultaneous equations.
  currently it solves equations, which are polynomials up to degree 2, in
  which the number of occurrences of the unknown
  can be reduced to one by simplifying the expression or which consists of
  factors in above form. variables as parameters
  are supported everywhere.
 
  The last weeks of gsoc I will be making the above transformations more
  stable, eliminate as many bugs as I can find
  (feel free to report some you notice), and extending the range of
  expressions which can be transformed by these transformations,
  as well as thoroughly documenting the work that has been done.
  See the github repository and README.md for details [1]
 
  [1] https://github.com/clojure-numerics/expresso
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
  your first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google
 Groups
  Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send
 an
  email to clojure+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/groups/opt_out.
 
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
 your
  first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google Groups
  Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send an
  email to clojure+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/groups/opt_out.

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group 

Re: [ANN] expresso 0.1.0 released

2013-08-30 Thread Maik Schünemann
I also think having expresso in clojurescript would be a cool think
and I am willing to make a port after the gsoc period.
Do you know any good js or clojurescript (matrix) mathematical library
which clojurescript expresso could use ?

(loud thinking)
maybe clojurescript would also benefit of having a version of core.matrix

On Fri, Aug 30, 2013 at 3:55 PM, David Nolen dnolen.li...@gmail.com wrote:
 While the runtime optimizations are cool, I think ClojureScript could
 benefit from just having compile time optimized expressions. Mostly thinking
 about the applicability for certain interactive applications and games.


 On Fri, Aug 30, 2013 at 3:45 AM, Maik Schünemann maikschuenem...@gmail.com
 wrote:

 Hi David,
 The core of expresso wouldn't be much work to port to clojurescript.
 The rule based translator is built on top of core.logic, so porting
 that should be straightforward.
 Also the manipulation routines are very much purely algorithmic so
 should work without much trouble in clojurescript.

 There are two things which need to be resolved, though:
 1.) what execution engine: expresso is very close to core.matrix and
 uses its functions to execute the expressions and it's function names
 and semantics for the encoded expressions.
 2.) compiling optimized expressions to functions at runtime:
 In clojure I managed to compile optimized expressions to optimized
 code at runtime through a code-emitting protocol and a call to eval to
 create the function. Without eval in clojurescript this couldn't be
 done easily. With compile-time constant expressions this could be made
 to work with a macro. At runtime there would still be the normal
 evaluate function which however traverses the whole expression tree.

 So if anyone knows a good execution engine for expresso in
 clojurescript or has thoughts about the compiling issue please post!

 I think it would be a good showcase for clojurescript to bring
 symbolic manipulation cababilities including solving equations etc to
 the browser.

 On Thu, Aug 29, 2013 at 10:19 PM, David Nolen dnolen.li...@gmail.com
 wrote:
  Very cool stuff :) How much work would it take for this to work with
  ClojureScript?
 
  David
 
 
  On Mon, Aug 26, 2013 at 4:47 AM, Maik Schünemann
  maikschuenem...@gmail.com
  wrote:
 
  Hi,
  I released a first version of my gsoc project expresso [1].
  This is an important Milestone in my gsoc project.
  What is there:
  an expressive and powerful rule based translator, on top of which many
  transformations can be based.
  functions to simplify (currently without ratio test), differentiate,
  rearrange, solve expressions.
  functions to optimize an expression (includes
  common-sub-expression-elimination, constant-folding, replacement
  with special operators, matrix-chain-optimization, ...)
 
  The solver can solve multiple simultaneous equations.
  currently it solves equations, which are polynomials up to degree 2, in
  which the number of occurrences of the unknown
  can be reduced to one by simplifying the expression or which consists
  of
  factors in above form. variables as parameters
  are supported everywhere.
 
  The last weeks of gsoc I will be making the above transformations more
  stable, eliminate as many bugs as I can find
  (feel free to report some you notice), and extending the range of
  expressions which can be transformed by these transformations,
  as well as thoroughly documenting the work that has been done.
  See the github repository and README.md for details [1]
 
  [1] https://github.com/clojure-numerics/expresso
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
  your first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google
  Groups
  Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send
  an
  email to clojure+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/groups/opt_out.
 
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
  your
  first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google
  Groups
  Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send
  an
  email to clojure+unsubscr...@googlegroups.com.
  For more options, visit 

Re: [ANN] expresso 0.1.0 released

2013-08-30 Thread David Nolen
On Fri, Aug 30, 2013 at 11:00 AM, Maik Schünemann maikschuenem...@gmail.com
 wrote:

 I also think having expresso in clojurescript would be a cool think
 and I am willing to make a port after the gsoc period.


Cool.


 Do you know any good js or clojurescript (matrix) mathematical library
 which clojurescript expresso could use ?

 (loud thinking)
 maybe clojurescript would also benefit of having a version of core.matrix


Yes it would.

David

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


ANN: data.json 0.2.3

2013-08-30 Thread Stuart Sierra
*data.json*: pure-Clojure JSON parser/writer

Info and docs: https://github.com/clojure/data.json

New release version: *0.2.3*

In Leiningen:

[org.clojure/data.json 0.2.3]

Changes in this release:

  * Enhancement DJSON-9 http://dev.clojure.org/jira/browse/DJSON-9:
option to escape U+2028 and U+2029
  * Fix DJSON-11 http://dev.clojure.org/jira/browse/DJSON-11: printing
unnecessary commas with value-fn

This is a Clojure Contrib library:
http://dev.clojure.org/display/doc/Clojure+Contrib+Libraries

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[ANN] Blackwater 0.0.5 released (SQL query logging)

2013-08-30 Thread Christopher Allen
https://github.com/bitemyapp/blackwater/

Clojure library for logging SQL queries and the time they took for Korma 
and clojure.java.jdbc.

I like having a 'canary in the coal mine' while developing locally so that 
I can see the queries getting executed and the time they took to run, 
similar to Rails query logging. The library stands alone although this 
imports specific (recent) versions of c.j.j and Korma, exclude and replace 
as you need to.

Some users to help me shake this out beyond how I use it (I'm primarily a 
Korma guy) would be very useful, Github Issues and PRs very welcome!

Thanks everybody. I've got another library to announce once a friend helps 
me do some testing with it.

--- Chris

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Java Metadata Wrapper

2013-08-30 Thread JvJ
I've noticed that, when doing a lot of Java interop, it's impossible to 
attach metadata to most Java objects, since they don't implement the IMeta 
interface.  A workaround for this would be to do something like put every 
Java object in a single-element list and attach metadata to the list, but 
this is annoying.  Would it be possible (or even useful) to create some 
kind of generic IMeta structure that can wrap other Java objects and have 
them act like normal, except for the added metadata (or even other 
Clojure-esque features)?

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [ANN] core.typed 0.2.0 - Production Ready

2013-08-30 Thread Shantanu Kumar
Sorry for a late reply to the thread. This release is pretty cool. I 
haven't been following the development too closely, so I have two questions:

1. Is ClojureScript/ClojureCLR supported by core.typed? Or, is it planned?

2. Is there a Leiningen plugin that can help run the type checks from the 
command line?

Shantanu

On Thursday, 29 August 2013 22:10:18 UTC+5:30, Ambrose Bonnaire-Sergeant 
wrote:

 Just pushed 0.2.1 based on feedback from the video on HN.

 https://github.com/clojure/core.typed/blob/master/CHANGELOG.md

 Thanks,
 Ambrose


 On Thu, Aug 29, 2013 at 6:28 AM, Ambrose Bonnaire-Sergeant 
 abonnair...@gmail.com javascript: wrote:

 Hi,

 After 10 months and 26 0.1.x releases of transitioning core.typed from an 
 ambitious student project, I am finally comfortable recommending core.typed 
 for production use.

 Production Ready

 My interpretation of production ready in this context is:
 - core.typed can *find bugs* in real code
 - core.typed will *not slow down* your existing code by loading
   a large library at production. (core.typed does introduce an extra 
 identity-like
   function call at type annotations, I assume this is a candidate for 
 optimisation via
   HotSpot)
 - A basic *tutorial*, API docs and example project exist
 - core.typed is *currently used in production* with success (at CircleCI 
 for several months)
 - The core type checking API is mostly *stable*, with only very
   minor removals/breaking changes in the last few months.

 There are several outstanding issues, but I am satisfied that core.typed 
 can bring real utility to real programs *today* and with *no 
 production-time drawbacks*, thus this release.

 How to get started

 Leiningen dep:

 [org.clojure/core.typed 0.2.0]
 ...; for very recent releases:repositories {sonatype-oss-public 
 https://oss.sonatype.org/content/groups/public/}

 If you like following tutorials try the user/types guide. If you just 
 want to get your hands on some typed code, see the Example project.

 core.typed User Guidehttps://github.com/clojure/core.typed/wiki/User-Guide
 core.typed Types Guide https://github.com/clojure/core.typed/wiki/Types
 Example project https://github.com/frenchy64/core.typed-example
 API Reference http://clojure.github.io/core.typed/

 core.typed Github Home https://github.com/clojure/core.typed
 core.typed Wiki https://github.com/clojure/core.typed/wiki

 Please report bugs, ask questions or discuss things on the mailing 
 listhttps://groups.google.com/forum/?fromgroups#!forum/clojure-core-typed
 .

 (FWIW I'm ambrosebs on #clojure.)

 Thanks,
 Ambrose




-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Java Metadata Wrapper

2013-08-30 Thread John D. Hume
On Fri, Aug 30, 2013 at 2:16 PM, JvJ kfjwhee...@gmail.com wrote:

 Would it be possible (or even useful) to create some kind of generic IMeta
 structure that can wrap other Java objects and have them act like normal,
 except for the added metadata (or even other Clojure-esque features)?


Are you interested in :tag metadata or something else? Just curious what
the use-case is.

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


ANN Introducing EEP, a young [event] stream processing library

2013-08-30 Thread Michael Klishin
On behalf of the ClojureWerkz team [1], I'm happy to announce
our new project, EEP (for Embedded Event Processing).

Read the announcement:
http://blog.clojurewerkz.org/blog/2013/08/29/stream-processing-with-eep/

The library is young and definitely could use better documentation but it's
mature enough
to start gathering feedback from the rest of the community. Please
give it a try.

There will be a couple more exiciting announcements from ClojureWerkz in the
next few weeks. So watch this space.

I'd like to thank Alex (http://twitter.com/ifesdjeen) and his dog Huskell
(https://twitter.com/huskelldog) for driving this project.

1. http://clojurewerkz.org
-- 
MK

http://github.com/michaelklishin
http://twitter.com/michaelklishin

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: ANN: clj-tuple, efficient small collections

2013-08-30 Thread Zach Tellman
I've updated the library so tuples behave like vectors, rather than lists. 
 The macros have gotten kind of elephantine, but since I've already added 
every conceivable Clojure interface at least they won't get any bigger.  If 
there are any lingering gaps, though, please let me know.

Zach 

On Saturday, August 24, 2013 7:38:25 PM UTC-7, Zach Tellman wrote:

 I just pulled some code I wrote while trying to optimize 'memoize' into 
 its own library: https://github.com/ztellman/clj-tuple.  It only has the 
 one function, so I assume no one will need too much explanation.  However, 
 there may still be room for performance improvements, so if anyone wants to 
 take a stab, pull requests are welcome.

 Zach


-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [ANN] core.typed 0.2.0 - Production Ready

2013-08-30 Thread Ambrose Bonnaire-Sergeant
Hi Shantanu,

CLJS support is planned but not current plans to work on CLR myself.

No leiningen plugins yet, FWIW I tend to add type checks to my unit tests
like:

(is (check-ns 'my.ns))

Thanks,
Ambrose


On Sat, Aug 31, 2013 at 4:13 AM, Shantanu Kumar kumar.shant...@gmail.comwrote:

 Sorry for a late reply to the thread. This release is pretty cool. I
 haven't been following the development too closely, so I have two questions:

 1. Is ClojureScript/ClojureCLR supported by core.typed? Or, is it planned?

 2. Is there a Leiningen plugin that can help run the type checks from the
 command line?

 Shantanu


 On Thursday, 29 August 2013 22:10:18 UTC+5:30, Ambrose Bonnaire-Sergeant
 wrote:

 Just pushed 0.2.1 based on feedback from the video on HN.

 https://github.com/clojure/**core.typed/blob/master/**CHANGELOG.mdhttps://github.com/clojure/core.typed/blob/master/CHANGELOG.md

 Thanks,
 Ambrose


 On Thu, Aug 29, 2013 at 6:28 AM, Ambrose Bonnaire-Sergeant 
 abonnair...@gmail.com wrote:

 Hi,

 After 10 months and 26 0.1.x releases of transitioning core.typed from
 an ambitious student project, I am finally comfortable recommending
 core.typed for production use.

 Production Ready

 My interpretation of production ready in this context is:
 - core.typed can *find bugs* in real code
 - core.typed will *not slow down* your existing code by loading
   a large library at production. (core.typed does introduce an extra
 identity-like
   function call at type annotations, I assume this is a candidate for
 optimisation via
   HotSpot)
 - A basic *tutorial*, API docs and example project exist
 - core.typed is *currently used in production* with success (at
 CircleCI for several months)
 - The core type checking API is mostly *stable*, with only very
   minor removals/breaking changes in the last few months.

 There are several outstanding issues, but I am satisfied that core.typed
 can bring real utility to real programs *today* and with *no
 production-time drawbacks*, thus this release.

 How to get started

 Leiningen dep:

 [org.clojure/core.typed 0.2.0]
 ...; for very recent releases:repositories {sonatype-oss-public 
 https://oss.sonatype.org/**content/groups/public/ 
 https://oss.sonatype.org/content/groups/public/}

 If you like following tutorials try the user/types guide. If you just
 want to get your hands on some typed code, see the Example project.

 core.typed User Guidehttps://github.com/clojure/core.typed/wiki/User-Guide
 core.typed Types Guidehttps://github.com/clojure/core.typed/wiki/Types
 Example project https://github.com/frenchy64/core.typed-example
 API Reference http://clojure.github.io/core.typed/

 core.typed Github Home https://github.com/clojure/core.typed
 core.typed Wiki https://github.com/clojure/core.typed/wiki

 Please report bugs, ask questions or discuss things on the mailing 
 listhttps://groups.google.com/forum/?fromgroups#!forum/clojure-core-typed
 .

 (FWIW I'm ambrosebs on #clojure.)

 Thanks,
 Ambrose


  --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.


-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


[ANN] Pedestal 0.2.0 has been released

2013-08-30 Thread Ryan Neufeld
Hey Folks,

We've just released 0.2.0 versions of the Pedestal libraries.

This is a big one, with revamped templates for both pedestal-app and 
pedestal-service applications. The biggest change is that developer tooling now 
lives in *-tools libraries, cleaning up generated projects and making it easier 
for us to incrementally improve that tooling in the future. You'll also find 
that pedestal-service now uses Cheshire for JSON reading/writing.

All this and more is documented in the 0.2.0 Release Notes. Kudos to everyone 
that contributed to this release.

Happy Labor Day weekend Hacking!

- Ryan and the rest of the Pedestal team

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Java Metadata Wrapper

2013-08-30 Thread Alex Miller
In some cases you could proxy and add IMeta that way.


On Friday, August 30, 2013 2:16:26 PM UTC-5, JvJ wrote:

 I've noticed that, when doing a lot of Java interop, it's impossible to 
 attach metadata to most Java objects, since they don't implement the IMeta 
 interface.  A workaround for this would be to do something like put every 
 Java object in a single-element list and attach metadata to the list, but 
 this is annoying.  Would it be possible (or even useful) to create some 
 kind of generic IMeta structure that can wrap other Java objects and have 
 them act like normal, except for the added metadata (or even other 
 Clojure-esque features)?


-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: ANN Introducing EEP, a young [event] stream processing library

2013-08-30 Thread Mikera
Looks very interesting, thanks for sharing!

Could you summarise how this fits in the ecosystem relative to Storm, Aleph 
etc? When should EEP be the most appropriate choice?

On Saturday, 31 August 2013 05:02:27 UTC+8, Michael Klishin wrote:

 On behalf of the ClojureWerkz team [1], I'm happy to announce
 our new project, EEP (for Embedded Event Processing).

 Read the announcement:
 http://blog.clojurewerkz.org/blog/2013/08/29/stream-processing-with-eep/

 The library is young and definitely could use better documentation but 
 it's mature enough
 to start gathering feedback from the rest of the community. Please
 give it a try.

 There will be a couple more exiciting announcements from ClojureWerkz in 
 the
 next few weeks. So watch this space.

 I'd like to thank Alex (http://twitter.com/ifesdjeen) and his dog Huskell
 (https://twitter.com/huskelldog) for driving this project.

 1. http://clojurewerkz.org
 -- 
 MK

 http://github.com/michaelklishin
 http://twitter.com/michaelklishin
  

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Java Metadata Wrapper

2013-08-30 Thread Mikera
It would be better, I think, if metadata was attachable via a protocol 
rather than than a wrapper: then you could just extend the protocol to any 
arbitrary Java class. Wrappers are a pain to make work because of wrapping 
/ unwrapping and protocols also have the advantage of being very efficient.

I've wanted a similar feature with respect to seq as well (a protocol for 
things that can be treated as sequences)

On Saturday, 31 August 2013 03:16:26 UTC+8, JvJ wrote:

 I've noticed that, when doing a lot of Java interop, it's impossible to 
 attach metadata to most Java objects, since they don't implement the IMeta 
 interface.  A workaround for this would be to do something like put every 
 Java object in a single-element list and attach metadata to the list, but 
 this is annoying.  Would it be possible (or even useful) to create some 
 kind of generic IMeta structure that can wrap other Java objects and have 
 them act like normal, except for the added metadata (or even other 
 Clojure-esque features)?


-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Java Metadata Wrapper

2013-08-30 Thread Colin Fleming
I've also been interested in this for Named (a protocol for things I can
call name on), although my use-case is mostly interop with Java
frameworks.


On 31 August 2013 15:13, Mikera mike.r.anderson...@gmail.com wrote:

 It would be better, I think, if metadata was attachable via a protocol
 rather than than a wrapper: then you could just extend the protocol to any
 arbitrary Java class. Wrappers are a pain to make work because of wrapping
 / unwrapping and protocols also have the advantage of being very efficient.

 I've wanted a similar feature with respect to seq as well (a protocol
 for things that can be treated as sequences)

 On Saturday, 31 August 2013 03:16:26 UTC+8, JvJ wrote:

 I've noticed that, when doing a lot of Java interop, it's impossible to
 attach metadata to most Java objects, since they don't implement the IMeta
 interface.  A workaround for this would be to do something like put every
 Java object in a single-element list and attach metadata to the list, but
 this is annoying.  Would it be possible (or even useful) to create some
 kind of generic IMeta structure that can wrap other Java objects and have
 them act like normal, except for the added metadata (or even other
 Clojure-esque features)?

  --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.


-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Detecting login and logout using friend

2013-08-30 Thread Steve Buikhuizen
I had to do this again in another project so I tried Chas' suggestion. It 
is much simpler than my earlier solution. 

For anyone else doing this in the future, here's how you can write it:

(defn check-workflow-result

  check if the response contains and auth-map. If so, notify the event bus

  [request response]

  (when (friend/auth? response)

(event-bus/fire :session-start

  {:user-agent (get-in request [:headers user-agent])

   :ip-address (:remote-addr request)

  })))


(defn wrap [f]

  (fn [request]

(let [response (f request)]  

  (check-workflow-result request response)  

  response)))


(def friend-interceptor

  (friend-authenticate-interceptor

   {:allow-anon? true

:unauthorized-handler (fn [request] (ring-resp/redirect /thanks))

:workflows [(wrap

  (oauth2/workflow

{:credential-fn get-friend-creds

   :login-uri /login   

  :client-config (authentication/get-oauth-config)

  :uri-config authentication/uri-config-sfdc

  }))]}))

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.