Re: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread Alex Baranosky
Fair enough :)


On Thu, Dec 19, 2013 at 10:09 PM, John Wiseman  wrote:

> Suggestions of endeavors using clojure for something worthwhile itself
> seems like an entirely worthwhile discussion if people can resist the
> temptation to debate what worthwhile means and to disagree with other
> people's concept of worthwhile.  For example, here's a recipe for a useful
> discussion: If you know of activity X that you in good faith believe is
> worthwhile or, more specifically, (and I'm guessing at RIch's original
> intention so I could be wrong) philanthropic then post about X.  If you
> disagree with a poster about whether X is worthwhile, do not post.
>
> John
>
>
>
> On Thu, Dec 19, 2013 at 6:15 PM, Sean Corfield wrote:
>
>> On Thu, Dec 19, 2013 at 5:19 PM, Rich Morin  wrote:
>> > I have no argument with The Climate Corporation's business model;
>> > my problems are with Monsanto.  That said, I don't want to dive
>> > off into that discussion.  In fact, my comment about them should
>> > probably have been left out of my initial posting.
>>
>> If you think that discussion is inappropriate for this list (and I
>> agree - it is), then why do you think this discussion is appropriate:
>>
>> > Can we get back to talking about folks who are using Clojure to
>> > make a positive impact?
>>
>> It seems to me this is bound to be a political or at least a very
>> subjective one based on people's own moral compass and their ideology?
>> As such I don't think it's a particularly useful discussion on what is
>> primarily a technical list. Perhaps post the question on Quora? That
>> seems to be very friendly toward political / moral discussions...
>> --
>> Sean A Corfield -- (904) 302-SEAN
>> An Architect's View -- http://corfield.org/
>> World Singles, LLC. -- http://worldsingles.com/
>>
>> "Perfection is the enemy of the good."
>> -- Gustave Flaubert, French realist novelist (1821-1880)
>>
>> --
>> --
>> 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: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread John Wiseman
Suggestions of endeavors using clojure for something worthwhile itself
seems like an entirely worthwhile discussion if people can resist the
temptation to debate what worthwhile means and to disagree with other
people's concept of worthwhile.  For example, here's a recipe for a useful
discussion: If you know of activity X that you in good faith believe is
worthwhile or, more specifically, (and I'm guessing at RIch's original
intention so I could be wrong) philanthropic then post about X.  If you
disagree with a poster about whether X is worthwhile, do not post.

John



On Thu, Dec 19, 2013 at 6:15 PM, Sean Corfield wrote:

> On Thu, Dec 19, 2013 at 5:19 PM, Rich Morin  wrote:
> > I have no argument with The Climate Corporation's business model;
> > my problems are with Monsanto.  That said, I don't want to dive
> > off into that discussion.  In fact, my comment about them should
> > probably have been left out of my initial posting.
>
> If you think that discussion is inappropriate for this list (and I
> agree - it is), then why do you think this discussion is appropriate:
>
> > Can we get back to talking about folks who are using Clojure to
> > make a positive impact?
>
> It seems to me this is bound to be a political or at least a very
> subjective one based on people's own moral compass and their ideology?
> As such I don't think it's a particularly useful discussion on what is
> primarily a technical list. Perhaps post the question on Quora? That
> seems to be very friendly toward political / moral discussions...
> --
> Sean A Corfield -- (904) 302-SEAN
> An Architect's View -- http://corfield.org/
> World Singles, LLC. -- http://worldsingles.com/
>
> "Perfection is the enemy of the good."
> -- Gustave Flaubert, French realist novelist (1821-1880)
>
> --
> --
> 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: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread Alex Baranosky
Yep, "positive impact" is pretty much entirely opinion-based.


On Thu, Dec 19, 2013 at 6:15 PM, Sean Corfield wrote:

> On Thu, Dec 19, 2013 at 5:19 PM, Rich Morin  wrote:
> > I have no argument with The Climate Corporation's business model;
> > my problems are with Monsanto.  That said, I don't want to dive
> > off into that discussion.  In fact, my comment about them should
> > probably have been left out of my initial posting.
>
> If you think that discussion is inappropriate for this list (and I
> agree - it is), then why do you think this discussion is appropriate:
>
> > Can we get back to talking about folks who are using Clojure to
> > make a positive impact?
>
> It seems to me this is bound to be a political or at least a very
> subjective one based on people's own moral compass and their ideology?
> As such I don't think it's a particularly useful discussion on what is
> primarily a technical list. Perhaps post the question on Quora? That
> seems to be very friendly toward political / moral discussions...
> --
> Sean A Corfield -- (904) 302-SEAN
> An Architect's View -- http://corfield.org/
> World Singles, LLC. -- http://worldsingles.com/
>
> "Perfection is the enemy of the good."
> -- Gustave Flaubert, French realist novelist (1821-1880)
>
> --
> --
> 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: [ANN] Hoplon: web applications in Clojure and ClojureScript

