Re: #{:rant} Questions about contribution policy and clojure compiler source.

2015-07-19 Thread Luc Préfontaine
Prioritizing the 'good' form over the substance is the first step toward 
political correctness and lobotomy. Civility is more about form than substance 
and has
various meaning depending on the people involved. You can say horrendous things
using a civil tone. It's as unbearable as a crude statement with a lot of bad 
words.

As far as aspiring to be not as rude as Linus, yeah, he's kind of extreme.
But becoming a care bear is not on my list of todos. Dying by civilicide either.

As far as I know, I did not used obscene words or used bird names toward people.
If my kind of humor is not your taste it's a legit critic and I can take it.

If you have specific complaints about my tone we can pursue this off list if 
needed.
That's channel is opened for anyone that may need to let steam out.

If there's enough interest, I can even start a blog and publish emailed 
comments/complaints as is and anonymously if asked for.

Some are stamp collectors, I could start an original collection of my own.


Sent from my iPad

 On Jul 19, 2015, at 09:36, Colin Fleming colin.mailingl...@gmail.com wrote:
 
 On 18 July 2015 at 19:54, Luc Préfontaine lprefonta...@softaddicts.ca 
 wrote:
 My tone does not please you ? It could be worse and I reserve my right to
 free speech. Have a look at some Linus rants. I am far from that level.
 
 I think everyone in this community should aspire to more than I'm not as 
 rude as Linus.
  
 There's nothing that makes me shiver more than political correctness.
 
 Political correctness has nothing to do with remaining civil in a discussion.
 
 
 On Jul 18, 2015, at 13:32, Andrey Antukh n...@niwi.nz wrote:
 
 
 
 On Sat, Jul 18, 2015 at 8:18 PM, Luc Prefontaine 
 lprefonta...@softaddicts.ca wrote:
 Aaah ! The pull request looms again :)
 
 A bug tracking system is essentialy to coordinate efforts, pull request 
 are not a mechanism to track fixes/improvements and discuss about
 them. That may work for a very small team. The # of clojure contributors 
 far excess that size.
 
 
  
 
 Pull requests/gitbhub issues are used by Clojure library maintainers 
 outside of the core,
  their respective contributor team size makes this usable.
 
 Choosing one tracking system is a feat by itself, Jira does everything 
 albeit it may be a beast to configure.
 I think that the choice of Jira predates moving the Clojure code from 
 google to github but I may be wrong.
 The github tracking system was not at par with Jira features at that time 
 anyway.
 
 Once that choice is done, moving out to something else requires a 
 significant effort, you need to pull all this history you built about
 your software into your new bug tracking solution. You can't loose this, 
 it's your software collective memory.
 
 All this discussion around pull request IMO is more an expression of human 
 lazyness. Having to document is always seen as a
 chore by most developpers. ‎This is not an arcane human trait, it has been 
 known for decades.
 
 Anything else requires a discussion forum if you want to maintain a 
 minimal level of quality and allow some discussions around the issue being 
 fixed
 in a large team effort/critical piece of software. A mailing list is not 
 at par with a bug tracking system in this regard.
 
 Curiously, linux has a bug tracking system and people submit patches or 
 links are made to patches.
 Take a walk on launchpad.
 
 No serious software business would drive their dev without a tracking 
 system. Open source projects are no
 different if they want to attain some level of success. If critical open 
 source is to be used by businesses, it has to
 play with similar tools. Clojure too me is critical to my business and to 
 many others. It cannot fail on us.
 It would be like building pyramids on moving sand.
 
 Again there's no Kumbaya song playing here.
 
 As a last note, Alex Miller must dream about the emails exchanged on the 
 mailing list.
 Suggestions are certainly looked upon and discussed upstream. It does not 
 mean that they will be considered
 worth to investigate/implement or they may come out differently (that ego 
 thing looming again).
 
 +1 for Jira and patches.
 
 The django community works with both tools. Pull request are just for code 
 review and patch attachment mechanism, and bug tracking system for 
 coordinate the efforts. Both them are not incompatible. 
 And django core team is not precisely small.
 
 The Pull-Request is not about laziness, is about eliminate friction. And 
 allow better and more human friendly code review
 process.
 
 I'm only try improve the contribution process and IMHO your tone is a 
 little bit out of place.
 
 
 Luc P.
 
 
 
 On Sat, 18 Jul 2015 19:05:16 +0300
 Andrey Antukh n...@niwi.nz wrote:
 
  On Sat, Jul 18, 2015 at 6:48 PM, Colin Yates colin.ya...@gmail.com
  wrote:
 
   +1 (although I maybe wouldn’t be so mocking in my tone ;-). Since
   when did software design by committee work; anyone remember J2EE?
   (and yes, that does deserve my

Re: #{:rant} Questions about contribution policy and clojure compiler source.

2015-07-18 Thread Luc Préfontaine
 wrote:
  
   Hi!
  
   I have some, maybe controversial, questions...
  
   A little bit of context:
   https://twitter.com/aphyr/status/621806683908542464
  
   Why this is like a normal approach for managing third party
   contributions to clojure core? This kind of things the only
   discourages the contributions. Maybe I don't have more context
   about this concrete case, but seems is not a unique.
   And in general, I have the perception that the clojure development
   process is a little bit opaque...
  
   An other question: Why the great amount of clojure compiler code
   has no indentation style and bunch of commented code.
  
   It is indented like a freshman. Sorry, I don't want offend any one,
   but eyes hurt when reading the code compiler clojure (obviously I'm
   speaking about the look and feel, and no the quality of the code).
  
   Some examples:
  
   Indentation (or maybe no indentation):
  
   https://github.com/clojure/clojure/blob/36d665793b43f62cfd22354aced4c6892088abd6/src/jvm/clojure/lang/APersistentVector.java#L86
  
   Bunch of commented code and also no indentation:
  
   https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/AMapEntry.java#L60
  
   If you compare some clojure compiler code with different code
   snippets from other languages, the indentation is clearly more
   cared:
  
   Kotlin:
   https://github.com/JetBrains/kotlin/blob/master/core/descriptors/src/org/jetbrains/kotlin/types/AbstractClassTypeConstructor.java#L44
   Rust:
   https://github.com/rust-lang/rust/blob/master/src/libstd/io/buffered.rs#L165
   Ceylon:
   https://github.com/ceylon/ceylon-compiler/blob/master/src/com/redhat/ceylon/compiler/java/codegen/AttributeDefinitionBuilder.java#L233
  
   This is a random list of code snippets from different compilers with
   indentation that is more human friendly.
  
   I don't intend judge any one, but when a I learn Clojure compiler I
   expect something different. I expect something more carefully done.
  
   No body thinks the same thing that me?
  
   I think that have a sane, more open contribution policy, with clear
   and more cared code formatting, is not very complicated thing and
   is going to favor the clojure and its community.
  
   Andrey
   --
   Andrey Antukh - Андрей Антух - n...@niwi.nz
   http://www.niwi.nz
   https://github.com/niwinz
  
   --
   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.
  
 
 
 
 
 
 
 --
 Luc Préfontaine
 
 SoftAddicts inc.
 Québec, Canada
 Mobil: +1 (514) 993-0320
 Fax: +1 (514) 800-2017
 
 Rabat, Maroc
 Mobil: +1 212 6 98 00 64 47
 
 
 --
 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

Re: #{:rant} Questions about contribution policy and clojure compiler source.

2015-07-18 Thread Luc Préfontaine
, is not very complicated thing and
   is going to favor the clojure and its community.
  
   Andrey
   --
   Andrey Antukh - Андрей Антух - n...@niwi.nz
   http://www.niwi.nz
   https://github.com/niwinz
  
   --
   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.
  
 
 
 
 
 
 
 --
 Luc Préfontaine
 
 SoftAddicts inc.
 Québec, Canada
 Mobil: +1 (514) 993-0320
 Fax: +1 (514) 800-2017
 
 Rabat, Maroc
 Mobil: +1 212 6 98 00 64 47
 
 
 --
 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.
 
 
 
 -- 
 Andrey Antukh - Андрей Антух - n...@niwi.nz
 http://www.niwi.nz
 https://github.com/niwinz
 -- 
 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 don't support .clj source code file by utf-8.

2015-07-13 Thread Luc Préfontaine
I cannot remember the details but in 2010 I had similar problem in a 
cross-platform project 
using Clojure. And problems earlier in another cross-platform/cross-language 
project.

So it's the reverse way, no BOM at all...

Can't believe we are in 2015 still struggling with character set issues. 
Having to to think about this when saving a file in notepad...That's depressing.
No wonder why I now stay away from Windows as much as possible.

I can't understand why we cannot get some transparent behavior from the Java 
runtime.
These are human readable text files. Not some unreadable binary format.
Googled a bit about this and numerous people face this problem reading windows 
generated
files. They all ended up having to skip the BOM if present when reading the 
file.

So much for portability. Beurk.

 On Mon, Jul 13, 2015 at 2:52 PM, Luc Préfontaine 
 lprefonta...@softaddicts.ca wrote:
 
  BG is right on it. I hit this problem a decade ago (roughly :)).
  UTF-8 files with no BOM are not handled properly on windows.
  It assumes that they are ASCII coded. That works partially (both character
  sets have the same
  encoding for many characters) but eventually fails.
 
 
  Make sure that the files have a BOM. You can do this on a per file basis
  using an IDE
  (Eclipse, ...) or if you can use bash scripts to do this if you have
  access to a u*x environment.
  I did not find an equivalent native windows tool but they might be some to
  do this in batch.
 
  Luc P.
 
 
 Clojure source files are expected to be in UTF-8 and Clojure on Windows
 doesn't require a BOM.
 
 In fact, Clojure files must not contain a BOM because it isn't considered
 to be whitespace by the clojure parser and will cause the error Unable to
 resolve symbol: ? in this context.
 
 Some software, such as Windows notepad uses the presence of a BOM to detect
 UTF-8, but that can be overridden in the File | Open dialog.  Other than
 that, the behaviour of the BOM on Clojure between Linux and Windows should
 be the same - this stuff is all handled by Java code in the JDK - not by
 the Windows platform.
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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 don't support .clj source code file by utf-8.

2015-07-13 Thread Luc Préfontaine
BG is right on it. I hit this problem a decade ago (roughly :)).
UTF-8 files with no BOM are not handled properly on windows.
It assumes that they are ASCII coded. That works partially (both character sets 
have the same
encoding for many characters) but eventually fails.

Make sure that the files have a BOM. You can do this on a per file basis using 
an IDE
(Eclipse, ...) or if you can use bash scripts to do this if you have access to 
a u*x environment.
I did not find an equivalent native windows tool but they might be some to do 
this in batch.

Luc P.


 Of course not. My files do not have BOM. So the problem lies in the
 BOM thingy?
 
 On Mon, Jul 13, 2015 at 10:07 AM Baishampayan Ghose b.gh...@gmail.com
 wrote:
 
  Hi,
 
  IIRC Windows requires UTF-8 encoded files to have the BOM (Byte Order
  Mark).
  Can you verify that your file has the BOM?
 
  Regards,
  BG
 
  On Thu, Jul 9, 2015 at 8:03 AM, Alex Woods linpc...@gmail.com wrote:
   clojure don't support .clj source code file by utf-8.
   it's ok when the .clj source code files by  ascii
  
   env:
   windows7,jdk1.8u45,lein2.5.0
  
   --
   You received this message because you are subscribed to the Google
   Groups Clojure group.
   To post to this group, send email to clojure@googlegroups.com
   Note that posts from new members are moderated - please be patient with
  your
   first post.
   To unsubscribe from this group, send email to
   clojure+unsubscr...@googlegroups.com
   For more options, visit this group at
   http://groups.google.com/group/clojure?hl=en
   ---
   You received this message because you are subscribed to the Google Groups
   Clojure group.
   To unsubscribe from this group and stop receiving emails from it, send an
   email to clojure+unsubscr...@googlegroups.com.
   For more options, visit https://groups.google.com/d/optout.
 
 
 
  --
  Baishampayan Ghose
  b.ghose at gmail.com
 
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
  your first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to a topic in the
  Google Groups Clojure group.
  To unsubscribe from this topic, visit
  https://groups.google.com/d/topic/clojure/Rk5JGhq-IJY/unsubscribe.
  To unsubscribe from this group and all its topics, 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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: Counterclockwise's Plugin Shortcuts for OS X

2015-07-07 Thread Luc Préfontaine
Create an external tool command (lein eastwood) perhaps ?

Sorry, could not resist :)

Luc P.

Sent from my iPad

 On Jul 7, 2015, at 15:21, JPatrick Davenport virmu...@gmail.com wrote:
 
 Hello, 
 I want to use the linter within Eclipse. I followed the instructions for both 
 the plugin manager as well as the linter. Unfortunately I don't know the 
 shortcut keys to run them with Eclipse in OS X. I can't find any menu options 
 to activate these. Perhaps I'm overlooking something.
 
 What should I do?
 
 Thanks,
 JPD
 -- 
 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: let vs. let*

2015-06-25 Thread Luc Préfontaine
I had to query it myself not knowing what this site was all about,
nice tutorial, I think I understood it :)

Luc P.


 raould,
 
 I find lmgtfy links to be a condescending way to answer a question and I 
 would prefer that we not use them on this list. If you have an answer or a 
 link to one, then respond with this, otherwise I do not see a reason to 
 post this. 
 
 Thanks,
 Alex
 
 
 On Thursday, June 18, 2015 at 3:35:53 PM UTC-5, raould wrote:
 
  http://lmgtfy.com/?q=clojure+%22let+vs.+let*%22 
 
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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: 1.7.0b2, lein, cljc and tests

2015-06-19 Thread Luc Préfontaine
I encountered a couple of glitches around cljc support through figwheel.
Updating a .cljc file was triggering a recompilation in some circumstances.

I did not investigate further, it kind of disappeared from my horizon but I do 
not why exactly.
Can't relate this to a change in my project yet.

Luc P.


 Hi Gary, lein does appear to support it as lein test some-test-in-cljc works, 
 just not if I do ‘lein test’. Is this expected? I am running 2.5.1
 
  On 19 Jun 2015, at 14:46, Gary Trakhman gary.trakh...@gmail.com wrote:
  
  Leiningen needs to support cljc, right now only the compiler does, and 
  clojure-maven-plugin since a few days ago.
  
  https://github.com/technomancy/leiningen/issues/1827 
  https://github.com/technomancy/leiningen/issues/1827
  
  On Fri, Jun 19, 2015 at 9:41 AM Colin Yates colin.ya...@gmail.com 
  mailto:colin.ya...@gmail.com wrote:
  First - cljc is (for me) a huge upgrade over cljx, which was a great 
  solution. Not having to run lein clix auto every time I do a clean is far 
  more useful than I realised.
  
  The problem I am having is that cljc test files don't seem to be picked up. 
  I have test/clj and test/cljc, my test-paths in project.clj are [test/clj 
  test/cljc] but 'lein test', and 'lein test-refresh' don't see them. If I 
  do a 'lein test some-namespace-in-cljc' then the tests are run.
  
  Has anyone else experienced this and if so, any pointers on moving forward?
  
  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 
  mailto: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 
  mailto:clojure%2bunsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en 
  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 
  mailto:clojure+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/d/optout 
  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 
  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 
  mailto:clojure+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/d/optout 
  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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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: Multimethod or protocol or...? Clojure design feedback

2015-05-15 Thread Luc Préfontaine
I regroup these name spaces in an api name space and require this name space 
where it makes sense.

You can cut out your APIs as you wish around one or more mutli methods and add
whatever stuff needs to be part of it.

Still manually managed but not scattered everywhere. Never thought of a 
different way
to manage this however.

Luc P.

 Thanks for the feedback guys. Another related Q: The user needs to require 
 the namespace that those defmethods are defined in for the multi to know 
 about it. Presumably each defmethods will be in individual files, meaning 
 the user has to require all those files for the migration tool to work. Is 
 there a cleaner way of make sure that the defmulti knows about those 
 methods?
 
 On Thursday, May 14, 2015 at 7:56:12 PM UTC-4, Jason Marmon wrote:
 
  I'm working on a tool to orchestrate the migration from mongodb to 
  datomic, and i'm looking for a bit of design feedback as i'm new to 
  clojure. 
 
 
  The user needs to provide functions that transform mongodb documents into 
  datomic txes. Do y'all prefer the top or bottom style, or think there's a 
  different way to implement this design that might be better?
  12345678910111213141516171819
 
  ;; Multimethod for transforming data based on the name of the source 
  mongodb collection 
  (defmulti transform identity)
   
  (defmethod transform events [data]
 ;; do something with data
   )
   
  (defmethod transform users [data]
 ;; do something with data
   )
   
  ;;
   
  (defprotocol Collection-Transformer
 (transform [mongo-db document]))
   
  (def user-transformer
   (reify Collection-Transformer
(transform [m d] do stuff)))
 
 
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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.lang.LazySeq cannot be cast to clojure.lang.IFn

2015-05-08 Thread Luc Préfontaine
Dunno riemann but I would say that you need a closure here,
not an immediate call to notify. The closure will be called when expiration is 
reached.

So use #(notify ...) instead.

In your current code notify gets called, return a lazy seq (for) and then 
the lazy seq is called as a function when the service expires. Oups...

Second thing, use doseq, not for if you want the side effects do be done in
your notify fn. for will not get your side effects done, it only returns a lazy 
seq.

Luc P.

