Re: [ANN] Clojure 1.9.0 is now available!

2017-12-08 Thread Sergey Didenko
Congratulations!

On Fri, Dec 8, 2017 at 10:03 PM, Jozef Wagner 
wrote:

> Congratulations on the long awaited release and thanks to Rich, Stu, Alex
> and all contributors! I'm glad and proud to be part of it!
>
> Jozef
>
> On Friday, December 8, 2017 at 8:35:39 PM UTC+1, Alex Miller wrote:
>>
>> Clojure 1.9 is now available!
>>
>>
>> Clojure 1.9 introduces two major new features: integration with spec and
>> command line tools.
>>
>>
>> spec (rationale , guide
>> ) is a library for describing the
>> structure of data and functions with support for:
>>
>>- Validation
>>- Error reporting
>>- Destructuring
>>- Instrumentation
>>- Test-data generation
>>- Generative test generation
>>- Documentation
>>
>> Clojure integrates spec via two new libraries (still in alpha):
>>
>>- spec.alpha  - spec
>>implementation
>>- core.specs.alpha  -
>>specifications for Clojure itself
>>
>> This modularization facilitates refinement of spec separate from the
>> Clojure release cycle.
>>
>> The command line tools (guide ,
>> reference ) provide:
>>
>>- Quick and easy install
>>- Clojure REPL and runner
>>- Use of Maven and local dependencies
>>- A functional API for classpath management (tools.deps.alpha
>>)
>>
>> The installer is available for Mac developers in brew, for Linux users in
>> a script, and for more platforms in the future.
>>
>> For more information, see the complete list
>>  of all
>> changes in Clojure 1.9 for more details.
>>
>>
>> *Contributors*
>>
>>
>> Thanks to all of the community members who contributed to Clojure 1.9
>> (first time contributors in bold):
>>
>>
>>- *Adam Clements*
>>- Andy Fingerhut
>>- Brandon Bloom
>>- *Cameron Desautels*
>>- *Chad Taylor*
>>- Chris Houser
>>- *David Bürgin*
>>- *Eli Lindsey*
>>- *Gerrit Jansen Van Vuuren*
>>- Ghadi Shayban
>>- *Greg Leppert*
>>- *Jason Whitlark*
>>- *Johan Mena*
>>- Jozef Wagner
>>- *Lee Yen-Chin*
>>- *Matthew Boston*
>>- Michael Blume
>>- Michał Marczyk
>>- Nicola Mometto
>>- *Ruslan Al-Fakikh*
>>- *Steffen Dienst*
>>- Steve Miner
>>- *Yegor Timoshenko*
>>- *Zhuang XiaoDan*
>>
>> --
> 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/d/optout.
>

-- 
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/d/optout.


Re: [ANN] Clojure 1.9.0-RC1

2017-11-24 Thread Sergey Didenko
Code with reflection is ~6% faster on server JRE (in 1.9.0-RC1) and ~1%
slower on client JRE.
So apparently it's not a big deal.

Server JRE:

user> *clojure-version*
{:major 1, :minor 8, :incremental 0, :qualifier nil}
user> (use 'criterium.core)
nil
user> (bench (.length (.toString (reduce (fn [sb st] (.append sb st))
(StringBuilder.) (take 10 (repeat "test"))
Reflection warning, *cider-repl scan*:396:54 - call to method append can't
be resolved (target class is unknown).
Reflection warning, *cider-repl scan*:396:23 - reference to field toString
can't be resolved.
Reflection warning, *cider-repl scan*:396:14 - reference to field length
can't be resolved.
Evaluation count : 60 in 60 samples of 1 calls.
 Execution time mean : 1.072324 sec
Execution time std-deviation : 5.929780 ms
   Execution time lower quantile : 1.066123 sec ( 2.5%)
   Execution time upper quantile : 1.087542 sec (97.5%)
   Overhead used : 1.598266 ns

Found 2 outliers in 60 samples (3. %)
low-severe 2 (3. %)
 Variance from outliers : 1.6389 % Variance is slightly inflated by outliers

user> *clojure-version*
{:major 1, :minor 9, :incremental 0, :qualifier "RC1"}
user> (use 'criterium.core)
nil
user> (bench (.length (.toString (reduce (fn [sb st] (.append sb st))
(StringBuilder.) (take 10 (repeat "test"))
Reflection warning, *cider-repl scan*<2>:418:54 - call to method append
can't be resolved (target class is unknown).
Reflection warning, *cider-repl scan*<2>:418:23 - reference to field
toString can't be resolved.
Reflection warning, *cider-repl scan*<2>:418:14 - reference to field length
can't be resolved.
Evaluation count : 60 in 60 samples of 1 calls.
 Execution time mean : 1.017560 sec
Execution time std-deviation : 3.256887 ms
   Execution time lower quantile : 1.015164 sec ( 2.5%)
   Execution time upper quantile : 1.025247 sec (97.5%)
   Overhead used : 1.598209 ns

Found 11 outliers in 60 samples (18. %)
low-severe 7 (11.6667 %)
low-mild 4 (6.6667 %)
 Variance from outliers : 1.6389 % Variance is slightly inflated by outliers



Client JRE:

user> *clojure-version*
{:major 1, :minor 8, :incremental 0, :qualifier nil}
user> (use 'criterium.core)
nil
user> (bench (.length (.toString (reduce (fn [sb st] (.append sb st))
(StringBuilder.) (take 10 (repeat "test"))
Reflection warning, *cider-repl scan*<2>:372:54 - call to method append
can't be resolved (target class is unknown).
Reflection warning, *cider-repl scan*<2>:372:23 - reference to field
toString can't be resolved.
Reflection warning, *cider-repl scan*<2>:372:14 - reference to field length
can't be resolved.
Evaluation count : 60 in 60 samples of 1 calls.
 Execution time mean : 4.468317 sec
Execution time std-deviation : 9.396613 ms
   Execution time lower quantile : 4.460775 sec ( 2.5%)
   Execution time upper quantile : 4.491945 sec (97.5%)
   Overhead used : 8.161463 ns

Found 9 outliers in 60 samples (15. %)
low-severe 6 (10. %)
low-mild 3 (5. %)
 Variance from outliers : 1.6389 % Variance is slightly inflated by outliers

user> *clojure-version*
{:major 1, :minor 9, :incremental 0, :qualifier "RC1"}
user> (use 'criterium.core)
nil
user> (bench (.length (.toString (reduce (fn [sb st] (.append sb st))
(StringBuilder.) (take 10 (repeat "test"))
Reflection warning, *cider-repl scan*:350:54 - call to method append can't
be resolved (target class is unknown).
Reflection warning, *cider-repl scan*:350:23 - reference to field toString
can't be resolved.
Reflection warning, *cider-repl scan*:350:14 - reference to field length
can't be resolved.
Evaluation count : 60 in 60 samples of 1 calls.
 Execution time mean : 4.504926 sec
Execution time std-deviation : 10.412995 ms
   Execution time lower quantile : 4.488528 sec ( 2.5%)
   Execution time upper quantile : 4.532106 sec (97.5%)
   Overhead used : 8.425136 ns

Found 3 outliers in 60 samples (5. %)
low-severe 3 (5. %)
 Variance from outliers : 1.6389 % Variance is slightly inflated by outliers


On Fri, Nov 24, 2017 at 4:05 AM, Alex Miller <a...@puredanger.com> wrote:

> So is there any difference in this code between 1.8 and 1.9?
>
> On Nov 23, 2017, at 5:31 PM, Sergey Didenko <sergey.dide...@gmail.com>
> wrote:
>
> Correction - it's not about regex parsing. I removed reflection calls for
> StringBuilder and now it seems to be on par in speed.
>
> On Fri, Nov 24, 2017 at 1:20 AM, Sergey Didenko <sergey.dide...@gmail.com>
> wrote:
>
>> Hi,
>>
>> is it expected that code which does a lot of regex parsing is ~14% slower
>> than it was under Clojure 1.8?
>>
>> On Tue, Nov 14, 

Re: [ANN] Clojure 1.9.0-RC1

2017-11-23 Thread Sergey Didenko
Correction - it's not about regex parsing. I removed reflection calls for
StringBuilder and now it seems to be on par in speed.

On Fri, Nov 24, 2017 at 1:20 AM, Sergey Didenko <sergey.dide...@gmail.com>
wrote:

> Hi,
>
> is it expected that code which does a lot of regex parsing is ~14% slower
> than it was under Clojure 1.8?
>
> On Tue, Nov 14, 2017 at 8:22 AM, Shantanu Kumar <kumar.shant...@gmail.com>
> wrote:
>
>> Sorry, my bad. I can see the same behavior in previous Clojure versions
>> too. I discovered this in the middle of moving to 1.9.0-RC1 in one of
>> the projects and somehow got it all mixed up.
>>
>>
>> Shantanu
>>
>> On Tuesday, 14 November 2017 11:36:30 UTC+5:30, Andy Fingerhut wrote:
>>>
>>> I see the same behavior in Clojure 1.7.0 and 1.8.0 as you see in
>>> 1.9.0-RC1.
>>>
>>> Andy
>>>
>>> On Mon, Nov 13, 2017 at 9:48 PM, Shantanu Kumar <kumar.s...@gmail.com>
>>> wrote:
>>>
>>>> Sorry, I did not specify the problem completely earlier. The coercion
>>>> fails only when *uncheked-math* is set to truthy in 1.9.0-RC1.
>>>>
>>>> user=> (byte \a)
>>>> 97
>>>> user=> (set! *unchecked-math* true)  ; or :warn-on-boxed
>>>> true
>>>> user=> (byte \a)
>>>>
>>>> ClassCastException java.lang.Character cannot be cast to
>>>> java.lang.Number  clojure.lang.RT.uncheckedByteCast (RT.java:1376)
>>>>
>>>>
>>>> Shantanu
>>>>
>>>> On Tuesday, 14 November 2017 01:27:36 UTC+5:30, Alex Miller wrote:
>>>>>
>>>>> Works for me in 1.9.0-RC1. I don't know of anything that changed in
>>>>> this area.
>>>>>
>>>>> Clojure 1.9.0-RC1
>>>>> user=> (byte \a)
>>>>> 97
>>>>>
>>>>> On Mon, Nov 13, 2017 at 1:09 PM, Shantanu Kumar <kumar.s...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> The coercion (byte \a) works fine in Clojure 1.8, but it fails with
>>>>>> `ClassCastException java.lang.Character cannot be cast to 
>>>>>> java.lang.Number`
>>>>>> in 1.9.0-RC1. Is this by design?
>>>>>>
>>>>>>
>>>>>> Shantanu
>>>>>>
>>>>>> --
>>>> 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/d/optout.
>>>>
>>>
>>> --
>> 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/d/optout.
>>
>
>

-- 
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/d/optout.


Re: [ANN] Clojure 1.9.0-RC1

2017-11-23 Thread Sergey Didenko
Hi,

is it expected that code which does a lot of regex parsing is ~14% slower
than it was under Clojure 1.8?

On Tue, Nov 14, 2017 at 8:22 AM, Shantanu Kumar 
wrote:

> Sorry, my bad. I can see the same behavior in previous Clojure versions
> too. I discovered this in the middle of moving to 1.9.0-RC1 in one of
> the projects and somehow got it all mixed up.
>
>
> Shantanu
>
> On Tuesday, 14 November 2017 11:36:30 UTC+5:30, Andy Fingerhut wrote:
>>
>> I see the same behavior in Clojure 1.7.0 and 1.8.0 as you see in
>> 1.9.0-RC1.
>>
>> Andy
>>
>> On Mon, Nov 13, 2017 at 9:48 PM, Shantanu Kumar 
>> wrote:
>>
>>> Sorry, I did not specify the problem completely earlier. The coercion
>>> fails only when *uncheked-math* is set to truthy in 1.9.0-RC1.
>>>
>>> user=> (byte \a)
>>> 97
>>> user=> (set! *unchecked-math* true)  ; or :warn-on-boxed
>>> true
>>> user=> (byte \a)
>>>
>>> ClassCastException java.lang.Character cannot be cast to
>>> java.lang.Number  clojure.lang.RT.uncheckedByteCast (RT.java:1376)
>>>
>>>
>>> Shantanu
>>>
>>> On Tuesday, 14 November 2017 01:27:36 UTC+5:30, Alex Miller wrote:

 Works for me in 1.9.0-RC1. I don't know of anything that changed in
 this area.

 Clojure 1.9.0-RC1
 user=> (byte \a)
 97

 On Mon, Nov 13, 2017 at 1:09 PM, Shantanu Kumar 
 wrote:

> The coercion (byte \a) works fine in Clojure 1.8, but it fails with
> `ClassCastException java.lang.Character cannot be cast to 
> java.lang.Number`
> in 1.9.0-RC1. Is this by design?
>
>
> Shantanu
>
> --
>>> 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/d/optout.
>>>
>>
>> --
> 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/d/optout.
>

-- 
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/d/optout.


Re: tips on writing modern idiomatic code

2016-06-23 Thread Sergey Didenko
Thank you for your answers!

That would be interesting to read.

On Thu, Jun 23, 2016 at 1:30 AM, Rangel Spasov <raspa...@gmail.com> wrote:

> Great book resources, IMO:
>
> Clojure Programming (Emerick, Carper, Grand; O’Reilly) - book
> Clojure Applied (Alex Miller, Ben Vandgrift) - book
>
> If you understand the majority of what those books say and why, read
> Zach's Elements of Clojure.
>
> General recommendations:
> - understand why transducers, use them where appropriate (Rich's talks are
> good intros to 'why')
> - understand why core.async, CSP in general, use it where appropriate
> (Rich's talks again)
> - understand clojure.spec
>
> In terms of code readability and documentation, I would aspire to one day
> write as much documentation as Aphyr does here:
>
> https://github.com/aphyr/tesser/blob/master/core/src/tesser/core.clj
>
> I think there isn't a single idiomatic way to write Clojure. If there's a
> "way", it's probably the "Out of the tar pit paper"
> http://shaffner.us/cs/papers/tarpit.pdf
>
> My general code quality test is can you explain/draw your code decisions
> to a stranger on a piece of paper in 60 seconds.
>
> Cheers,
> Rangel
>
> On Tuesday, June 21, 2016 at 5:46:22 AM UTC-7, Sergey Didenko wrote:
>>
>> Hi,
>>
>> What would you advise for writing-rewriting your Clojure code in MODERN
>> idiomatic way?
>>
>> Using Kibit?
>>
>> Pasting your code samples on some review site?
>>
>> Asking help in IRC channel?
>>
>> Asking here?
>>
>> Reading some noticeable open source projects?
>>
>> Reading some new Clojure book?
>>
>> I ask about the latest Clojure specifically.
>>
>> I have not given very focused attention to Clojure since version 1.4 and
>> would like to grasp the WHOLE PICTURE of "good" modern Clojure. Currently
>> it feels like a lot of latest knowledge is located in different pieces all
>> over the internet. Or may be I just don't know where to look.
>>
>>
>> --
> 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/d/optout.
>

-- 
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/d/optout.


tips on writing modern idiomatic code

2016-06-21 Thread Sergey Didenko
Hi,

What would you advise for writing-rewriting your Clojure code in MODERN
idiomatic way?

Using Kibit?

Pasting your code samples on some review site?

Asking help in IRC channel?

Asking here?

Reading some noticeable open source projects?

Reading some new Clojure book?

I ask about the latest Clojure specifically.

I have not given very focused attention to Clojure since version 1.4 and
would like to grasp the WHOLE PICTURE of "good" modern Clojure. Currently
it feels like a lot of latest knowledge is located in different pieces all
over the internet. Or may be I just don't know where to look.

-- 
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/d/optout.


Re: flowchart for choosing the right Clojure parallel primitives?

2016-03-30 Thread Sergey Didenko
Thank you, David!

On Tue, Mar 29, 2016 at 10:52 PM, David Della Costa <ddellaco...@gmail.com>
wrote:

> Hi Sergey, I don't have a direct answer for you but this talk at
> Clojure/West 2015 by Leon Barrett went over the various options for
> parallelism in Clojure, and I found it pretty educational myself:
>
>
> https://www.youtube.com/watch?v=BzKjIk0vgzE=PLZdCLR02grLrKAOj8FJ1GGmNM5l7Okz0a=2
>
> Hope that is useful!
>
> DD
>
>
> 2016-03-29 9:56 GMT-04:00 Sergey Didenko <sergey.dide...@gmail.com>:
>
>> Hi,
>>
>> Is there a flowchart for choosing the right Clojure parallel primitives?
>>
>> So that you can decide when to just use reducers/fork and when to choose
>> core.async and etc.
>>
>> For example like the flowchart for data types from Chas Emerick -
>> http://cemerick.com/2011/07/05/flowchart-for-choosing-the-right-clojure-type-definition-form/
>>
>>
>> --
>> 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/d/optout.
>>
>
> --
> 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/d/optout.
>

-- 
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/d/optout.


flowchart for choosing the right Clojure parallel primitives?

2016-03-29 Thread Sergey Didenko
Hi,

Is there a flowchart for choosing the right Clojure parallel primitives?

So that you can decide when to just use reducers/fork and when to choose
core.async and etc.

For example like the flowchart for data types from Chas Emerick -
http://cemerick.com/2011/07/05/flowchart-for-choosing-the-right-clojure-type-definition-form/

-- 
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/d/optout.


Re: New Matrix Multiplication benchmarks - Neanderthal up to 60 times faster than core.matrix with Vectorz

2016-03-14 Thread Sergey Didenko
Dragan, thank you for your library and detailed explanations!

Beeing close to state of the art FORTAN libraries and GPU is important for
long calculations.

You give me hope to use Clojure more for data science. Last time when I
benchmarked Incanter's  vs Octave I decided to pause using Clojure for data
science and move to other languages.

-- 
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/d/optout.


Re: [ANN] clojurework.com

2016-02-26 Thread Sergey Didenko
Thanks,

Search input is a bit misalighned in Safari, iOS 9.2.1 (iPod 5gen) but
still functional.

On Sat, Feb 27, 2016 at 5:10 AM, Timothy Washington 
wrote:

> +1. This looks great.
>
>
> Tim
>
>
> On Thu, Feb 25, 2016 at 9:47 AM, Daniel Higginbotham <
> nonrecurs...@gmail.com> wrote:
>
>> Hi everyone,
>>
>> I've released http://clojurework.com/ in beta :) My goal for the site is
>> to build a quality community resource for those looking to write Clojure
>> for Real Projects, whether paid or open source. It features
>> jobs/contracting work/gigs and beginner-friendly open source projects.
>>
>> Job postings are free while the site's in beta, so please post away! Ads
>> will eventually be $75 for 30 days. Open source project listings are free,
>> of course.
>>
>> I'd love any feedback -
>>
>> * Does the site look useful?
>> * Is anything confusing?
>> * What would make it better?
>>
>> If you'd like to send feedback directly to me or if you'd like to talk
>> about posting a job, my email is nonrecurs...@gmail.com.
>>
>> Thanks!
>> 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/d/optout.
>>
>
> --
> 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/d/optout.
>

-- 
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/d/optout.


Re: [ANN] Skyscraper 0.1.0, a library for scraping entire websites

2015-08-11 Thread Sergey Didenko
Looks interesting, thank you.

On Tue, Aug 11, 2015 at 5:00 PM, Daniel Janus nath...@gmail.com wrote:

 Dear Clojurians,

 I'm happy to announce the availability of the first release of Skyscraper,
 an Enlive-based library for structural scraping -- extracting information
 from whole sites in a structural way.

 Homepage / GitHub: https://github.com/nathell/skyscraper
 Leiningen: [skyscraper 0.1.0]
 Clojars: https://clojars.org/skyscraper

 From the README:

 What is structural scraping? Think of Enlive. It allows you to parse
 arbitrary HTML and extract various bits of information out of it: subtrees
 or parts of subtrees determined by selectors. You can then convert this
 information to some other format, easier for machine consumption, or
 process it in whatever other way you wish. This is called scraping.

 Now imagine that you have to parse a lot of HTML documents. They all come
 from the same site, so most of them are structured in the same way and can
 be scraped using the same sets of selectors. But not all of them. There’s
 an index page, which has a different layout and needs to be treated in its
 own peculiar way, with pagination and all. There are pages that group
 together individual pages in categories. And so on. Treating single pages
 is easy, but with whole collections of pages, you quickly find yourself
 writing a lot of boilerplate code.

 In particular, you realize that you can’t just wget -r the whole thing and
 then parse each page in turn. Rather, you want to simulate the workflow of
 a user who tries to “click through” the website to obtain the information
 she’s interested in. Sites have tree-like structure, and you want to keep
 track of this structure as you traverse the site, and reflect it in your
 output. I call it “structural scraping”.

 This is where Skyscraper comes in.

 Happy using,
 --Daniel Janus

 --
 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/d/optout.


-- 
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/d/optout.


Re: Prevayler in Clojure

2015-06-01 Thread Sergey Didenko
May be you will be interested to see my toy library for prevalence in
Clojure - https://github.com/SergeyDidenko/Simple-Persistence-for-Clojure

On Sun, May 31, 2015 at 12:56 AM, Plínio Balduino pbaldu...@gmail.com
wrote:

 Awesome, Klaus

 Thank you

 Plínio

 On Sat, May 30, 2015 at 4:31 PM, Klaus Wuestefeld 
 klauswuestef...@gmail.com wrote:

 Prevalence is the fastest possible and third simplest ACID persistence
 technique, combining the two simplest ones.

 https://github.com/klauswuestefeld/prevayler-clj

 --
 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/d/optout.


  --
 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/d/optout.


-- 
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/d/optout.


Re: [ANN] Clojure 1.7.0-RC1 now available

2015-05-21 Thread Sergey Didenko
As I mentioned in another thread, how would you type hint an empty vector?

(set! *warn-on-reflection* true)
(java.util.ArrayList.  []);Reflection warning
(java.util.ArrayList. ^java.util.Collection [])   ;Reflection warning

At the same time:

(java.util.ArrayList.  [a])  ;OK

P.S. May be it's offtopic, because I see the same behavior in Clojure 1.5.1

-- 
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/d/optout.


can't type hint on an empty vector directly

2015-05-17 Thread Sergey Didenko
Hello,

I have encountered a somewhat inconsistent behavior when applying type
hinting on an empty vector.

Lucene 5.1 CharArraySet has a few constructors, one of which is

public CharArraySet(Collection? c, boolean ignoreCase)

So I get a reflection warning only in the first case:

1. (CharArraySet. ^Collection [] false)

2. (CharArraySet. ^Collection [a] false)

3. (def ^Collection empty-collection [])
(CharArraySet. empty-collection false)

Is it a bug or a feature?

P.S.
*clojure-version*
{:major 1, :minor 7, :incremental 0, :qualifier beta3}

java -version
java version 1.8.0_45
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

-- 
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/d/optout.


Re: Why aren't libraries like clojure/(data.csv, ...) on clojars.org?

2015-05-10 Thread Sergey Didenko
(A bit offtopic) Leiningen fetches libraries from Clojars and Maven, so I
guess this problem is not visible to the big part of the community.


On Sun, May 10, 2015 at 1:43 PM, Jakub Holy jakub.h...@iterate.no wrote:

 This is essentially a question to Cognitect / developers of the clojure/*
 libraries but I do not know of a better communication channel than this one.

 To me, clojars is the one place to go to find out what libraries are there
 and especially what is the latest version. It always surprises me that some
 core libraries such as .e.g clojure.data.cvs aren't there. It is annoying
 and difficult to remember that I have to search both clojars and Maven
 Central. I think it would be really wonderful if these libraries too could
 be on clojars. Or is there any reason why this cannot be the case?

 (I know there are sites for finding libraries such as Clojure Toolbox but
 that is not really what I am asking for here.)

 Thank you!

 Best regards, Jakub Holy

 --
 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/d/optout.


-- 
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/d/optout.


Re: sp mm training in hyderabada

2015-04-20 Thread Sergey Didenko
I can't believe people don't see it's a conspiracy.

Some accounts were hacked, payed and emulated to bring more attention to
this spam.

The most disturbing sign IMHO is creation of Sean Corfield account that
was grown for many years bringing support and value to Clojure community
for the sake of backing this spam eventually.

I don't know how progressive humanity is going to fight this new advanced
spam technique. The only hope I have is AI on the base of Deep Learning
deployed in the cloud.

The argument for being completely incomprehensible is weak. From the
first sight it's obvious that Center for Studying Mysterious Abbreviations
is being advertised here.

On Tue, Apr 14, 2015 at 1:54 PM, Fluid Dynamics a2093...@trbvm.com wrote:



 On Tuesday, April 14, 2015 at 1:36:33 AM UTC-4, Sean Corfield wrote:


 On Mon, Apr 13, 2015 at 9:32 AM, Fluid Dynamics a209...@trbvm.com
 wrote:

 On Monday, April 13, 2015 at 9:27:33 AM UTC-4, sunitha seo wrote:

 Sap Bw Bi Bo Training Centre in Hyderabad | Vijayawada |Guntur | Vizag,
 Online Sap Bw Bi Bo Training In USA,  New York, New Jersey,Dallas, Chicago,
 Atlanta, UK, Canada, Australia, India.

 Is this a job posting or something?


 It's spam. The poster should be banned (if the moderators haven't already
 done so). I moderate a number of groups on LinkedIn and this sort of
 annoying stuff gets posted all the time :(


 How can you even tell? If as you claim it's a sales pitch to us, it
 suffers from the same flaw of being completely incomprehensible. Which will
 result in no sales.



-- 
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/d/optout.


Re: Memoize in the real world

2014-12-15 Thread Sergey Didenko
As I understand this var approach is used for development purposes, so in
theory it should not occur in production. I wonder though why someone would
prefer it to atoms.

-- 
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/d/optout.


Re: Memoize in the real world

2014-12-13 Thread Sergey Didenko
Some people use vars for seldom changing things. What do you think
about this VS atoms?

For example:

(declare ^:dynamic *server*)

(defn get-possibly-unbound-var [v]
  (try (var-get v)
   (catch Exception e
 nil)))

(defn start-server! []
  (if (get-possibly-unbound-var *server*)
(.start *server*)
(def ^:dynamic *server*
  (run-jetty #'app {:port 8000 :join? false}

-- 
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/d/optout.


Re: Performance notes for Pink

2014-11-26 Thread Sergey Didenko
Thank you,

It was interesting to read your experience on this kind of optimization.

As I see you fall back to using raw Java code a few times.

-- 
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/d/optout.


Re: Clojure cheat sheet now links to ClojureDocs.org for things added since Clojure 1.4

2014-10-01 Thread Sergey Didenko
Great news! Thank you for your efforts.

On Tue, Sep 30, 2014 at 2:48 AM, zk zachary@gmail.com wrote:
 Hey, thanks for the kind words, Andy.

 I'd like to apologize to everybody here, I know it's been very frustrating
 having such a visible project like ClojureDocs behind for so long. With this
 rewrite bumping versions is a 3 line code change and a redeploy [1], so
 version lags won't happen again.

 I'll try to get a comprehensive post out about the new stack, experience
 changes,  future of the project soon.

 - Zack

 [1] https://github.com/zk/clojuredocs#clojure-version

 On Monday, September 29, 2014 2:52:14 PM UTC-7, Andy Fingerhut wrote:

 The Clojure cheat sheet with links to ClojureDocs.org [2] now also links
 to ClojureDocs.org for things added since Clojure 1.4, because now
 ClojureDocs.org [1] has been updated to include all of those things.  I
 suspect Zachary Kim, or perhaps several people, deserve a round of applause
 for all of the hard work that went into the updated ClojureDocs.org, and I
 hope they toot their own horn with an announcement about it in this group.

 As usual, the latest Clojure cheat sheets are available at [2].  The
 version at clojure.org/cheatsheet will be updated some time to match.

 Andy

 [1] http://clojuredocs.org
 [2] http://jafingerhut.github.io

 --
 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/d/optout.

-- 
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/d/optout.


Re: Clojure Contributor Agreement process update

2014-06-11 Thread Sergey Didenko
I look at it from the psychological point of view.

There is a similar design decision in a website world - mandatory login vs
relaxed login. For years a lot of webmasters were quite inert to even look
at possibility to relax login requirement for core site activities.

However in the online shopping field which is very competitive webmasters
realized that for example adding products to the cart without login gives
better conversion rates.

We don't need to sign anything to answer on StackOverflow, even login is
not required now. We don't need to sign anything to make GitHub pull
requests to a lot of projects. Somehow it makes life smoother.

I don't know what impact of this barrier can be for Clojure. I realize it
can be quite negligible.

However as example I have not signed some papers for my Google Closure
library patch in the past. It just looked so absurd to fill some papers for
if (!variable) = if (variable === 0) kind of fix.

I realize that there are real world constraints and the world is not
perfect and the world is not even close to be perfect. But dreaming about
better ways is a part of Clojure community, isn't it?

May be the best solution is just to be vocal that the sign process is quick
and easy now. Or may be doing nothing about it because there are more
priority tasks.

I hope I convey my perspective better now.

P.S. Please don't cut my air away :))

-- 
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/d/optout.


Re: Clojure Contributor Agreement process update

2014-06-10 Thread Sergey Didenko
Sorry if that was already answered,

Is there a possibility to get rid of this legalwall?

I realize that there are good intents behind the existing practice, but it
feels a bit wrong for an open source artifact in the digital age of instant
sharing.



 Starting today, we have updated the Clojure Contributor Agreement
 process.



-- 
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/d/optout.


Re: Nginx-Clojure Let You Deploy Clojure Web App on Nginx Without Any Java Web Server

2014-01-21 Thread Sergey Didenko
I see, thanks.


On Tue, Jan 21, 2014 at 4:17 PM, Xfeep Zhang easyj...@163.com wrote:


 On Tuesday, January 21, 2014 6:25:02 AM UTC+8, Sergey Didenko wrote:

 Hi Xfeep,

 What are the good ways to handle some heavy Clojure calculations when
 using nginx-clojure?


 Do you mean every request will cost too much time ?  If time cost is
 mainly caused by IO blocking,  java thread pool can be used to resolve this
 problem.

 Otherwise you must add more  computers or use more fast hardware to handle
 those pure  CPU concentrated tasks.


 Under nginx model it's bad to block other incoming requests by holding a
 working thread for too long, right?


 Yes. Typically  the nginx worker processes won't be too many  and maybe
 the same number of your cpu cores.
 If you can not reduce single reponse time,  all worker will be blocked by
 those slow tasks.


 So is it better to route complex job to http-kit? Or to use some kind of
 queue? Or may be to use this nginx-clojure JVM pool that is off by default?



 Suppose your time cost is mainly caused by IO blocking, java thread pool
 can be used by two ways :

 (1)  use *pcall* , *pvalue* etc. provided by clojure to execute your
 tasks parallel  to reduce single request-response time.
 OR
 (2)  with nginx-clojure just simply set jvm_workers to some medium  number
 eg 100, or bigger number if you get more memory. This thread pool will make
 nginx workers not blocked until all threads are exhausted.

 When jvm_workers  0,  there's additional cost to one transfer  event
 flag  by  pipe. But this cost can be ignored for your slow response and
 this cost will be lower than using nginx as a proxy to  pass requests to
 backend java server.

 In the future release of Nginx-Clojure,  synchronized non-blocking IO
 APIs  will be provided.  I think those synchronized non-blocking APIs will
 simpilfy to handle some IO blocked tasks.

 By that time jvm_workers maybe no need to be  0 .



 On Wed, Jan 15, 2014 at 3:18 PM, Xfeep Zhang easy...@163.com wrote:



 On Wednesday, January 15, 2014 12:39:57 PM UTC+8, Roberto De Ioris wrote:


 i strongly suggest you to avoid the performance as a selling point,
 your
 project is cool but not for performance (and you are using a pipe to
 transfer requests data from nginx to the jvm so there ipc in place too,
 even if you can improve things using OS-specific syscall like splice).


 Although I have make it clear in the nginx english mail list,  people
 joined clojure group may still misunderstand.

 So please forgive me repeating the message here.

 In the nginx english mail list , I have said :

  With the default setting pipe is not used.

 Pipe is only used for enable jvm thread pool mode only when jvm_workers
  0 (jvm_workers default = 0).

 Further more pipe is never used to transfer the whole request or
 response message.

 When under jvm thread pool mode, pipe is only used to transfer a event
 flag (only one pointer size)。



 --
 Roberto De Ioris
 http://unbit.it

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


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

Re: Nginx-Clojure Let You Deploy Clojure Web App on Nginx Without Any Java Web Server

2014-01-20 Thread Sergey Didenko
Hi Xfeep,

What are the good ways to handle some heavy Clojure calculations when using
nginx-clojure?

Under nginx model it's bad to block other incoming requests by holding a
working thread for too long, right?

So is it better to route complex job to http-kit? Or to use some kind of
queue? Or may be to use this nginx-clojure JVM pool that is off by default?


On Wed, Jan 15, 2014 at 3:18 PM, Xfeep Zhang easyj...@163.com wrote:



 On Wednesday, January 15, 2014 12:39:57 PM UTC+8, Roberto De Ioris wrote:


 i strongly suggest you to avoid the performance as a selling point,
 your
 project is cool but not for performance (and you are using a pipe to
 transfer requests data from nginx to the jvm so there ipc in place too,
 even if you can improve things using OS-specific syscall like splice).


 Although I have make it clear in the nginx english mail list,  people
 joined clojure group may still misunderstand.

 So please forgive me repeating the message here.

 In the nginx english mail list , I have said :

  With the default setting pipe is not used.

 Pipe is only used for enable jvm thread pool mode only when jvm_workers 
 0 (jvm_workers default = 0).

 Further more pipe is never used to transfer the whole request or response
 message.

 When under jvm thread pool mode, pipe is only used to transfer a event
 flag (only one pointer size)。



 --
 Roberto De Ioris
 http://unbit.it

  --
 --
 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: Nginx-Clojure Let You Deploy Clojure Web App on Nginx Without Any Java Web Server

2014-01-13 Thread Sergey Didenko
Looks very interesting, thank you for your work!

I wonder how this is going to improve latency in comparison to nginx +
http-kit for some real world test that is not using heavy DB operations.


On Mon, Jan 13, 2014 at 5:57 AM, Xfeep Zhang easyj...@163.com wrote:


 So far I have found why nginx-clojure is slower than http-kit when 1
 concurrents. (when  = 1000 concurrents nginx-clojure is faster than
 http-kit.)
 I have set too many connections per nginx worker (worker_connections =
 2) . This make nginx only use one worker to handle ab  requests (every
 request is tiny).
 I plan to take note of 
 c-erlang-java-performancehttp://timyang.net/programming/c-erlang-java-performance/and
  fork
 clojure-web-server-benchmarkshttps://github.com/ptaoussanis/clojure-web-server-benchmarksto
   do some  real world tests.



 On Sunday, January 12, 2014 11:21:06 PM UTC+8, Xfeep Zhang wrote:

 Sorry for my mistake!

 1. In the static file test, the ring-jetty result is about 10
 concurrents. NOT 1 concurrents  (Concurrency Level:  10 in  the
 ab report ).
 2. In the small string test, All results about three server are about 10
 concurrents. NOT 1 concurrents.

 There are right results about these two mistake :

 1. static file test

 (3) ring-jetty  more bad than 10 concurrents
 ===
 Document Path:  /
 Document Length:29686 bytes

 *Concurrency Level:  1*
 Time taken for tests:   6.303 seconds
 Complete requests:  10
 Failed requests:0
 Write errors:   0
 Total transferred:  298220 bytes
 HTML transferred:   296860 bytes
 Requests per second:15864.43 [#/sec] (mean)
 Time per request:   630.341 [ms] (mean)
 Time per request:   0.063 [ms] (mean, across all concurrent requests)
 Transfer rate:  462020.65 [Kbytes/sec] received

 Connection Times (ms)
   min  mean[+/-sd] median   max
 Connect:   12  328 535.0 433041
 Processing:25  124 112.9 963523
 Waiting:8   47  99.4 283523
 Total: 52  452 544.51574546

 Percentage of the requests served within a certain time (ms)
   50%157
   66%305
   75%   1071
   80%   1102
   90%   1139
   95%   1155
   98%   1462
   99%   3100
  100%   4546 (longest request)


 2. simple string (1 concurrents)

 http-kit is the fastest.  But nginx-clojure is too young and has vast
 room for growth :)

 (1) nginx-clojure-0.1.0

 Document Path:  /
 Document Length:15 bytes

 *Concurrency Level:  1*
 Time taken for tests:   2.834 seconds
 Complete requests:  10
 Failed requests:0
 Write errors:   0
 Total transferred:  1700 bytes
 HTML transferred:   150 bytes
 Requests per second:35291.16 [#/sec] (mean)
 Time per request:   283.357 [ms] (mean)
 Time per request:   0.028 [ms] (mean, across all concurrent requests)
 Transfer rate:  5858.88 [Kbytes/sec] received

 Connection Times (ms)
   min  mean[+/-sd] median   max
 Connect:   51  118  21.6118 178
 Processing:73  150  33.8146 263
 Waiting:   42  110  32.0104 246
 Total:177  268  25.6269 327

 Percentage of the requests served within a certain time (ms)
   50%269
   66%278
   75%285
   80%288
   90%297
   95%309
   98%314
   99%318
  100%327 (longest request)


 (2) http-kit 2.1.16

 Document Path:  /
 Document Length:15 bytes

 *Concurrency Level:  1*
 Time taken for tests:   2.691 seconds
 Complete requests:  10
 Failed requests:0
 Write errors:   0
 Total transferred:  1340 bytes
 HTML transferred:   150 bytes
 Requests per second:37165.27 [#/sec] (mean)
 Time per request:   269.068 [ms] (mean)
 Time per request:   0.027 [ms] (mean, across all concurrent requests)
 Transfer rate:  4863.42 [Kbytes/sec] received

 Connection Times (ms)
   min  mean[+/-sd] median   max
 Connect:   72  118  46.21141094
 Processing:31  134  26.1136 344
 Waiting:   21   81  33.5 71 273
 Total:183  252  43.82511435

 Percentage of the requests served within a certain time (ms)
   50%251
   66%258
   75%259
   80%261
   90%263
   95%263
   98%265
   99%266
  100%   1435 (longest request)



 (3) ring-jetty

 Document Path:  /
 Document Length:15 bytes

 *Concurrency Level:  1*
 Time taken for tests:   9.740 seconds
 Complete requests:  10
 Failed requests:0
 Write errors:   0
 Total transferred:  1670 bytes
 HTML transferred:   150 bytes
 Requests per second:10267.16 [#/sec] (mean)
 Time per request:   973.979 [ms] (mean)
 Time per request:   0.097 [ms] (mean, across all concurrent requests)

Clojure - Python Style suggestion

2013-02-04 Thread Sergey Didenko
Hi,

For us as Clojure community it is easy to see how Clojure benefits
from being a Lisp. Homoiconity, extreme conciseness, esoteric look and
feel, etc.

However it is hard to see from the inside how Clojure as ecosystem
(probably) suffer from being a Lisp. Please don't throw rotten eggs at
me, I mean only the part of Lisp that is ... parentheses.

I remember a number of people that mention parentheses as obstacles to
the wider Clojure adoption, in the Clojure space - in the Clojure
related discussions, even on this mailing list IIRC.

But the number of people thinking this way outside the Clojure groups
is even bigger! We probably don't notice it because got immune to this
famous argument it has too many parentheses early when diving into
Clojure.

I suggest there are a big number of people that could gain interest in
clojure if we provide them with parentheses-lite Clojure syntax. For
example we can steal Python way of intending blocks.

For example the following quicksort implementation

(defn qsort [[pivot  xs]]
  (when pivot
(let [smaller #( % pivot)]
  (lazy-cat (qsort (filter smaller xs))
[pivot]
(qsort (remove smaller xs))

could be written as

(set! python-style-op-op true)

defn qsort [[pivot  xs]]
  when pivot
let [smaller #( % pivot)]
  lazy-cat
qsort
  filter smaller xs
[pivot]
qsort
  remove smaller xs

What do you think?

Isn't is less complex?


P.S. Ok, I must confess, the mention of the C-Word in the last
sentence was just a desperate way to get Rich's attention.

P.P.S. Actually I would also love to see Clojure community making
video clip Clojure - Python Style as a remix for G... Style, but
this idea is probably way ahead of its time.


Regards, Sergey.

-- 
-- 
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: Clojure - Python Style suggestion

2013-02-04 Thread Sergey Didenko
The main point is to reach new market by providing parentheses-lite
Clojure syntax.

Of course real serious Clojurians will be using the current syntax :)

 Parens actually don't complect, they have a very very clear meaning. They
 organize functions and arguments. Let's take one line from your example:

-- 
-- 
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: Clojure - Python Style suggestion

2013-02-04 Thread Sergey Didenko
Unfortunately I don't know Python good enough to answer this. The
point though is just to mimic Python a very tiny bit. Basically to
convert some of ( and ) to indentations.

 Sois that the python equivalent to which of these?
 filter(smaller(xs))
 filter(smaller, xs)
 filter(smaller(), xs())
 filter(smaller(xs()))

-- 
-- 
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: Clojure - Python Style suggestion

2013-02-04 Thread Sergey Didenko
My point is to introduce a second-class syntax to attract orthodox
users. Definitely not migrating.

The rules of transformation can be so simple that any useful library
written by Clojure Python style adopters could be translated to the
canonical style automatically with a few line program.

 I can't see the community migrating to such a syntax, even if somebody

-- 
-- 
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: Efficiency of Dijkstra's algorithm

2012-11-20 Thread Sergey Didenko
I have used mutable code working on Java structures when I was
implementing the kind of Dijkstra algorithm. As long as it is
encapsulated in a function it seems quite a good approach to me.

And also quite readable given the amount of mutable Dijkstra examples
in the Internet.

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


Re: Slightly updated Clojure cheatsheet available

2012-10-09 Thread Sergey Didenko
Thank you, Andy!

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


Re: Clojure web framework

2012-09-29 Thread Sergey Didenko
So we are back to the documentation reach issue again.

I think the best solution would be one (!) central community wiki and
prominent mentions of it from the clojure.org .

The wiki could contain the links to the latest tutorials and so on. It
should have quite low barrier to 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


Re: Little becnhmark (need insight)

2012-07-23 Thread Sergey Didenko
Hi,

lazy seqs are slow for number crunching, you can try to remove them.

Then you can check that you make (set! *warn-on-reflection* true). And
that your code does not have the warnings.

Then may be use native (Java) data structures or even arrays.

Then you can change defn for definline for sensitive code.

Also see the thread can Clojure 1.3 code always be made as fast as
Java for numeric computations?

Sergey

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


Re: How to go about finding a Clojure job

2012-06-23 Thread Sergey Didenko
Another possibility is to work at research position where you can
select technologies by yourself :)

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


Re: Lambda: A lniux distro for clojurists

2012-05-26 Thread Sergey Didenko
What about packaging Emacs with a few different configs? For example
Ergoemacs + dark background settings.

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


Re: Faster application startup for rapid development

2012-05-15 Thread Sergey Didenko
 Also discovered I can prefix `java -cp ...` with `rlwrap` to get back a nice
 REPL experience.

If you want to use rlwrap, check out its options like --remember,
-c, -b and -f. Here is the script I use to run repl from the
root of the lein project:


breakchars=(){}[],^%$#@\\;:''|\\
CLOJURE_DIR=~/javalibs/clojure
LIBS=`printf %s: lib/*.jar | sed s/:$//`:.

if [ $# -eq 0 ]; then
 exec rlwrap --remember -c -b $breakchars \
-f $CLOJURE_DIR/.clj_completions \
 java -cp $LIBS:src clojure.main
else
 exec java -cp $LIBS:src:classes clojure.main $1 -- $@
fi

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


Re: Newbie question about rebinding local variables

2012-04-21 Thread Sergey Didenko
There is also a non-idiomatic way - transform your code to use a
native Java data structure like ArrayList or primitive array.

You may want it for the speed or if the mutable algorithm is more
readable. Anyway isolation of the mutable code is always a good
advice.

(defn new-game []

  (let [board (java.util.ArrayList. (repeat 9 nil))]

(fn [n i]

  (cond

(= n :x)(.set board i 'x)

(= n :o)(.set board i 'o)

(= n :print) (println board)

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


can Clojure 1.3 code always be made as fast as Java for numeric computations?

2012-03-26 Thread Sergey Didenko
Hi,

I believe I've heard claims that nothing stops Clojure 1.3 code to be
made very close to Java in terms of execution speed.

However when trying to match the speed of ad-hoc Heapsort
implementation I have faced essential obstacles.

Setting type hints and coercions was quite easy. A bit harder was to
realize that aset is much faster than aset-int and that (int -1)
inside if condition can be faster than -1.

However I'm still far from the Java speed ( 1.5 times slower on a cut
code - first part of the Heapsort ).

What I can't understand now is why inlining the following function
makes a noticeable speedup (~20%). Isn't it supposed to be solved in
1.3?

(defn move-up! [^long pos]
  (let [array (ints array)]
(loop [pos pos ppos (unchecked-divide-int pos 2)]
  (if (or (= pos 0)
  (= (aget array ppos) (aget array pos)))
nil
(do ;(swap! array ppos pos)
  (recur ppos (unchecked-divide-int ppos 2)))

I'm attaching the full sources if anyone is interested to measure the
difference.

Regards, Sergey.

P.S.

java version 1.7.0_02
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)

-- 
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=enpublic class _myc {

static class HeapSort {
final static int Mu = 1235523;
final static int Mo = 2012345678;

//~ final static int ASIZE = 10;
final static int ASIZE = 10;
//~ final static int ASIZE = 12;
private static int[] a = new int[ASIZE];

public static void initArray(int first) {
first++;
for (int i = 0; i  ASIZE; ++i) {
a[i] = first;
first = (first * Mu) % Mo;
}
}

public static void printArray() {
for (int i = 0; i  ASIZE; ++i)
System.out.println(a[i]);
}

public static void heapSort() {
for (int i = 1; i  ASIZE; ++i) {
move_up(i);
}
// TEMP: commented out
//~ for (int i = ASIZE - 1; i =1; --i) {
//~ swap_a(0, i);
//~ move_down(i);
//~ }
}

static void swap_a(int pos1, int pos2) {
int tmp = a[pos1];
a[pos1] = a[pos2];
a[pos2] = tmp;
}
//	 keep larger numbers first
static void move_up(int pos) {
int ppos = pos / 2;
while (pos  0  a[ppos]  a[pos]) {
// TEMP: commented out
//~ swap_a(ppos, pos);
pos = ppos;
ppos = pos / 2;
}
}

//	 keep larger numbers first
static void move_down(int cur_size) {
int ppos = 0;
int pos;
do {
pos = ppos * 2;
if (pos = cur_size) {
pos = -1;
} else if (pos + 1  cur_size) {
if (a[pos+1]  a[pos]) {
pos = pos + 1;
}
}
if (pos  -1  a[ppos]  a[pos]) {
swap_a(ppos, pos);
ppos = pos;
} else {
break;
}
} while (true);
}

}

//~ static private final Runtime RUNTIME = Runtime.getRuntime();
//~ static long mb = 1024l;

	public static void main(String[] args) {

long start = System.currentTimeMillis();

		for (int i = 0; i  200; ++i) {
		//~ for (int i = 0; i  1; ++i) {
			HeapSort.initArray(i);
			HeapSort.heapSort();

//~ System.out.println(Free:  + RUNTIME.freeMemory() / mb +
//~ , total:  + RUNTIME.totalMemory() / mb +
//~  , max:  + RUNTIME.maxMemory() / mb );
		}
//~ HeapSort.printArray();

long end = System.currentTimeMillis();
System.out.println(Execution time: +(end-start)+ ms.);
	}
}


heapsort.clj
Description: Binary data


Re: Which emacs packages?

2012-03-12 Thread Sergey Didenko
* RainbowDelimiters
* desktop-save-mode
* ergoemacs-mode (modified)
* bm for bookmarks
* color-theme with modified color-theme-tomorrow
* anything

Not a plugin, but I found this setting useful: (setq
recenter-positions '(0.2 0.4 0.6 0.8 bottom top))

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


Re: Lack in the documentation

2012-02-20 Thread Sergey Didenko
It looks like our community already has a lot of articles, tutorials,
gists, but they are just not very reachable to beginners.

May be what we really need is a meta site or article on clojure.org or
promotion of other meta site like
http://stackoverflow.com/questions/tagged/clojure, with a lot of
community rated links to existing resources?

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


Re: Problem with the Chas Emerick: Modeling the world ... video

2012-02-16 Thread Sergey Didenko
The same here.

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


LurePet - Digital Art Project Written in Clojure - Beauty Contest For Virtual Life (shamelessly advertising)

2011-12-23 Thread Sergey Didenko
Hi, finally I can show you some quite complex project that I made in Clojure.

The Idea:

Every lurepet (big picture) that you see on the site has some genes
and is drawn according to them.

After the best lurepets are selected they can be bred to make children
looking like their parents. This is going to be repeated to create
more and more beautiful lurepets.

And of course the reason to vote is to save the future humanity that
is attacked by evil robots which has the only flaw - insane obsession
with lurepets :)

Implementation:

The drawing logic which is 99% of all the logic, is written in
Clojure. I'm very glad that I chose it, because I can not imagine
beeing so productive in developing and maintaining (!) complex domain
logic in a more verbose language like Java.

The web part currently is a set of static files: html, js and images.
Cloudflare is used to CDN the static except the index.html. I hope
that will help if there is a massive spike in traffic. The votes are
processed from nginx logs in offline mode.

If you like the project - please upvote this thread on Hacker News -
http://news.ycombinator.com/item?id=3387597

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


Re: LurePet - Digital Art Project Written in Clojure - Beauty Contest For Virtual Life (shamelessly advertising)

2011-12-23 Thread Sergey Didenko
Yes, its http://lurepet.com

 Do you have a link to the running project?

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


Re: Overused phrases in the Clojure community

2011-11-17 Thread Sergey Didenko
I coded mutable Dejkstra algorithm isolated in a single function,
because it's easier for me to maintain it - I used to write a lot of
mutable algorithms. But I consider this code not idiomatic though
useful in my case.

So I think idiomatic Clojure code is not as ubiquitous as you probably
mean and the word idiomatic is quite useful for discussions.

 In fact I challenge anyone to give an example of the least
 idiomatic code written in Clojure (using Java interop is cheating).

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


primitive type hints do not work when destructuring

2011-11-02 Thread Sergey Didenko
Seems like a bug:

The following compiles:

(let [[^Double x ^Double y] [0.1 0.2]] (+ x y))

This does not:

(let [[^double x ^double y] [0.1 0.2]] (+ x y))

Unable to resolve classname: double

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


Re: primitive type hints do not work when destructuring

2011-11-02 Thread Sergey Didenko
tested under Clojure 1.3

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


java.lang.ClassFormatError: Invalid method Code length

2011-10-25 Thread Sergey Didenko
I get the subject error when trying to deserialize a big map (70kb)
using load-file.

Is this by design?

There was an advice in the old thread to use smaller methods. But
while small methods are good, breaking continuous data into smaller
pieces looks like a hack.

Should I use some other function for deserializing data?

Currently I use pr-str to serialize and try load-file, load-string,
eval read-string to deserialize.

Regards, Sergey.

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


Re: java.lang.ClassFormatError: Invalid method Code length

2011-10-25 Thread Sergey Didenko
Indeed. Thanks for the answer!

 If it's really just data (not containing function or macro calls you
 are expecting to be evaluated), just use (read ...). That will parse
 the file, returning a Clojure data structure without evaluating it.

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


Re: The Website / Wikispaces

2011-10-07 Thread Sergey Didenko
Me too.

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


Re: docs for 1.3

2011-10-04 Thread Sergey Didenko
Thanks, I see now.

Just want to stress that it is important to have a single point of
diving into the documentation. And it's best of all to be on the
http://clojure.org , not just http://dev.clojure.org.

IMHO with the call to community to move to 1.3 the current outdated
clojure.org can fight back when people that are not watching every
Clojure move try to do it.

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


Re: docs for 1.3

2011-10-03 Thread Sergey Didenko
My last mail remain unnoticed, so I'll clarify the question:

Clearly (the main) clojure.org is not the main documentation source
for 1.3. To prove it - try to find the mention of Factory function
taking a map, e.g. map-MyRecord there.

So what is the best search strategy right now to find the correct
up-to-date documentation for 1.3?

I suppose it's https://github.com/clojure/clojure/blob/master/changes.txt
with all the linked documents and only then clojure.org . Is it right?
Do I miss anything?

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


misuse of or bug in transients?

2011-09-16 Thread Sergey Didenko
When I convert the following code to use transients it returns
different result. Am I doing anything wrong or is it a bug in
transients?

(defn tt []
  (loop [i 0 tset #{}]
(if (= i (int 5e5))
  (count tset)
  (recur (inc i)
 (let [nn (rem (* i (int 1e3)) 131071)
   plus (count (filter #(contains? tset %) (range nn
(+ nn 10
   ]
   (conj tset (+ plus nn)))
(tt)

131074

(defn tt []
  (loop [i 0 tset (transient #{})]
(if (= i (int 5e5))
  (count (persistent! tset))
  (recur (inc i)
 (let [nn (rem (* i (int 1e3)) 131071)
   plus (count (filter #(contains? tset %) (range nn
(+ nn 10
   ]
   (conj! tset (+ plus nn)))
(tt)

131071

P.S. Tested under 1.3-RC0 and 1.2.1

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


Re: misuse of or bug in transients?

2011-09-16 Thread Sergey Didenko
Then it is contrary to the docs:

http://clojure.org/transients

Transients support the read-only interface of the source, i.e. you
can call nth, get, count and fn-call a transient vector, just like a
persistent vector.

 Examining the Java sources it looks like the transient collections do not
 support contains? by design.

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


Re: misuse of or bug in transients?

2011-09-16 Thread Sergey Didenko
Yes, now it works. Thanks.

 Try rewriting (contains? tset %) as (tset %).

 Let me know if that change fixes your program.

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


autoboxing in 1.3 RC-0

2011-09-15 Thread Sergey Didenko
Hi,

Is it a bug or I'm doing something wrong? I can't get rid of
auto-boxing in the second example, neither by type hinting nor by type
coercing of changed* locals.

(set! *warn-on-reflection* true)

This compiles fine:

(loop [x 1 changed 0]
  (if (= x 10)
changed
(recur (inc x)
   changed)))

And this gives the warning recur arg for primitive local: changed is
not matching primitive, had: Object, needed: long
Auto-boxing loop arg: change

(loop [x 1 changed 0]
  (if (= x 10)
changed
(recur (inc x)
   (loop [y 1 changed-y changed]
 changed-y

P.S. I omitted recur for the inner loop for clarity.

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


Re: debugging

2011-09-14 Thread Sergey Didenko
Also bear in mind that due to the functional nature of Clojure you can
debug a lot of problems using tracing, like clojure.contrib.trace (for
 1.3), C-c C-t in Emacs, or this handy macro:

(defmacro dbg[x] `(let [x# ~x] (println dbg: '~x = x#) x#))

(func1 (func2 arg1) arg2) - (dbg (func1 (dbg (func2 arg1)) arg2))

Stolen from here:
http://stackoverflow.com/questions/2352020/debugging-in-clojure

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


Re: trace-forms macro

2011-09-14 Thread Sergey Didenko
Looks interesting. Did you use it with Clojure 1.3 or earlier?

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


two form assert does not exist in 1.3.0-master-SNAPHOT

2011-09-14 Thread Sergey Didenko
Despite of what written here: http://dev.clojure.org/display/doc/1.3
there is no two form assert in 1.3.0-master-SNAPHOT

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


Re: two form assert does not exist in 1.3.0-master-SNAPHOT

2011-09-14 Thread Sergey Didenko
 I see, my lein - maven thinks that the latest
clojure-1.3.0-master-SNAPSHOT.jar was built in January.

 current master seems to disagree with you:
 https://github.com/clojure/clojure/blob/master/src/clj/clojure/core.clj#L4222

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


Re: two form assert does not exist in 1.3.0-master-SNAPHOT

2011-09-14 Thread Sergey Didenko
I see, there is no clojure-1.3.0-master-SNAPSHOT.jar in maven and I
should use 1.3.0-RC0

  I see, my lein - maven thinks that the latest
 clojure-1.3.0-master-SNAPSHOT.jar was built in January.

 current master seems to disagree with you:
 https://github.com/clojure/clojure/blob/master/src/clj/clojure/core.clj#L4222


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


Re: two form assert does not exist in 1.3.0-master-SNAPHOT

2011-09-14 Thread Sergey Didenko
Apparently not: 1.3.0-master-SNAPSHOT/ 20-Dec-2010

 there used to be http://build.clojure.org/snapshots, but I don't know
 whether it's still cared for.

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


case on primitives warning in 1.3-RC0

2011-09-14 Thread Sergey Didenko
Is this the intended behavior? Note the present/missing default clause

user (set! *warn-on-reflection* true)
user (case (rand-int 3) 0 :zero 1 :one 2 :two)
Performance warning, NO_SOURCE_FILE:1 - case has int tests, but tested
expression is not primitive.
:two
user (case (rand-int 3) 0 :zero 1 :one 2 :two :default 3)
:two

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


Re: case on primitives warning in 1.3-RC0

2011-09-14 Thread Sergey Didenko
Indeed. Then clojure.core/rand-int should be improved I guess.

 The default case in `case' (what a sentence) is not paired like in
 `cond'.  You want something like:

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


^long vs (long arg)

2011-09-14 Thread Sergey Didenko
What is the intended difference between type hinting like ^long and
type coercing like (long arg)?

For example my gut feeling for this case is to use ^long but it is forbidden:

(loop [^long x 0]
...)

Can't type hint a local with a primitive initializer

So I use

(loop [x (long 0)]
...)

But not quite sure if it's right.

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


Re: ^long vs (long arg)

2011-09-14 Thread Sergey Didenko
I mean in Clojure 1.3 .

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


good ways to deal with compiler errors in SLIME (emacs)

2011-09-13 Thread Sergey Didenko
Hi,

How can I see the error line number in SLIME? Or even somehow place editor
point on the place of the error?

For example when I load file in a lein repl, it prints:

java.lang.Exception: Unable to resolve symbol: dd in this context
(mytest.clj:447)

However when I load this file in the SLIME repl it just prints:

Unable to resolve symbol: dd in this context
...
0 [QUIT] Quit to the SLIME top level

and a long backtrace without error line information.

P.S. Sorry, if this is offtopic.

Regards, Sergey.

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

Re: good ways to deal with compiler errors in SLIME (emacs)

2011-09-13 Thread Sergey Didenko
Thanks, Phil !

That's it. I was using slime-load-file instead of
slime-compile-and-load-file

If you compile using C-c C-k (where it sends the filename instead of
 the contents of the file) then it can determine line numbering.



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

Re: Migration to 1.3 for mortals

2011-09-08 Thread Sergey Didenko
Just my 2 cents: If you are ok with a quick dirty hack you can fix contrib
libraries locally.

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

Re: coming from statically typed oo languages - how do deal with complex objects graphs in clojure?

2011-09-04 Thread Sergey Didenko
Dennis, may I suggest you to read this great article on Clojure:
http://java.ociweb.com/mark/clojure/article.html

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

Re: clojure-based non-blocking webserver like Node.js

2011-09-03 Thread Sergey Didenko
On Sat, Sep 3, 2011 at 3:01 AM, Tal Liron tal.li...@gmail.com wrote:


 I always ask, though, why people think they need async I/O for a web
 server. Async might be important if you are streaming video, audio, etc.
 (And if you are, you're probably better off with a robust CDN.)


Async can also be good for chat-like services. Though it is probably
overkill for the most other cases.

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

Re: coming from statically typed oo languages - how do deal with complex objects graphs in clojure?

2011-09-03 Thread Sergey Didenko
You can also put a commented out example call of the function, like this:

(defn some-magic [spells wizards]
...)
; (some-magic 5 [:gendalf :einstein])

Which is also handy for quick evaluation in the REPL.

Or you can put these example calls in the (automatic) test code.

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

Re: Stanford AI Class

2011-08-12 Thread Sergey Didenko
BTW, Is there a case when AI self-modifying program is much more elegant
than AI just-data-modifying program?

I just can't figure out any example when there is a lot of sense to go the
self-modifying route.

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

Re: clojurescript additional js dependencies

2011-08-02 Thread Sergey Didenko
Yes, after compiling this example and its raw Google Closure equivalent:

(ns bgcolor
  (:require [goog.fx.dom :as fx-dom]))

(defn ^:export animate [elem start end]
  (let [
anim (fx-dom/BgColorTransform. elem start end 2000)]
(.play anim (


After compilation through the Google compiler ?



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

Re: New to Clojure -- Errors Are Frustrating

2011-08-02 Thread Sergey Didenko
It got improved a lot in Clojure 1.3 which is beta for a while.

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

clojurescript additional js dependencies

2011-08-01 Thread Sergey Didenko
Are there plans to decrease the amount of js dependencies that ClojureScript
makes compared to the raw Google Closure?

Currently the difference in final js code size is about 28kb (5kb zipped) in
advanced mode for a simple example.

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

Re: better community docs: getting started

2011-07-25 Thread Sergey Didenko
IMO, it's a very good idea to give much more accent on the easiest options
for newcomers.

Other than not recommending Emacs, do people think that the overall
 organization I suggested is a good idea?  I should reiterate that
 other information needs to be accessible; for now I'd just like to see
 us not presenting people with twelve options as their first view of
 Getting Started, all in link form (after at least two clickthroughs
 from clojure.org, typically).  Of course people are capable of
 digesting the information in the current form, but it takes more time
 and mindshareand why should it?


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

Re: better community docs: getting started

2011-07-23 Thread Sergey Didenko
I checked the great manual 113 Design Guidelines for Homepage Usability
from Jakob Nielsen and here are my thoughts about the main page (clojure.org
):

1) It's misleading that some links in the left pane are underlined (API,
Recent changes, Libraries, Community) while others are not.

2) It's better to have dates for the news. May be in small font no avoid
clutter. It is not obvious that ClojureScript happened recently. (Spelling
out the month, or using month abbreviations, not numbers.)

3) The most voted Clojure question on stackoverflow is
http://stackoverflow.com/questions/1314732/scala-vs-groovy-vs-clojure, so it
would be good to have short comparison(s) at least with Scala, preferably in
the form of the bulleted list. May be inline or on a separate page.

4) Other highly voted Clojure questions are related to tutorials, books,
advantages of Lisp, web programming and real world usage so it would
be good to have these topics linked from the main pane.

5) The main pane of the main page is good and a quite concise introductional
text but it lacks scannabillity. It would be good to rewrite it to use more
bulleted lists.

6) There should be mentioning that Clojure has commercial support

7) It's not obvious that Rationale and  On State and Identity is
clickable because they look like unclickable category headers without items.
What can be done? May be make the left pane links blue? Or at least put the
most important links in the separate category?

8) It's quite bad that visited links have the same color as unvisited.

9) Contrib Libraries link is not clear. It's better to be renamed. I have
just realized that it comes from the word contribute . That is after 1.5
years of Clojure experience. ( :) don't call me stupid, it's usability)

10) Dev link is not clear. When should I use it? What is good for?

11) After 1.5 years of using clojure.org I have just realized there is a
search bar in the right upper corner. Probably it would be better to make it
stand out of the navigation - the closest link pane. Also it's better to
make it wider.

12) It's quite bad that the right upper link pane looks like a banner. What
about making it as a horizontal menu and visually distinct the search
leaving it in the right upper area?

Group items in the navigation area so that similar items are next to each
 other.


13) Google Group, IRC, Wiki are better to be adjacent because they are
about Community.

Just quoting http://www.useit.com/homepageusability/guidelines.html :

14) Include a tag line that explicitly summarizes what the site or company
does.

15) Don't include homepage in the title. This adds verbiage without
value.

16) Communicating Information About Your Company - there should be at
least the link to clojure.com, may be named Who We Are/ Commercial Support

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

Re: Clojure Books

2011-07-19 Thread Sergey Didenko
Also check this great online introduction (targeting 1.0):
http://java.ociweb.com/mark/clojure/article.html

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

Re: FleetDB or other NoSQL store for Clojure?

2011-07-17 Thread Sergey Didenko
Ad hoc transactions are possible in MongoDB,  they are just not provided
out-of-the-box and (I guess) impose performance penalty.
http://www.mongodb.org/display/DOCS/two-phase+commit

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

Re: FleetDB or other NoSQL store for Clojure?

2011-07-17 Thread Sergey Didenko
Tim, I think you mean CouchDB, which indeed is master-master. MongoDB is
extended master-slave.

On Sun, Jul 17, 2011 at 6:45 PM, Tim Robinson tim.blacks...@gmail.comwrote:

 MongoDB is similar, in that it supports conflict resolution, only I
 believe you only have the option for the last write wins. MongoDB is
 better suited to an embedded db model, that doesn't have to support
 large datasets... so if you're OK with the last write wins model - go
 for mongo.


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

Re: can't set up Clojure 1.2.1

2011-07-16 Thread Sergey Didenko
I've updated the wiki [1], can't update the main site page[2].

http://en.wikibooks.org/wiki/Clojure_Programming/Getting_Started#Running_Clojure
http://clojure.org/getting_started

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

Re: can't set up Clojure 1.2.1

2011-07-16 Thread Sergey Didenko
It was already mentioned recently that clojure.org looks outdated.

May be we just need the main site to link to a few valuable proven community
resources?

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

Re: FleetDB or other NoSQL store for Clojure?

2011-07-15 Thread Sergey Didenko
1) IMHO full SQL-like transaction support and NoSQL are quite contradicting
things. You can have some atomic operations with NoSQL but not that heavy
transactions as in traditional SQL world. (Correct me if I wrong). So one of
the option is to use SQL and serialize/ deserialize documents in your
application. Together with embedded db that gives you SQLite or similar.

2) If you are ok with atomic operations there are a lot of options. Here is
a discussion about embedded ones -
http://stackoverflow.com/questions/2403174/is-there-any-nosql-database-as-simple-as-sqlite

3) (Shamelessly advertising). If you just want it for prototyping you can
try my very small library -
https://github.com/SergeyDidenko/Simple-Persistence-for-Clojure . It
supports Clojure dosync transactions and saves them in a readable and
runnable way in text files. It trades reliability for speed so can lose a
few last updates on a power loss though. The migration to other DB is
extremely easy because of journalling nature.

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

Re: Anyone on Google+ yet?

2011-07-15 Thread Sergey Didenko
Jeremy, I can send you an invitation. Do you need it?

On Fri, Jul 15, 2011 at 4:53 PM, Jeremy Heiler jeremyhei...@gmail.comwrote:

 Is Google+ invite based? How did all of you get a profile?



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

Re: can't set up Clojure 1.2.1

2011-07-15 Thread Sergey Didenko
Larry, it seems that the current folder . is not in your default
classpath. Either try ...-cp ./clojure.jar ... or add . into your
default CLASSPATH.

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

Re: Anyone on Google+ yet?

2011-07-15 Thread Sergey Didenko
Well, if you are going to spam, I guess Claudia will be penalized :)

Claudia beat you to it ;-) But thank you!



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

Re: Anyone on Google+ yet?

2011-07-14 Thread Sergey Didenko
IMHO, it's worth to add Clojure to your Sparks.

Mine:
https://profiles.google.com/109116565377929735698

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

Re: Anyone on Google+ yet?

2011-07-14 Thread Sergey Didenko
I wrote on Google+, but I feel it can left unnoticed with the current
message pace.

Let's not post our common messages to the Clojure Circle to make it more
useful.

P.S. Posting to Public also posts to Clojure.

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

Re: Results from 2011 State of Clojure survey

2011-07-12 Thread Sergey Didenko
 Public relations -- Project status and activity. This area seems to
 suggest the main Clojure page should be covered in tickers and feeds
 of various kinds


I think the main site needs just a pane with a big noticeable header News,
that shows one-two latest important stories and updates one time per 5-15
days. Also has a link, a few links on where to read much more news (feeds
for blogs, aggregators, twitters, etc). It's purpose not to create
clutter, but to give an impression that Clojure is not outdated for a
random visitor.

Just a script that updates the date can backfire very badly if other site
areas look outdated in the eyes of a random visitor.

That is coming from the common pattern observed in usability studies - a
random visitor in scanning mode needs to decide quickly whether to trust
the site. Thus a lot of clutter is bad, no news is bad, the latest date in
the footer without noticeable news is bad.


An argument could be made that Clojure is aimed more at those who do
 that sort of analytical comprehension than those looking for the
 latest jazzy fad, but an argument could also be made that attracting a
 broader base is good and jazzy fad is a straw-man argument. :)


When people are looking for a new shiny thing among 100 of other just new
things, they can turn into scanning mode despite the fact that in other
conditions they  do
that sort of analytical comprehension 

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

Re: Results from 2011 State of Clojure survey

2011-07-12 Thread Sergey Didenko
You know that from inside. A Clojure outsider can have a completely other
point of view.

He can choose between Python, server side Javascript, new C#, Go, Scala, F#,
Haskell, Erlang, haXe, Clojure.

Besides the languages itself, the outsider wants to evaluate libraries,
community, platforms, support, etc.

That could be much more challenging than comparing a few bare languages.

On Tue, Jul 12, 2011 at 11:25 AM, Ken Wesson kwess...@gmail.com wrote:

  When people are looking for a new shiny thing among 100 of other just new
  things, they can turn into scanning mode despite the fact that in other
  conditions they  do
  that sort of analytical comprehension 

 What other new shiny languages are there with any traction? Scala, and
 maybe F#?

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

Clojure Wiki for general public

2011-07-11 Thread Sergey Didenko
It seems we don't have a *centralized* wiki not just for the Clojure Core
developers, but for everybody in our community.

Application developers have to look for *broad* info all over different
resources. I have just tried Clojure 1.3 and realized I have to google a lot
to find answers.


   - ClojureDocs.org is for 1.2. clojure.org.
   - http://dev.clojure.org/display/doc/1.3 seems to be in a transitional
   state.
   - Library catalogs are on a few other sites and have no wiki
   functionality.
   - Advises on moving away from clojure.contrib are spread in the mail
   list.
   - Stackoverflow's clojure tag is of question-answers nature and seems
   not to attract a lot of us.
   - GitHub has a lot of libraries but sometimes it's hard to compare them.
   - A lot of useful blog posts are reachable mainly from Google.


May be we need a Clojure Wiki for regular users? Promoted from official
resources to be the main attraction point.

Do I miss anything?

Regards, Sergey.

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

Re: Leiningen 1.6.1 released

2011-07-06 Thread Sergey Didenko
Hi Phil,

Is it an intention or a bug that dev-dependencies are being copied into
lib/dev when :local-repo-classpath is true?

Regards, Sergey.

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

Re: Leiningen 1.6.1 released

2011-07-06 Thread Sergey Didenko
IMHO new people only will benefit from installing lein. It's very simple in
basic usage.

It can be used both from command line and with IDE.

Though I prefer my own scripts for starting REPL with readline instead of
lein repl.

It can be used with Enclojure by running lein pom every time you update
the dependencies.

Hi, should people new to Clojure install tool?  Is this something that
 mostly used within the command line or IDE?


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

Re: Tutorial about web development with Clojure

2011-06-29 Thread Sergey Didenko
Nice to see so documented example!

A few remarks:

1) IMHO sandbar's approach to authorization is better that this ad-hoc one:
it places auth data just in the routes instead of controllers, see
https://github.com/brentonashworth/sandbar/wiki/Authentication-and-Authorization

2) It would be nice to see form validations. I personally choose pretzel and
clj-decline (https://github.com/joodie/pretzel
https://github.com/joodie/clj-decline).

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

Re: How to setup IntelliJ with Leiningen?

2011-06-07 Thread Sergey Didenko
Hi Vicent,

I think it's:

*project.clj editing*

lein deps
lein pom

On Tue, Jun 7, 2011 at 12:18 PM, Vicente Bosch vbosch.cloj...@gmail.comwrote:

 After we insert a new dependency in project.clj,  we have to run lein pom
 again so that everything gets refreshed. I am totally fine with this. Is my
 assumption correct or is there a better way ?


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

Re: New version of the Enclojure plugin for Netbeans 7.0 is up.

2011-05-02 Thread Sergey Didenko
Thanks, Eric!

On Fri, Apr 29, 2011 at 8:56 PM, Eric Thorsen ethor...@enclojure.orgwrote:

 This version is a port of 1.4 to run on Netbeans 7.0.

 You can get this using the update site.
 For more information, please go to:
 www.enclojure.org



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

Re: ANN: Clojure Libraries

2011-03-04 Thread Sergey Didenko
Another correction: there are too fleet mentions:
http://clojure-libraries.appspot.com/show/27049
http://clojure-libraries.appspot.com/show/32017

On Wed, Mar 2, 2011 at 1:00 AM, Glen Stampoultzis gst...@gmail.com wrote:

 Changed.  Thanks.



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

Re: ANN: Clojure Libraries

2011-03-01 Thread Sergey Didenko
Thanks, Glen.

A correction: calx does not belong to the GUI category.

May be Utility is better?

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

Re: Enclojure requires editor when installing plugin

2011-01-19 Thread Sergey Didenko
I use it with Netbeans 6.9.1 . Usually it takes some time for Enclojure to
be adapted to the latest Netbeans.

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

Re: which IDEs are you all using?

2011-01-19 Thread Sergey Didenko
lein: I just use lein new MyProject then lein pom and open the pom in
Netbeans. Thus I have both lein and Enclojure. The drawback is that you have
to run lein pom every time you change the project dependencies (in the
lein project.clj).

Loosing settings: I observed that too in rare circumstances in the old
versions, but it was enough for me to just check if the settings are changed
after I closed the options window.

On Wed, Jan 12, 2011 at 5:40 AM, Mark Engelberg mark.engelb...@gmail.comwrote:

 Netbeans/Enclojure:  Lots of nice stuff here.  The REPL works very
 well, and is easy to restart.  I found Netbeans' source control
 integration to be easy to use.  You can build a standalone app which
 places the dependencies in a folder, but I don't know of a way to
 build an uberjar using Netbeans/Enclojure.   If you know what jars you
 want, it's easy enough to add them to the project and get a custom
 REPL that sees those jars.  Unfortunately, many Clojure libraries
 assume you are using lein to automatically download chains of
 dependencies; it can be hard to find all the relevant jars and add
 them manually to the project.   For me, the #1 showstopper is that
 Enclojure becomes unreliable after about an hour of use, and any
 customized settings are repeatedly lost.


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

  1   2   >