2013-12-19 Thread Murtaza Husain
Hi,

Thanks for the great framework. I am loving it and will give it a try in a 
pet project. A few nitpicks - 

1. Why not use hiccup data structure for representing DOM, instead of the 
custom fns and macros. This provides several advantages where your DOM is 
just data and you can manipulate it like data. 

2. The destructing and looping used within the DOM forms is custom. Why 
cant we have regular clojure all the way ? Introduction of a another syntax 
for templating is not very appealing. So a regular 'map' or 'for' could be 
used instead of 'loop-tpl'

3. String interpolation for the bindings - '~{x}' . Cant we use something 
more idiomatic, either the var itself or atleast a symbol :x ?

4. It will also be helpful to have a leiningen example for the project. 
Nothing against boot, however it will be easy to get started, and also 
IDE's are already configured to work with project.clj

Thanks,
Murtaza





On Friday, December 20, 2013 3:40:41 AM UTC+5:30, James Reeves wrote:
>
> Thank you for taking the time to write such a detailed explanation. That 
> clears up my understanding of the library considerably.
>
> - James
>
>
> On 19 December 2013 03:45, Micha Niskin 
> > wrote:
>
>> Ah, yes. There are some gaps in the docs that need to be fixed. To answer 
>> your questions:
>>
>>
>>1. The main thing that Hoplon does is unify the DOM and the dynamic 
>>environment (the JS environment). This makes it possible to refer to 
>> things 
>>from the dynamic environment in your markup. Normally you can reference 
>>things in the DOM from JavaScript, but not the other way around. So in a 
>>unified environment that includes both JavaScript and the DOM there needs 
>>to be a way to develop both of them in the same page. A Hoplon page has 3 
>>parts: the page declaration, a number of optional top-level forms, and 
>>finally the DOM markup. So yes, the Hoplon compiler selects the last 
>>expression in the file as the DOM markup. 
>>2. The primitive HTML5 elements (div, span, etc.) are, in fact 
>>ClojureScript functions in the tailrecursion.hoplon namespace. These 
>>functions return new DOM elements of the appropriate type. However, the 
>>Element type is extended to implement the IFn protocol such that they 
>>maintain the HTML semantic. That is, function application means append 
>>child / set attribute. So yes, div and span etc. are functions, but they 
>>return DOM elements that implement IFn, so they return functions, in a 
>> way, 
>>too. 
>>3. Everything is generated on the fly, pretty much. The entire 
>>document is replaced with the result of evaluating the DOM markup when 
>> the 
>>page loads. In other words, when the page loads the last expression in 
>> the 
>>source file is evaluated in the browser, and document is replaced with 
>> the 
>>result. Since the DOM markup is just a ClojureScript expression that is 
>>evaluated as ClojureScript, you can create your own custom tags. All you 
>>have to do is define functions that abide by the HTML semantic. There are 
>>examples of this in the "Getting Started" page, especially the "Creating 
>> a 
>>tabs abstraction" section. 
>>4. Sorry, I should have put a link in the docs there to 
>> Javelin, 
>>the dataflow library we use for the cells. That page explains in detail, 
>>but the basic premise is that there are two kinds of cells in 
>> spreadsheets, 
>>input cells that you update manually, and formula cells that update 
>>themselves reactively according to a formula that might refer to other 
>>cells. So defc is equivalent to def and cell, and that defines an input 
>>cell. Likewise, defc= is equivalent to def and cell=, and that defines a 
>>formula cell. 
>>5. All cells, both input cells and formula cells, contain values. The 
>>difference is in how those values are updated. In order to obtain the 
>> value 
>>contained in any cell you may dereference the cell. So both types of cell 
>>can be dereferenced like atoms. However, only input cells can be updated 
>>using swap! or reset!. Formula cells will update themselves 
>> automatically, 
>>and it's an error to try to do it directly using those functions. 
>>6. The difference between a cell and an atom with watchers attached 
>>is that cells guarantee consistency. That is to say that the evaluation 
>>mechanism ensures that a formula cell is never updated until all of the 
>>cells it depends on have been updated, that the formula is evaluated at 
>>most one time, and that the cell's formula is evaluated only when the 
>> value 
>>of a cell it depends on has changed. A cool property here is that the 
>>entire graph of cells updates atomically and consistently, even though 
>> the 
>>individual cells are updating themselves one at a time. The consistency 
>>guarantee e