Sent from my iPad

 On May 8, 2015, at 08:01, Alexey Astafyev av.astaf...@gmail.com wrote:
 
 I'm new to Riemann and Clojure. All I want to do is to send email 
 notifications to three email groups when some service's TTL is expired. I 
 created some sort of config file where I store a list of emails:
 
 {
   :email_group_1 (
   fi...@example.com
   sec...@example.ru
  )
   :email_group_2 (
   th...@example.com
  )
 }
 
 My riemann config looks like this:
 
 (logging/init {:console true})
 (import org.apache.log4j.Level)
 (logging/set-level Level/DEBUG)
 
 (require '[clojure.java.io :as io])
 (import '[java.io PushbackReader])
 
 (let [host 0.0.0.0]
   (tcp-server {:host host :port 60001})
   (udp-server {:host host})
   (ws-server  {:host host :port 60003}))
 (repl-server  {:host 127.0.0.1})
 
 (def cwd (System/getProperty user.dir))
 
 (def emails
   (with-open [r (io/reader (str cwd /etc/emails.clj))]
  (read (PushbackReader. r
 
 (periodically-expire 5)
 
 (def email (mailer))
 
 (defn notify [ egroups]
   (for [egroup egroups]
 (rollup 1 60 (apply email (emails egroup)
 
 (let [index (index)]
   (streams
 (default :ttl 60
   index
 
   (expired
   (where (service service_connect_active)
 #(info expired %)
 (notify :email_group_1 :email_group_2))
 
 Code looks good (for me), but when this service is expired I get the 
 following error:
 
 09:45:39 riemann.1  | INFO [2015-05-08 10:45:39,313] Thread-5 - 
 riemann.config - expired {:ttl 60, :time 357766884827/250, :state expired, 
 :service service_connect_active, :host ava.local}
 09:45:39 riemann.1  | WARN [2015-05-08 10:45:39,319] Thread-5 - 
 riemann.config - clojure.lang.LazySeq@841649b8 threw
 09:45:39 riemann.1  | java.lang.ClassCastException: clojure.lang.LazySeq 
 cannot be cast to clojure.lang.IFn
 09:45:39 riemann.1  |   at 
 riemann.config$eval66$stream__70$fn__75.invoke(riemann.development.config:34)
 09:45:39 riemann.1  |   at 
 riemann.config$eval66$stream__70.invoke(riemann.development.config:45)
 09:45:39 riemann.1  |   at 
 riemann.streams$match$stream__3514$fn__3525.invoke(streams.clj:1209)
 09:45:39 riemann.1  |   at 
 riemann.streams$match$stream__3514.invoke(streams.clj:1209)
 09:45:39 riemann.1  |   at 
 riemann.streams$default$stream__3731$fn__3742.invoke(streams.clj:1328)
 09:45:39 riemann.1  |   at 
 riemann.streams$default$stream__3731.invoke(streams.clj:1328)
 09:45:39 riemann.1  |   at 
 riemann.core$stream_BANG_$fn__4415.invoke(core.clj:19)
 09:45:39 riemann.1  |   at riemann.core$stream_BANG_.invoke(core.clj:18)
 09:45:39 riemann.1  |   at 
 riemann.core$reaper$worker__4529$fn__4539.invoke(core.clj:303)
 09:45:39 riemann.1  |   at 
 riemann.core$reaper$worker__4529.invoke(core.clj:297)
 09:45:39 riemann.1  |   at 
 riemann.service.ThreadService$thread_service_runner__1973$fn__1974.invoke(service.clj:71)
 09:45:39 riemann.1  |   at 
 riemann.service.ThreadService$thread_service_runner__1973.invoke(service.clj:70)
 09:45:39 riemann.1  |   at clojure.lang.AFn.run(AFn.java:22)
 09:45:39 riemann.1  |   at java.lang.Thread.run(Thread.java:745)
 
 Could someone please help me? 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
 --- 
 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 

Re: Why is Caribou unmaintained ?

2015-05-04 Thread Luc Préfontaine
There's been no activity since a year ago. This may give the impression that 
it's
dead and maybe it still quite alive.
If people want a framework this one looks to be very complete. It would be 
a shame not to reuse all that brain power.

More feedback ?


 On Monday, May 4, 2015 at 10:51:35 AM UTC-4, Luc wrote:
 
  Spawned from the other thread about web frameworks. 
 
  Can any of the original maintainers answer this one ? 
 
 
 According to that same other thread, it has 2 developers on it, not 0. If 
 it's feature-complete 2 might easily be sufficient to field the occasional 
 bug report. 
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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 needs a web framework with more momentum

2015-05-04 Thread Luc Préfontaine
I certainly have some personality disorders, but I am not bipolar :)
What am I ? Help ! :)

Luc P.


  And never has this author proven that programmers with bipolar 
 personality are 
  programming more LISP then other languages. 
 
 It's a metaphor. The author is not actually diagnosing Lisp programmers 
 with bipolar disorder. The metaphor offers an image of a particular kind of 
 student who starts stuff but doesn't finish stuff. 
 
 
 
 
 On Sunday, May 3, 2015 at 2:52:22 PM UTC-4, Leon Grapenthin wrote:
 
  No, it isn't. And never has this author proven that programmers with 
  bipolar personality are programming more LISP then other languages. 
 
  Many larger libraries in the Clojure community are well documented and 
  finished-off properly.
 
  Web frameworks have been tried and not been picked up. Users have chosen 
  the modular compose it yourself approach. Framework authors have simply 
  stopped maintaining what nobody wanted anyway or split them up into smaller 
  pieces. 
 
 
  On Sunday, May 3, 2015 at 8:25:22 PM UTC+2, larry google groups wrote:
 
 
   The web development industry as reflected in job postings at 
   Indeed.co.uk is still dominated by the likes of Rails, Django, 
  Laravel, 
   Zend, Symfony  Spring so I'm not sure how you've concluded that 
  there's 
   been a 15-year trend towards composition. 
 
  That is a good point, though I would also point out that, according to 
  Indeed.com, the use of Clojure is also growing. To me, what's important is 
  the growth of the Clojure community, rather than the growth of some 
  sub-community focused on a particular niche. 
 
  However, I acknowledge you may have a point about the failure of any of 
  the Clojure frameworks to take off. It's possible this is another 
  manifestation of the Bipolar Programmer problem: 
 
  http://www.lambdassociates.org/blog/bipolar.htm
 
  Brilliance and failure are so often mixed together and our initial 
  reaction is it shouldn't be.   But it happens and it happens a lot.  Why? 
  ...But brilliance is not enough.  You need application too, because the 
  material is harder at university.   So pretty soon our man is getting B+, 
  then Bs and then Cs for his assignments.   He experiences alternating 
  feelings of failure cutting through his usual self assurance.  He can 
  still 
  stay up to 5.00AM and hand in his assignment before the 9.00AM deadline, 
  but what he hands in is not so great.
 
  ...So BBMs love Lisp.  And the stunning originality of Lisp is reflective 
  of the creativity of the BBM; so we have a long list of ideas that 
  originated with Lispers - garbage collection, list handling, personal 
  computing, windowing and areas in which Lisp people were amongst the 
  earliest pioneers.  So we would think, off the cuff, that Lisp should be 
  well established, the premiere programming language because hey - its 
  great 
  and we were the first guys to do this stuff.
 
  But it isn't and the reasons why not are not in the language, but in the 
  community itself, which contains not just the strengths but also the 
  weaknesses of the BBM.
 
  One of these is the inability to finish things off properly.  The phrase 
  'throw-away design' is absolutely made for the BBM and it comes from the 
  Lisp community.   Lisp allows you to just chuck things off so easily, and 
  it is easy to take this for granted.  I saw this 10 years ago when looking 
  for a GUI to my Lisp (Garnet had just gone West then).  No problem, there 
  were 9 different offerings.  The trouble was that none of the 9 were 
  properly documented and none were bug free. Basically each person had 
  implemented his own solution and it worked for him so that was fine.   
  This 
  is a BBM attitude; it works for me and I understand it.   It is also the 
  product of not needing or wanting anybody else's help to do something.
 
 
 
 
 
  On Sunday, May 3, 2015 at 9:51:15 AM UTC-4, g vim wrote:
 
  On 03/05/2015 14:39, larry google groups wrote: 
   The industry has been moving against frameworks for 15 years now. The 
   peak of the monolithic framework craze was Struts, back in 2000. After 
   that, people started craving something less bloated. That's why the 
   whole industry was so excited when Rails emerged in 2004. Bruce Eckel 
   summed up the sudden change of mood in his essay The departure of the 
   hyper-enthusiasts: 
   
   http://www.artima.com/weblogs/viewpost.jsp?thread=141312 
   
   But after awhile, people began to feel that even Rails was bloated, 
   which lead to the emergence of micro-frameworks like Sinatra. 
   
   And then, continuing with the trend, we've seen the emergence of 
   eco-systems, such as Clojure, that allow the trend to go further: 
   Clojure supports such high levels composition that frameworks are no 
   longer needed. And this is the direction the industry has been moving 
   for the last 15 years. Clojure is simply out in front. Most languages 
   don't allow this level of 

Re: Clojure needs a web framework with more momentum

2015-05-03 Thread Luc Préfontaine
Here in Morocco, the dominant web technology is... PHP.  Tadaaa !

The're not even considering Raills or anything more 'advanced' for that matter.

It's really an evolution ladder. People got on the 'framework' 'one fit for all 
band after trying
things like PHP, JSP, ... and now realizing that it does not solve the issues 
they just leave.
It will certainly happened with PHP and Rails.

These solutions are geared toward some specific problem scopes. As soon as the 
business
needs outrun what they can easily solve you are short of something else.

The industry has been searching for a silver bullet solution for decades.
In the early 80s, late 70s, CASE tools were suppose to be that bullet, (basic 
stuff in today's 
world, git, ant, ).

Open systems then picked up, blabla,  None of that fully delivered their 
promises. Ever.
They helped climb the ladder however. In small steps...

And now we have these frameworks that  supposedly can ease the pain in any 
circumstances. They do fill the role up to a certain glass  ceiling, the 
unforeseen business needs 
that make them blow in pieces because they can't be easily  stretched, twisted, 
bended, ...

Each of these initiatives were motivated by software creation automating and
supposedly shrinking the costs while trying to downplay the need for an 
essential ingredient...
Us. Wetware.

I think it's a mirage.

Maybe the solution has been there for decades under our eyes. Human beings. 
Capable of assembling solutions grater than the sum of their parts. Capable of 
bending the 
software as needed to do new stuff instead of having to fully rewrite stuff 
because shoes
are becoming to tight. In one word adapt.

This assumes that you have components to build from and people that can compose 
them
as needed.
Not some kind of frozen approach in time to software development were roles are 
pre-assigned
and any change outside of this limited scope becomes a challenge by itself.

The 'structure' needed here has nothing to do with walls and concrete. We need 
brain power
to tear down/recompose things and stop thinking that processes, normalization, 
herd tagging,
etc can lead us to work more efficiently. Processes, conventions, ... may help 
but at a low scale. 

Not pushed by at the scale of the whole software industry like these days 
Variety is the key.

Luc P.

 On 03/05/2015 14:39, larry google groups wrote:
  The industry has been moving against frameworks for 15 years now. The
  peak of the monolithic framework craze was Struts, back in 2000. After
  that, people started craving something less bloated. That's why the
  whole industry was so excited when Rails emerged in 2004. Bruce Eckel
  summed up the sudden change of mood in his essay The departure of the
  hyper-enthusiasts:
 
  http://www.artima.com/weblogs/viewpost.jsp?thread=141312
 
  But after awhile, people began to feel that even Rails was bloated,
  which lead to the emergence of micro-frameworks like Sinatra.
 
  And then, continuing with the trend, we've seen the emergence of
  eco-systems, such as Clojure, that allow the trend to go further:
  Clojure supports such high levels composition that frameworks are no
  longer needed. And this is the direction the industry has been moving
  for the last 15 years. Clojure is simply out in front. Most languages
  don't allow this level of composition.
 
 
 The web development industry as reflected in job postings at 
 Indeed.co.uk is still dominated by the likes of Rails, Django, Laravel, 
 Zend, Symfony  Spring so I'm not sure how you've concluded that there's 
 been a 15-year trend towards composition. Ruby and Python have had 
 lightweight composable alternatives for many years but Rails and Django 
 still dominate. I'm not against the composition at all. I just think we 
 need more structured alternatives that we can at least brand and market 
 as well as teach to Clojure beginners.
 
 gvim
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

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

Re: What is current best practice regarding exceptions?

2015-04-20 Thread Luc Préfontaine
1) no
2) no
3) yes at all cost
4) both, exceptions are logged with context (current bindings, etc)
5) undecided, under close examination however
6) never have to restart, we check what cause the error and correct it 
externally if required
most errors are reported immediately, may depend on the failed process 
being critical
or not.

Up times above 250 days, restarts only required when upgrading stuff.

Luc P.


 
 I'm curious, how are people in the Clojure community currently dealing with 
 exceptions? I have a diverse set of questions on this topic. 
 
 1.) How many have adopted an Erlang die fast and restart strategy?
 
 2.) How many use something like Supervisor to spin up new JVMs? If not 
 Supervisor, then what?
 
 3.) How many try to catch all exceptions and therefore try to keep the app 
 running under all circumstances? 
 
 4.) If you use something like Kafka to log events, do you use the same log 
 to track exceptions, or do you track exceptions separately?
 
 5.) How many use a catch/restart library such as Ribol? 
 
 6.) In general, how bad do you expect things to be before you allow the 
 software to die, have Nagios send a pager alert to your sysadmin, drag them 
 out of bed at 3 AM, and have a human examine the issue and restart things 
 manually? 
 
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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: Newbie question about filtrering defrecord

2015-04-04 Thread Luc Préfontaine
You mean the a1 record no ?


 Hi!
 
 I'm new to clojure, and have problem understanding how to filter a list of 
 defrecords. 
 I have tried different variations on the following:
 
 (defrecord Ape [fname lname])
 (def a1 (-Ape test1 test2))
 (def a2 (-Ape test3 test4))
 (def alist '(a1 a2))
 
 (filter #(= test1 (:fname %)) alist)
 
 I expect the filter to match the a2 record, but I obviously do something 
 wrong and would appreciate any suggestion.
 
 Kind regards
 Magnus Jäverberg
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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, not the go to for data science

2015-03-29 Thread Luc Préfontaine
It's fun to see that vintage tools are so much appreciated these days :)
Luc P.


 Batsov,
 
 CIDER is the best Clojure IDE. ;)
 
 --
 @solussd
 
 
  On Mar 29, 2015, at 9:14 AM, Bozhidar Batsov bozhi...@batsov.com wrote:
  
  And CIDER isn't, right? I find this pretty insulting... 
  
  On 29 March 2015 at 13:47, Colin Yates colin.ya...@gmail.com wrote:
  Cursive Clojure, LightTable and CounterClockwise are all good Clojure IDEs.
  
  On 29 March 2015 at 09:54, Sayth Renshaw flebber.c...@gmail.com wrote:
   Hi
  
   I last learned clojure in 1.2. Just curious why Clojure hasn't developed 
   as a go to for data science?
  
   It never seems to get a mention R,Python and now Julia get the 
   attention. By design it would appear that Clojure would be a good fit. 
   Is it a lack of libraries, ease of install, no good default environment  
   (R Rstudio, IPython ) where as you would need to use emacs with clojure, 
   or is there just a better default use of Clojure?
  
   Sayth
  
   --
   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.
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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][book] Clojure Reactive Programming

2015-03-26 Thread Luc Préfontaine
The 'attack' word is again a manifestation of extreme political correctness.

I will argue that these technologies with their inherent complexity are 
creating huge 
bureaucracies to attract and hide unqualified/unskilled/uncommited/... aka 
'stupid' people
from scrutiny.

These environments have the perverse effect of encouraging people not to think
too much at least not publicly because of that political correctness pushed to 
the limit.
'You are not a team player, blablablalbla...'.

'Stupidity' is not off topic here, not at all. It's been a plague for two 
decades in this industry
as soon as demand increased for sotfware. It started to attract people mid 80s 
because of
the promise to get a well paid job. Not because they had above average skills 
or had a keen
interest in it. 'I do not need to understand technology, I'll be a manager in 
three years'.
This a real quote from a colleague when I was quite green.

Meanwhile HR replaced know-how by worthless tags (add water to this pouch and 
you will get a 
Java/Ruby/... asset) and processes hoping to use a Taylor approach to 
creativity like
if we were building cars on an assembly line.

Some would argue that without this enterprise mass market, we would not have 
the technology
we have at hand these days. True. The industry has been recycling old concepts
for 30 years branding them as new. Huge costs with incremental changes.

This mitigated success is limited by this assembly line model.
And unlike a car plant, it cannot be robotized.
You need to change wetware... Hence the 'stupidity' factor discussion.

Now if the anonymity thing bugs you, I can bring forward explicit names in this 
thread
with the failing projects, budget, ..., just let me pull my notes 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
--- 
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][book] Clojure Reactive Programming

2015-03-25 Thread Luc Préfontaine
I support your statement.
I am fed up by this extreme political correctness era.

This leads directly to auto censorship. 

I met numerous 'anarchitects' who never had to bring an app from inception to
real life use but nonetheless where issuing 'profound' statements about the 
last buzz word they
read from the news stand.

With unnecessary software complexity comes huge teams, dilution of 
responsibilities and 
expertise, aside from the one picked up through some headlines.

This leads to a lack of accountability overall.
No one is responsible, 'we followed best practices/processes according to {put 
your favorite methodology name here}'

I saw 'anarchitects' fly out before integrated or acceptance tests because
they had realize that the monster they helped created could not lift from the 
ground.
Human induced complexity killed it well before it started to breathe.
A kind of Frankenstein aborted experiments.

