Re: 2013 State of Clojure ClojureScript survey results

2013-12-02 Thread Alex Miller
Two follow-ups categorizing results from the missing language and 
weaknesses questions:

http://tech.puredanger.com/2013/11/19/state-of-clojure-language-features/
http://tech.puredanger.com/2013/12/01/clj-problems/

Alex

On Monday, November 18, 2013 1:32:56 PM UTC-6, Chas Emerick wrote:

 Results of this year's survey are available here: 


 http://cemerick.com/2013/11/18/results-of-the-2013-state-of-clojure-clojurescript-survey/
  

 Thank you to all that participated! 

 Best, 

 - Chas 


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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-27 Thread Brian Craft
I at least partly agree with most of the replies here. Yes, interop counts 
for something, and I arguably should have started there, but it's 
orthogonal to the question of how solid clojure libraries are, on average. 
You might choose not to write a library because it adds nothing beyond what 
interop gives you. But having written a library, interop is not relevant to 
the quality of the library. And in this case, as others have pointed out, 
the host is inconsistent, so use interop is not a complete solution. 
Interop is a poor excuse for writing poor libraries. For comparison, 
consider that javascript library authors manage to deliver a consistent API 
across a much more challenging set of VMs.

Another example: I also needed binary data transforms. Gloss was 
recommended, but it was unreliable: it would hang at exit. smee.binary was 
reliable, but too slow for my application. So, I ditched them both and 
wrote it in java interop. But this is a painful way to develop: try clojure 
library, find it's buggy; try second clojure library, find it's slow; write 
it in interop and wonder at this point why I'm not just using java. And 
then there are all the globals, ugh. I was happy Stuart brought this up at 
Clojure/West this year.

And, again, I realize it's a young language, so rough edges are expected. 
I'm just surprised at the poll results.

On Tuesday, November 19, 2013 7:00:20 AM UTC-8, Michael Klishin wrote:


 2013/11/19 Brian Craft craft...@gmail.com javascript:

 Bold statement, Brian. Surely you've tried at least 60% of the libraries 
 out there to make

 your judgement more scientific than a survey with thousands of 
 participants ;)

 Please try finding a sane concurrency library in Ruby, or use the standard 
 library primitives.
 Try working with binary protocols or even basic statistical problems in 
 JavaScript. And ask yourself
 what % of Python libraries is of the same quality as Requests. Or go work 
 with crypto libraries
 in any of the above.

 Clojure's standard library is small but at least if you ask me, overall it 
 is higher quality than most languages
 out there. Certainly leaps and bounds better engineering-wise than Ruby.


Random sampling to discover the shape of a distribution is entirely 
reasonable, doesn't require anything like 60% coverage, and isn't 
self-evidently worse than this poll, which of course is not well 
controlled. Clojure is on the fringe of the fringe among programming 
languages. Most developers have not found it compelling. I'm willing to bet 
that the state of the libraries is one factor in that result: that my 
opinion on this subject would be the majority opinion if the polling were 
broader, and not self-selecting.

I partly agree with your list of design deficiencies in other languages, 
above, but note that many of them are solved by falling back to native 
code, which can be quite simple. Also, the demand for concurrency is much 
smaller than the need for solid core libraries.

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-27 Thread David Nolen
On Wed, Nov 27, 2013 at 1:41 PM, Brian Craft craft.br...@gmail.com wrote:

 have pointed out, the host is inconsistent, so use interop is not a
 complete solution. Interop is a poor excuse for writing poor libraries. For
 comparison, consider that javascript library authors manage to deliver a
 consistent API across a much more challenging set of VMs.


I don't have anything to contribute to this thread except to point out that
this statement passed as fact does not correspond with reality.

David

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-20 Thread Alex Baranosky
The increased # of questions probably also reduces survey conversion ...
I ran out of time because it was so long, and had a lot of other things to
do, so I didn't submit my entry this year.