Re: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread Sean Corfield
On Thu, Dec 19, 2013 at 5:19 PM, Rich Morin  wrote:
> I have no argument with The Climate Corporation's business model;
> my problems are with Monsanto.  That said, I don't want to dive
> off into that discussion.  In fact, my comment about them should
> probably have been left out of my initial posting.

If you think that discussion is inappropriate for this list (and I
agree - it is), then why do you think this discussion is appropriate:

> Can we get back to talking about folks who are using Clojure to
> make a positive impact?

It seems to me this is bound to be a political or at least a very
subjective one based on people's own moral compass and their ideology?
As such I don't think it's a particularly useful discussion on what is
primarily a technical list. Perhaps post the question on Quora? That
seems to be very friendly toward political / moral discussions...
-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
-- 
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] Example async TCP echo client/server using Java 7 NIO.2.

2013-12-19 Thread David James
An asynchrononous TCP echo client/server in Clojure using Java 7 NIO.2.
https://github.com/bluemont/clj-async-tcp-echo-nio.2

As I've been diving into async libraries in Java and Clojure, I thought it
would be nice to make a simple example with the Java 7 NIO.2 async classes.
I'm sure there is room for improvement, so please let me know if you have
feedback or suggestions.

I find this Clojure version easier to follow than existing Java examples,
largely because `proxy` makes the callbacks more compact.

I intentionally kept the callbacks at the top-level, thus avoiding a lot of
nesting, which led to some minor callback hell. The scoping is clearer that
way, even if the program flow is not. I would expect that different people
would have different preferences.

I would be interested to see other ways of handling it (like core.async,
perhaps?).

--
David James
http://bluemontlabs.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: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread Rich Morin
On Dec 19, 2013, at 16:02, Bruno Kim Medeiros Cesar wrote:
> Being acquired by Monsanto does not invalidate "The Climate
> Corporation"'s work, which I find extremely exciting and
> valuable.  In fact, why would their work be "worthwhile" by
> your worthiness definition?  They are just insurance sellers,
> after all.

I have no argument with The Climate Corporation's business model;
my problems are with Monsanto.  That said, I don't want to dive
off into that discussion.  In fact, my comment about them should
probably have been left out of my initial posting.

Can we get back to talking about folks who are using Clojure to
make a positive impact?

-r

 -- 
http://www.cfcl.com/rdm   Rich Morin   r...@cfcl.com
http://www.cfcl.com/rdm/resumeSan Bruno, CA, USA   +1 650-873-7841

Software system design, development, and documentation


-- 
-- 
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: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread Ben Wolfson
Why is a programming language---which one would think is in itself neutral,
being a tool that can be put to a variety of uses---more obviously
worthwhile (let alone the ultimate worthwhile thing!) than sellers of
insurance, who, after all, do, if they're honest, insulate people from what
would otherwise be inconvenient-to-catastrophic events (and thereby make
certain risks more feasible)?


On Thu, Dec 19, 2013 at 4:02 PM, Bruno Kim Medeiros Cesar <
brunokim...@gmail.com> wrote:

> Being acquired by Monsanto does not invalidate "The Climate Corporation"'s
> work, which I find extremely exciting and valuable. In fact, why would
> their work be "worthwhile" by your worthiness definition? They are just
> insurance sellers, after all.
>
> Clojure itself is the ultimate worthwhile project. Even if it fails, by
> some measure of failure, the world is better with a sufficiently-functional
> language, an inspiration for future Lisp users, and a target for future JVM
> languages to aim.
>
> On Thursday, December 19, 2013 2:49:37 AM UTC-2, Rich Morin wrote:
>>
>> I found Doug Selph's talk at Clojure/conj to be quite inspiring, in
>> that he is clearly (IMHO) doing something that is of great potential
>> value to humanity.  I used to have similar feelings about The Climate
>> Corporation, but their recent acquisition by Monsanto troubles me.
>>
>> This makes me wonder about the number of Clojure-driven projects that
>> meet Tim O'Reilly's notions of "doing something worthwhile":
>>
>>   “Pursue something so important that even if you fail,
>>the world is better off with you having tried.”
>>
>> Full disclojure: I'd love to find a Clojure-related position that meets
>> this test.  More generally, however, I'd like to know about any projects
>> that do so.  Suggestions, anyone?
>>
>> -r
>>
>>  --
>> http://www.cfcl.com/rdm   Rich Morin   r...@cfcl.com
>> http://www.cfcl.com/rdm/resumeSan Bruno, CA, USA   +1 650-873-7841
>>
>> Software system design, development, and documentation
>>
>>
>>  --
> --
> 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.
>



-- 
Ben Wolfson
"Human kind has used its intelligence to vary the flavour of drinks, which
may be sweet, aromatic, fermented or spirit-based. ... Family and social
life also offer numerous other occasions to consume drinks for pleasure."
[Larousse, "Drink" entry]

-- 
-- 
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: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread Bruno Kim Medeiros Cesar
Being acquired by Monsanto does not invalidate "The Climate Corporation"'s 
work, which I find extremely exciting and valuable. In fact, why would 
their work be "worthwhile" by your worthiness definition? They are just 
insurance sellers, after all.

Clojure itself is the ultimate worthwhile project. Even if it fails, by 
some measure of failure, the world is better with a sufficiently-functional 
language, an inspiration for future Lisp users, and a target for future JVM 
languages to aim.

On Thursday, December 19, 2013 2:49:37 AM UTC-2, Rich Morin wrote:
>
> I found Doug Selph's talk at Clojure/conj to be quite inspiring, in 
> that he is clearly (IMHO) doing something that is of great potential 
> value to humanity.  I used to have similar feelings about The Climate 
> Corporation, but their recent acquisition by Monsanto troubles me. 
>
> This makes me wonder about the number of Clojure-driven projects that 
> meet Tim O'Reilly's notions of "doing something worthwhile": 
>
>   “Pursue something so important that even if you fail, 
>the world is better off with you having tried.” 
>
> Full disclojure: I'd love to find a Clojure-related position that meets 
> this test.  More generally, however, I'd like to know about any projects 
> that do so.  Suggestions, anyone? 
>
> -r 
>
>  -- 
> http://www.cfcl.com/rdm   Rich Morin   
> r...@cfcl.com 
> http://www.cfcl.com/rdm/resumeSan Bruno, CA, USA   +1 650-873-7841 
>
> Software system design, development, and documentation 
>
>
>

-- 
-- 
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] Hoplon: web applications in Clojure and ClojureScript

2013-12-19 Thread James Reeves
Thank you for taking the time to write such a detailed explanation. That
clears up my understanding of the library considerably.

- James


On 19 December 2013 03:45, Micha Niskin  wrote:

> Ah, yes. There are some gaps in the docs that need to be fixed. To answer
> your questions:
>
>
>1. The main thing that Hoplon does is unify the DOM and the dynamic
>environment (the JS environment). This makes it possible to refer to things
>from the dynamic environment in your markup. Normally you can reference
>things in the DOM from JavaScript, but not the other way around. So in a
>unified environment that includes both JavaScript and the DOM there needs
>to be a way to develop both of them in the same page. A Hoplon page has 3
>parts: the page declaration, a number of optional top-level forms, and
>finally the DOM markup. So yes, the Hoplon compiler selects the last
>expression in the file as the DOM markup.
>2. The primitive HTML5 elements (div, span, etc.) are, in fact
>ClojureScript functions in the tailrecursion.hoplon namespace. These
>functions return new DOM elements of the appropriate type. However, the
>Element type is extended to implement the IFn protocol such that they
>maintain the HTML semantic. That is, function application means append
>child / set attribute. So yes, div and span etc. are functions, but they
>return DOM elements that implement IFn, so they return functions, in a way,
>too.
>3. Everything is generated on the fly, pretty much. The entire
>document is replaced with the result of evaluating the DOM markup when the
>page loads. In other words, when the page loads the last expression in the
>source file is evaluated in the browser, and document is replaced with the
>result. Since the DOM markup is just a ClojureScript expression that is
>evaluated as ClojureScript, you can create your own custom tags. All you
>have to do is define functions that abide by the HTML semantic. There are
>examples of this in the "Getting Started" page, especially the "Creating a
>tabs abstraction" section.
>4. Sorry, I should have put a link in the docs there to 
> Javelin,
>the dataflow library we use for the cells. That page explains in detail,
>but the basic premise is that there are two kinds of cells in spreadsheets,
>input cells that you update manually, and formula cells that update
>themselves reactively according to a formula that might refer to other
>cells. So defc is equivalent to def and cell, and that defines an input
>cell. Likewise, defc= is equivalent to def and cell=, and that defines a
>formula cell.
>5. All cells, both input cells and formula cells, contain values. The
>difference is in how those values are updated. In order to obtain the value
>contained in any cell you may dereference the cell. So both types of cell
>can be dereferenced like atoms. However, only input cells can be updated
>using swap! or reset!. Formula cells will update themselves automatically,
>and it's an error to try to do it directly using those functions.
>6. The difference between a cell and an atom with watchers attached is
>that cells guarantee consistency. That is to say that the evaluation
>mechanism ensures that a formula cell is never updated until all of the
>cells it depends on have been updated, that the formula is evaluated at
>most one time, and that the cell's formula is evaluated only when the value
>of a cell it depends on has changed. A cool property here is that the
>entire graph of cells updates atomically and consistently, even though the
>individual cells are updating themselves one at a time. The consistency
>guarantee ensures that each cell sees the world as if it updates
>atomically; no cell can ever see other cells in a half-evaluated state;
>each cell acts as if it were the last cell to update. You can think of the
>entire graph as a single value.
>
>
>
> On Wednesday, December 18, 2013 7:50:58 PM UTC-5, James Reeves wrote:
>
>> I wasn't expecting an overview of the syntax to be under "Getting
>> Started". The documentation there makes things clearer, but I still have a
>> few questions:
>>
>> 1. What differentiates the top-level page definition from DOM objects
>> returned from functions? Is the compiler just looking for the last
>> expression in the source file?
>> 2. Do the HTML forms (div, span, etc.) act like functions, or more like
>> macros?
>> 3. Are the HTML forms generated on the fly, or is there a fixed list of
>> tags available?
>> 4. Is defc equivalent to def and cell? And defc= equivalent to def and
>> cell=?
>> 5. What's the difference between cell and cell=? Is one like an atom, and
>> the other like a reactive function?
>> 6. What's the difference between a cell an an atom?
>>
>> - James
>>
>>
>> On 18 December 2013 21:02, Mich

Re: ANN: Om, a ClojureScript binding to Facebook's React

2013-12-19 Thread Thomas Heller
Hey David,

looks really interesting although I have to be a little critical of your 
benchmarks. Add a download of 200 todos via xhr and then do the render, you 
will most certainly lose to other JS Framework out there (especially if you 
choose EDN over JSON) cause of the extra overhead associated with going 
from mutable->persistent. I quite like react/om and will certainly play 
with it although I have some worries concerning deeply nested data, since 
Clojure isn't exactly performant in that situation. Happy to be proven 
wrong though.

Anyways, nice work. Curious to see/hear more.

Cheers,
/thomas

PS: Found a Bug: add 2 items, delete the first, double click the last 
remaining. 

On Thursday, December 19, 2013 8:12:12 PM UTC+1, David Nolen wrote:
>
> Enjoy, 
> http://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/
>
> 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: Om, a ClojureScript binding to Facebook's React

2013-12-19 Thread David Nolen
Enjoy,
http://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/

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.


Re: Parsing large XML files

2013-12-19 Thread Peter Ullah
Thank you everyone for your advice, I found it useful and think that I am 
part-way to a solution using clojure.data.xml/source-seq as suggested by 
dannue.

I'll post what I have done so far in the hope it might help someone else... 
comments on style welcome.

*Solution*:

Given the following XML,


  This is some text
  
 This is a header
  


data.xml/source-seq will return a lazy seq of data.xml.Event items 