After spending zillions of customer $ of course...

If it swims like a duck, squeaks like a duck, walks like a duck, well it's a 
duck.
Not some kind of abstract apparatus.

Nothing forces people to buy/listen to a book/news report/tv show/... if they 
find it rude
or inappropriate to their taste.

They just have to zap like most of them are doing over any serious thinking 
about  
how they work, what's the purpose of it and what responsibilities comes with it.

It's already a miracle that some people are actually saying publicly what they 
really think,
let's not try to cut their wings...

Pleasing the majority is the path to mediocrity.

Luc P.

 Trust me I have been using Scala + Akka + Play for past three years in
 production, and had to deal with tons of incidental complexity plus a lot
 of noise they introduce as my daily job (in my code as well as other
 developer's code). Now I am in the best position to judge and compare them
 with Clojure code that does similar job but ten times simpler (and I don't
 only mean 10 time less verbose).
 I am sorry but I need to confess that within past 15 years that I have been
 working with numerous architects most of them choose technologies only
 based on 1/2 hour googling or reading reviews (and I don't mean all
 architects are like this). In particular the one I rightly called ignorant
 did not even write a simple poc to use AKKA and java8 to see how code looks
 like.
 By pathetic technology (and I didn't mean java8) I mean a technology that
 you need to fish out less than 10 lines of business logic from 50 or more
 lines of noise introduced by Scala futures (in AKKA), Play promise redeems,
 matching classes (case classes in Scala)...
 Remember when first time Spring was introduced, the original goal was to
 take out all the noise and put them in XML file so the developer remain
 focused on business logic. Here we are 10 or so years later: lots of noise
 and complexity added to the code to do orchestration. This is work of
 intelligent fool... (look at Erlang which AKKA tried to copy, it does a
 powerful orchestration without introducing much complexity, this is touch
 of genius)
 These are the pain points in our field. I have deeply felt it and try to
 point out that the life does not need to be that hard.
 Clojure is the first real try in opposite direction (touch of genius)
 
 Thanks a lot
 Best regards
 Shahrdad
 
 
 
 
 On Wed, Mar 25, 2015 at 8:06 AM, Colin Yates colin.ya...@gmail.com wrote:
 
  No - he is right, we just don't say it! Obviously I am kidding :).
 
  On 25 March 2015 at 11:51, Hildeberto Mendonça m...@hildeberto.com wrote:
   On Wed, Mar 25, 2015 at 12:14 PM, Colin Yates colin.ya...@gmail.com
  wrote:
  
   Hi Shahrdad, just a point of etiquette, inferring that an architect is
   ignorant because they chose Java8, Akka and play is full of assumptions.
   Calling those technologies pathetic is very bad poor.
  
   As I like to quote Any intelligent fool can make things bigger and more
   complex... It takes rude manners, assumptions and a whole bunch of
   numptiness to claim 'bigger and more complex' means the author is a
  fool.
  
  
   That's why I love this community. Mutual respect is part of the
  philosophy.
   :-)
  
   --
   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 

Re: [ClojureScript] Re: ANN: ClojureScript 0.0-3115

2015-03-16 Thread Luc Préfontaine
It's up the maintainers down the food chain to keep up with changes and yes 
there are
timing issues, not all changes/fixes can be applied synchronously.

That's the idea of having libraries instead of a monolithic soup of code.

Applying your statement to technology in general we would still be using
horse driven carts...  I appreciate the life style of Amish communities and 
would
certainly switch to it if I could. But that's not how my world is wired 
presently.

Luc P.


 On Monday, March 16, 2015 at 11:23:14 AM UTC-4, David Nolen wrote:
 
  Need more information. But that warning is most certainly not something 
  emitted by the ClojureScript compiler.
 
  Make sure you can reproduce without whatever downstream tooling you may be 
  using: https://github.com/clojure/clojurescript/wiki/Reporting-Issues
 
  There's a good chance it's purely downstream and needs to be reported 
  elsewhere. 
 
  
 The only thing the OP changed was the version of cljs he was using, and his 
 project went from working to broken. This means that one of the changes in 
 the new cljs broke something. Whether it directly broke the OP's code, or 
 broke a library that the OP's project depends on, is immaterial; the 
 location of the breaking change was in cljs itself.
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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: Let bindings and immutability

2015-02-12 Thread Luc Préfontaine
Think about values first, symbols after.

Symbols are accessory, not values, values are the only things that exist at 
runtime.

Symbols are only there for you poor human (I include myself in this statement) 
to grasp
roughly what is going on by tracking intermediate values with names. The names 
you
choose are irrelevant except for your own comprehension.

There are no containers per se that you can alter transparently.

Some special constructs (atoms, ...)
allow you to persist other values, obviously you need to name
these constructs but they are not symbols, they are a special kind of value.

Your code will need the value they persist, not the construct itself.
(swap! is of limited interest if you never refer to the atom value).

Top level vars are like the universe of values where your code will operate, a 
frame.
Once set vars do not change. (Ok, some may use alter root but it should be 
reserved
to specific occasions).

It's all about values.

This is the semantic shift compared to most languages.

I do not even think about the underlying objects supporting values in Clojure 
unless I need to
(extending with protocols, type hints, weird stack traces, ...). Implementation 
details :)

As for interop, you enter the mutable world and the familiar rules apply here.

The above 'cosmology' sums up how I think when I dive into some Clojure code 
and it works
99.5% of the time. There's no confusion.

Luc P.

 On 12/02/2015 01:53, Ben Wolfson wrote:
  The multiple-binding form of let can be recursively transformed into
  nested lets:
 
  (let [name1 value1 name2 value2 ... name value] body)
  
  (let [name1 value1] (let [name2 value2] ...  (let [name value] body)))
 
  All you're doing with your let form is shadowing the name; there's no
  mutation. If you had something like this:
 
  (let [x 1]
  (let [x (inc x)]
(println x))  ;; prints 2
  (println x)) ;; prints 1
 
  it would be more obvious; it's less apparent in your case because
  there's no room for the extra forms.
 
 
 That explains it but I think Clojure's syntax is misleading here. 
 Without knowledge of this magic the mind doesn't readily translate:
 
 (let [x 1
  x (inc x)
  x (inc x)
  x (inc x)]
 x)
 
 
  into:
 
 (let [x 1]
(let [x (inc x)]
  (let [x (inc x)]
(let [x (inc x)]
x
 
 The single bracket pair in the original leads the unwitting newcomer to 
 assume all the x'es are in the same scope.
 
 gvim
 
 
 
 
 
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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: Set equality bug?

2015-01-23 Thread Luc Préfontaine
Well if it breaks elsewhere than in your code because you mix representations 
and leak
them to some library in Java that you do not control I see my comments as 
absolutely relevant.

It's not technical, it's failsafe. But that might not be of any interest to 
your problem scope.
However it does interest me. Hiding odd behaviors when consistency can be 
guaranteed,
I have no problem with that. Here to me its very clear that there is no 
failsafe approach.

Clojure is hosted on a platform that does not provide the kind if consistency 
you want.
Anything you can build to hide this in Clojure is like building a tower on 
moving sand.

Mark has a valid point about type safety which helps a bit in Java but you can 
dig
with google and you will find people that got bitten in Java by float/double 
mixing
even with type 'safety'. So long for type systems, it cannot help you with 
values that
'look' the same superficially but are internally different.

For some values, floats and doubles are equal because their internal 
representations are the 
same. For many other values it's not working.

I suggest some readings;

http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
http://floating-point-gui.de/errors/comparison/

Then maybe we can bring this thread to an end.


 If there's a technical reason why Clojure can't return false for all = 
 comparisons between floats and doubles, I'd like to hear it. Otherwise, I 
 don't see how your response is relevant.
 
  On Jan 23, 2015, at 3:10 AM, Luc Prefontaine lprefonta...@softaddicts.ca 
  wrote:
  
  Agree, it's broken... in java...
  Has it has been broken in the past in several architectures...
  
  I understand your frustration but this is not something new. It's been a 
  problem for at least 30 years.
  
  It is kind of a basic programming issue:
  
  - Never compare floats with different representations.
  
  - Never mix different representations in computations
  
  - Convert representations as early as possible to a common format
  
  These are the rules to follow to avoid running into trouble.
  
  Now if you think you can overcome this persistent (ah ! ah !) problem with 
  some David Copperfield trick, fine.
  
  But that's a trick nothing else. The problem will resurface in some form in 
  another. Better cope with reality...
  
  Luc P.
  
  
  On Jan 23, 2015, at 1:33 AM, Immo Heikkinen immo.heikki...@gmail.com 
  wrote:
  
  I actually ran into this while comparing nested data structures from two 
  different sources and spent a good part of my day figuring out what's 
  happening. While it is a good advice to avoid mixing floats and doubles, 
  it is inevitable that Clojure users will get bitten by this once in a 
  while and hours will be wasted.
  
  It is also very disturbing to realise that (= a b) doesn't always imply 
  (= (hash a) (hash b)) or (= #{a} #{b}) as you would think.
  
  (inc)
  
  This is fundamentally broken behavior. Telling people to just learn to 
  avoid it is not good, IMO. If the hashes must be unequal, then = should 
  return false.
  
  As for backwards compatibility, note that if such a change were made to =, 
  it wouldn't affect anyone who was already following Andy's advice to avoid 
  mixing doubles and floats. IOW, it should only affect those who are doing 
  something you're not supposed to do anyway.
  
  -- 
  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.
  
  --
  Luc Prefontainelprefonta...@softaddicts.ca sent by ibisMail!
  
  -- 
  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, 

Re: [ANN] dformat 0.1.0

2015-01-15 Thread Luc Préfontaine
Euuh ? I was expecting to find %5 and above and a bunch of embedded forms

-- 
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-alpha5 now available

2015-01-11 Thread Luc Préfontaine
So far so good, will go in prod with it next Wednesday.
Will run some heavy integrated tests in the next 48 hours.
Will report if anything shows up.

Thank you,
Luc P.


 For my projects swapping 1.7.0-alpha4 - alpha5 has not culminated in any 
 abnormalities. So... looking good thus far on my end. 
 
 On Sunday, January 11, 2015 at 11:45:50 AM UTC-5, Plinio Balduino wrote:
 
  Hi there, Alex and Clojure team
 
  Is there a planned date for the stable version release?
 
  Regards
 
  Plínio
 
  On Sun, Jan 11, 2015 at 12:34 PM, Alex Miller al...@puredanger.com 
  javascript: wrote:
 
  I would greatly appreciate hearing any feedback about this (or any other) 
  alpha, even if it's just: everything looks ok.
 
  We've had a couple of regressions reported and that is hugely helpful as 
  we can quickly turn around fixes for the next one.
 
  Interested particularly in: regressions, performance +/-, and for this 
  alpha, AOT.
 
  --
  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 
  javascript:
  Note that posts from new members are moderated - please be patient with 
  your first post.
  To unsubscribe from this group, send email to
  clojure+u...@googlegroups.com javascript:
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  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 javascript:.
  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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

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

2014-12-20 Thread Luc Préfontaine
Defaults only please. 

There are more pressing needs from dev tools than this sort of thing.

Diversity is what makes us well... different. Our minds are not formatted the 
same
either. What may look readable to someone may look like garbage to someone else,
the context may also influence comprehension.

If a business wants a more or less strict code style fine. It may well be a 
decent
requirement given their domain. If they need to tweak 50 variables it's also 
fine, 
it's an investment they are willing to make.

At various times in the past, focus has been on 'standardizing' how code is 
written,
up to choosing variable names, presentation, ...

While this may have been valuable in some contexts, no unique agreement has 
been 
ever adopted and the impact on software quality is nil. It may help a given team
to agree on some conventions but in the large it's not worth the energy it 
sucks.

I suggest reading a 'Brave New World' for those who think that a stronger 
initiative 
than defaults is required :)

Or punch out a few thousand cards of Cobol code lines to get the feeling...

Luc P.

Sent from my iPad

 On Dec 20, 2014, at 09:57, Colin Fleming colin.mailingl...@gmail.com wrote:
 
 Yes, perhaps just agreeing on sane defaults is a more achievable goal. 
 Cursive currently does not indent everything exactly according to the guide 
 by default. I would also not like to see tools' ability to implement more 
 sophisticated formatting hampered by an overly restrictive guide either, 
 since a lot of users have requested that Cursive do different things with 
 particular forms, but having agreed defaults doesn't conflict with this.
 
 On 20 December 2014 at 22:51, Laurent PETIT laurent.pe...@gmail.com wrote:
 I agree that if all tools could agree on sale out of the box defaults, this 
 would be very valuable to users and clojure in general. 
 
 Maybe a less ambitious goal than getting the whole community agree on 
 standards could be tool authors to agree on shared defaults. Which of course 
 doesn't prevent the tools to offer additional options, but activating those 
 would require users to explicitly customize the tools settings. 
 
 Le samedi 20 décembre 2014, Lars Andersen ex...@expez.com a écrit :
 
 My view on this is very much along the line of discussions about 
 whitespace.  While I have opinions about these matters, for the most part I 
 don't want to think about it--I have more pressing concerns.  What's 
 important to me is consistency within a code base.  Just like with 
 whitespace, I don't want to introduce spurious changes into all my diffs 
 when working with other people.  I also don't want to customize 50 editor 
 variables to get sane defaults which I have to tweak for various 
 environments (work, home, contributing to open source projects).
 
 Supporting different styles is a laudable goal, but I hope we can agree 
 that the defaults should be similar in all editors to reduce friction when 
 working with others.  Using a style guide maintained by the community for 
 those defaults make a lot of sense to me.
 -- 
 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.
 
 
 -- 
 Laurent Petit
 
 -- 
 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 

Re: clojure.edn won't accept clojure.java.io/reader? How to work around this and why isn't this documented anywhere?

2014-12-08 Thread Luc Préfontaine
Dunno the answer but I know how many buddhist monks are needed, exactly three:

a) the first one readies itself for the bulb swap! by repeating a mantra
b) the second meditates to make the first monk levitate toward the fixture 
c) the third one immolates itself to provide light for the entire duration of 
the operation

Sorry for all the buddhist monks that may be offended by the above :)
I like black humor very much and this is probably the only joke that I can write
on this list that will not qualify me hopefully for eternal damnation... Euh 
moderation...

Luc P.

Sent from my iPad

 On Dec 8, 2014, at 20:11, Matching Socks phill.w...@gmail.com wrote:
 
 How many programmers does it take to change a light bulb?!
 
 http://dev.clojure.org/jira/browse/CLJ-1611
 
 -- 
 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: Thnx for clojureconj videos !!

2014-11-22 Thread Luc Préfontaine
+1, could not make it to Washington, my agenda was tossed upside down last week 
but with
these at least I am not missing all of it.

Thank you,

Luc P.


 Thank you very much for clojureconj videos !!
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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-alpha3 now available

2014-11-02 Thread Luc Préfontaine
Encrypted fs have a file path limit around 140 bytes vs 255 w/o encryption.
I hit this problem a couple of months ago with a library and AOT.
The library had pretty long fn signatures, some generating class file names
around 110 bytes long.

The author tweaked these a bit to shorten the class file name. If I recall most 
of
these where anonymous fns.

With 140 (143 in my case) bytes you have to shorten the folder path as much as 
you can
if you expect compilation to succeed and avoid fns with complex signatures.

Luc P.


 I hit this error when moving to a new box that had an encrypted FS. Might 
 be related to your case as well. Good luck.
 
 On Wednesday, October 29, 2014 1:34:28 AM UTC+11, Stefan Kamphausen wrote:
 
  Hi,
 
  have there been any changes how fns with a name and recursion are 
  compiled?  One of my projects has a function which does not compile with 
  1.7.0-alpha3 anymore, but did fine with 1.6.0.
 
  I tried to create a minimal example at 
  https://github.com/ska2342/nested-fn-breaks-clojure-17
 
  (I know the function itself is probably stupid, I just wanted to 
  demonstrate the case.  I don't know if it even runs.)
 
  Compilation breaks with a java.io.IOException: File name too long
 
 
  The problem seems to be the combination of
 
  * using a long function name (not a bad thing per se),
  * using a rather long name for a local binding (not common in 
  Clojure-land, used in my case for documentation of the intent of the anon 
  fn),
  * and using a name for the anonymous function (needed for recursion and 
  usually a good idea because it improves stacktraces, but maybe you added 
  the local binding to the name for exactly that reason).
 
  Regarding the second (long var binding name), my original function uses 
  shorter names, but has some nested constructs (for, cond, ...) which seem 
  to make the name larger, too.  There is really nothing unusually long there.
 
  Of course, I can work around this by using different names, factoring an 
  inner anon function out to a defn and probably in other ways.  I just 
  wanted to make sure, that you are aware that problems like this may show up 
  and made the change on purpose.
 
 
  Thanks,
  stefan
 
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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: CCW bug [SEVERE]

2014-10-31 Thread Luc Préfontaine
Just curious, how can you expect a fix if you do not provide any information 
that
could support a serious investigation ?

I read the eclipse log file from time to time and guessing which error is
relevant or not is an educated guess at best except if you are deep in
Eclipse plugins coding.

Creating an issue in the ccw project page takes under a minute including 
attaching
the log file.

If you expect the developer to find the root cause from thin air, you will wait
for eternity. Laurent is very proactive in investigating problems but w/o any 
grounds,
he's better having a glass of wine than trying to guess what happened here.

I would do the same...

Luc P.


 On Friday, October 31, 2014 2:24:04 PM UTC-4, Laurent PETIT wrote:
 
  Also, if you can attach the workspace's .metadata/.log file, I can take a 
  look at it. 
 
 
 I have no idea how to reproduce it, which is part of the problem: I don't 
 know what to avoid doing, in order to ensure it doesn't happen again until 
 an update to CCW fixes it for good.
 
 As for that log file, I had a look and there's nothing that identifies the 
 problem. The log entry immediately prior to the hang is a complaint that 
 some map literal has an odd number of forms, which I must have left 
 incomplete when I went to make that other edit. There are lots of other 
 similar entries, probably from other times I saved while there was a 
 half-written map literal on my to-do stack, and it didn't hang on any of 
 those other saves. The log entry immediately following that one is a 
 session start message. So whatever was different that one time does not 
 show up in the log, unfortunately, rendering the log unhelpful in this 
 instance.
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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: Demoralising experience trying to install on Win 7

2014-10-25 Thread Luc Préfontaine
Microsoft not wanting to confuse the end user ?!?!?!? 
I am baffled :)))