On Tue, Nov 19, 2013 at 7:09 PM, Sean Corfield seancorfi...@gmail.comwrote:

 Yes, the path separator is O/S dependent:

 user (import '(java.io File))
 java.io.File
 user (reduce #(File. %1 %2) [one two .. three])
 #File one/two/../three
 user  (.getCanonicalFile (reduce #(File. %1 %2) [one two ..
 three]))
 #File
 /Developer/workspace/worldsingles/ws/model/clojure/worldsingles/one/three
 user (.getPath (reduce #(File. %1 %2) [one two .. three]))
 one/two/../three

 Note that .getCanonicalFile renders the file path relative to the
 directory in which the REPL's JVM instance was started.

 Sean

 On Tue, Nov 19, 2013 at 7:02 PM, Cedric Greevey cgree...@gmail.com
 wrote:
  On Tue, Nov 19, 2013 at 10:02 AM, James Reeves ja...@booleanknot.com
  wrote:
 
 
  I think in this case it's more a problem with the Java API, which the fs
  library wraps. Until Java 7, I don't think relative path normalisation
  existed in the core Java libraries.
 
 
  It didn't, and .toPath isn't in the 1.6 java.io.File class in particular.
  1.6 gives you these options:
 
  user= (reduce #(File. %1 %2) [one two .. three])
  #File one\two\..\three
 
  user= (.getCanonicalFile (reduce #(File. %1 %2) [one two ..
  three]))
  #File C:\Windows\System32\one\three
 
  user= (.getPath (reduce #(File. %1 %2) [one two .. three]))
  one\\two\\..\\three
 
  Of these only getCanonicalFile normalizes, but it also makes it absolute,
  treating it as having been relative to (on the Win32 box I tested it on)
 the
  OS system directory of all places.
 
  It *is* interesting that Ruby Pathname objects and Java File objects get
  printed very similarly by Ruby and Clojure, respectively.
 
  I assume that / will replace \ as the separator (and the base directory
 used
  by getCanonicalFile will vary) if the above is used on other operating
  systems' JVMs.
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
 your
  first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google Groups
  Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send an
  email to clojure+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/groups/opt_out.



 --
 Sean A Corfield -- (904) 302-SEAN
 An Architect's View -- http://corfield.org/
 World Singles, LLC. -- http://worldsingles.com/

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

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


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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Chas Emerick
One note on the ordering questions: each of them were constructed to 
present a randomized ordering to each new respondent, so there was no 
bias introduced by a default ordering.


Cheers,

- Chas

On 11/18/2013 03:09 PM, kovas boguta wrote:

Great job Chas.

Some notes on methodology and then some general comments

- That the survey was not featured on HN this time without a doubt
alone accounts for the slight dip in responses
- The 'missing' people are more likely fall into the 'hobbyist' camp,
which might explain the increased % of people using clojure at work in
this year's survey
- The increased # of questions probably also reduces survey conversion
(I wonder how many people viewed versus completed the survey)
- There is some bias inherent to the initial ordering in the
reordering-based questions; I for one dragged the most important items
to the top, and didn't carefully think about changing the ordering
beneath that.

I find it impressive that 76% of respondents report using clojure for
web development. This, in spite of a lack of a unified web framework
stretching from the DB to the client, and general confusion in the
masses about what the best solution to use is.




On Mon, Nov 18, 2013 at 2:32 PM, Chas Emerick c...@cemerick.com wrote:

Results of this year's survey are available here:

http://cemerick.com/2013/11/18/results-of-the-2013-state-of-clojure-clojurescript-survey/

Thank you to all that participated!

Best,

- Chas

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


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

To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Brian Craft


On Monday, November 18, 2013 3:58:10 PM UTC-8, kovasb wrote:

 There are a large number of high quality libraries like instaparse, 
 cascalog, storm, overtone, friend, etc. I find it pretty easy to tell 
 the difference between a hobby and production project. Besides the 
 typically liveliness measures, its also helpful to know the reputation 
 (or lack thereof) of the people behind the projects. 


Yes, there are these fairly advanced libraries in very specific domains, 
but the core libraries are extremely weak.

For example, I have a project with rather modest requirements, one of them 
being abstract path manipulation. In javascript:

path.normalize(path.join(one, two, .., three))
'one/three'

ruby:

irb(main):003:0 Pathname.new(one) + two + .. + three
= #Pathname:one/three

python:

 os.path.normpath(os.path.join(one, two, .., three))
'one/three'

In clojure, people recommend me.raynes.fs:

= (fs/file one two .. three)
#File /inside/home/craft/cavm/one/two/../three

ugh. 

= (fs/normalized-path (fs/file one two .. three))
#File /inside/home/craft/cavm/one/three

um, no. Turns out there is no abstract path join + normalization in 
me.raynes.fs. I haven't found an alternative in clojure.

This is trivial to work around, but I hit this kind of thing constantly 
with every clojure library I use: clojure libraries are about 70% 
implemented, and 90% correct, which makes a weak foundation. I was amused 
to find the Lisp Curse article a few weeks ago, which describes this 
situation. It's often easier to write something from scratch than to patch 
one of the partially-implemented libraries. But this scales poorly, and one 
is truly starting from zero with clojure.

Of course clojure is a relatively new language, with a much smaller number 
of users than javascript, python, and ruby, so I expect the libraries to be 
less complete. What I don't expect is clojure users to report that the 
libraries are just great. Clojure libraries are very weak compared to other 
modern languages.

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Patrick Kristiansen
 This is trivial to work around, but I hit this kind of thing
 constantly with every clojure library I use: clojure libraries are
 about 70% implemented, and 90% correct, which makes a weak foundation.
 I was amused to find the Lisp Curse article a few weeks ago, which
 describes this situation. It's often easier to write something from
 scratch than to patch one of the partially-implemented libraries. But
 this scales poorly, and one is truly starting from zero with clojure.
 
 Of course clojure is a relatively new language, with a much smaller
 number of users than javascript, python, and ruby, so I expect the
 libraries to be less complete. What I don't expect is clojure users to
 report that the libraries are just great. Clojure libraries are very
 weak compared to other modern languages.

Don't you think it counts that you can easily use the underlying
platform's facilities? If you are using ClojureScript with nodejs, you
can just use the path functions present there. If you are using Clojure
on the JVM, you have an equivalent option. This may even be the
explanation that you feel Clojure libraries are 70 % implemented,
because it is so easy to use what is already available.

I don't think it is always feasible or a good idea to reimplement the
platform's facilities just to make them look more Clojuresque.
Furthermore, I don't believe that you can even consider it unidiomatic
to use your platform through Clojure's interop. Remember, one of
Clojure's value proposition is exactly that: the ability to reuse the
libraries already available on the host platform.

Best regards,
Patrick

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Brandon Adams
I realize that's just an example, but I wouldn't expect to need anything
other than interop to do this (off the top, maybe java.nio.file.Path can be
constructed directly?):

(defn normalize-path [ rest] (- (reduce #(new java.io.File %1 %2) rest)
.toPath .normalize))





On Tue, Nov 19, 2013 at 8:22 AM, Brian Craft craft.br...@gmail.com wrote:



 On Monday, November 18, 2013 3:58:10 PM UTC-8, kovasb wrote:

 There are a large number of high quality libraries like instaparse,
 cascalog, storm, overtone, friend, etc. I find it pretty easy to tell
 the difference between a hobby and production project. Besides the
 typically liveliness measures, its also helpful to know the reputation
 (or lack thereof) of the people behind the projects.


 Yes, there are these fairly advanced libraries in very specific domains,
 but the core libraries are extremely weak.

 For example, I have a project with rather modest requirements, one of them
 being abstract path manipulation. In javascript:

 path.normalize(path.join(one, two, .., three))
 'one/three'

 ruby:

 irb(main):003:0 Pathname.new(one) + two + .. + three
 = #Pathname:one/three

 python:

  os.path.normpath(os.path.join(one, two, .., three))
 'one/three'

 In clojure, people recommend me.raynes.fs:

 = (fs/file one two .. three)
 #File /inside/home/craft/cavm/one/two/../three

 ugh.

 = (fs/normalized-path (fs/file one two .. three))
 #File /inside/home/craft/cavm/one/three

 um, no. Turns out there is no abstract path join + normalization in
 me.raynes.fs. I haven't found an alternative in clojure.

 This is trivial to work around, but I hit this kind of thing constantly
 with every clojure library I use: clojure libraries are about 70%
 implemented, and 90% correct, which makes a weak foundation. I was amused
 to find the Lisp Curse article a few weeks ago, which describes this
 situation. It's often easier to write something from scratch than to
 patch one of the partially-implemented libraries. But this scales poorly,
 and one is truly starting from zero with clojure.

 Of course clojure is a relatively new language, with a much smaller number
 of users than javascript, python, and ruby, so I expect the libraries to be
 less complete. What I don't expect is clojure users to report that the
 libraries are just great. Clojure libraries are very weak compared to other
 modern languages.

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


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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Phillip Lord
Brian Craft craft.br...@gmail.com writes:

 For example, I have a project with rather modest requirements, one of them 
 being abstract path manipulation. In javascript:

 path.normalize(path.join(one, two, .., three))
 'one/three'

 ruby:

 irb(main):003:0 Pathname.new(one) + two + .. + three
 = #Pathname:one/three

 python:

 os.path.normpath(os.path.join(one, two, .., three))
 'one/three'

 In clojure, people recommend me.raynes.fs:

 = (fs/file one two .. three)
 #File /inside/home/craft/cavm/one/two/../three

 ugh. 

 = (fs/normalized-path (fs/file one two .. three))
 #File /inside/home/craft/cavm/one/three

 um, no. Turns out there is no abstract path join + normalization in 
 me.raynes.fs. I haven't found an alternative in clojure.

 This is trivial to work around, but I hit this kind of thing constantly 
 with every clojure library I use: clojure libraries are about 70% 
 implemented, and 90% correct, which makes a weak foundation. I was amused 
 to find the Lisp Curse article a few weeks ago, which describes this 
 situation. It's often easier to write something from scratch than to patch 
 one of the partially-implemented libraries. But this scales poorly, and one 
 is truly starting from zero with clojure.


One of the interesting questions, I think, is the embrace the host
notion. One solution to the problems you describe is to just use the
equivalent java libraries. Is this a failure of the clojure library
ecosystem or a pragmatic solution? 

Phil

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Laurent PETIT
2013/11/19 Phillip Lord phillip.l...@newcastle.ac.uk

 Brian Craft craft.br...@gmail.com writes:

  For example, I have a project with rather modest requirements, one of
 them
  being abstract path manipulation. In javascript:
 
  path.normalize(path.join(one, two, .., three))
  'one/three'
 
  ruby:
 
  irb(main):003:0 Pathname.new(one) + two + .. + three
  = #Pathname:one/three
 
  python:
 
  os.path.normpath(os.path.join(one, two, .., three))
  'one/three'
 
  In clojure, people recommend me.raynes.fs:
 
  = (fs/file one two .. three)
  #File /inside/home/craft/cavm/one/two/../three
 
  ugh.
 
  = (fs/normalized-path (fs/file one two .. three))
  #File /inside/home/craft/cavm/one/three
 
  um, no. Turns out there is no abstract path join + normalization in
  me.raynes.fs. I haven't found an alternative in clojure.
 
  This is trivial to work around, but I hit this kind of thing constantly
  with every clojure library I use: clojure libraries are about 70%
  implemented, and 90% correct, which makes a weak foundation. I was amused
  to find the Lisp Curse article a few weeks ago, which describes this
  situation. It's often easier to write something from scratch than to
 patch
  one of the partially-implemented libraries. But this scales poorly, and
 one
  is truly starting from zero with clojure.


 One of the interesting questions, I think, is the embrace the host
 notion. One solution to the problems you describe is to just use the
 equivalent java libraries. Is this a failure of the clojure library
 ecosystem or a pragmatic solution?


YMMV : a pragmatic solution to not have to do host interop, which is less
supported by text editors / IDEs than aliased clojure functions :-)

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Michael Klishin
2013/11/19 Brian Craft craft.br...@gmail.com

 What I don't expect is clojure users to report that the libraries are just
 great. Clojure libraries are very weak compared to other modern languages.


Bold statement, Brian. Surely you've tried at least 60% of the libraries
out there to make
your judgement more scientific than a survey with thousands of participants
;)

Please try finding a sane concurrency library in Ruby, or use the standard
library primitives.
Try working with binary protocols or even basic statistical problems in
JavaScript. And ask yourself
what % of Python libraries is of the same quality as Requests. Or go work
with crypto libraries
in any of the above.

Clojure's standard library is small but at least if you ask me, overall it
is higher quality than most languages
out there. Certainly leaps and bounds better engineering-wise than Ruby.
-- 
MK

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

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread James Reeves
On 19 November 2013 14:22, Brian Craft craft.br...@gmail.com wrote:


 For example, I have a project with rather modest requirements, one of them
 being abstract path manipulation. In javascript:

 path.normalize(path.join(one, two, .., three))
 'one/three'

 ruby:

 irb(main):003:0 Pathname.new(one) + two + .. + three
 = #Pathname:one/three

 python:

  os.path.normpath(os.path.join(one, two, .., three))
 'one/three'

 In clojure, people recommend me.raynes.fs:

 = (fs/file one two .. three)
 #File /inside/home/craft/cavm/one/two/../three


What about:

(- (io/file one two .. three) .toPath .normalizePath)

I think in this case it's more a problem with the Java API, which the fs
library wraps. Until Java 7, I don't think relative path normalisation
existed in the core Java libraries.

- 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/groups/opt_out.


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Phillip Lord
Laurent PETIT laurent.pe...@gmail.com writes:

 One of the interesting questions, I think, is the embrace the host
 notion. One solution to the problems you describe is to just use the
 equivalent java libraries. Is this a failure of the clojure library
 ecosystem or a pragmatic solution?


 YMMV : a pragmatic solution to not have to do host interop, which is less
 supported by text editors / IDEs than aliased clojure functions :-)

Oh, I've written an reasonably large library over the top of a Java API
which adds (relatively) little but adds a nice syntax, in a evaluative
environment, and hides a few of the boring details (using Stuart
Sierra's top antipattern in clojure
http://stuartsierra.com/2013/03/29/perils-of-dynamic-scope!).

I really don't know the answer to the question yet.

Phil

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Laurent PETIT
2013/11/19 Phillip Lord phillip.l...@newcastle.ac.uk

 Laurent PETIT laurent.pe...@gmail.com writes:

  One of the interesting questions, I think, is the embrace the host
  notion. One solution to the problems you describe is to just use the
  equivalent java libraries. Is this a failure of the clojure library
  ecosystem or a pragmatic solution?
 
 
  YMMV : a pragmatic solution to not have to do host interop, which is less
  supported by text editors / IDEs than aliased clojure functions :-)

 Oh, I've written an reasonably large library over the top of a Java API
 which adds (relatively) little but adds a nice syntax, in a evaluative
 environment, and hides a few of the boring details (using Stuart
 Sierra's top antipattern in clojure
 http://stuartsierra.com/2013/03/29/perils-of-dynamic-scope!).

 I really don't know the answer to the question yet.


Me neither,

I can just observe that those days, I'm writing little wrappers over the
libraries I learn (in the Eclipse world), starting with just very thin
wrappers just to isolate interop. And that I build upon that. A layer
after the other.

Too early to draw any conclusion for me. Time will tell.

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Cedric Greevey
On Tue, Nov 19, 2013 at 10:02 AM, James Reeves ja...@booleanknot.comwrote:


 I think in this case it's more a problem with the Java API, which the fs
 library wraps. Until Java 7, I don't think relative path normalisation
 existed in the core Java libraries.


It didn't, and .toPath isn't in the 1.6 java.io.File class in particular.
1.6 gives you these options:

user= (reduce #(File. %1 %2) [one two .. three])
#File one\two\..\three

user= (.getCanonicalFile (reduce #(File. %1 %2) [one two ..
three]))
#File C:\Windows\System32\one\three

user= (.getPath (reduce #(File. %1 %2) [one two .. three]))
one\\two\\..\\three

Of these only getCanonicalFile normalizes, but it also makes it absolute,
treating it as having been relative to (on the Win32 box I tested it on)
the OS system directory of all places.

It *is* interesting that Ruby Pathname objects and Java File objects get
printed very similarly by Ruby and Clojure, respectively.

I assume that / will replace \ as the separator (and the base directory
used by getCanonicalFile will vary) if the above is used on other operating
systems' JVMs.

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-19 Thread Sean Corfield
Yes, the path separator is O/S dependent:

user (import '(java.io File))
java.io.File
user (reduce #(File. %1 %2) [one two .. three])
#File one/two/../three
user  (.getCanonicalFile (reduce #(File. %1 %2) [one two .. three]))
#File 
/Developer/workspace/worldsingles/ws/model/clojure/worldsingles/one/three
user (.getPath (reduce #(File. %1 %2) [one two .. three]))
one/two/../three

Note that .getCanonicalFile renders the file path relative to the
directory in which the REPL's JVM instance was started.

Sean

On Tue, Nov 19, 2013 at 7:02 PM, Cedric Greevey cgree...@gmail.com wrote:
 On Tue, Nov 19, 2013 at 10:02 AM, James Reeves ja...@booleanknot.com
 wrote:


 I think in this case it's more a problem with the Java API, which the fs
 library wraps. Until Java 7, I don't think relative path normalisation
 existed in the core Java libraries.


 It didn't, and .toPath isn't in the 1.6 java.io.File class in particular.
 1.6 gives you these options:

 user= (reduce #(File. %1 %2) [one two .. three])
 #File one\two\..\three

 user= (.getCanonicalFile (reduce #(File. %1 %2) [one two ..
 three]))
 #File C:\Windows\System32\one\three

 user= (.getPath (reduce #(File. %1 %2) [one two .. three]))
 one\\two\\..\\three

 Of these only getCanonicalFile normalizes, but it also makes it absolute,
 treating it as having been relative to (on the Win32 box I tested it on) the
 OS system directory of all places.

 It *is* interesting that Ruby Pathname objects and Java File objects get
 printed very similarly by Ruby and Clojure, respectively.

 I assume that / will replace \ as the separator (and the base directory used
 by getCanonicalFile will vary) if the above is used on other operating
 systems' JVMs.

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



-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

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

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


2013 State of Clojure ClojureScript survey results

2013-11-18 Thread Chas Emerick

Results of this year's survey are available here:

http://cemerick.com/2013/11/18/results-of-the-2013-state-of-clojure-clojurescript-survey/

Thank you to all that participated!

Best,

- Chas

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

To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: 2013 State of Clojure ClojureScript survey results

2013-11-18 Thread kovas boguta
Great job Chas.

Some notes on methodology and then some general comments

- That the survey was not featured on HN this time without a doubt
alone accounts for the slight dip in responses
- The 'missing' people are more likely fall into the 'hobbyist' camp,
which might explain the increased % of people using clojure at work in
this year's survey
- The increased # of questions probably also reduces survey conversion
(I wonder how many people viewed versus completed the survey)
- There is some bias inherent to the initial ordering in the
reordering-based questions; I for one dragged the most important items
to the top, and didn't carefully think about changing the ordering
beneath that.

I find it impressive that 76% of respondents report using clojure for
web development. This, in spite of a lack of a unified web framework
stretching from the DB to the client, and general confusion in the
masses about what the best solution to use is.




On Mon, Nov 18, 2013 at 2:32 PM, Chas Emerick c...@cemerick.com wrote:
 Results of this year's survey are available here:

 http://cemerick.com/2013/11/18/results-of-the-2013-state-of-clojure-clojurescript-survey/

 Thank you to all that participated!

 Best,

 - Chas

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

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-18 Thread Brian Craft
Wow, this result is shocking to me:

In short, Clojure libraries are easy to find, their maintainers are 
 receptive to feedback and patches, they are technically of high quality, 
 but they’re not always very well-documented.  None of that is surprising or 
 particularly different from last year.


This could not be more starkly different than my experience. I'm not sure 
I've used a clojure library that doesn't have quirky bugs like hanging at 
exit, blowing the heap by holding the heads of seqs, or just doing the 
wrong thing.

Also, I find it difficult to find libraries. When I do find libraries 
they're often deprecated, or moribund. What's the easy way to find clojure 
libraries?


On Monday, November 18, 2013 11:32:56 AM UTC-8, Chas Emerick wrote:

 Results of this year's survey are available here: 


 http://cemerick.com/2013/11/18/results-of-the-2013-state-of-clojure-clojurescript-survey/
  

 Thank you to all that participated! 

 Best, 

 - Chas 


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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-18 Thread kovas boguta
I used to find libraries using github's
now-modified-to-the-point-of-uselessness explore feature. Its probably
still possible to set up a decent search though.

There are a large number of high quality libraries like instaparse,
cascalog, storm, overtone, friend, etc. I find it pretty easy to tell
the difference between a hobby and production project. Besides the
typically liveliness measures, its also helpful to know the reputation
(or lack thereof) of the people behind the projects.




On Mon, Nov 18, 2013 at 4:01 PM, Brian Craft craft.br...@gmail.com wrote:
 Wow, this result is shocking to me:

 In short, Clojure libraries are easy to find, their maintainers are
 receptive to feedback and patches, they are technically of high quality, but
 they’re not always very well-documented.  None of that is surprising or
 particularly different from last year.


 This could not be more starkly different than my experience. I'm not sure
 I've used a clojure library that doesn't have quirky bugs like hanging at
 exit, blowing the heap by holding the heads of seqs, or just doing the wrong
 thing.

 Also, I find it difficult to find libraries. When I do find libraries
 they're often deprecated, or moribund. What's the easy way to find clojure
 libraries?


 On Monday, November 18, 2013 11:32:56 AM UTC-8, Chas Emerick wrote:

 Results of this year's survey are available here:


 http://cemerick.com/2013/11/18/results-of-the-2013-state-of-clojure-clojurescript-survey/

 Thank you to all that participated!

 Best,

 - Chas

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

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-18 Thread Jeremy Heiler
On Mon, Nov 18, 2013 at 4:01 PM, Brian Craft craft.br...@gmail.com wrote:

 Also, I find it difficult to find libraries. When I do find libraries
 they're often deprecated, or moribund. What's the easy way to find clojure
 libraries?


There's http://www.clojure-toolbox.com, but your mileage may vary.

Viewing the commit log on GitHub shows that it's still being updated.

https://github.com/weavejester/clojure-toolbox.com/commits/master

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


Re: 2013 State of Clojure ClojureScript survey results

2013-11-18 Thread Jarrod Swart
I will second http://clojure-toolbox.com and I also recently found: 
http://www.clojuresphere.com/ 

On Monday, November 18, 2013 4:01:27 PM UTC-5, Brian Craft wrote:

 Wow, this result is shocking to me:

 In short, Clojure libraries are easy to find, their maintainers are 
 receptive to feedback and patches, they are technically of high quality, 
 but they’re not always very well-documented.  None of that is surprising or 
 particularly different from last year.


 This could not be more starkly different than my experience. I'm not sure 
 I've used a clojure library that doesn't have quirky bugs like hanging at 
 exit, blowing the heap by holding the heads of seqs, or just doing the 
 wrong thing.

 Also, I find it difficult to find libraries. When I do find libraries 
 they're often deprecated, or moribund. What's the easy way to find clojure 
 libraries?


 On Monday, November 18, 2013 11:32:56 AM UTC-8, Chas Emerick wrote:

 Results of this year's survey are available here: 


 http://cemerick.com/2013/11/18/results-of-the-2013-state-of-clojure-clojurescript-survey/
  

 Thank you to all that participated! 

 Best, 

 - Chas 



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