#clojure.data.xml.Event{:type :start-element, :name :head, :attrs nil, :str 
nil}
#clojure.data.xml.Event{:type :characters, :name nil, :attrs nil, :str nil}
#clojure.data.xml.Event{:type :start-element, :name :title, :attrs nil, 
:str nil}
#clojure.data.xml.Event{:type :characters, :name nil, :attrs nil, :str This 
is some text}
#clojure.data.xml.Event{:type :end-element, :name :title, :attrs nil, :str 
nil}
#clojure.data.xml.Event{:type :start-element, :name :body, :attrs nil, :str 
nil}
#clojure.data.xml.Event{:type :start-element, :name :h1, :attrs nil, :str 
nil}
#clojure.data.xml.Event{:type :characters, :name nil, :attrs nil, :str This 
is a header}
#clojure.data.xml.Event{:type :end-element, :name :h1, :attrs nil, :str nil}
#clojure.data.xml.Event{:type :end-element, :name :body, :attrs nil, :str 
nil}
#clojure.data.xml.Event{:type :end-element, :name :head, :attrs nil, :str 
nil}

This is perfect for finding elements with a particular name, but completely 
useless if I want to find an element based on its location. So I maintain a 
stack where each :start-element causes the element name to be pushed, and 
each :end-element to invoke a pop.

(filter (fn [x] (complement (nil? x)))
  (let [stack (atom []) 
search-pattern "vmware/collectionHost/Object/Property/Property"] 

(doseq[x (take 100 xml)] ; just test with the first 100 elements in seq.
  (do 
(cond 
  (= (:type x) :start-element) (swap! stack conj (name (get x 
:name)))
  (= (:type x) :end-element) (swap! stack pop) 
)   
(when (= search-pattern (clojure.string/join "/" @stack)) (println 
(clojure.string/join "/" @stack)))
  )   
)   
  )
)

This is a work in progress and does not take account of attributes on the 
elements, but I would appreciate any comments.

Thanks

Pete



On Wednesday, December 18, 2013 7:23:21 AM UTC, danneu wrote:
>
> Good question. Every lib that came to mind when I saw 
> clojure.data.xml/parse's
> tree of Elements {:tag _,
> :attrs _, :content _} only works on zippers which apparently sit in memory.
>
> One option is to use `clojure.data.xml/source-seq` to get back a lazy 
> sequence
> of Events {:type _, :name _, :attrs _, :str _} where the event :name is 
> either
> :start-element, :end-element, or :characters.
>
> For example, "Hello" would parse into the events
> [:start-element "strong"], [:characters "Hello"], [:end-element "strong"]. 
> You
> could use loop/recur to manage state as your consume the sequence.
>
> That's actually how I'm used to working with SAX parsers anyways. Here are 
> some
> naive Ruby examples if it's new to you: 
> https://gist.github.com/danneu/3977120.
>
> Of course, I imagine the ideal solution would involve some way to express 
> selectors on the
> Element tree like I'm used to doing with raynes/laser on zippers: 
> https://github.com/Raynes/laser/blob/master/docs/guide.md#screen-scraping.
>
>
> On Tuesday, December 17, 2013 4:57:32 AM UTC-6, Peter Ullah wrote:
>>
>>
>> Hi all, 
>>
>> I'm attempting to parse a large (500MB) XML, specifically I am trying to 
>> extract various parts using XPath. I've been using the examples presented 
>> here: 
>> http://clojure-doc.org/articles/tutorials/parsing_xml_with_zippers.html
>> and all was going when tested against small files, however now that I am 
>> using the larger file Fireplace/Vim just hangs and my laptop gets hot then 
>> I get a memory exception.
>>
>> I've been playing around with various other libraries such as 
>> clojure.data.xml and and found that the following works perfectly well for 
>> parsing... but when I come to search inside root, things start to snarl up 
>> again.
>>
>> (ns example.core
>>   (:require [clojure.java.io :as java.io] 
>> [clojure.data.xml :as data.xml]
>> ))  
>>
>> (def large-file "/path-to-large-file")
>>
>> ;; using clojure.data.xml returns quickly with no problems whereas 
>> clojure.xml/parse from the link above causes problems..
>> (def root 
>>   ( -> large-file
>>java.io/input-stream
>>data.xml/parse
>>))  
>>
>> (class root) ;clojure.data.xml.Element
>>
>> Does anyone know a way of searching within root that won't consume the 
>> heap?
>>
>> Forgive me, I'm new to Clojure and these forums, I've searched through 
>> previous posts but not managed to answer my own question.
>>
>> Thanks in advance.
>>
>

-- 
-- 
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 tha

Re: Comparing core.async and Reactive Extensions

2013-12-19 Thread Matthew Podwysocki
Timothy,