Luc P.


 I'll take a wild guess and say the flashing properly is a console with a
 message Microsoft don't want to confuse you with.
 
 That said, the message i get here, is that wget is missing. Leiningen ships
 with curl.exe.
 
 Not knowing any bat syntax at all,  i was enable to get lein.bat
 downloading by uncommenting the wget part out. One could try to move the
 curl part above wget also.
 
 Your lein.bat file might be in \Users\name\.lein\bin\lein.bat
 
 I'll create an issue on github. Thanks for noticing, good luck.
 
 /Kevin (mobile)
  On Oct 25, 2014 6:34 AM, Geoff Caplan ghcap...@gmail.com wrote:
 
  Hi
 
  Wanting to get Clojure running on a Win 7 machine with no diskspace for
  dual boot. It's been a demoralising experience.
 
  I tried the Win installer linked from the Leiningen website. It failed to
  download the Leiningen 1 jar - the shell simply flashed open and crashed.
 
  Dug around the git site and found a recent .bat file that's supposed to
  work with the latest Leiningen 2. Again, the shell flashed and crashed.
 
  Then manually downloaded the latest Leiningen 2 preview. Again running
  lein simply flashes and crashes the shell.
 
  There's been a recent open issue on Windows installation but it's supposed
  to be fixed.
 
  The lein.bat file is on my path and has exec permissions. I have Java 8
  SDK installed and healthy.
 
  Not sure where I go from here - any advice much appreciated.
 
  I'm dithering between Clojure and Haskell for my next project. The Haskell
  community provide a well-maintained batteries-included Windows install for
  GHCi - I was in the Repl 60 seconds after visiting their site. I've been
  struggling with Leiningen for an hour and getting nowhere.
 
  It seems a great pity that the Clojure community seem to be ignoring those
  of us who are stuck with Windows - it must be having a negative effect on
  the uptake of the language. I see that this has been an issue for years,
  but hasn't been addressed. I'm more drawn to Clojure than to Haskell, but
  if I can't get it running I'll be forced to go elsewhere. Please help

-- 
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: Modelling in Clojure

2014-10-18 Thread Luc Préfontaine
+1.

Two years ago we went all data driven here. We stripped the code size and 
complexity by
a huge factor. All data encapsulation code was sent to the trash can.

Our processing is driven by data more than by code. We ended up with a 
significant
increase in generic code not linked to the business domain and the rest is made 
up
mostly of DSLs.

What a relief

Luc P.


 On 18 October 2014 08:28, Mark Engelberg mark.engelb...@gmail.com wrote:
 
  Yeah, it's hard to deny the convenience of Clojure's keyword lookups and
  standard assoc mechanism for getting and setting stored values, but I think
  Bertrand Meyer's Uniform Access Principle reflects some pretty deep
  thinking about the kinds of complications that arise in maintaining large
  programs.  Although the Clojure community mostly rejects the Uniform Access
  Principle right now, as people start writing larger programs in Clojure,
  and need to maintain them for longer periods of time, it will be
  interesting to see if the pendulum swings back in favor of uniform access.
 
 
 You make it sound as if structuring an application around data, rather than
 APIs, is untested at scale. I'd argue the opposite: the only architecture
 we know works at scale is data driven.
 
 The largest systems we've developed, including the web itself, are data
 driven. Above a certain size, they have to be, due to latency and
 consistency concerns. Structuring a large system into isolated services
 that communicate with data is a tried and tested architecture.
 
 There may be a place for the Uniform Access Principle at the medium scale,
 where an application is large, but not so large it can't be hosted on one
 machine. I don't think the relative merits of data-driven vs. api-driven
 approaches has been proven at this scale.
 
 That said, I think there are reasons for betting on Clojure's approach.
 Ultimately it comes down to whether we try to *manage* complexity or
 *remove* complexity. The Uniform Access Principle falls in the former camp,
 along with OOP and encapsulation. They're tools to manage connections
 between components of a codebase.
 
 Clojure takes the more aggressive stance, and suggests that rather than
 managing complexity, we should be focused on getting rid of it wherever
 possible. For instance, where OOP languages try to manage state change
 though encapsulation, Clojure just removes mutable state entirely, or at
 least places it in confinement.
 
 Where complexity *can't* be removed, then we start to get Clojure code that
 begins to look similar to OO designs. Stuart Sierra's components, for
 instance, look somewhat similar to stripped-down objects. The difference in
 Clojure's approach is that these constructs are a last resort, rather than
 the norm.
 
 - James
 
 -- 
 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.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

-- 
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: Modelling in Clojure

2014-10-17 Thread Luc Préfontaine
Hi Phil,

At some point in time after a prolonged exposure to Clojure, my mind shifted,
I now think about my program flow as values, not containers being passed along.

I take the problem the reverse way to find out if there's a need for a var vs a 
fn and state
lifecyle.
Here's a short summary of my reasonning:

a) I just find out how long a value need to 'survive' to decide how to 
implement it's access
and its scope.

   Most of the time values are ephemeral so the answer is obvious, a local 
binding is enough
   if there's a need to name it.

b) If a value is required during the lifespan of the process then his scope is 
probably global
and a var is an obvious choice.

c) If a value reflects a state (as understood by clojure) that will change in 
time then an
atom or ref can be used. Then its scope determines if it will end up in a var
or not.

   I try to wrap a state lifecycle in a API. Most of the time leaking to the 
outside world involves
   too much refactoring, it may look simple at the beginning but you get caught 
in a
   forest fire at some point. 

d) I try to stay away from dynamic bindings except in rare cases (syntactic 
sugar for DSLs, ...).

e) I do not consider Java objects as values. Their internal mutation 
disqualifies them to me.

  They seldom make it in a var in my world except when there's no other choice
  (database connection pool, ...). I try to confine them at the edge of the 
code and wrap
  their access in a function.

  If possible I try to avoid leaking them to the outside world.

  I try to shorten their lifespan even if it means that they will get 
reallocated 
  more often.

  The main reason being that I want to avoid having to think about things like
  are they multithread safe ? To they have a finite lifecycle which prevents 
reuse ?

  They will get buried in a value as we know it in Clojure if they have to leak 
out.
  Makes it a bit harder to access them directly.

  If a Java object lifecycle has to leak, I wrap it in a API that relates to 
the application state,
  not to the object itself.

The net result is that my code has few vars aside from the functions themselves 
and less
state concerns.

I agree that it requires some brain cells rewiring. I went along that path the 
first year I
worked non-stop with Clojure.

Luc P.

 
 Actually, I think that this is a real problem with Clojure, and with
 data access. It is very hard to change between accessing a var as a
 value and through calling a value.
 
 I can give two concrete examples of this. First, in my library I used a
 var to store a factory object from a Java API. So I created one and
 stored it in a var. This worked well, in general, but when I integrated
 my library into an application, I realised that I need to get this
 factory object from elsewhere -- in short I needed a function call. So I
 had to change all of my `data-factory` calls to `(data-factory)`.
 
 Another time the same issue hit me was with Clojure's :doc metadata.
 This is stored as a string, but I wanted to be able to subvert this by
 calculating the string from the object containing in the var. As far as
 I can tell, this is impossible in Clojure without changing all the
 client code that accesses the :doc metadata.
 
 Java does not have this problem by common design patterns -- fields are
 declared private and always accessed through a function. If I understand
 things correctly, Scala avoids the problem in the same way, although it
 autocodes the accessors for you, so avoids the boilerplate.
 
 In Clojure, it seems the only way to avoid this would to wrap up values
 in `constantly` and access everything as a function.
 
 Phil
 
 -- 
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your 
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 --- 
 You received this message because you are subscribed to the Google Groups 
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.
 
--
Luc Préfontainelprefonta...@softaddicts.ca sent by ibisMail!

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

Re: ClojureDocs.org

2010-07-11 Thread Luc Préfontaine

We use Rails for all our GUIs,
we need simple CRUD most of
the time and we ActiveScaffold.

Most of our controllers are less than
70 lines and we seldom write forms.

We use the ActiveScaffold partial
forms almost every were sometimes
custpmizing them.

Clojure Web Frameworks are not
there yet.
We monitor the situation however
and will change our mind as soon
as it looks promiding...

Zack, keep the focus on the problem
to solve :)))

Luc P.

Sent from my iPod

On 2010-07-11, at 19:31, zkim zachary@gmail.com wrote:


Rich-


It sounded to me like he was only saying that he's more familiar with
Ruby/Rails than he is with Clojure.


Correct.  I think it was a fair question, and I'm happy to provide
insights into my decision making process.

-Zack

On Jul 11, 12:37 pm, Richard Lyman richard.ly...@gmail.com wrote:
On Sun, Jul 11, 2010 at 8:14 AM, Phil Hagelberg p...@hagelb.org  
wrote:
On Sat, Jul 10, 2010 at 11:23 PM, zkim zachary@gmail.com  
wrote:
but what do you think about using Justin's codebase, or an Aleph- 
based server to
host the thing instead of Ruby/Rails? (see the link above for  
more details)



I'm inclined to move forward with the Ruby / Rails for now.  The
reason I went with rails is that (in my experience) none of the
clojure web libraries are mature enough to do something like
clojuredocs as quickly and easily as I personally would be able  
to do

in rails.



Could you provide details about what it was specifically that you
found was lacking?



-Phil


It sounded to me like he was only saying that he's more familiar with
Ruby/Rails than he is with Clojure. It seemed like it was a question
of 'time to finish and tweak' that's shortest for him if he wrote it
in Ruby/Rails.

Maybe this is a good opportunity to be able to compare two
implementations side-by-side. His excellent solution with one written
in Clojure that produces the same-ish website.

-Rich


--
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 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: ClojureDocs.org

2010-07-10 Thread Luc Préfontaine

Zack if you need help with this Rail
app let us now. We can give you a
hand, the wish list keeps growing :)))

Luc P.


Sent from my iPod

On 2010-07-09, at 15:07, zkim zachary@gmail.com wrote:



Hi Justin, thanks again for the go-ahead to pull examples from
http://clojure-examples.appspot.com.


Zack, you had mentioned you planned to keep the source of your site
proprietary -- is that set in stone?


Definitely not set in stone.  As far as the site goes there's not much
Clojure going on there (rails / mysql), and I'd rather keep that part
closed for now so I can concentrate on moving from alpha to beta,
adding features, and fixing bugs.  The analyzer, which pulls
metadata / source from libraries, and inserts it into the database is
a different story.  Other than the fact that it's extremely hackish,
nothing's really stopping me from EPLing it in the near future.

You also mentioned an API / export process, which I think is a great
idea.  This would allow examples to be easily exported to prevent
vendor lock-in.

-Zack

On Jul 9, 12:44 pm, Justin Kramer jkkra...@gmail.com wrote:

I've told Zack that he is free to pull any examples from the wiki for
use on his site.

I don't know about collaboration beyond that. The wiki is open source
and written in Clojure; anyone is free to contribute/fork. At least
one person has expressed interest in making code contributions.

Zack, you had mentioned you planned to keep the source of your site
proprietary -- is that set in stone?

Justin

On Jul 9, 12:21 pm, David Nolen dnolen.li...@gmail.com wrote:




On Fri, Jul 9, 2010 at 4:32 AM, zkim zachary@gmail.com wrote:



Questions / thoughts?



-Zack


This is great. I think the main thing is not duplicating effort.  
This and

clojure-examples.appspot.com should really join forces.



David


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

To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


--
You received this message because you are subscribed to the Google
Groups Clojure group.
To 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 for NSF grant funding

2010-07-07 Thread Luc Préfontaine

Here in Canada we have a number
of programs for RD and the
bureaucratic burden is not worth
the $$$ you get back for it except
if you a budget in the 6 digits range.

And if you want to get the paper done
by a consultant, he/she will charge
20% of the expected refund.

I looked at the NSF documentation
and I am not convinced that the
red tape is minimal.

You certainly loose some flexibilty
by having to get scope changes
approved by them.

Anyone got involved with them ?

Luc P

Sent from my iPod

On 2010-07-07, at 14:49, David Blubaugh davidblubaugh2...@gmail.com  
wrote:



To All,


I am extremely interested in LISP and Clojure.  I was wondering if it
would be possible to obtain NSF grant funding for further development
of Clojure ??

thanks,

David Blubaugh


--
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 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: Let's respect CLOJURE_HOME

2010-07-01 Thread Luc Préfontaine

We use a HOME reference in our
quite complex software and I think
we do not qualify as n00bs...

Any root symbol that can help derive
locations is just common sense to
us. It's not used internaly in our code
(Clojure/Java/Ruby)
but it's obviously a simple way
to bootstrap our apps and establish
a common ground in the supporting
scripts we use.

It helps structuring the file space were
all our components reside in dev test
and prod.

Honestly, by the time this thread ends
on that simple and obvious matter,
Clojure 1.5 will be released...


Luc P.

Sent from my iPod

On 2010-06-30, at 17:48, Greg g...@kinostudios.com wrote:


However, I don't see it helping newcomers to Clojure significantly


With respect, I'm a newcomer to Clojure, and the CLOJURE_HOME  
convention would help me significantly. :-)


I think something that needs to be acknowledged is that newcomers  
and n00bs are not necessarily idiots, they're just new to the  
platform, and they're coming from places where, as Brian pointed,  
they're used to there being a central location for things  
(PYTHON_HOME, ANT_HOME, etc.).



Lieningen or maven don't really fit with this approach as they treat
the clojure platform as just another library dependency.


Yet Maven has a MAVEN_HOME. :-)

Even if Leiningen/Maven ignore CLOJURE_HOME, that's fine, it  
certainly doesn't hurt to adopt CLOJURE_HOME as a convention for  
scripts that currently hard-code clojure.jar's location, or download  
it themselves, wasting space and adding confusion. When that happens  
it's hard to know what version of Clojure these scripts are running,  
and it makes it unwieldy then to interface it with your own code. A  
problem, I think, that doesn't just affect newcomers to Clojure.



and I'm not sure this is something we should really try and hide.


CLOJURE_HOME doesn't hide anything, it's set by the user after all.

Cheers,
Greg

On Jun 30, 2010, at 5:17 PM, Rick Moynihan wrote:


On 30 June 2010 21:14, Brian Schlining bschlin...@gmail.com wrote:




May I propose as a possible remedy CLOJURE_HOME. CLOJURE_HOME is  
the

absolute path of a directory containing clojure.jar and possibly
clojure-contrib.jar. Scripts should check if it's defined and  
use it instead
of hard-coded paths, as an example, here's my clj script (in  
newLISP):


On the face of it this seems like a good idea, however it doesn't
really fit with the models used by tools such as leiningen, mvn  
or the
JVM.  At best a CLOJURE_HOME initiative can only expect to work  
within

its own world of clj scripts etc.


I can't speak for leiningen but many (most?) launcher script in  
the Java
world use this as a standard convention. If you look through the  
launcher

scripts for maven, groovy, scala, ant, etc you will see environment
variables JAVA_HOME, M2_HOME (for Maven 2), GROOVY_HOME,  
SCALA_HOME and

ANT_HOME.


This is true.  And I agree that where scripts are used this technique
can be useful.  And in this regard it's a good convention.

However, I don't see it helping newcomers to Clojure significantly,  
as

the classpath issues people face are the deeper issue.  Also teaching
newcomers that this is the convention isn't really true, as tools  
like

Lieningen or maven don't really fit with this approach as they treat
the clojure platform as just another library dependency.

Clojure doesn't yet have a standard launch script.  In the past I've
argued that it'd be nice if it had one, though I now feel lein/mvn  
are

better tools for this job.  That said, having a clj launch script can
be useful, and might ease the out of box experience, but again the
true launcher will always be the java JVM executable, and I'm not  
sure

this is something we should really try and hide.

R.

--
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 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 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: Managing the classpath

2010-07-01 Thread Luc Préfontaine

Yep, we have been using this for a
year or so and this solves the
classpath/jar file location issue nicely.

Hence the usefulness of CLOJURE_HOME and alikes to locate
this single folder from a very simple wrapper script...

Luc P.

Sent from my iPod

On 2010-07-01, at 10:29, Laurent PETIT laurent.pe...@gmail.com wrote:


Hello,

note that with java 6 you can specify at once to add all the jars
located in a directory:

java -cp libs/* clojure.main

and you can place any jar you want in directory libs.

and this is composable:

java -cp clojure.jar:libs/* clojure.main

My 0.02€, just in case you didn't know this (rather recent) possibil 
ity.


2010/7/1 Paul Moore p.f.mo...@gmail.com:

First, a disclaimer - I don't have any problem with the idea of the
classpath in Java. In principle, it's pretty similar to Python's
sys.path. And jar files are much like Python having zip files on
sys.path. So I'm familiar with the idea.

Where I struggle is with the practicalities of managing the  
classpath.

From what I can tell, there is no way of modifying the classpath from
a running Java/Clojure program (barring use of a custom classloader
which sounds like deep magic). So, assuming that is right, I need to
list my dependencies in advance, when I start the JVM (either by
setting the CLASSPATH environment variable, or with the -classpath
argument).

Generally, I avoid using global environment variables like  
CLASSPATH

(except if they are locally set in a wrapper script), so I guess that
I have the following options for my Clojure applications:

* Use something like lein uberjar to wrap all my dependencies up in  
one file

* Create an application-specific wrapper, which sets CLASSPATH (or
uses -cp) and runs my application

I have personal reservations about both of these options (I won't
elaborate, to avoid boring people with my prejudices - ask if you
really want to know) so I guess my question would be - is there
another option I have missed?

Python doesn't have these issues because (a) conventionally,
dependencies are installed into the site-packages directory which is
on the standard sys.path - it appears to me that the JVM doesn't have
such an always available install location, and (b) for special  
cases

sys.path can be manipulated at runtime (as noted above, the JVM
doesn't really have this option).

One further question - does having a lot of entries on CLASSPATH slow
down JVM code (either at startup time, or in terms of slowing down
runtime class loading)? Essentially, is there a cost to including
things like clojure-contrib just in case? (I don't imagine that the
cost would be significant for just one such case, but I could imagine
that if the practice were to become common, it wouldn't be long  
before

there were many extra entries, not just one).

I appreciate that this question is only tangentially Clojure-related.
If there is a better forum to discuss this type of question, please
feel free to direct me there.

Thanks,
Paul.

--
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 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 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: Managing the classpath

2010-07-01 Thread Luc Préfontaine

We have over 130 jar dependencies
on our classpath and performance is
not an issue. After the classes you
are using are loaded at least once,
there are no significant impacts.

Each app refers to the same shared lib
folder so we update a single jar and
get every app gets the update after
a restart.

Very different from a uberjar.
Every uberjar would have to
be repackaged to include the updated
jar.

We use uberjars to deliver desktop
apps. We do not update these as
often as the back end and avoid
dealing with the desktop
environment as much as possible.

Back end stuff use the shared
jar folder.

Luc P

Sent from my iPod

On 2010-07-01, at 10:49, Paul Moore p.f.mo...@gmail.com wrote:


On 1 July 2010 15:29, Laurent PETIT laurent.pe...@gmail.com wrote:

Hello,

note that with java 6 you can specify at once to add all the jars
located in a directory:

java -cp libs/* clojure.main

and you can place any jar you want in directory libs.

and this is composable:

java -cp clojure.jar:libs/* clojure.main

My 0.02€, just in case you didn't know this (rather recent) possib 
ility.


Thanks. I had actually just discovered this possibility in the last
few days. In fact, it is what raised in my mind the question of
whether having too many jars on the classpath would hurt performance.
I've not yet fully integrated the idea into my thinking.

I guess it allows the possibility of bundling all application
dependencies into a lib directory, then doing something like java -cp
clojure.jar;lib/* clojure.main myapp.clj

But in practical terms, I guess that's the equivalent of an uberjar.
(My biggest concern about an uberjar is that I end up with each app
having a separate bundled copy of all its dependencies. That makes
version management a huge pain - imagine a bugfix release of
clojure.jar - but is otherwise not an unreasonable option).

Paul.

--
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 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: Newb Question

2010-06-28 Thread Luc Préfontaine

(apply str (repeat 3 code))

should start you up :))

Iteration is implicit in Clojure, you
work on collections (maps, vectors, ...)
and you avoid explicit loop controls
most of the time at least for
mundane tasks.

You will get used to it, we all did and
no one wants to return to
java iterators now :)))

Luc P.


Sent from my iPod

On 2010-06-27, at 14:22, José Luis Romero tangu...@gmail.com wrote:


Hi! I am learning the core of clojure, and so far, I am loving it. But
I am not a lisp programmer (python, java, among others), but never
functional programming. I am practicing with codingbat.com, coding the
exercises on clojure. I am stuck with loops. I want to concatenate n
times a string. For example, given the parameters 3 and code the
output will be codecodecode. How can I do a loop in order to get
this output.

I know that this is a very newb question, any help will be
appreciated.

--  
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 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: State of Clojure web development

2010-06-25 Thread Luc Préfontaine

Were not using Clojure yet for our
Web based GUIs.
The main reason being that we jumped
on Rails last year. Most of our needs
are to display/edit database data and
the ActiveScaffold plugin allows us
to write a controller in 20 lines.

We do not need to write forms,
it's all done through partial renderings
provided by the plugin.

We just provide layouts and customize
CSS stuf.

We will give a closer look to
Compojure this year and see if can
achieve the same code ratio somehow.

Luc P

Sent from my iPod

On 2010-06-24, at 12:27, Daniel Gagnon redalas...@gmail.com wrote:

I don't use Clojure for web development and I thought sharing why  
could be useful too.


For web development, my favourite tool is Django. It comes as a  
fullstack framework which means I have everything I need out of the  
box. Templates, caching, ORM, a kick-ass autogenerated admin  
section, cross-domain request forgery protection etc. and the  
documentation is really top notch.


I'd rather have Clojure than Python but all the goodness that Django  
provides is such a time saver that I feel I'd lose too much time  
with Clojure.


If I had a full-stack, well-documented clojure framework, I'd jump  
to that.

--
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 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: Enhanced Primitive Support

2010-06-22 Thread Luc Préfontaine


++1 for auto promotion, average code
is complex enough, lets not add
more incertainty with overflow
exceptions.

Data changes overtime and
discovering it in production with
an overflow exception is less than
elegant.

Degraded performance is much more
acceptable in production than a crash
over an unhandled exception 

Again, if performance is critical for
a library or an application then it's up
to its designer to take action.

For the other folks, they will get
the best implementation according
to the number size they crunch in
their data. No need for them to pay
the price for control they do not
need yet.

Luc P

Sent from my iPod

On 2010-06-22, at 12:44 AM, Mark Engelberg mark.engelb...@gmail.com  
wrote:



The new uber-loop is fantastic.

So I guess the main point still to be finalized is whether the default
arithmetic ops will auto-promote or error when long addition
overflows.

Playing around with the latest equals branch:

user= (def n 9223372036854775810)
#'user/n

user= (* (/ n 3) 3)
9223372036854775810N

user= (* (/ n 2) 2)
java.lang.ArithmeticException: integer overflow

user= (def x (/ n 4))
#'user/x

user= (+ x x x x)
9223372036854775810N

user= (+ (+ x x) (+ x x))
java.lang.ArithmeticException: integer overflow

user= (range (- n 2) n)
(9223372036854775808N 9223372036854775809N)

user= (range (- n 3) n)
java.lang.ArithmeticException: integer overflow


I understand exactly why some of these work and some of these don't.
My main point here is to illustrate that without the full numeric
tower supported by the default ops, there can certainly be some
surprises.  There is a pathway with the standard ops from longs to
rational numbers to bigints, but you can't cross directly from longs
to bigints.  Similarly, you can roundtrip from bigints to rationals
and back, but can't roundtrip from bigints to longs and back.  So the
results of computations depends on the path you follow.  Maybe we can
live with these idiosyncrasies for the speed benefits, but this is
worth being aware of.

The range example is something that is easily enough fixed.  Probably
if this branch becomes the standard, range should be modified so that
if the *upper bound* is a bigint, inc' is used rather than inc to
generate the range.  But I think this illustrates the kinds of issues
we're headed towards, regardless of which default is chosen -- people
who write libraries will be choosing between overflow and auto-boxing
primitives, and it might not always be clear from documentation what
the consequences are.  In the current implementation of range, it
works perfectly fine with longs, and it works perfectly fine with
bigints, but it breaks when your lower and upper bounds cross the
boundary.  This is exactly the kind of thing that might not be thought
of when making test cases, so errors like this could lurk for quite a
while without being spotted.

The people on the side of overflow-error-as-default feel that these
sorts of runtime errors are no more problematic than the many other
sorts of runtime errors that can result in Clojure, such as an
out-of-bounds exception when accessing a vector.  But I see these
types of errors as very different.  An out-of-bounds exception is easy
enough to prevent -- there is a simple test you can include in your
code to make sure your index is in bounds before you access your
vector.  But I think it's much harder to determine in advance whether
a sequence of computations will cross the long boundary for all the
possible inputs.

This is probably the main reason I continue to advocate for
auto-promoting ops as the default.  Error-upon-overflow adds an
element of run-time risk, and requires careful thought and additional
testing to achieve the same level of reliability.  I *want*
error-upon-overflow operations to be slightly harder to use so that
library writers will use them judiciously and consciously, and be very
aware of the extra effort they need to go to test their functions for
all numbers, clearly documenting any restrictions on the kinds of
numbers that are permitted.

Like I said before, Clojure's built-in range can easily be adjusted to
work well for speed *and* handle both longs and bigints gracefully.
But it serves as a good example of how the two defaults will affect
library writers.  If auto-promotion is the default, most library
writers will just use the +,*,-,inc,dec operators and it would work
for all numbers right out of the box.  A library writer who wants to
optimize for speed would have to go to a bit of extra effort to add
the apostrophes, and would hopefully at that point give some careful
thought as to what the consequences will be, catching the fact that
this will break ranges that span from longs to bigints, and adjusting
the code accordingly.  On the other hand, if overflow-on-error is the
default, this is what most people will use, and we'll end up with a
lot of code that breaks when crossing the long boundary.

I don't use any bigints, or anything even close to 

Re: Enhanced Primitive Support

2010-06-22 Thread Luc Préfontaine

If the maintenance cost of
keeping both options in the Clojure run
 time is reasonnable it's fine with me.
Rich is the best person to answer this.

Otherwise, auto promotion should be
the winner... And the default ...

The vast majority of apps these days
are not gravitating around high
performance numeric computations.

Forcing people to deal with this in mundane code would be insane
in the long run.

Reminds me of C in the early days when we needed to keep and eye on
what was a byte, a short, an int
or a long on the different hardware platforms...

If we want Clojure to remain a viable
option lets keep some usage simplicity
a primary goal.

When I want to scratch every bit of
performance, I expect to kick my butt
out to get it but after I have some
working code running, not while I scratch my head about getting it done.

Proposals up to know regarding
specific operators for various
implementations provide plenty of
options to attain the nirvana of
high performance.  That's good.

Lets just make things easy for the
average guy..,

Luc P

Sent from my iPod


On 2010-06-22, at 7:53 AM, Nicolas Oury nicolas.o...@gmail.com wrote:

On Tue, Jun 22, 2010 at 12:45 PM, Luc Préfontaine lprefonta...@softaddicts.c 
a wrote:


Data changes overtime and
discovering it in production with
an overflow exception is less than
elegant.

Degraded performance is much more
acceptable in production than a crash
over an unhandled exception 

Depends in which production.
That's why I defend a way to choose default.


--
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 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: Enhanced Primitive Support

2010-06-22 Thread Luc Préfontaine

As the implementor Rich, it's your
call as I said :))
If auto promotion brings in chaos
then lets drop it entirely.

If people want to eat elephants they can still choose to use directly  
big number

implementations.

Luc P

Sent from my iPod

On 2010-06-22, at 10:46 AM, Rich Hickey richhic...@gmail.com wrote:



---
The claim that this primitive stuff is just for numeric-intensive  
applications is outrageous and false, and ignores the implementation  
of Clojure itself to an embarrassing degree. I've worked my tail off  
to reduce the number of allocations inside things like sequences etc  
to the absolute minimum. Now down to 1 per step, and with chunks  
1/32 per step. Moving from 1 to 2 or 3 per step would result in a 2x  
to 3x slowdown for every consumer of these fns.


Everyone has to realize the math you are advocating for the default,  
on non-tagged architectures like the JVM and CLR, *must* do an  
allocation on every +/-/* etc operation. And such ops are littered  
throughout non-numeric data structure code, for indexes, offsets,  
bounds etc. Allocating on every math op in something like the  
persistent vector would make it completely unusably slow.


The languages being pointed to (Ruby, Python, Mathematica) write  
their hard bits in C, or, for the J versions, Java.


Well, guess what, all of the things I've written in my career have  
been hard bits. Those languages were unusable for any of my  
production work, for performance reasons. I wrote Clojure so I could  
stop writing Java and C#, not Ruby, because I couldn't have used  
Ruby in the first place.


And, I think some people are considering moving from Ruby to  
Clojure, for the hard bits of their systems, in part *because*  
Clojure has a better performance profile, their alternatives being  
Java or Scala, not Python or Groovy.


Now you're all sitting on the end of the food chain, eating gazelles  
and saying, 'who needs photosynthesis to be easy'?


;-)

I do. And so do you if you appreciate fast gazelles. You wouldn't be  
able to use a Clojure written in the default Clojure you are  
advocating.


Rich

--
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 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: Enhanced Primitive Support

2010-06-20 Thread Luc Préfontaine

I find these compromises quite
acceptable. Tuning code has always
been a last step in most dev. projects
I worked on except a few and I worked
on many resource constraint
platforms.

All languages I encountered had a
default integer/float implementation
and getting away from it rarely
occured but was doable if needed
either through some coding
trickery or compilation flags.

The mass majority need a simple
approach/implementation and this
proposal meets this requirement.
Having to care about the number sizes
is not the first design concern.

As for callers using the default implementation, some API trickery could
allow them to call a library using a
different implementation and get
return values in a compatible way
if it makes sense.

Specialized libraries could still force
callers to use the same implementation if you really need the same  
performance or

precision in you own code.

For specialized arithmetic implementations,
I find the namespace approach
interesting. It may prove valuable
since at a glance the implemtation
chosen by any piece of code
 would be pretty obvious.

Changing from one implementation
to another one could possibly be
easier to do with this approach.
Swapping the name space or adding
one to overload the default one
is quite practical.

The line by line annotation is a
painful approach to such changes and
should be only required in rare cases
(mixed operand computations ?)


Luc P.

Sent from my iPod

On 2010-06-20, at 6:39 AM, Nicolas Oury nicolas.o...@gmail.com wrote:


It seems to me that there is mainly 2 categories in this thread:

- people that are worried about the difficulty to understand and to  
code with the throw-on-overflow semantic. They worry about  untested  
cases showing in production code and the steeper learning curve of  
the language. (I am not of this side, so please forgive me if I  
don't understand the argument well enough)


- people that are annoyed to lose some speed everywhere in programs,  
in a way that can't be easily profiled or solved without annotating  
every lines. People that also believe it is rare and predictable to  
overflow a long.


I think both arguments are valid, and that most people won't change  
their mind on this subject.
In consequence, I would like to advocate a proposal along the lines  
of:
- A set of operations per return size, labelled by their size. +- 
long, +-boxed, +-float,+-double ... (I am not good with name, so I  
am sure other people can come with better names) . They are  
overloaded on their arguments, but indicate return size (I think  
that's what the last branch does, but then again I might be totally  
wrong).

- A set of operation without annotations : +, - ,...

By default, these operators map to +-boxed, --boxed,...
This solves the worries about the steep learning curve, because for  
beginners the story stops here.


There is a flag allowing to change the default value, (or a  
namespace trickery, but it make it harder to apply to library code).


That should come with some coding convention:
- use +-boxed when you write a function that creates int  
exponentially bigger that its argument. (fact is in this category)
- use +-long when you write code abound integers bound to a  
resource  (indices, counters and the like...)
- use the untagged operators in the other situations, +-boxed when  
in doubt.


I would also advocate that there should be a +-small family that is  
either +-long or +-int depending on the platform. (+-long on modern  
computers, but open the way to +-int on phones, or +-double on  
Javascript platform where there is no integer, if I am no wrong.)


For those worrying about a semantic-changing flag, I would like to  
note that it is not semantic-changing, it is only resource-size  
changing.
You answer the question : what is the size of an integer? It is not  
different than choosing your heap size.


If you don't have enough resource there is an exception (not a  
silent failure, so this is safe) and you can add more resources.


I like this because:
- it gives a clear story for beginners
- it gives an easy way for people having very important production  
code (like a server), that does not need very high performance
- it gives an easy solution for people having some code that need  
higher performance

- it paves the way for other platforms
- it is a pay-as-you-go approach, you don't have to understand any  
of that before you need it.


What do you think?

--
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 post to this group, send 

Re: Enhanced Primitive Support

2010-06-20 Thread Luc Préfontaine

I would expect a library to internaly
work with whatever is the best
implementation and provide an API
to allow callers using another implementation to use it.

I also expect a library to complain
about a potential overflow
and maybe some precision loss.

That's not different from what you can
see on many platforms over the last 20
years. Multiple float implementations
existed on the same platforms for
years and you had to choose one
considering performance and precision.

Of course this requires some discipline
by the library provider but the
performance requirements may dictate
that choice depending on its purpose.

Luc P.

Sent from my iPod

On 2010-06-20, at 8:35 AM, Paul Moore p.f.mo...@gmail.com wrote:


On 19 June 2010 15:26, cageface milese...@gmail.com wrote:

Maybe it's only because I'm coming from Ruby, in which number
promotion is automatic and everything is slow, but if I have to  
choose

between correctness and performance as a *default*, I'll choose
correctness every time. I think there's a good reason that GCC, for
instance, makes you push the compiler harder with compiler flags if
you want to squeeze extra performance out of a program and accept the
corresponding brittleness that it often brings. I also always thought
that the transparent promotion of arithmetic was one of the strongest
selling points of Common Lisp.

My impression has always been that performance of numerics is rarely
the bottleneck in typical code (web stuff, text processing, network
code etc), but that unexpected exceptions in such code are the source
of a lot of programmer heartache. On the other hand, I think 99% of
the cases in which I've had a number exceed a 64 bit value were also
examples of errors that might as well have been exceptions because
they indicated a flaw in the code.


s/Ruby/Python/ and this is pretty much precisely my view.

I haven't yet hit this situation in Clojure, but a common type of
program I write is to collect and summarise database stats for a range
of systems we support. Here, tablespace sizes range from a few
hundreds of MB, to the half-terabyte mark. To handle these types of
figure, big integers are a necessity - but common test cases don't
need big integers. I understand that, by judiciously scattering
annotations around in my code, I can ensure that I don't hit primitive
integer size limits. I'm not sure that I'll have enough understanding
of numeric limits and promotion behaviour to know *where* to put
annotations, so I'll likely just scatter them round until I stop
hitting bugs (I would assume here that people for whom numeric
performance is crucial will be a lot more expert in numeric behaviour
and so will be better able to annotate precisely, but I accept that's
nothing more than an assumption).

But suppose I want to use some library code - for example, something
like clojure.contrib.accumulators, to summarise my data. It's not
clear to me from the things I've read whether I can expect it to work
with the big numbers I'm giving it. The documentation says nothing, as
it was written before this change. So do I have to read and understand
the code? If library code *won't* just work by adapting to the types
given to it, will we end up with a split between bignum and primitive
libraries? It seems to me that many of these libraries would be just
as good for people wanting fast math as for people like me slinging
about big numbers like disk file sizes.

The it's only about which is default argument is fine (I contend
that people wanting performance are likely to be the more numerically
expert and hence the better capable to enable non-default behaviour,
but that's just my view). But if libraries get split into
bignum-supporting vs fastnum-supporting, that seems to me to be a far
more significant issue.

Paul.

Paul

--
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 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 use clojure-contrib library

2010-05-12 Thread Luc Préfontaine
I checked and yes it's a 1.2 feature in contrib. So check out the master
branch of both projects (clojure and clojure-contrib) and build them
to get the latest snapshots. Beware that the jar file names will not be
the same so change your class path accordingly.

Luc

On Tue, 2010-05-11 at 22:57 -0700, Mat wrote:

 Looking at the source in the master branch on Github, string.clj is
 present, but if I look into the 1.1.x branch, it's not.
 I will try to checkout the source from Github and compile it directly.
 
 Matteo
 
 On May 12, 7:51 am, Mat matteo.manferd...@gmail.com wrote:
  Luc,
 
  I'm using the latest one, v1.1.0. I downloaded it 
  here:http://code.google.com/p/clojure-contrib/downloads/list
  I'm using the same version for clojure.jar.
 
  The strange thing is that when I inspect the content of the jar, there
  is no clojure/contrib/string, but only clojure/contrib/str_utils and
  clojure/contrib/str_utils2.
 
  Also looking into the source folder, I can't find sting.clj, but only
  the two I mentioned.
 
  This leaves me puzzeled. Maybe in the last version of the contrib
  libraries the string class was stripped?
  Thank you.
 
  Matteo
 
  On May 12, 4:18 am, Luc Préfontaine lprefonta...@softaddicts.ca
  wrote:
 
 
 
 
 
   Matteo,
 
   which version of clojure-contrib are you  using ? The latest has the
   String class but an earlier version may not have it.
   To see the content:
 
   jar -tf clojure-contrib.jar
 
   You should see a string.clj in the list of components in the library and
   some string$xxx.class files. If not you are using an older snapshot.
   Make sure the versions of Clojure and contrib are compatible (either all
   1.0, all 1.1 or latest 1.2 snapshots) otherwise you will end up with
   strange behaviors.
 
   Luc
 
   On Tue, 2010-05-11 at 14:15 -0700, Mat wrote:
On May 11, 7:41 am, Mat matteo.manferd...@gmail.com wrote:
 Thank you very much, this time it worked perfectly.
 I knew it was very easy, but I could not figure it out not having all
 that java/shell experience.
 
I'm sorry to bother you again with this silly question, but on the
contrary of what I said I'm still not able to use the library (it was
a quick test on starting the REPL).
 
Now I'm able to start the REPL using:
 
java -cp clojure.jar:clojure-contrib.jar -server clojure.main
 
(I forgot to mention that I'm on a OS X 10.6 machine). Inside of it
I'm still unable to use the library. If I load a file with load-file
or I try to type the following:
 
(ns mynamespace
  (:use clojure.contrib.string))
 
as written 
onhttp://richhickey.github.com/clojure-contrib/string-api.html,
I still get the following error:
 
java.io.FileNotFoundException: Could not locate clojure/contrib/
string__init.class or clojure/contrib/string.clj on classpath:
(NO_SOURCE_FILE:2)
 
Could be a problem in the file placement? As I understood all I need
are the jars (clojure.jar and clojure-contrib.jar).
Thank you very much.
 
Matteo
 
   --
   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 
   athttp://groups.google.com/group/clojure?hl=en
 
  --
  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 
  athttp://groups.google.com/group/clojure?hl=en
 

-- 
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 use clojure-contrib library

2010-05-11 Thread Luc Préfontaine
Oups, I stopped using windows for so long that I forgot about the
semi-colon thing :)))

That frees a lot of memory for other stuff...

Luc

On Tue, 2010-05-11 at 08:38 +0200, Michael Wood wrote:

 On 11 May 2010 03:30, Luc Préfontaine lprefonta...@softaddicts.ca wrote:
 
  Hi,
 
  The trick is to get contrib on the class path of java so it can find the 
  content of the library.
  The class path defines were Java will search for the components (classes in 
  Java) to load while running.
  Clojure code is compiled on the fly and ends up as a being loaded as a Java 
  class and may be present
  in libraries either as .clj files or as pre-compiled Java classes (.class 
  files).
 
  So:
 
  java -cp clojure.jar:clojure-contrib.jar -server clojure.main
 
  clojure.main being the main program called (in this case it starts a REPL) 
  and -cp (ClassPath) being the list of librairies you want to
  use.
 
  The libraries are colon delimited and I think it's the same on both Windows 
  and u*x.
 
 No, on Windows you have to use the semi-colon (;) because the paths
 can include colons (e.g. C:\path\to\something.jar).
 
 Other than that everything's the same.
 
 -- 
 Michael Wood esiot...@gmail.com
 

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

Re: How to use clojure-contrib library

2010-05-11 Thread Luc Préfontaine
Matteo,

which version of clojure-contrib are you  using ? The latest has the
String class but an earlier version may not have it.
To see the content:

jar -tf clojure-contrib.jar

You should see a string.clj in the list of components in the library and
some string$xxx.class files. If not you are using an older snapshot.
Make sure the versions of Clojure and contrib are compatible (either all
1.0, all 1.1 or latest 1.2 snapshots) otherwise you will end up with
strange behaviors.

Luc



On Tue, 2010-05-11 at 14:15 -0700, Mat wrote:

 On May 11, 7:41 am, Mat matteo.manferd...@gmail.com wrote:
  Thank you very much, this time it worked perfectly.
  I knew it was very easy, but I could not figure it out not having all
  that java/shell experience.
 
 I'm sorry to bother you again with this silly question, but on the
 contrary of what I said I'm still not able to use the library (it was
 a quick test on starting the REPL).
 
 Now I'm able to start the REPL using:
 
 java -cp clojure.jar:clojure-contrib.jar -server clojure.main
 
 (I forgot to mention that I'm on a OS X 10.6 machine). Inside of it
 I'm still unable to use the library. If I load a file with load-file
 or I try to type the following:
 
 (ns mynamespace
   (:use clojure.contrib.string))
 
 as written on http://richhickey.github.com/clojure-contrib/string-api.html,
 I still get the following error:
 
 java.io.FileNotFoundException: Could not locate clojure/contrib/
 string__init.class or clojure/contrib/string.clj on classpath:
 (NO_SOURCE_FILE:2)
 
 Could be a problem in the file placement? As I understood all I need
 are the jars (clojure.jar and clojure-contrib.jar).
 Thank you very much.
 
 Matteo
 

-- 
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 use clojure-contrib library

2010-05-10 Thread Luc Préfontaine
Hi,

The trick is to get contrib on the class path of java so it can find the
content of the library.
The class path defines were Java will search for the components (classes
in Java) to load while running.
Clojure code is compiled on the fly and ends up as a being loaded as a
Java class and may be present
in libraries either as .clj files or as pre-compiled Java classes
(.class files).

So:

java -cp clojure.jar:clojure-contrib.jar -server clojure.main

clojure.main being the main program called (in this case it starts a
REPL) and -cp (ClassPath) being the list of librairies you want to
use.

The libraries are colon delimited and I think it's the same on both
Windows and u*x.

-server is used for performance reasons. It modifies the behavior of the
Java virtual machine and makes it run faster
for our purpose.

This should get you started.

Luc




On Mon, 2010-05-10 at 14:48 -0700, Mat wrote:

 Hi all,
 I am totally new to clojure and this is a very simple question, but I
 spent the last two hours trying to figure this out and I need help.
 
 I'm not able to use the clojure-contrib library and I am not able to
 find instructions here on this group and anywhere on the web. Maybe
 because this should be easy, but for me it isn't.
 
 I downloaded the clojure-contrib.jar but I can't find anywhere
 instruction on the set-up (where to put the file, if some else is
 needed, ecc) to begin with.
 
 Actually I have the clojure-contrib.jar file in the same directory as
 the clojure.jar, but I don't know how to run it.
 
 I've tried running the REPL normally, but when try using
 
 (ns mynamespace
   (:use clojure.contrib.string))
 
 in my code file (or using :require in place of :use) i get this error:
 
 java.io.FileNotFoundException: Could not locate clojure/contrib/
 string__init.class or clojure/contrib/string.clj on classpath:
 (NO_SOURCE_FILE:2)
 
 I thought then that the library must be loaded in the same command
 with clojure.jar. I tried to look on the web and found some script and
 I tried to figure out what to do from them. What I tried last is
 
 java -cp clojure.jar clojure.main clojure-contrib.jar
 
 and I get this error
 
 Exception in thread main java.lang.Exception: Unable to resolve
 symbol: PK in this context (clojure-contrib.jar:0)
 
 I'm not sure that what I'm doing is correct, but it's all I was able
 to figure out in two hours of trial and error. I don't know anything
 about running java from the command line. Every page I find on the
 internet on clojure-contrib just assumes that everything works and
 just uses the library.
 
 I hope that someone can help me.
 Thank you very much.
 
 Matteo
 

-- 
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: 1.2 release ?

2010-05-04 Thread Luc Préfontaine
My previous post got lost in a black hole somewhere... so lets type a
shorter version:

Yeppee !

That's a perfect match with my schedule for the next 6 months.
We will launch our new projects under 1.2 and port the existing code to
it in the following weeks.
Our next major deployment toward fall will use 1.2 and by then we should
have tripped over most of the problems
in our code.

Good  occasion to do some code reviews...

Thank you,

Luc P.

On Tue, 2010-05-04 at 09:28 -0400, Rich Hickey wrote:

 On May 3, 2010, at 10:26 PM, lprefonta...@softaddicts.ca wrote:
 
  Hi all,
 
  it's not that I want to put pressure on anyone here but there has  
  been a number
  of discussions about the 1.2 release and I was wondering what's the  
  horizon for
  a first release ?
 
  We are still in prod with 1.0 but some are salivating about some of  
  the features
  of 1.2. We did not move to 1.1 and are expecting to directly jump to  
  1.2.
 
  I just wonder when I can release the gate and let people here code  
  with 1.2
  for a future deployment in production... I am juggling with the dev  
  schedule
  tonight.
 
  No need to post answers à la Orson Wells, we will not release 1.2  
  before its
  time, if no answers get posted I'll send people on an ice bank  
  somewhere to cool
  off during summer vacations :)))
 
 
 We are hoping to go code complete on the features listed for milestone  
 1.2 within a week or so:
 
 https://www.assembla.com/spaces/clojure/tickets/custom_report/2729
 
 That will be followed by a bug-fix-only beta period (insert Wellesian  
 comment here), then an RC, followed by release.
 
 I'd like everyone to get on the beta as soon as it is available so it  
 gets a thorough workout, as several things have shifted around.
 
 If nothing serious comes up during beta, we could be 4-6 weeks away.
 
 Rich
 

-- 
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: Slides for short (45 minutes) presentation of clojure for java devs

2010-04-22 Thread Luc Préfontaine
Is there a Dutch version of Clojure ?!?!?! I want one in French
then :
(Laurent you just said you like to be bashed  didn't you ? :)))

Luc

On Thu, 2010-04-22 at 15:09 +0200, Laurent PETIT wrote:

 Could I still take a look at it, to see the kind of examples you
 provided (are the source code examples in english ?)
 
 2010/4/22 Laurent PETIT laurent.pe...@gmail.com:
  2010/4/22 Joop Kiefte iko...@gmail.com:
  I made one simple and short one for beginners, I think to your liking, but
  in Dutch...
 
  too bad I don't speak Dutch :-(
 
 
  2010/4/22 Laurent PETIT laurent.pe...@gmail.com
 
  Oh, really no answer ? :'(
 
  2010/4/21 Laurent PETIT laurent.pe...@gmail.com:
   Hello,
  
   I've consulted a lot of already made presentations of clojure.
   They are great, but I guess they may not suit my needs because it
   seems to me that either:
* they are more 1 1/2 to 2 hours talks than 45 minutes
* they assume the public will not be relunctant to some terms like
   Lisp, Functional Programming and directly present these as
   advantages
  
   My goal is to raise interest into clojure in the mind of a public of
   people having used java for a long time. They may have Scala already
   in their radar, but not clojure, or may have seen it and immediately
   dismissed it for what seemed to them good reasons (mainly aversion for
   lisp syntax), though we all know this is not true after the normal
   adaptation period.
  
   Say this presentation could be the presentation that leads people, at
   its end, asking you for giving all those great other presentations
   already available that I mentioned before ...
  
   Any references I missed that already solve my problem ? :-)
  
   Thanks in advance,
  
   --
   Laurent
  
 
  --
  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
 
 
  --
  Communication is essential. So we need decent tools when communication is
  lacking, when language capability is hard to acquire...
 
  - http://esperanto.net  - http://esperanto-jongeren.nl
 
  Linux-user #496644 (http://counter.li.org) - first touch of linux in 2004
 
  --
  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 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: Execute a string containing a form?

2010-04-22 Thread Luc Préfontaine
We store routing rules in a database as Clojure code and get these to be
loaded dynamically and run according to some variable configuration.
Of course we make sure the code forms are stringent in the database and
we wrap execution of these things with proper error handling code :)))

That's one of the features we needed to get that message bus thing to
lift up as a generic product and avoid specific code implementation.


Luc P.


On Thu, 2010-04-22 at 16:12 +0200, Heinz N. Gies wrote:

 On Apr 22, 2010, at 14:28 , Douglas Philips wrote:
  eval can be a dangerous thing to use, you have to be very careful about 
  where the source has come from, in terms of trusting that the code your 
  programs 'eval's will not be malicious or dangerous in some way. There are 
  no absolute rules for this, it depends on your application.
 
 To do a bit advertising here, for this case there is clj-sandbox I claim it 
 does a pretty good job to give a basic hassle free safety for evaluated code. 
 Also if it is a string you read from you can skip the read-string part and 
 just pass it the string directly.
 
 If you want to have a look: http://github.com/Licenser/clj-sandbox
 or for lein: [clj-sandbox 0.3.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

clojure.set index not handling large sets...

2010-04-15 Thread Luc Préfontaine
Hi all,

I tripped over something strange yesterday. I work on a tool to create
reports in the REPL from data in an SQL database.
Instead of building SQL statements with complex where clauses, the user
can defined which tables/fields he wants to fetch
and then he can work on these locally.

I implemented local joins and a number of other related operations to
marshal the data.

While doing this, I worked with clojure.set and used the index function
to regroup records matching the same
keys.  I then found out that I was not getting the same # of record from
my local join compared to the equivalent
SQL statement. The input data was the same however (I compared SQL
statement outputs with my local fetch outputs.
I was losing records, instead of getting 18000 something records, I
was down to 14000 something.
In fact some keys where missing in the output of index. I did not find a
pattern in the missing entries.

While digging, I started to question the index function sanity from
clojure.set. I cloned it and after a few hours of tossing it around,
decided
to recode it using a mutable Java HashMap.

It then worked... I got the same number of records as in the equivalent
SQL statement output.

The index function in clojure.set goes like this:

(defn index
  Returns a map of the distinct values of ks in the xrel mapped to a
  set of the maps in xrel with the corresponding values of ks.
  [xrel ks]
(reduce
 (fn [m x]
   (let [ik (select-keys x ks)]
 (assoc m ik (conj (get m ik #{}) x
 {} xrel))
 
It looks great and I suspect that the problem is deeper in the core.

Anyone has encountered something similar ? The problem can be replicated
in 1.0 and 1.1.
I did not have the time now to test it again using the master branch.
I will investigate this in the runtime later but maybe someone has
crossed over this problem in the past.

Luc

-- 
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: Choosing a Clojure build tool

2010-03-26 Thread Luc Préfontaine
Fully agree, reinventing the wheel is not a good time investment.

Ant has been there for years, why not reuse it ? Why reinvent Ant (or
Maven) in Clojure ?
The fact that they may look ugly and cumbersome to use has to be
separated from
the benefits they provide.

We switched to Leiningen here and created an internal Maven repository
with Archiva for our
own components.

Leiningen implements in Clojure a simplified build interface, this is
where the niceties are for users.
It take cares of the house keeping for you and this is where we want a
tool to save us time.
Aside from resolving our dependencies in Maven repositories on the net
and loading a few unknowns to
our internal repository, we did not have anything else to do build wise.

We have around 100 dependencies here and were looking for a way to
simplify this management.
Leiningen does it. If Ant or Maven changes, most of these impacts will
most probably be hidden in Leiningen.

We could not care less about the internal details... that's not where we
see the added value of a build/deployment tool,
it's in the day to day use by normal developers (non-Maven/Ant
experts).

Leiningen can handle simple projects as well as complex ones, why create
yet another tool/tool-set ? For the sake
of having it written 100% in Clojure ?

Efforts should be focused on improving Leiningen when needed, not on
creating another gizmo.

As for the obsessive desire to get an integrated build/deployment
tool, picture this, we need to manage all the above dependencies
plus our own components AND multiple costumer site configurations.
Having some simple automation here is an absolute requirement.
We will add a deployment plugin to Leiningen this year to manage our
deployments at customer sites. A Rails/Ruby one is also on
the table.

I do not call this hilarious (or obsessive), it's called common sense.
Humans could still be reinventing fire every
century but there's no added value to this process.

Luc P.


On Fri, 2010-03-26 at 16:49 +1030, Antony Blakey wrote:

 On 26/03/2010, at 4:37 PM, Rayne wrote:
 
  I don't think I've ever seen a language in which part of the community
  shunned build tools written in the language itself. It's quite
  hilarious.
 
 I've seen many examples where an overwhelming Not-Invented-Here attitude lead 
 to failure.
 
 Antony Blakey
 --
 CTO, Linkuistics Pty Ltd
 Ph: 0438 840 787
 
 Isn't it enough to see that a garden is beautiful without having to believe 
 that there are fairies at the bottom of it too?
   -- Douglas Adams
 

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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
REMOVE ME as the subject.


Re: Why I have chosen not to employ clojure

2010-03-22 Thread Luc Préfontaine
An IDE becomes a necessity as the complexity of your software is
increasing.

Now what's a complex piece of software ?

Presently we have 12 components in production some being several
thousand lines covering three languages (Java, Ruby and Clojure).
4 others components are in progress. Add to this that we use Spring and
a number of other frameworks for which plug ins are
available to ease the pain.

Refactoring, code searching, configuration validation, ... are
significant features we need otherwise we would spend a lot of time
to keep things in sync,

We started to work with Clojure in command line mode. However at a
certain moment it became clear that keeping Clojure
separate from the rest of the core was not the way to go. Today we are
mixing components from different languages/frameworks
in common Jars. Deployment is much more easier this way and using a
common IDE makes that possible.

If the consensus is that we need to package installers to get simple
Clojure REPLs running on
Windows and Linux in a command line window then let's do it. I think
that all the infrastructure is ready (maven like repo, ...).


Luc


On Sun, 2010-03-21 at 22:52 -0500, Cosmin Stejerean wrote:

 On Sun, Mar 21, 2010 at 10:20 PM, Luc Préfontaine
 lprefonta...@softaddicts.ca wrote:
 
 
 Yes we could have a complete package to run Clojure from the
 shell command line but how far could someone go with this
 to build a workable system without an IDE ?
 
 
 
 [...]
  
 Comments anyone ?
 
 
 
 
 I can get pretty far writing an application in Python with nothing
 more than good command line support and syntax highlighting in any
 text editor. Anything extra like completions, refactoring, etc, are
 just nice-to-haves. I don't see why an IDE is required for writing
 workable Clojure apps.
  
 
 -- 
 Cosmin Stejerean
 http://offbytwo.com
 
 
 
 -- 
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient
 with your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
  
 To unsubscribe from this group, send email to clojure
 +unsubscribegooglegroups.com or reply to this email with the words
 REMOVE ME as the subject.

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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
REMOVE ME as the subject.


Re: Why I have chosen not to employ clojure

2010-03-22 Thread Luc Préfontaine
Is my first impression right or wrong ?

Is Clojure harder to setup from Windows for beginners ?

Would an installer (.msi) help by hiding Java related details and
providing some basic scripts to run it ?

Luc P.

On Mon, 2010-03-22 at 16:48 +0530, Martin DeMello wrote:

 On Mon, Mar 22, 2010 at 2:19 PM, Joel Westerberg
 joel.westerb...@gmail.com wrote:
 
  Every time I've started up with a clojure project I've had to spend a few
  hours fiddling with the environment, not that I don't do that with other
  languages, but it would be nice with an officially sanctioned solution for
  setting up a sane environment.
 
 Even better, an officially sanctioned solution expressed both as
 documentation, and as a collection of shell scripts for all the major
 platforms.
 
 (As another non-java-familiar clojure adoptee, classpaths were
 definitely a hurdle)
 
 martin
 

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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
REMOVE ME as the subject.


Re: Why I have chosen not to employ clojure

2010-03-22 Thread Luc Préfontaine
Don't twist my post away from it's purpose...

I am not making an IDE a pre-requisite for learning purposes.

The original poster was talking about getting Clojure usable by
corporations... he was not talking about
academic learning. Too bad he was not aware that there are other IDEs
available other than the M..ft thing.
Not even looking at the documented alternatives before saying anything
is unprofessional at best in this regard.

You can still code 3 lines+ systems without an IDE (IDE can be as
simple as VIM or this other popular text editor on MacOSX)
but this approach has definitively limits. Just in case you have doubts
I did a lot of these in the past before even VIM like 
editors became the norm. I would not revert back to these times.

If some are saying they can do a lot without an IDE, fine, but that's
pointless here, it seems that the main problem is the first contact with
Clojure.
It looks like it's rough and there's a need for some smoothness there.
The main goal being to hide the Java gears as much as possible.
This is the feedback I was trying to get. If .NET gears where not hidden
on first contact, it would appear has bad as the JVM.
With .NET, it's later in the learning process that this strikes you :))
At first it looks great (all these windows, ).

I was asking for some requirements... can we start here ?

a) A need for a Windows based installer

b) Startup scripts to hide java machinery, probably pre-tuned to hide
all these horrible Java flags

c) Update mode to keep the Clojure run time up to date with whatever
version you may want (1.0, 1.1, 1.2, nightly build, ...)

d) a) and c) Use available public repositories to get components.

e) A need for installers on other platforms ? U*X, MacOs X ? Any value
there ?

Starting Clojure from command line on Windows is this satisfactory for
everyone ? Maybe a helper to start CMD in a folder
from a context menu would be of some help ?

Anything else ?

Luc P.

On Mon, 2010-03-22 at 00:33 -0400, Douglas Philips wrote:

 On 2010 Mar 21, at 11:52 PM, Cosmin Stejerean wrote:
  On Sun, Mar 21, 2010 at 10:20 PM, Luc Préfontaine 
  lprefonta...@softaddicts.ca 
   wrote:
  Yes we could have a complete package to run Clojure from the shell  
  command line but how far could someone go with this
  to build a workable system without an IDE ?
 
  [...]
 
  Comments anyone ?
 
 
  I can get pretty far writing an application in Python with nothing  
  more than good command line support and syntax highlighting in any  
  text editor. Anything extra like completions, refactoring, etc, are  
  just nice-to-haves. I don't see why an IDE is required for writing  
  workable Clojure apps.
 
 +1
 
 I use a Mac with MacPorts. Pulled down clojure and clojure-contrib  
 ports.
 Only thing I had to do (and this was -not- easy to figure out), was  
 create a .clojure file that pointed
 to the contrib jar. But that is how the clj wrapper in the clojure  
 port works. I suppose I could also
 muck around with my class path, or do other things...
 
 There is a high Java tax on using clojure for those of us coming from  
 non-Java languages.
 I'm willing to accept that I need to read the Java docs on how  
 strings, or, whatever, work.
 
 But getting clojure itself set up? Please, do -not- make pre-existing  
 familiarity with an IDE a prerequisite. There are enough learning  
 curves as it is.
 
 -Doug
 
 P.S. I used Emacs back when Gosling was writing his version of it at  
 CMU, before Java even existed, and now I use (g)vim. It's nice that  
 there are other IDEs working with clojure, but not so nice to assume  
 non-Java users are using some VisualStudio or other heavy-weight 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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
REMOVE ME as the subject.


Re: Why I have chosen not to employ clojure

2010-03-22 Thread Luc Préfontaine
I looked at these videos and they are a very good starting point.
Then do we have a communication problem getting these things known ?
Are these videos listed on the Getting started page ?

What about using contrib ? That would be the first classpath problem a
newcomer would face.

It looks to me that we have all the answers but not in a single spot.

Luc P. 

On Mon, 2010-03-22 at 06:44 -0700, Sean Devlin wrote:

 Luc,
 Windows users should be good to go.  Clojurebox, Enclojure  CCW are
 ready for use for any Java dev with some experience.  As for the
 installation process, pick you poison:
 
 http://vimeo.com/tag:install_clojure
 
 Sorry to self-post,
 Sean
 
 On Mar 22, 7:31 am, Luc Préfontaine lprefonta...@softaddicts.ca
 wrote:
  Is my first impression right or wrong ?
 
  Is Clojure harder to setup from Windows for beginners ?
 
  Would an installer (.msi) help by hiding Java related details and
  providing some basic scripts to run it ?
 
  Luc P.
 
  On Mon, 2010-03-22 at 16:48 +0530, Martin DeMello wrote:
   On Mon, Mar 22, 2010 at 2:19 PM, Joel Westerberg
   joel.westerb...@gmail.com wrote:
 
Every time I've started up with a clojure project I've had to spend a 
few
hours fiddling with the environment, not that I don't do that with other
languages, but it would be nice with an officially sanctioned solution 
for
setting up a sane environment.
 
   Even better, an officially sanctioned solution expressed both as
   documentation, and as a collection of shell scripts for all the major
   platforms.
 
   (As another non-java-familiar clojure adoptee, classpaths were
   definitely a hurdle)
 
   martin
 

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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
REMOVE ME as the subject.


Re: Why I have chosen not to employ clojure

2010-03-21 Thread Luc Préfontaine

He's illiterate about Java, he's older than me and has less experience
so finding how to run a jar file is probably
as remote as traveling to Alpha Centauri :))) (Don't we have something
like Google to find these answers ?)

Most of his recent experience seems to be in Visual Basic and mainstream
web centric languages.
I suspect he's more a by-product of using too few commercial language
centric IDEs.
If it does not work out of the box without a 1-800 number to call, he's
lost.

Let's not spend more time about this guy's comments.

I think we can assume a Java programmer knows about class path issues
and is able to run java and add librairies to the class path.

As for non Java programmers yes it can be a bit daunting but I bet you
can't do much in C# or F# if you do not have the slightest
idea on how to use VisualStudio : You are far away from a three
steps installation process here.

Agree, many people may already be familiar with VisualStudio, it's been
around for along time. But do you like it ? :)))
Getting started with Clojure is rather simple from the command line,
mastering a foreign IDE is a different story.
If you are not familiar with Eclipse, IntelliJ or Emacs and you want to
use something more flexible than command line mode
then you have a learning curve investment to do.

The alternatives are documented from the Getting started page of the
Clojure web site and it's pretty clear to follow.
The best choice may not be clear upfront (we all have our tastes) but
there is some solid ground to help people decide
on an alternative.

Yes we could have a complete package to run Clojure from the shell
command line but how far could someone go with this
to build a workable system without an IDE ? It might have some sex
appeal to help learn the language but how different
is it from the three steps described by Marek ? Do we really need to
release a Clojure SDK with an IDE etc ?
What other language does that ? Ruby ? Scala ? Groovy ? 

From time to time we have comments about how difficult/easy it is to get
acquainted with Clojure but I wonder if we all
understand the same things about this issue. Do we need to gather
requirements somehow ? (!?!?!)

Comments anyone ?

Luc P.


On Sun, 2010-03-21 at 22:08 +0100, Marek Kubica wrote:

 On Sun, 21 Mar 2010 10:42:12 -0800
 Tim Johnson t...@johnsons-web.com wrote:
 
  Here's how I installed the flash player on my system.
  1)Downloaded install_flash_player_10_linux.tar.gz
  2)Unzipped libflashplayer.so
  3)Copied to /usr/lib/firefox-3.5.2/plugins/
 
 Here's how I installed the Clojure REPL on my system.
 1) Downloaded clojure-1.1.0.zip
 2) Unzipped clojure.jar
 3) Ran java -jar clojure.jar
 
 Hardly any different.
 
 FWIW, posting on a list and declaring immediately that one will
 unsubscribe afterwards, not even reading replies is near-flamebait
 quality.
 
 regards,
 Marek
 

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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
REMOVE ME as the subject.


Re: using counterclockwise with 1.2 snapshots?

2010-03-11 Thread Luc Préfontaine
Hi Stuart,

we do exactly the same thing here. We want to insure that we always use
the same Clojure/Contrib run times as we have currently in production.


Luc

On Thu, 2010-03-11 at 12:18 -0500, Stuart Halloway wrote:

 What is the preferred way of using counterclockwise with 1.2  
 snapshots. Here is how I retrofitted an existing project:
 
 (1) Create a Clojure project on top of the exiting source dir
 (2) Under Run Configurations add user entries for lib/**.jar, ahead  
 of the 1.1 bits installed by the project wizard
 
 This seems to work, but if there is a preferred way I would love to  
 know about it.
 
 Stu
   
 

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

2010-01-28 Thread Luc Préfontaine
Where's the reference to the booze then ? :)))
Since this thread started, everyone has been saying that bars in their
neighbourhood are the best.
Still wondering if this conference is only a motive to get drunk for a
few days :)))

Luc

On Thu, 2010-01-28 at 14:02 -0800, Paul Nakata wrote:

 Or Conjference
 
 On Jan 28, 11:24 am, ataggart alex.tagg...@gmail.com wrote:
  I'm partial to naming it Expojure.
 
  On Jan 27, 9:59 am, Luc Préfontaine lprefonta...@softaddicts.ca
  wrote:
 
   Then lets call it ClojureFest
 
   Luc
 
   On Wed, 2010-01-27 at 08:37 -0800, eyeris wrote:
Exotic? You got it! Madison, WI! Seriously, we have the best bars. See
you guys in the fall! :)
 
I would prefer it during the week.
 
On Jan 22, 3:15 pm, Wilson MacGyver wmacgy...@gmail.com wrote:
 I vote let's turn this into a clojure vacation, and hold it in an
 exotic location.
 
 Otherwise, hey, Columbus Ohio is as good as any other city. :)
 
 On Fri, Jan 22, 2010 at 3:50 PM, Sean Devlin 
 francoisdev...@gmail.com wrote:
  Clearly you haven't taken into account that Philadelphia is more
  central wrt the big cities :)
 
  On Jan 22, 3:32 pm, Fogus mefo...@gmail.com wrote:
  Since Clojure is clearly an East-Coast language, I suggest DC as 
  the
  most logical locale.  (hopes someone buys this line of reasoning)
 
  -m
 
  --
  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
 
 --
 Omnem crede diem tibi diluxisse supremum.
 

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

2010-01-27 Thread Luc Préfontaine
Then lets call it ClojureFest

Luc

On Wed, 2010-01-27 at 08:37 -0800, eyeris wrote:

 Exotic? You got it! Madison, WI! Seriously, we have the best bars. See
 you guys in the fall! :)
 
 I would prefer it during the week.
 
 
 
 On Jan 22, 3:15 pm, Wilson MacGyver wmacgy...@gmail.com wrote:
  I vote let's turn this into a clojure vacation, and hold it in an
  exotic location.
 
  Otherwise, hey, Columbus Ohio is as good as any other city. :)
 
 
 
  On Fri, Jan 22, 2010 at 3:50 PM, Sean Devlin francoisdev...@gmail.com 
  wrote:
   Clearly you haven't taken into account that Philadelphia is more
   central wrt the big cities :)
 
   On Jan 22, 3:32 pm, Fogus mefo...@gmail.com wrote:
   Since Clojure is clearly an East-Coast language, I suggest DC as the
   most logical locale.  (hopes someone buys this line of reasoning)
 
   -m
 
   --
   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
 
  --
  Omnem crede diem tibi diluxisse supremum.
 

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

2010-01-27 Thread Luc Préfontaine
Hic !

On Wed, 2010-01-27 at 12:59 -0500, Luc Préfontaine wrote:

 Then lets call it ClojureFest
 
 Luc
 
 On Wed, 2010-01-27 at 08:37 -0800, eyeris wrote: 
 
  Exotic? You got it! Madison, WI! Seriously, we have the best bars. See
  you guys in the fall! :)
  
  I would prefer it during the week.
  
  
  
  On Jan 22, 3:15 pm, Wilson MacGyver wmacgy...@gmail.com wrote:
   I vote let's turn this into a clojure vacation, and hold it in an
   exotic location.
  
   Otherwise, hey, Columbus Ohio is as good as any other city. :)
  
  
  
   On Fri, Jan 22, 2010 at 3:50 PM, Sean Devlin francoisdev...@gmail.com 
   wrote:
Clearly you haven't taken into account that Philadelphia is more
central wrt the big cities :)
  
On Jan 22, 3:32 pm, Fogus mefo...@gmail.com wrote:
Since Clojure is clearly an East-Coast language, I suggest DC as the
most logical locale.  (hopes someone buys this line of reasoning)
  
-m
  
--
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
  
   --
   Omnem crede diem tibi diluxisse supremum.
  
 
 
 -- 
 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 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: Log4j not detected when using recent jars

2010-01-12 Thread Luc Préfontaine
We have been using 1.2.14 for more than a year without any glitches yet.

Luc
 
On Tue, 2010-01-12 at 23:22 +0530, Baishampayan Ghose wrote:

 On Tuesday 12 January 2010 07:30 PM, Shantanu Kumar wrote:
  This behaviour might occur due to an old Apache Commons-Logging JAR,
  several of which have had classpath / class-loading issues. Just a
  thought.
 
 Which is the recommended latest version of log4j? As I can see, 2.0 is 
 too experimental and 1.3 has been made obsolete.
 
 I tried using 1.2.14 because 1.2.15 was bringing in a truck load of 
 dependencies.
 
 Regards,
 BG
 
 -- 
 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 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: Parenthesis Inference

2009-12-20 Thread Luc Préfontaine
That's a concise and clear way to summarize the issue.

If you compare the IDE support required for different languages, the
support required to write syntactically correct Clojure code is pretty
small compared to others.

I do not get it, it's longer and much more painful to write Java code
with all these required delimiters (parenthesis required in a
if/while/for condition,
semi-colons to split for loop expressions, statements, curly braces to
create compound statements...).  These are different requirements
depending where you are in your code. Without hefty IDE support, you
would be left nude on the ice bank.

When HP introduced their pocket calculator with Postfix notation, people
had to get used to it but it did not prevent HP calculators
to become popular ones in the engineering/scientific/accountants
community. Ok you would not expect your grocery store owner
to use one but he's not building bridges or a creating a new cancer cure
either.

People bought HP calculators not for the Postfix notation but for all
the others things it offered at the time...

Luc



On Fri, 2009-12-18 at 17:58 -0800, Vagif Verdi wrote:

 Welcome to the big club of people who in last 50 years came up with a
 brilliant idea to fix lisp.
 
 As for Ten parentheses, i do not see a single one. Noone notices
 starting parens because they are markers saying this is a function.
 And of course noone notices ending parens because they are for your
 IDE, not for the human.
 

-- 
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: Parenthesis Inference

2009-12-20 Thread Luc Préfontaine
:))

Luc

On Sun, 2009-12-20 at 15:00 -0800, David Brown wrote:

 On Sun, Dec 20, 2009 at 02:30:58PM -0500, Luc Préfontaine wrote:
 
 People bought HP calculators not for the Postfix notation but for all
 the others things it offered at the time...
 
 Some of us _still_ only buy HP calculators because of the postfix
 notation.  Oh, the other things are nice, too.
 
 David
 

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

Re: Parenthesis Inference

2009-12-20 Thread Luc Préfontaine
I do have one but it still has some grey in it :)


On Sun, 2009-12-20 at 19:41 -0500, Wilson MacGyver wrote:

 John McCarthy the creator of lisp does have beard. :)
 
 http://www-formal.stanford.edu/jmc/personal.html
 
 On Sun, Dec 20, 2009 at 7:37 PM, David Nolen dnolen.li...@gmail.com wrote:
  On Sun, Dec 20, 2009 at 5:48 PM, Luc Préfontaine
  lprefonta...@softaddicts.ca wrote:
 
  :))
 
  The Lisp Beard?
 
 
  Luc
 
  On Sun, 2009-12-20 at 15:00 -0800, David Brown wrote:
 
  On Sun, Dec 20, 2009 at 02:30:58PM -0500, Luc Préfontaine wrote:
 
  People bought HP calculators not for the Postfix notation but for all
  the others things it offered at the time...
 
  Some of us _still_ only buy HP calculators because of the postfix
  notation.  Oh, the other things are nice, too.
 
  David
 
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
  your first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
 
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To 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
 
 
 
 -- 
 Omnem crede diem tibi diluxisse supremum.
 

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

2009-12-17 Thread Luc Préfontaine
Mike, I think that the whole issue about Lisp creates a big cloud about
Clojure.

Choosing a Lisp like syntax for a new language is a good choice because
of the expressiveness,
it requires less code lines, yields a better design, easier to test, ...
That's a choice between a number of options.
If it was the only sane one then we would all be coding using Lisp like
syntax. That's not the case
obviously. Talk to Ruby people, they made different choices...

If you sum up Clojure as being a Lisp because of what it look likes and
use only this to compare it to other
languages then you are missing the forest and looking at a single tree.

If you code in a Lisp like language using setq or set! or alike then you
can get very far away from functional
programming and end up writing procedural code with parenthesis. You
will eventually face the issues that Clojure avoids.

Clojure takes a brutal approach, forget the left-right assignment that
almost every language eventually
supports, forget variable mutations visible to everyone, forget
procedural code...
Oups these are the real show stoppers independently of the syntax used.
There's no escapes in Clojure while in other languages you can still
cheat (setq/set! and similar).

What I found non-trivial in Clojure were these restrictions, no the
syntax. As soon as I understood
the decisions behind these choices, my mental blockage vanished.

Immutable data structures, transparent iterations over a variety of
structures,  lazy sequences, a workable STM implementation,
parallel processing capabilities ridiculously simple to use, huge set of
Java librairies available, easy to use, ...
These are the real features that make Clojure distinct from other
languages. All the choices made are sound and the
sum of these decisions is coherent. Nothing looks like it's been added
late to fill a gap like a nose in a face.

Syntax by itself is nothing, it never made a good language
implementation.

I have a few years of Lisp behind me, I started to use Lisp in the
1980s.I used to prototype software in Lisp that I had to deliver
in a more classical language. The main reason of this being the lack
of basic librairies and incompatible Lisp implementations plus
the maintenance issue. 
After my Clojure learning curve, I removed LispWorks from my desktop. I
do not see the use for it anymore. 

My 25 years of experience is not the same as 5 years of Scheme, I
experimented more stuff in software
in various environments than the majority of today's average developer.

I adhere to justified critics when a rationale has been exposed
otherwise I call it (repeat blablabla).
To expose some rationale it implies that you understand the subject you
are talking about. If you don't then you should
be cautious about what you state or you state it conditionally.

The above does not mean that I will not ever critic Rich's bad decisions
in the future. I do not see this likely to happen
however given its present score...

Luc



On Thu, 2009-12-17 at 19:02 -0500, Mike Meyer wrote:

 On Thu, 17 Dec 2009 10:26:03 -0800 (PST)
 Santhosh G R kusim...@gmail.com wrote:
 
   You warn that you learn languages just for the fun of it. I would be
   curious to know how much time you spent learning Clojure...
  
  I have been working with Scheme for the past 5 years.
 
 I think this is a critical element!
 
  Yep, I don't have 20+ years in development; neither 12+ months in
  Clojure. My learning of Clojure has been for the past 2-3 months.
 
 I expect that 5 years with Scheme is worth more than 20+ years with
 C/C++/Java when it comes to learning Clojure. Clojure is, after all, a
 LISP dialect. Once you've gotten your mind around the proper way to
 write programs in LISPy languages - which is a non-trivial thing -
 adopting to another one is fairly easy. I feel that mind-set coming
 back after my absence from the language as I read through the
 examples.  The other unique features of Clojure should be relatively
 straightforward to deal with once you've gotten past this.
 
   So either you are a genius and went through Clojure faster than we
   could, learning all the features it offers, or you just skimmed the
   surface.
  Neither a genius, nor did I skim through. 
 
 Right. Just someone who was already familiar with programming in a
 LISPy environment.
 
  I completely miss this. As I said I am not a clojure developer. I am
  a programming language enthusiast and have learnt multiple languages
  with different programming paradigms; just for the fun of it.
  Programming languages which I know are Java, Python, Scheme, okie-
  dokie PERL, C# which for me is Java with a different library and
  idiom, C, C++ including the (in)famous STL, COBOL  FORTRAN purely
  because it was in my syllabus, Javascript both in its prototype and
  functional forms. I have tried to be unbiased; if it exists it might
  be due to my stronger background in Java, Python, Scheme.
 
 Given that list of languages, I'd suggest taking a look at
 

Re: Clojure analysis

2009-12-16 Thread Luc Préfontaine

I agree with Sean, the STM is a big feature also are parallelism and
data immutability. These features are working now
and they make things a lot simpler.

I agree also that the lack of documentation is a barrier but even with
documentation the learning curve would
not be much shorter again because the language departs from concepts
carried on in most programming languages, not because of it's syntax.
Stuart has written a smart book and that as a starting point is more
than enough. Hands-on is required to learn a new language and not just
for academic purposes. Having a real problem to solve is better.

You say that Clojure is a better Java... totally wrong. Java sits where
it needs to be, at the bottom of the stack like assemblers in the
70s/80s.
Getting interop with Java is as obvious as being able to call an
assembly routine from a higher level language or an external library.
No one would question this ability in other languages. No one wants to
rewrite mundane tasks if they are already programmed.
If this makes you think that Clojure is a better Java well that relates
to my comments later in this post.

Your statement that Clojure should stand apart from others is deeply
wrong.  It is already a breed of its own. Borrowing best ideas from
other languages does not mean that the end result is a Babel tower. If
you think that Clojure is not well articulated and does not
have it's own personality that also relates to my comments following
this paragraph.

You warn that you learn languages just for the fun of it. I would be
curious to know how much time you spent learning Clojure...

I personally worked with Fortran, Cobol, PL/1, Lisp, C/C++, VB, Java, JS
and so many other languages to deliver working systems
in production not counting half a dozen assemblers (with systems above
20,000 code lines). Many of these were multi threaded
apps before libthread even existed. Dynamic languages were far more
common 20 years ago than now btwy.

We have been working with Clojure for more than a 16 months with a
message bus software in production for 11 months.
Not a simple HelloWorld app

Just to get up to write decent production code with Clojure it took me a
good 4 months. I'm a 25 years exp. guy and I have
been writing code and designing systems for that life span. I am not an
educated manager with grey hairs.
My colleagues are younger and did not do better.

The changes that Clojure brings in the old ways we used to program are
significantly important to make learning a steep curve
before you can write code that you can read again without shame.

So either you are a genius and went through Clojure faster than we
could, learning all the features it offers, or you just skimmed the
surface.

I think the later applies and that you have some toupet to compare a
language with others without any extensive field use of most of them.

Get a few millions lines of code behind you, then you may eventually
write decent critics. Meanwhile be humble...

Luc







On Fri, 2009-12-11 at 13:04 -0800, kusi wrote:

 http://kusimari.blogspot.com/2009/12/analysing-clojure-programming-language.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 newbie question regarding compile time type checking.

2009-12-15 Thread Luc Préfontaine
If Clojure type checking becomes a frequent request/complaint, please
build a lint type tool, not some twisted logic embedded in the
compiler :)))

C did not have any decent type checking when it came out and we had to
use lint to find bad parameter on fn calls and other similar errors.
They were no function prototypes at the time so passing a pointer
address instead of the pointer value did not bother the compiler at all.
In fact you could pass crap in most places and end up at run time with a
bad pointer address or corrupted stack.

You cannot call C a dynamic language, a semi-assembler that evolved to a
higher status over time, 
however it lacked basic type checking in it's early incarnations...
Quite a challenge for a typed language (byte, short, int, long, 8? 16?
32 bits ?).
Debugging stack corruptions daily is not really an efficient way to
program so rules where added to the compiler to eventually
flag data type improper uses.

I never saw a dynamically typed language that had type checking at
compile time :))) In my mind it's mutually exclusive...

Lisp compilers came out in the 1970s if I recall. To compile Lisp you
needed special declarations to define unbound variables and other
similar things
to get the compiler to create a runnable file.
Symbols where not bound to lexical scope so the compiler needed some
hints from time to time telling it that these things would eventually be
available at run time.
This did not apply to symbols within a function, they could appear
without an explicit declaration. It was assumed they were
somewhere on the stack at run time. That's even more dynamic that what
Clojure allows... maybe a bit too much.

The Clojure compiler is in the same vein, it checks for undeclared stuff
BUT mandates that everything used be visible in the lexical
scope. No run time bindings not lexically visible are allowed, that's a
very good compromise, debugging for missing dynamic bindings on the
stack
at run time is not very funny.

This compiler has nothing to do with a data typed compiler that
validates that the proper typed variables are used in an acceptable
manner... 

These are two unrelated things. We call them both compilers but its
not required for a compiler to do data type checking.
The only thing they may have in common is that they both generate code.


Luc

On Tue, 2009-12-15 at 06:20 -0800, Tayssir John Gabbour wrote:

 On Dec 15, 1:23 pm, Baishampayan Ghose b.gh...@ocricket.com wrote:
  PS - If you are worried about compile time type checking, I think it's
  prudent to mention now that Clojure is a dynamically typed programming
  language where types are checked at run-time and not compile time.
 
 Actually, there are Common Lisp compilers (like SBCL) which signal a
 warning if they infer a type error. I think it's handy, and doesn't do
 anything drastic like refuse to compile your program because of it.
 
 
 All the best,
 Tayssir
 
 
 On Dec 15, 1:23 pm, Baishampayan Ghose b.gh...@ocricket.com wrote:
  Ajay,
 
   It tried the following in REPL and got no error. Personally, I feel that
   I should get an error because calling square on strings is wrong in both
   cases.
 
   Is there a way out of this in Clojure?
 
   |(defn square[n]  (*  n n))
 
   (if  (=  0  0)  (printlnhello)  (map square[a  b]))
 
  What did you expect from Clojure? In the above form the `map` is a part
  of the else form and that's why it's not executed.
 
  If you don't know already, the syntax for `if` in Clojure is like this -
 
  (if expression
 (then form)
 (else form))
 
  If you have multiple then or else forms, you can wrap them inside a `do`
  form like this -
 
  (if expression
 (do
   (then form)
   (more then form))
 (else form))
 
   The following gives error (because it gets evaluated):
 
   |(defn square[n]  (*  n n))
 
   (if  (=  0  1)  (printlnhello)  (map square[a  b]))
 
  In the above form, the map is a part of the else form and since 1 is not
  equal to 0, the `map` is executed.
 
  I hope your confusion is cleared.
 
  PS - If you are worried about compile time type checking, I think it's
  prudent to mention now that Clojure is a dynamically typed programming
  language where types are checked at run-time and not compile time.
 
  Regards,
  BG
 
  --
  Baishampayan Ghose b.gh...@ocricket.com
  oCricket.com
 

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

Re: roll call of production use?

2009-12-01 Thread Luc Préfontaine



 On Nov 23, 5:00 pm, Raoul Duke rao...@gmail.com wrote:
 
  i'd be interested to hear who has successfully used clojure in
  production. i know of some, as some folks have been vocal; any other
  interesting-but-so-far-silent uses people'd be willing to fess up
  about?
 
 Our real-world use reported here:
 
   
 http://groups.google.com/group/clojure/browse_thread/thread/ffcd4bc722852b4/d07a1ca449e83a8b
 
 Summary: Moderate-scale data processing.  Millions of records.
 Timeseries and regressions.  Works great.  Based on this pilot, we're
 expanding our use of Clojure.
 
 It's surprising to me just how solid this innovative platform is.
 Outstanding work.
 
 Thanks again to Rich and the other contributors.
 
 --Jamie
 

-- 
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: roll call of production use?

2009-12-01 Thread Luc Préfontaine

 On Nov 23, 5:00 pm, Raoul Duke rao...@gmail.com wrote:
 
  i'd be interested to hear who has successfully used clojure in
  production. i know of some, as some folks have been vocal; any other
  interesting-but-so-far-silent uses people'd be willing to fess up
  about?

http://www.infoq.com/news/2009/01/clojure_production

The bus has been up for months now and down times have been related
to either some hardware changes (system is fully redundant so most
of the time no downtime occurred)
and network stability issues over which we have little control (managed
by the customer's IT group).

We are adding more functions tapping on the information flowing on the
bus, of course these are now written in Clojure...

Census tracking, decentralized service request management, ...

This year the bus will also extend to interconnect other hospital
services. The bus is also a way to convince users to move to a paperless
environment and focus on data entry completeness to achieve that goal.

We have also in the works a Clojure/Terracotta/Java messaging layer to
improve parallelism. This should be rolled out in summer time.

Transitioning to Clojure V1.0 was not a problem and we do not expect 
that moving 1.1 will prove difficult.

The bus is still running on a cluster of small foot print computers but
we moved to Atom 330 motherboards to boost processing power.

This thing will celebrate it's first year in production very soon
without significant pain and this a proof to me that Clojure is mature.


Luc


-- 
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: roll call of production use?

2009-12-01 Thread Luc Préfontaine
We picked one that met our minimal requirements... our prototype was in
Java however and that probably biased
the choice a bit.

But for us it's an intermediate step. We need a more flexible solution.
We will keep ActiveMQ in the picture to link different clusters (or an
alternative) but for intra cluster processing
we want something more in line with the contraints we need to meet
especially regarding event serialization.

We think that custom fit message serialization is not easily managed
using a message bus generic layer.
We need a more specific solution and some management hooks to deal with
this in day to day operations.

Luc


On Tue, 2009-12-01 at 10:02 -0800, Daniel Werner wrote:

 On Dec 1, 5:20 pm, Luc Préfontaine lprefonta...@softaddicts.ca
 wrote:
  http://www.infoq.com/news/2009/01/clojure_production
 
 Slightly off-topic:
 
 What prompted you to choose ActiveMQ over other popular message bus
 systems like RabbitMQ? Was it the ease of operability with Clojure/
 Java, or are there other strong factors?
 

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