Yes, it has always been this way enforced with a strict grammar with 
locking.  The only place we don't care is in JavaScript, because we're 
single threaded.

Matt

On Thursday, December 19, 2013 11:51:46 AM UTC-5, tbc++ wrote:
>
> You learn something new every day. As this always been the way that Rx 
> worked (the locking part)? I haven't used Rx for several years, so I may be 
> off in my assumptions. 
>
> Timothy
>
>
> On Thu, Dec 19, 2013 at 9:41 AM, Matthew Podwysocki <
> matthew.p...@gmail.com > wrote:
>
>> You can easily do bi-directional communication using Rx, but it's 
>> involving two Subjects, which are both Observables and Observers, or any 
>> flavor thereof Subjects whether Replay, Async, Behavior, or Buffered or 
>> Controlled (for backpressure coming soon).
>>
>> var subject1 = new Rx.Subject();
>> var subject2 = new Rx.Subject();
>>
>> var sub1 = subject1.subscribe(subject2);
>> var sub2 = subject2.subscribe(subject1);
>>
>> And yes, back to Timothy's point, it is not possible in Rx to have 
>> multiple people calling onNext at a single time as we have locks around 
>> that kind of behavior, so there is no chance for overlapping onNext calls, 
>> and have the strict grammar enforced of 0-N onNext calls with an optional 
>> onError or onCompleted but not both.  Once the onError or onCompleted calls 
>> have been fired, no onNext values can be fired.  You can get around that 
>> behavior in a number of ways with retry, catch, or even onErrorResumeNext 
>> so instead of terminating the entire sequence, you can go to another 
>> sequence or retry the current one.
>>
>> Matt
>>
>>
>>> Having used both I would agree that CSP is more general and when you 
>>> need to do custom logic it tends to be easier, IME, than Rx. Another key 
>>> difference is that Rx is only about one way communication within a 
>>> single subscription.  Once you need to have bi-directional communication 
>>> CSP is a better tool for the job. 
>>>
>>> -Ben 
>>>
>>  -- 
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com .
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
>
> -- 
> “One of the main causes of the fall of the Roman Empire was that–lacking 
> zero–they had no way to indicate successful termination of their C 
> programs.”
> (Robert Firth) 
>

-- 
-- 
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: Comparing core.async and Reactive Extensions

2013-12-19 Thread Matthew Podwysocki
You can easily do bi-directional communication using Rx, but it's involving 
two Subjects, which are both Observables and Observers, or any flavor 
thereof Subjects whether Replay, Async, Behavior, or Buffered or Controlled 
(for backpressure coming soon).

var subject1 = new Rx.Subject();
var subject2 = new Rx.Subject();

var sub1 = subject1.subscribe(subject2);
var sub2 = subject2.subscribe(subject1);

And yes, back to Timothy's point, it is not possible in Rx to have multiple 
people calling onNext at a single time as we have locks around that kind of 
behavior, so there is no chance for overlapping onNext calls, and have the 
strict grammar enforced of 0-N onNext calls with an optional onError or 
onCompleted but not both.  Once the onError or onCompleted calls have been 
fired, no onNext values can be fired.  You can get around that behavior in 
a number of ways with retry, catch, or even onErrorResumeNext so instead of 
terminating the entire sequence, you can go to another sequence or retry 
the current one.

Matt

>
> Having used both I would agree that CSP is more general and when you 
> need to do custom logic it tends to be easier, IME, than Rx. Another key 
> difference is that Rx is only about one way communication within a 
> single subscription.  Once you need to have bi-directional communication 
> CSP is a better tool for the job. 
>
> -Ben 
>

-- 
-- 
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: Comparing core.async and Reactive Extensions

2013-12-19 Thread Timothy Baldridge
You learn something new every day. As this always been the way that Rx
worked (the locking part)? I haven't used Rx for several years, so I may be
off in my assumptions.

Timothy


On Thu, Dec 19, 2013 at 9:41 AM, Matthew Podwysocki <
matthew.podwyso...@gmail.com> wrote:

> You can easily do bi-directional communication using Rx, but it's
> involving two Subjects, which are both Observables and Observers, or any
> flavor thereof Subjects whether Replay, Async, Behavior, or Buffered or
> Controlled (for backpressure coming soon).
>
> var subject1 = new Rx.Subject();
> var subject2 = new Rx.Subject();
>
> var sub1 = subject1.subscribe(subject2);
> var sub2 = subject2.subscribe(subject1);
>
> And yes, back to Timothy's point, it is not possible in Rx to have
> multiple people calling onNext at a single time as we have locks around
> that kind of behavior, so there is no chance for overlapping onNext calls,
> and have the strict grammar enforced of 0-N onNext calls with an optional
> onError or onCompleted but not both.  Once the onError or onCompleted calls
> have been fired, no onNext values can be fired.  You can get around that
> behavior in a number of ways with retry, catch, or even onErrorResumeNext
> so instead of terminating the entire sequence, you can go to another
> sequence or retry the current one.
>
> Matt
>
>
>> Having used both I would agree that CSP is more general and when you
>> need to do custom logic it tends to be easier, IME, than Rx. Another key
>> difference is that Rx is only about one way communication within a
>> single subscription.  Once you need to have bi-directional communication
>> CSP is a better tool for the job.
>>
>> -Ben
>>
>  --
> --
> 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.
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

-- 
-- 
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: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread Rich Morin
On Dec 19, 2013, at 02:36, Phillip Lord wrote:
> I never understood how "flog books about technology" came into that
> category.


The books are simply an artifact and technology is only one domain.
Tim has spent decades promoting the interchange of well-chosen ideas.  
For example, although Christine Peterson came up with the term Open
Source, Tim pulled together a group of key developers to discuss it,
choose it as a new meme, define talking points, etc.  He also ran a
number of industry-wide conferences (OSCON), bringing together folks
from different language communities.  He made money doing this, but
I don't hold that against him; it indicates that he was giving value.

That said, each person has to decide what things are important.  My
own career has ranged from scientific programming and documentation
to publication of free software collections.  I'm a fanboi for both
science and open source, so this fits my criteria.  YMMV.

-r

 -- 
http://www.cfcl.com/rdm   Rich Morin   r...@cfcl.com
http://www.cfcl.com/rdm/resumeSan Bruno, CA, USA   +1 650-873-7841

Software system design, development, and documentation


-- 
-- 
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] component 0.2.1

2013-12-19 Thread Stuart Sierra
Component: object lifecycle management & dependency injection

https://github.com/stuartsierra/component

Version 0.2.1.

in Leiningen:   [com.stuartsierra/component "0.2.1"]

Changes in this release:

* Conveniences
   * Added arities to `start-system` and `stop-system`
   * Generic `system-map` for constructing systems
* More descriptive error messages
* Backwards-compatible with releases 0.2.0 and 0.1.0

-- 
-- 
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: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread Daniel Higginbotham

>
> I have done several things in my life where, at least, I am sure that 
> the world would not have been better off if I hadn't tried. I think this 
> is enough to hope for. 
>

I'm fooling around with Weather Jerk (http://www.weatherjerk.com/) in my 
spare time. It uh... solves the problem of having too many friends? 
Actually, I'm pretty sure the world would have been better if I hadn't 
tried on this one.

Also, Grateful Place (http://gratefulplace.com/). Clojure w/ liberator for 
the api server, datomic for the db, angular for the frontend and writeup 
at 
http://www.flyingmachinestudios.com/programming/building-a-forum-with-clojure-datomic-angular/.
 
I've read about studies that say taking a few minutes to express gratitude 
every day is one of the easiest ways to become happier. As programmers, we 
spend a lot of time trying to find out what's broken. Taking time for 
gratitude reorients mindset to look for positive things.

My favorite post so far is this 
one, http://gratefulplace.com/#/topics/17592186047726, which expresses 
gratitude for Pedestal documentation that makes sense ;)

Daniel

-- 
-- 
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: Who is "doing something worthwhile" in Clojure?

2013-12-19 Thread Phillip Lord

Rich Morin  writes:
> This makes me wonder about the number of Clojure-driven projects that
> meet Tim O'Reilly's notions of "doing something worthwhile":
>
>   “Pursue something so important that even if you fail,
>the world is better off with you having tried.”


I never understood how "flog books about technology" came into that
category.

> Full disclojure: I'd love to find a Clojure-related position that meets
> this test.  More generally, however, I'd like to know about any projects
> that do so.  Suggestions, anyone?

I have done several things in my life where, at least, I am sure that
the world would not have been better off if I hadn't tried. I think this
is enough to hope for.

Phil

-- 
-- 
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.