#clojure logs

2010-06-08

00:00danlarkinsee javadoc for FileWriter: http://java.sun.com/javase/6/docs/api/java/io/FileWriter.html
00:10livingstonis there a way to call a private static method on a java class?
00:12Rayneslivingston: http://github.com/richhickey/clojure-contrib/blob/master/src/main/clojure/clojure/contrib/java_utils.clj#L208
00:12mmarczykvIkSiT: here's my take on level-order: http://gist.github.com/429607
00:12mmarczykwall-hack-method, currently in c.c.java
00:13Raynesmmarczyk: You're too late. HAH!
00:13mmarczykRaynes: darn :-P
00:13mmarczyklivingston: how's your meaning-extraction project coming along?
00:13RaynesI used it back in the stone ages when sexpbot was a Pircbot.
00:13livingstoncool, yeah all's I want is the function at line 340 here: http://jena.cvs.sourceforge.net/viewvc/jena/jena/src/com/hp/hpl/jena/rdf/arp/NTriple.java?view=markup
00:17livingston_I have to get irc unblocked at work... (stupid clint doesn't even last 5 minutes)
00:17livingston_mmarczyk: mostly I'm just working on get a boat-load of bio knowledge extracted from stupid text-file formats into a triple (rdf) store.
00:18mmarczyklivingston_: yeah, I remember -- that's why I'm asking :-)
00:18mmarczykstupid formats or not, the project seems fascinating
00:19mmarczykfor your question, (require '[clojure.contrib.java :as j]) (j/wall-hack-method clojure.lang.LispReader :matchNumber [String] nil "123")
00:20mmarczykis an example
00:20mmarczyk:matchNumber is a private static method -- like the one you're trying to get at
00:20livingston_I'm getting my kb together (enough) so hopefully I can share the work with others. the rdf interaction has been going ok, I hope to release that code to the wild soon - have to get the lawyers to ok EPL.
00:20mmarczykyou could also use classes from java.lang.reflect directly, but wall-hack-method is prettier
00:21mmarczykoh, cool
00:21mmarczykif you can manage that, it'll be interesting to look at
00:21dcnstrctquestion: does the JVM work well on multi-core systems ? I've heard rumors that it starts to crap out once you're dealing with more than 6 cores.
00:22livingston_does System.out not go to *out* ?
00:23livingston_dcnstrct: we have 32+ core machines here - I think they do ok, although I haven't used them much so I don't know if people are really going massively parallel with them.
00:23mmarczyk*out*'s docstring says that's the default
00:24mmarczykdcnstrct: check these guys out: http://www.azulsystems.com/blogs
00:24mmarczykI believe they've got some monster machines running JVMs
00:25livingston_well... that wall-hack compiled and called but I didn't see any output :(
00:25mmarczyk"The Azul "bare metal" Java platform allows applications to scale effortlessly to consume 100s of GBs of memory and CPUs."
00:25mmarczyk-- from their "about us" page
00:26dcnstrctthnx this is good ammo to fire back @ propaganda spewing haskell nerd friend. O.o
00:26mmarczyklivingston_: well, that output's going wherever your JVM's stdout is
00:26mmarczyklivingston_: rebinding *out* (perhaps to send it to swank instead) won't change that
00:28mmarczykdcnstrct: I like Haskell, but I'm not sure it has an edge here quite yet :-)
00:29mmarczykthen again, what do I know... we're all screwed in the presence of propaganda-spewing Erlang nerd friends anyway ;-)
00:30RaynesWhile the Haskell community is a very nice community, they seem to be quite harsh towards any language that isn't Haskell.
00:30mmarczykoh, he's gone... I always notice this *after* writing the final response :-(
00:31livingston_hmm.. not good, this completely vanishes (.println System/out "foo")
00:31mmarczykNorman Ramsey is just (/ 1 (count haskell-community)) part of the Haskell community ;-)
00:31Raynesmmarczyk: Not him, silly.
00:31mmarczykRaynes: oh? hm, I suddenly realise that actually he might not be harsh towards other languages, he seems to be a polyglot :-)
00:32Raynesmmarczyk: I've watched them rag Lisp in #haskell at least 5 times over the last 6 months.
00:32RaynesMore than one.
00:32mmarczykRaynes: have you tried hanging out on comp.lang.lisp at all? ;-)
00:32Raynesmmarczyk: Of course not! :p
00:32mmarczykRaynes: good :-)
00:35mmarczyklivingston_: my experience is that this sends output to the terminal the JVM was started from, if any
00:36livingston_it's slime that's screwing me.
00:36mmarczyklivingston_: try "lein swank" in an empty project, then (.println System/out "foo") at the REPL should send "foo" to that terminal
00:36mmarczyklivingston_: well not really
00:37mmarczykthe fact that *out* is bound to System/out does not mean that System/out is bound to *out*
00:37livingston_how do I temporarily change what System.out points to (not *out*)
00:37livingston_mmarczyk: yes that's exactly what's happening, slime has injected itself as a middle man
00:37mmarczykI suppose CL's swank implementations might capture all output... swank-clojure only captures the Clojure streams, iirc
00:38tomojSystem.out is final
00:38livingston_but I need the output that is going to System.out (maybe this isn't possible) but basically I want to bind over System.out
00:38livingston_tomoj: uh oh so that means no dice for me, right?
00:38tomojI think so, but I'm not sure
00:39tomojthe only possibly way I could think of would be to have a tiny wrapper script which intercepts java's stdout and somehow hands it back to some clojure stuff, which sounds... unpleasant
00:39tomojbut there may be some easier way
00:39livingston_http://measuringmeasures.blogspot.com/2010/01/agony-of-clojurehadoop-logging-and-how.html
00:39livingston_^ has some discussion on it.
00:40livingston_System/setOut perhaps
00:43mmarczykhm, interesting
00:43tomojwat
00:44mmarczykthat blog entry
00:44livingston_geeze even that didn't do it, and worse I called System/setOut without caching the old value ... not sure what that just did to me... stupid side effects
00:44tomojI mean, how can there be a System/setOut when System/out is final??
00:45mmarczykbut is it really?
00:45mmarczykhttp://java.sun.com/javase/6/docs/api/java/lang/System.html
00:45mmarczyk^ there's no indication of that here
00:46mmarczykapparently setOut "reassigns the standard output stream" to an instance of PrintStream
00:46tomojyeah
00:46tomojhttp://java.sun.com/javase/6/docs/api/java/lang/System.html#out
00:46tomoj"public static final PrintStream out"
00:46mmarczykooohhh
00:46mmarczykright
00:46mmarczyksorry.
00:46tomojthat's odd
00:46mmarczyk(why don't they include the "final" qualifier in the summary at the top?)
00:46tomojmaybe I don't remember java as well as I thought I did
00:46livingston_well what they said to do, still didn't do the trick
00:48livingston_er, well, it makes it so that clojure can write to the new System/out like they say, but my old java code (that's supposed to be writing to system.out doesn't show up there...
00:48livingston_perhaps it's still my problem with the wall hacked function
00:49livingston_i'll just reimplement the damn thing,.. what's the best way to accumulate string output character by couple of characters?
00:49mmarczykhttp://blogs.sun.com/nickstephen/entry/java_redirecting_system_out_and
00:50mmarczyknot sure if this will help, but...
00:50mmarczykStringBuilder is good for accumulating stuff into a string
00:51mmarczykI think it's a good idea to .trim it before pulling the string out at the end
00:52mmarczykotherwise the array it uses won't be GC'd, and it might grow larger than necessary for the string... not sure what's the rate of expanding the array etc. though
00:57livingston_well, reduce .replace is going to get me mostly going for right now, as disgusting as that is.
01:06mmarczykhm? I might not have understood what you're trying to do
01:06livingston_basically escape a string in n-triple format.
01:08mmarczyk$(doc clojure.contrib.string/escape)
01:08sexpbot=> ------------------------- clojure.contrib.string/escape ([cmap s]) Returns a new String by applying cmap (a function or a map) to each character in s. If cmap returns nil, the original character... http://gist.github.com/429637
01:08mmarczykit only replaces single characters, but the replacement can be a string
01:09mmarczykso, you're working with an API which makes a string-escaping function private? :-)
01:09livingston_no it's not an api but the functionality was there so I thought I could just grab it.
01:10livingston_in the time I wasted trying to get to it I should have just reimplemented it
01:11livingston_that map function is nice, thanks
01:11mmarczykat least wall-hack-method is a nice function to know
01:11mmarczyknp :-)
01:12livingston_although I still have an issue with hex escaping everything else, but I can probably take the source from that and change the default
01:12mmarczykright
01:21hiredmanwall-hack-method doesn't exist anymore
01:23livingston_so in java this works if ar is an array of char : (ar[i] >= 32 && ar[i] <= 126) but in clojure I can't seem to figure out how to get an ascii code comparison with say the character \c
01:23livingston_hiredman: hm, good to know. it was as the name implies definitely a hack, I'm just going to reimplement the code I wanted to hack to.
01:24livingston_(i was just hoping I could have been done in time to get dinner before 11 at the good burger place, oh well)
01:24hiredmanwell
01:24hiredmanit does exist, just got renamed
01:25livingston_I guess basically I just need to know how to cast a char to a number (it's ascii code)
01:26hiredman,(<= 32 (int \c) 128)
01:26clojurebottrue
01:26hiredmanchars are ints
01:26hiredmanthe difference is a lie
01:26livingston_hiredman: well I'll know what to look for if I need it later for testing.
01:26livingston_cool thanks
01:26livingston_I was just looking at (int _) also but I wasn't sure if that was accurate
01:27hiredmanjust like in java you can cast an char to an int
01:27livingston_so that cast is basically free right?
01:27hiredmandamned if I know
01:27livingston_well I won't worry about it then, until the profiler tells me to care
01:32mmarczykhiredman: I'm on 1.2 and I still see wall-hack-method in clojure.contrib.java
01:32mmarczykit was gone for a while, but then came back as part of the effort not to break things through gratuitous renaming
01:32mmarczykis it gone again now?
01:35hiredmandunno
01:36RaynesIgnore this little test, a recent update of sexpbot's configuration format might have broken the per-channel blacklisting of the title scraper: http://stackoverflow.com
01:36hiredmanI wrote the thing, so I just use the original
01:36RaynesGoodie. It didn't.
01:37mmarczykhiredman: right. well, it seems likely to stay in 1.2 under it's old name, so let's hope that happens
01:37livingston_how can I form a string with the unescaped character #128 in it?
01:37mmarczykRaynes: good to know the cool name's still with us :-)
01:37mmarczyk(char 128)
01:37hiredman,(str (char 128))
01:37clojurebot"€"
01:39mmarczyk"\u0080" is also an option
01:39Raynesmmarczyk: Huh? :o
01:40mmarczykRaynes: oh, I suddenly noticed your previous msg... it appeared out of nowhere as far as I can tell
01:40mmarczykcompletely changes the perceived meaning of the next one :-P
01:40livingston_it keeps getting escaped no matter what I do I keep seeing \200
01:40mmarczykI think I should maybe get some sleep, it's been a long night over here
01:40mmarczyklivingston_: that's just the printed representation
01:41mmarczykyou're seeing *one* \, if it was escaped in the string, you'd see two
01:41mmarczyk"\\200"
01:41Raynes:p
01:41livingston_I'm realizing maybe my buffer/printer is being too smart...
01:42mmarczyk$(read-string (with-out-string (print "\u0080")))
01:42sexpbotjava.lang.Exception: Unable to resolve symbol: with-out-string in this context
01:42mmarczyk$(read-string (with-out-str (print "\u0080")))
01:42sexpbotjava.lang.SecurityException: Code did not pass sandbox guidelines: ()
01:42mmarczykhuh?
01:42livingston_DOH
01:42mmarczyk,(read-string (with-out-str (print "\u0080")))
01:42clojurebot€
01:42Rayneswith-out-str is probably not whitelisted.
01:42mmarczykommission?
01:43livingston_... the i redefined this function but am still calling the old function bug strikes again
01:43RaynesActually, I guess it's StringWriter that needs to be properly whitelisted.
01:43RaynesI don't know, I'll check tomorrow. It's late.
01:44mmarczykright.
01:44tomojlivingston_: do you use C-M-x or something like that?
01:46livingston_C-c C-k ... but it was even worse than that
01:46livingston_I was calling the one in the old ns and I moved it to a different ns
01:46tomojah
01:47livingston_yeah, this is a sign I should have gone and gotten that burger a *long* time ago.
01:47tomojwould be kinda nice to have a "reset the repl to a virgin state and recompile everything" button
01:48mmarczykit's called M-x slime-restart-inferior-lisp ;-)
01:48mmarczykfollowed by (require ' <M-p a couple of times>
01:49mmarczykthat's under the assumption that a nice require form for all the relevant namespaces is available in the history... otherwise a custom init script would probably be needed
01:49mmarczykthat's doable with mvn, apparently, I wonder about lein
01:52livingston_this is a perpetual problem with any REPL language ... and no what you are proposing isn't a general-purpose solution ;)
01:52livingston_you loose all your state, database connections, etc. etc.
01:52mmarczykright
01:52livingston_or ^lose
01:52mmarczykthe price to pay for being absolutely sure everything's clean
01:53mmarczykI wish stuff from required namespaces would get undefed at the repl
01:53mmarczykafter disappearing from the namespace
01:53mmarczykon the other hand, that could be *very* problematic sometimes
01:54mmarczykso for those times, I wish things stay the way they are :-P
01:54mmarczykI don't think I'm prepared to offer a general purpose solution :-)
01:54livingston_if that's all you want you can mostly get away with un-interning the whole namespace or whatever is the equivalent in clojure
01:55RaynesGoodnight, my fellow parentheses fetishists. <3
01:55mmarczykRaynes: sweet bracketed dreams
01:55mmarczykremove-ns, yeah
01:56mmarczykin fact, that's a good idea
01:57mmarczykbind something like C-c C-K to something clever to do (remove-ns ...) followed by C-c C-k
01:57livingston_you don't want to do it all the time - kills all you state and defonce's etc.
01:58mmarczykoh sure
01:58mmarczykbut often enough my namespaces have no state and defonces, just regular functions which get moved around between them
01:58mmarczykso that's a simple fix for those simple cases
01:58tomojoh, cool
01:59tomojI didn't know about remove-ns, thanks
01:59mmarczykyw :-)
01:59tomojI thought you had to loop through the ns-publics and ns-unmap or something silly like that
02:00zmila,(hello world)
02:00clojurebotjava.lang.Exception: Unable to resolve symbol: hello in this context
02:04livingston_hey, thanks for the help -- it's food/bedtime...
02:04mmarczyksame here, actually
02:04mmarczykbbl
03:13LauJensenMorning all
03:15Raynes$(with-out-str (println "omg"))
03:15sexpbot=> "omg\n"
03:15Raynesmmarczyk: ^ Fixed that.
04:19esjMorning Parentheratii
04:19TheBusbyHoping they'll have T-shirts for that before long
04:21esjnot sure that alone can support my lisp habit
04:32tomojis parentheratii the plural of parentheratio?
04:34TheBusbylatin is evil...
04:35hiredmanI wonder if the driver for the hp blueray drive is on the disc
04:36LauJensentomoj: no its the name of a superhero "Paren The Ratii"
04:36hiredmanmischan
04:39tomojthen what's a ratii?
04:39esjI dunno, I'm just making it up as I go along. I sounds like a plural to me, but I never studied latin :)
04:39tomojah
04:39esji'm basing it off The Illuminatii
04:40tomojewige blumenkraft
04:40esjindeed
04:52esjLauJensen: I pronounce you the official #Clojure Ratii
04:54LauJensenkthxbye
04:54LauJensenAre there any standard libs for porting apps to GAE ?
05:00npoektophi! is it possible to write smth like (do (ns nspace ...) (defn ...))? I need it for tests.
05:03LauJensen$(do (ns myns) (defn fn1 [] "hello") (ns user) (myns/fn1))
05:03sexpbotjava.lang.SecurityException: Code did not pass sandbox guidelines: (#'clojure.core/in-ns #'clojure.core/refer clojure.core def #'clojure.core/in-ns #'clojure.core/refer clojure.core)
05:03LauJensen,(do (ns myns) (defn fn1 [] "hello") (ns user) (myns/fn1))
05:03clojurebotDENIED
05:03LauJensenoh well, try it locally
05:05tomojdo you actually want to create a new namespace?
05:09npoektopno, i want to add something to existing namespace
05:13LauJensennpoektop: no difference, the code I pasted will work
05:14npoektopthank you!
05:14LauJensennp
05:15tomojhmm
05:15tomojso why does in-ns exist?
05:15LauJensen,(doc in-ns)
05:15clojurebot"([name]); Sets *ns* to the namespace named by the symbol, creating it if needed."
05:15tomojoh, I see the difference
05:16tomoj(let [foo 'bar] (in-ns foo)) vs (let [foo 'bar] (ns foo))
05:16tomojthe former switches to bar while the latter switches to foo, I think?
05:18LauJensenCorrect
06:53powr-tocIs the current clojure-contrib-1.2.0-SNAPSHOT compatible with clojure-1.2.0-master-SNAPSHOT on build.clojure.org/snapshots??
06:54powr-tocI get the dreaded java.lang.NoSuchMethodError: clojure.lang.RestFn.<init>(I)V error
07:02LauJensenpowr-toc: I've never had them fall out of sync, for any other reason than an outdated jar in ~/.m2/
07:02LauJensenBut it can happen
07:03powr-tocLauJensen: so you think I should just nuke some jars in .m2, and rerun mvn?
07:04LauJensenpowr-toc: what I do is rm -rf ~/.m2, and try again
07:04LauJensenI've never had that, not work
07:05powr-toccool... I've had this happen once before too... I don't understand how maven screws up...
07:05powr-tocI though -SNAPSHOT should always get the latest version
07:06LauJensenpowr-toc: if it finds something named -SNAPSHOT in cache, it'll go with that.
07:07powr-tocLauJensen: so what should be in my pom? clojure 1.2.0-master-SNAPSHOT and clojure-contrib 1.2.0-SNAPSHOT?
07:07powr-tocor do I need contrib 1.1.0-master-SNAPSHOT?
07:08LauJensen"1.2.0-SNAPSHOT" will do fine
07:09LauJensenfor contrib I mean, clojure is "1.2.0-master-SNAPSHOT"
07:09LauJensenAnd those 2 should work together. But as I hinted above, I dont think the update process is automated, so Clojure could be updated sometime before Contrib, which could cause a skew
07:09powr-toc:-\
07:10esjwhen running tests from clojure.test via swank in emacs, where do the messages about failures etc go (1.2 snapshot). I just get the final map containing counts.
07:10LauJensenesj: using clojure-test-mode ?
07:10esjno, straight up. You recommend c-t-m ?
07:11LauJensenabsolutely - You hit some key, dont remember which ofc, C-c C-; I think, and whichever tests fail, gets highlighted with red background color - couldnt be simpler
07:11esjmuch obliged Lau... I'll get that going right now.
07:11LauJensennp
07:19esjLauJensen: any idea why its now gets complains about mismatched parens in the (ns ...) (understanding that they do, in fact, match) ?
07:19esjno worries if its not a common complaint
07:20powr-tocLauJensen: Okay, I just removed my .m2 and have both clojure-1.2.0-master-SNAPSHOT and clojure-contrib-1.2.0-SNAPSHOT in my pom... after downloading the world again I get the same error... It looks like clojure and contrib are out of sync... any ideas on what I can do?
07:20LauJensenesj: havent heard of it
07:21LauJensenpowr-toc: sec, I'll try to replicate
07:21powr-tocLauJensen: cheers bud
07:21esjk, I'll figure it out and report if its at all interesting
07:24LauJensenpowr-toc: I nuked .m2/, pulled "1.2.0-master-SNAPSHOT" and "1.2.0-SNAPSHOT", started a repl and imported something from contrib, no errors
07:24powr-tochmm...
07:25LauJensenlike so
07:25LauJensen :dependencies [[org.clojure/clojure "1.2.0-master-SNAPSHOT"]
07:25LauJensen [org.clojure/clojure-contrib "1.2.0-SNAPSHOT"]
07:25LauJensen
07:28powr-tocLauJensen: my dependencies are the same (except in pom.xml)
07:29LauJensenMakes no sense
07:29LauJensenWhich Repo are you pulling from ?
07:29LauJensenBoth of mine came from Clojars
07:29powr-tocLauJensen: http://gist.github.com/429887
07:29powr-tocLauJensen: build.clojure.org/snapshots
07:30powr-tocI didn't think clojars containing 1.2 of contrib and clojure
07:30powr-tocI thought lein put build.clojure.org/snapshots on the repo path automatically
07:31powr-tocserver.clj is my file
07:31LauJensen[INFO] snapshot org.clojure:clojure:1.2.0-master-SNAPSHOT: checking for updates from central
07:31LauJensen[INFO] snapshot org.clojure:clojure:1.2.0-master-SNAPSHOT: checking for updates from clojure-snapshots
07:31LauJensen[INFO] snapshot org.clojure:clojure:1.2.0-master-SNAPSHOT: checking for updates from clojars
07:31LauJensenDownloading: org/clojure/clojure/1.2.0-master-SNAPSHOT/clojure-1.2.0-master-20100607.150309-85.pom from clojars
07:31LauJensenTransferring 1K from clojars
07:31LauJensen
07:31powr-tocyou think I should remove snapshots as a repo?
07:32LauJensenYea that must be it
07:32LauJensenPerhaps build.clojure.org is the one out of sync, but they push both to clojars at the same time... would be nice if clojars could be trusted
07:33powr-tocLauJensen: looks like you're right and that they are on clojars after all
07:34powr-tocLauJensen: but I still get the same error :-\
07:35LauJensendid you remember to nuke .m2 again?
07:36powr-tocLauJensen: my project has a lot of dependencies, so I did rm -rf /Users/rick/.m2/repository/org/clojure instead
07:36powr-tocLauJensen: that should be good enough right?
07:36LauJensenNot sure
07:37LauJensenLogic tells me yes, but Maven tells me logic aint so good no more
07:37powr-tocLauJensen: there's no other metadata in .m2 that isn't inside the dependency dirs - as far as I can tell
07:37LauJensenk
07:38powr-tocok... I'll try downloading the world again (though I did that the first time)
07:38LauJensenIf that doesnt work I'd try simplying the startup process, only importing what is nescessary to validate the jars
07:39powr-tocLauJensen: yeah... shame clojure stacktraces suck so much in these situations
07:39powr-tocI can usually read them ok, except for namespace use/requires etc...
07:41LauJensenYea - I'm a little worried about when I meet Rich for the first time, if I'll shake his hand so hard that it crunches, while internally just seeing the line "Exception: NO MESSAGE (SOURCE:0)" :)
07:45powr-toclol
07:46powr-tochmm.. still get the same error :-(
07:49powr-tocLauJensen: am I right in thinking duck-streams has been replaced with clojure.contrib.io?
07:49LauJensenYes sir
07:49powr-tocthat might be my error
07:49LauJensenWhich is weird, since ducks are funnier
07:50sparievmore ducks and fishes !
07:50LauJensenhttp://github.com/richhickey/clojure-contrib/blob/master/src/main/clojure/clojure/contrib/duck_streams.clj#L24
07:51powr-tocLauJensen: http://scienceblogs.com/notrocketscience/2009/12/ballistic_penises_and_corkscrew_vaginas_-_the_sexual_battles.php
07:51powr-toc(it is safe for work btw - I promise!!)
07:51LauJensenehm - I am not clicking that link
07:52sparievlol
07:52LauJensenNice try though spam-artist
07:52LauJensenThats the most elaborate spam-trick I've ever seen, going undercover as a Clojurian struggling with Maven ( I mean its very beliveable ) only to post lude links
07:54rsynnottLauJensen: possibly some sort of adware built into the client?
07:54powr-tocLOL... It's scientific research into the sexual evolution of ducks
07:54rsynnottthough actually, it's not proper spam
07:54rsynnottit's on scienceblogs, which is reputable
07:55powr-tocanyway it just adds to the general duck comedy IMHO
07:55LauJensenrsynnott: Ok, so you think people who are very taken up with ducks sexuality are reputable? we have a name for them in Denmark as well, but its not 'scientist' :)
07:57sparievheh, so that's what they mean by 'Duck IO'
07:57vu3rddI have a small utility function called error which does nothing but throw an exception with a string which is passed to that function. When I define it in the repl, I get this error: "Reflection warning, NO_SOURCE_FILE:1 - call to java.lang.Exception ctor can't be resolved."
07:57vu3rddwhat is ctor?
07:57powr-tocspariev: lol
07:58chouser"ctor" is short for "constructor"
07:58ChousukeLauJensen: :P
07:58Chousukethe blog post turned out to be rather interesting.
07:58vu3rddchouser: Thanks. Why do I get this warning?
07:58Chousukethough I didn't watch the videos.
07:59powr-tocChousuke: yeah it's a good post
07:59chouservu3rdd: dunno. maybe post that fn somewhere?
07:59vu3rddchouser: sure
08:00vu3rddchouser: http://gist.github.com/429915
08:01chouserok, it's just a performance warning.
08:01vu3rddchouser: ok.
08:03chouserClojure can't tell at compile time that 'string' will always be a String -- you might pass in another kind of object. So it compiles code that at runtime will look at the type of the arg and try to find the correct ctor
08:03chouserIf you want to promise to Clojure that string will always be a String, it'll generate faster code and the warning will go away.
08:04vu3rddchouser: Thanks for the explanation
08:05chousernp
08:05vu3rddchouser: yes indeed, with type hint it goes away. thanks a lot
08:05bsteuberdoes anyone have experience with a mixed java/clojure project using eclipse?
08:06bsteubermy problem is that eclipse doesn't find clojure-definded classes I'm referencing from java
08:07bsteuberthe maven build itself still works, but these eclipse error messages are pretty annoying
08:12powr-tocDo compojure 0.4 and ring 2.2 work with clojure-1.2.0-master-SNAPSHOT and clojure-contrib-1.2.0-SNAPSHOT?
08:15arohnerpowr-toc: compojure 0.4 and ring 0.2.0 work for me here
08:15arohnerpowr-toc: I'm using clojure 1.2-20100504
08:29powr-tocpresumably swank-clojure works with 1.2
08:30powr-tocyeah it does
08:40powr-tochmmm... Ok, it looks like compojure.core doesn't work with 1.2.0 of clojure/contrib :-\
08:42powr-tocthe latest snapshot that is
08:46LauJensenpowr-toc: If you're not dug in, try Moustache
08:55LauJensenFor those who care: http://twitter.com/LauJensen/status/15703604050
08:56LauJensenThere's a little nginx-fu involved, which is cool :)
09:01qebabCould anyone tell me if there's any "canonical" event system for clojure (ie. like what twisted is for python)?
09:01bartjLauJensen: I am pretty sure I saw links to your blog elsewhere, which resulted in 404
09:02LauJensenbartj: where?
09:02bartjLauJensen: I know you have re-written your blog completely using Enlive...but why don't the old links resolve?
09:02LauJensenbartj: Old links should work just fine
09:02cemerickclojure survey response data and accompanying blog post incoming :-)
09:03LauJensenuuuh
09:03bartjLauJensen: don't remember now...
09:03cemerickit's going to be a very busy day on the blogs and twitter :-D
09:03chouserqebab: not quite sure what that means, but there are watchers to have functions called when reference objects state change.
09:03chouserqebab: would that help?
09:05LauJensenbartj: try: http://www.bestinclass.dk/index.php/2010/04/prototurtle-the-tale-of-the-bleeding-turtle/
09:05LauJensenand keep your eye on the url
09:05sparievqebab: is it "evented systems" are you talking about. like twisted or event-machine ?
09:06sparievif so, you could try jetty or glassfish stuff
09:19rhickeyso, (defn ^{:static true :ret int} foo [^int x] x) seems like a bit much to say
09:19rhickeycould auto-static given any primitive hints, since they are not supported otherwise
09:20rhickeymaking it: (defn ^int foo [^int x] x)
09:20chouserstatic is for direct binding?
09:20qebabsorry, about not replying and thanks for the replies
09:21rhickeychouser: well, not direct binding as it is now, but yes, non-dynamic
09:21qebabchouser: basically I want to schedule a number of timed events while also listening on possibly a number of sockets without having to do all the dirty work myself
09:21qebabspariev: I'll take a look, thanks
09:21chouserso re-defing is ok, but 'binding' won't work
09:22rhickeylpetit suggested defstatic or similar, but I'm concerned about the path from (defn foo [x] ...) to something faster
09:22rhickeychouser: redefs will not be seen by code calling by name without re-eval, as with a macro
09:22chouserok
09:23sparievqebab: netty might also be helpful - http://www.jboss.org/netty
09:23qebabspariev: thanks :)
09:24qebabspariev: ahh, that looks exactly like what I need
09:24chouserrhickey: are you also addressing a difference there between :rtn and :tag?
09:24rhickeyseparately, the ret types might be allowed to vary per arity. so :tag on fn name insufficient
09:24canderarhickey: any concerns about the fact that a type hint will change linking behavior? That seems like the sort of thing that I'll mess up about 100 times before I start remembering it.
09:24chouserThat is, the type of the thing in the var vs. the type returned by the IFn in the var?
09:24rhickey(defn foo ^int [^int x] x) possible, and works for multiple arities
09:25rhickeycandera: that was the concern of the person who wanted the error
09:25chouserI must have missed a discussion.
09:25rhickeyI just want something short and easy to remember. If clojure takes more to do this than Java, then fail
09:26canderaI suppose at the point where you're adding primitive type hints you've crossed over into "you should be able to realize the consequences".
09:26chouserI like the return hint on the arg list
09:26rhickeycandera: well, there is also going to static without primitives, so that still needs to be short
09:27canderaBut at that point it's just ^{:static true}, which isn't as bad. Although longer than Java.
09:27chouser(defn ^static foo ^int [^int x] x) scans nicely, but the semantics go all wobbly
09:29rhickeychouser: right, I like the ret hint on arglist, but want something better for static
09:29cgrand(defn foo ^Object [x] x) triggers static, no?
09:30rhickeycgrand: could do, but I'd hate to have to say ^Object
09:30canderarhickey: I didn't understand the comment about defstatic/path to something faster. Is there a problem having defstatic be the idomatic form and having a more verbose form as the underlying construct?
09:30LauJensenWouldnt (defn ^int add [x y]...) make a lot of sense ?
09:30cgrand^:static
09:31rhickeycandera: the thing about type hints in general, is you take something without them and add them. Moving from defn to defstatic is changing something you have, rather than adorning
09:31canderaRight. I see your point now.
09:32rhickeyLauJensen: did you see above re: multiple arity?
09:32rhickeythere's nothing that says how :tag is to be interpreted. It is just a way to communicate to the compiler. There;s always been a mismatch with :tag on defns as the contents of the var are fns, not what the tag says
09:33rhickeyso, (defn ^static foo [] ...) is not inherently bad
09:33cgrand a keyword short hand for metadata? ^:foo ^{:foo true}
09:34LauJensenrhickey: yea I saw - I just meant in terms of reading, putting the type before the name makes sense
09:34LauJensen(to me)
09:34rhickeycgrand: how to keep people from wanting multiples of those?
09:34chouserrhickey: yes, I know it's always been that way, but there times when it would be useful to specify both the specific type of the IFn and the type of the IFn's return value.
09:35rhickeycgrand: e.g. (defn ^:this ^:that ^:the-other foo ...
09:35chouserheh. they could stack!
09:35chouser^{:this true :that true :the-other true} foo
09:35cgrand^#{:this :that} ;-)
09:36powr-tocLauJensen: why do you prefer moustache?
09:36hoeckhow do I typehint something as an array of strings?
09:37LauJensenpowr-toc: Read my blogpost on why I implemented bestinclass.dk using Moustache/Enlive :)
09:37hoeck^strings doesn't work, ^{:tag (type (make-array String 0))} neither
09:37rhickeybegs the question as to what ^{:this true} ^{:that true} fred ought to do. Right now one replaces the other, but should it?
09:38chouserhoek: Try #=(type ...) instead
09:38chouserhoeck: or just ^"[Ljava.lang.String;"
09:38rhickeycgrand: I like that ^:foo == {:foo true}
09:39rhickeyand if meta literals merged...
09:40hoeckchouser: thx, the latter one worked
09:40rhickey^:static ^:awesome foo would work too
09:41powr-tocLauJensen: which post is that?
09:41a_strange_guymeta literals already "merge"
09:41a_strange_guybut only for the :line keyword
09:41a_strange_guyxD
09:41powr-tocLauJensen: best in class has been baked?
09:41rhickey,(meta (quote ^{:this true} ^{:that true} fred))
09:41clojurebot{:this true}
09:41LauJensenpowr-toc: http://bestinclass.dk/index.clj/2010/05/refresh-your-cache--best-in-class-has-been-baked.html
09:42powr-tocLauJensen: It doesn't seem to provide any justification for enlive over compojure
09:42powr-tocI mean moustache, sorry
09:42rhickey(defn ^:static foo ^int [^int x] x) still losing to Java
09:43LauJensenpowr-toc: Hmm - Ok sorry, I must have mis-remembered, ask me again once Rich figures out how to implement statics :)
09:43a_strange_guy,(meta ^:keywd [])
09:43clojurebot{:tag :keywd}
09:44fogus_(defstatic foo ^int [^int x] x)
09:44rhickeyLauJensen: statics work on my machine
09:44rhickeyfogus_: see above about the diff between adorning and changing
09:45fogus_sorry. late to the game. will read now
09:45rhickeyfogus_: would be nice to do this only via adorning
09:45rhickeye.g. you start with (defn foo [x] x), then do what to make it fast?
09:45LauJensenrhickey: right, I just meant "one discussion at a time" :)
09:46hoeck(defn ^[int [int int]] foo [x y] ...)
09:46rhickeyhoeck: see above re: variable arity
09:47hoeckk
09:47rhickeyso, adding ^:static is not bad for a fn that takes/returns Objects, but seems like extra work once primitives in play
09:47chouserdefaulting to static when required seems ok.
09:47Chousukemaybe you could extend defn to support various shortcut forms like (defn foo ^int [(ints x y z)] ...) hmh
09:48cgrandautomatic static when primitives args seems sensible to me
09:51rhickeyanyone want to whip up a patch for ^:keyword == {:keyword true}, and metadata merging, for LispReader?
09:52cgrandin which timeframe?
09:52rhickeycgrand: nowish
09:52chouserhehe
09:54cgrandis tehre any use-case for the existing support of keywords as :tag values?
09:55rhickeycgrand: I don't think so
09:56cgrandok, the patch is simpler than I thought
09:56rhickeyclaim this if you want to have at it: https://www.assembla.com/spaces/clojure/tickets/375-metadata-literal-enhancements
09:57chouserleftmost meta literal wins?
09:58Chousukewhich way is easier to implement? :P
09:59chouserno diff, I think.
09:59cgrandchouser: leftmost is easier to implement
09:59Chousukeif someone has conflicting keys in metadata literals, they probably deserve weird behaviour :)
09:59rhickeychouser: there's no leftmost really, the rules stay the same ^foo whatever adds foo metadata to whatever. If whatever already has metadata, then we merge new metadata. Last merged wins
09:59rhickeybut it's not as if ^foo ^bar is a special thing
09:59rhickeystill recursive read of next object
10:00hoeckwhat about ^#{:static :public :void} instead of ^:static ^:public ^:void?
10:00rhickeyhoeck: I'd rather not go there
10:02rhickeybiab
10:05cemerickResults from the State of Clojure, Summary 2010 Survey http://bit.ly/dtdAwb
10:06_fogus_yay
10:06LauJensenpowr-toc: did you get my priv msg ?
10:11MrHusDoes anyone know how to make a regex that grabs "expressions". So when you have "this is a string (+ 3 (* 5 5)) with an expression or two (+ 2 3)" it would return ("(+ 3 (* 5 5))", "(+ 2 3)")
10:12opqdonutit isn't possible, sorry
10:13chouserMrHus: you can't do n-level nesting matching like that
10:13opqdonutapparently you can with some extensions, like perl's regular expressions
10:13chouserwithout regex extensions supported (afaik) only by perl
10:13opqdonutbut not with ordinary ones
10:13opqdonutchouser: :)
10:13chouser:-)
10:14MrHusPerl anything it can't do :P
10:14chouserMrHus: if you really wanted a single regex and had a cap on the number of nesting leveels you wanted to handle, perhaps something could be worked up.
10:14chouserdoesn't seem likely to be worthwhile, though.
10:14a_strange_guyopqdonut: are the expressions strings or lisp code?
10:14a_strange_guyyou could use clojure.walk
10:14MrHusstrings
10:15a_strange_guythen you need to write something a parser...
10:15MrHusit would appear so
10:15opqdonutyou _could_ use read
10:15pedroteixeirais there anything similar to immigrate but for java imports?
10:19_fogus_cemerick: Clojure is "evil"... are you referring to the Loper OS guy?
10:19LicenserMrHus: May i suggest you take a look into walton
10:19MrHusOk
10:19LicenserI wrote a code that did exactly that , extracting expressions from a string
10:20Licenserit's no regexp but it is working
10:20wthiddendoes anyone have a repl/break debug package they would like to share?
10:20MrHusGot a link having trouble finding it
10:21Licenserhttp://github.com/defn/walton/blob/master/src/walton/core.clj#L38
10:21LicenserMrHus: was just looking for it :)
10:23cemerick_fogus_: I was specifically remembering comments I heard at the last ILC as well as in various c.l.l. threads.
10:24MrHusLicenser: Thanks it is exactly what I needed
10:25Licenseryou're welcome
10:25LicenserI love to help at times °°
10:25chousercemerick: very nice writeup, thanks!
10:25Licenserwhy is clojure evil?
10:26chouserLicenser: because it's infected with JVM impurities
10:26_fogus_cemerick: I see. I suppose the least surprising part was that most did not come from Lisp or Scheme
10:26LicenserI did come from ruby, neither java nor Lisp
10:27cemerick_fogus_: I knew that would be the case, but if you weren't familiar with the community, I'm not sure that's obvious on spec.
10:27cemerickchouser: I hope it's helpful. :-)
10:27Licenserchouser: infected with java impurities, hmm you mean that you can use objects and stuff?
10:27chousercemerick: asking the replacement question was brilliant; the answers, telling.
10:28chouserLicenser: right, java interop means it's not lisp all the way down.
10:28_fogus_chouser, cemerick: Definitely
10:28Licenserwel I'm not sure if it is bad that it is not lisp all the way down, I mean if you want that you can use CL right?
10:29sparievcemerick: I suppose you were referring to http://www.loper-os.org/?p=42 for "clojure is evil" thing?
10:29cgrandrhickey: patch attached
10:29chouseralmost everybody came from languages imperative and macroless, and almost everybody would move on to a language with at least one or the other.
10:29noidiClojure's evilness is the only reason I'm able to use a 2-year-old language at work right now :P
10:30chousernoidi: exactly
10:30chouserit's not actually "evil", it's just practical.
10:30sparievit's the only negative article on Clojure I know of
10:31cemerickspariev: that's one example. I've had lots of unpleasant personal encounters with CL folk as well.
10:31LicenserOne thing about CL I did not like was the way beyond fanatical views that you hear from the community, I enjoy cojure a lot since the community is very open - It hink one reason being that it is not 'pure
10:31noidifor example yesterday I had to start writing code for reading and writing binary data. A few minutes of googling brought up a brilliant, mature, declarative Java library exactly for that sort of thing: http://preon.sourceforge.net/
10:32noidiI added a few lines to my pom.xml and I was good to go
10:32noidigood luck doing that with a 2-year-old "turtles all the way down" language :P
10:32LauJensencemerick: did you post yet?
10:32cemerickLauJensen: http://bit.ly/dtdAwb
10:33LauJensenyea nvm, just saw your tweeto
10:33LauJensenCool - For the first graph you can actually calculate how many people answered your poll, since 3% make up 6 people :)
10:35LauJensenNice, 62% are appreciating Emacs :)
10:35sparievI wish La Clojure were more usable
10:35rhickeycgrand: thanks!
10:36LicenserLauJensen: not to destroy your world but I think reason for that is that all other options are no fun
10:36rsynnottI'm surprised emacs usage is as low as 62%
10:36LauJensenLicenser: hehe, 'destroy my world'? :)
10:36cemerickLauJensen: you'll likely not like my take on the editors portion, but I think the comments from the survey data is telling.
10:36rsynnottand I'm amazed that command line repl is at 30%; presumably there are a lot of masochists :)
10:36cemerickrsynnott: I think that might be people just doing lein repl or mvn clojure;repl?
10:36Licenserthinking that 62 appricate emacs in opposite to 62% are not patient enough to get over the horrors of oterh ides :P
10:37stuarthallowaycemerick: nice writeup. One question: Is "in flux" really true about APIs? More "in growth", no?
10:37kensanataWow, this muckandbrass.com site takes forever to load.
10:37kensanataDid #clojure alone slashdot the server? :)
10:37cgrandrhickey: you're welcome
10:37cemerickkensanata: nah, it's getting plastered from all over :-)
10:37LauJensenkensanata: its a little slow, but try the clojure-driven bestinclass.dk for comparison :)
10:38cemerickit's just an aws m1.small, so be generous :-)
10:38kensanataIt just finished loading! /me goes and read...
10:38cemerickstuarthalloway: I think "in flux" is appropriate if you're not following the various goings-on w.r.t. contrib, api migrations, etc.
10:39cemerickBeing a G-list blogger is a PITA, infrastructure-wise. :-P
10:40LauJensenHAHA "The Joy of Clojure is amazing. And Mike Fogus is very handsome."
10:41Licensercemerick: oddly enough 14 people saied they remember when #clojure had only 6 people, that means 8 are lairs!
10:41cemerickLicenser: given time zones, that seems about right :-)
10:42Licensercemerick: wait you want to tell me people actually turn off their computers at night?!?!
10:42noidiit's nice to see that 18% of the respondents use VimClojure (even though I jumped ship to Emacs myself) -- it's an amazing piece of work
10:42LauJensencemerick: whats a g-list blogger?
10:42cemerickas in, D-list celebrity, but I'm not even up to the level of 'D'
10:43cemerickit was supposed to be a joke :-)
10:43cemerickhttp://en.wikipedia.org/wiki/D-list
10:43kensanataEven though I'm a hard-core Emacs user, I must agree that for my work colleagues a slick Eclipse plugin is practically mandatory.
10:44cemerickkensanata: for me, as well :-)
10:44cemerickthus, my slight tooling obsession
10:44LauJensencemerick: aah I get it
10:44cemerickLauJensen: I think you might be E-level or something ;-)
10:44stuarthallowaycemerick: big +1 on paying $500 for a good tool. I would do that for every person on our team.
10:45LauJensenkensanata: Emacs gives you the most power, but its important to also cater to people who prefer pretty windows and visuals instead of higher productivity. cemerick you had some thoughts on that right? :)
10:45cemerickstuarthalloway: I think I'll start a petition!
10:45noidioh, reading about Clojure development tools reminded me that these instructions are slightly out of date http://www.assembla.com/wiki/show/clojure/Getting_Started_with_Maven
10:45noidithe version of the swank-clojure package should be 1.2.1
10:46cemerickLauJensen: more than a few, of course
10:46cemerickhttp://muckandbrass.com/web/display/~cemerick/The+Ideal+Clojure+Development+Environment
10:46noidi1.2.0-SNAPSHOT is not found in the defined repositories
10:46LauJensencemerick: waiting for it to load....
10:46LauJensenstill...
10:46cemerickLauJensen: of course, it's not just pretty windows and visuals -- it's actually higher overall productivity, not just text-slinging
10:46noidiI even registered to assembla to leave a comment, but apparently you need some privileges for that...
10:46LauJensencemerick: you might want to clone bestinclass.dk :)
10:46Licensercemerick: but a very brilliant post :)
10:46_fogus_Has anyone played with the idea of including a very basic "graphical REPL" with the Clojure distro? Would tht even be helpful?
10:46cemerickLauJensen: it's a very small box :-)
10:47LauJensencemerick: I very seriously doubt that - Emacs excels on integration, not just the text slinging
10:47LauJensen'though Im a pragmatist' - sure sure :)
10:47rhickeycemerick: great job with the poll - thanks!
10:47LauJensenI think you're more in the 'fundamentalist' camp :)
10:47lpetit_fogus_: have you looked at the attempts of hiredman ?
10:48_fogus_lpetit: I suppose I haven't
10:48lpetit_fogus_: don't know the current status of it, though
10:48cemerickrhickey: I hope it gets some discussions riled up, and helps with prioritizing your and c/core's work. :-)
10:49shooverwhat's wrong with Enclojure? I thought it was great when I looked at it
10:49kensanataI don't know whether "# I have learnt a lot more by asking questions on the IRC then anywhere else...You guys are awesome." is good or bad news. :)
10:49cemerickLauJensen: I'm more in the use-what-works-for-you camp, which I think is probably the opposite of fundamentalism
10:49lpetitLauJensen: FUDing on graphical IDEs won't make emacs neither more powerful, nor more attractive to newbies :-p
10:49canderafogus: I think a GUI EXE that got people started would be great for Windows devs.
10:50cemerickshoover: Nothing is *wrong* with enclojure (I've used it for almost as long as I've used clojure). It has rough spots, the editing isn't ideal, and there's all sorts of debugger issues though.
10:50stuarthallowaycandera: there's a card for that~!
10:50lpetit_fogus_: I remember he opened a project on his github account for that
10:50_fogus_lpetit: I will check it out
10:50stuarthallowaycandera: and Russ Olson was working on it -- drive down the street and grab him and help finish it
10:50shoovercemerick: I see. I point newbs to it all the time, and I figured it would be higher on the results
10:50canderastuarthalloway: Heh. If only someone were paying me to do clojure...
10:51_fogus_candera: Yeah really
10:51canderaBut I'll talk to Russ the next time I see him.
10:51cemerickshoover: NetBeans is the weakest part of enclojure, which is a systemic problem...and it's possible that it's #3 in terms of Java IDE usage, so that's another hit.
10:51noidi_fogus_, have you used Python's IDLE? It's pretty much a "graphical REPL", and it's been bundled with Python for as long as I've been using it (12 years or so)
10:52_fogus_Ruby folks seem to universally use the same editor (can't recall the name)... is that appreciably easier to set up than anything that Clojure has to offer?
10:52cemerick_fogus_: textmate?
10:52wlangstrothlpetit: but I heard that graphical IDEs eat babies - not true?
10:52_fogus_noidi: Yes, I've played with it, but it's been a while
10:53_fogus_cemerick: That's the one
10:53cemericklpetit: am I wrong that you're the "owner" of ccw?
10:53cemerick_fogus_: TM is a dead-end in a variety of ways
10:53noidiit's worth looking into IDLE to see if there's a market for that sort of thing
10:53lpetitcemerick: it's fair to say that, I think
10:53_fogus_cemerick: except for its ubiquity
10:54cemerick_fogus_: well, I'm being quite literal -- it's closed-source, and functionally isn't being developed any further.
10:54lpetitcemerick: why the question ?
10:55cemericklpetit: I just popped onto the GC page, and you weren't listed first under "owners" is all.
10:55dysingerwlangstroth: that happened to my 1st 2nd child - eclipse ate her
10:55wlangstrothI knew it!
10:55dysingerI've been using emacs ever since and me 2nd 2nd child is doing well
10:55_fogus_It would be nice to have an option like clj --gui that starts a very basic graphical gui providing history, html docs, some basic completion, etc...
10:55dysingerCLJIDLE
10:55shooversomehow I don't think Rich was expecting 53% web development when he started Clojure... although that could be somewhat included in the caveats mentioned at the top
10:56_fogus_cemerick: I see what you mean WRT TM
10:56lpetitcemerick: I'm not the initial creator. But it's been a long time (will be two years in september/october) since the initial owner left me the house.
10:56cemerick_fogus_: there was a mailing list post from the author that HN linked to last week. Sad state of affairs. :-/
10:56canderashoover: There are a number of factors that could explain the web factor. For one thing, you deploy web stuff on your own server, which makes it way easier to justify.
10:56cemericklpetit: Good enough, then. Glad I didn't make a mess of that one. :-)
10:57cemerickcandera, shoover note that that question allowed for multiple responses. So really, web dev is just the LCD of all development. ;-)
10:57rhickeyFAIL in (test-annotations) (test_clojure.clj:92) - aargh!
10:57stuarthallowayrhickey: on your box, or in the world?
10:58shoovercandera: Yes, also: it's such a solid language some people showed up and found so many goodies they forgot they needed concurrency they came for in the first place
10:58rhickeystuarthalloway: the aargh ifs for the same line # in test_clojure, whatever the error
10:59stuarthallowayrhickey: there was a post about line numbers on clojure-dev this morning ... related?
10:59_fogus_candera: I'll join you in cornering Russ at the CAPCLUG. Maybe we can muscle him into finishing. ;-)
10:59mattreplthe author has mentioned open sourcing textmate, but probably only out of frustration
10:59rhickeystuarthalloway: didn't see
10:59canderashoover: Yeah, I actually don't think concurrency is the main selling point. But it works great as bait. :)
10:59arohnerrhickey: http://groups.google.com/group/clojure-dev/browse_thread/thread/1c2687d40f9b1a6f/0abf8719450457cd?show_docid=0abf8719450457cd
10:59canderafogus: I'd hack on it with him during the meeting, but I want to hear your presentation. ;)
11:00_fogus_candera: We have a mingle session after my preso correct?
11:01_fogus_candera: Whoa! He just sent me an email. Cosmic. I'll see what he has to say.
11:01canderafogus: :)
11:02canderafogus: David is also presenting, but there will surely be some time before and after.
11:02canderafogus: Although maybe we should arrange a hacking evening or day.
11:02_fogus_candera: Let's
11:04rhickeyreally, could FAIL in (test-annotations) (test_clojure.clj:92) be more useless?
11:06LauJensenlpetit: agreed
11:08dysingerstuarthalloway: met one of you clj co-workers last night. :)
11:08stuarthallowaydysinger: don't hire all the good clojure programmers at RailsConf :-)
11:09korreis railsconf now?
11:09dysingery
11:09korredoing anny clojure talks this year?
11:09rhickeyah, test-annotations is in test_clojure/genclass.clj
11:09dysingerstuarthalloway: I can't hire them all - only have 3 slots open right now
11:10dysingerthere's enough to go around :)
11:10stuarthallowayrhickey: does your hammock not implement find-grep-dired?
11:10dysingerlol
11:10rhickeystuarthalloway: I'm telling you, these reports from test stink, I waste a lot of time on them
11:13stuarthallowayrhickey: I don't disagree
11:14noidistuarthalloway, btw. is circumspec still under development, or did you stop working on it when you escaped dan north's basement? ;)
11:15stuarthallowaynoidi: it's dead, at least for me for now. Sierra was going to put some of the good parts in lazy-test
11:16chouserbefore he was hired by some fly-by-night outfit and re-tasked
11:16cemericklol
11:16chouserer, I mean by a respectable member of the business community
11:19rhickeycgrand: did ant test work for you on your LispReader patch?
11:21cgrandI ran it on windows where several test fails (because of EOL and file separators issues) and didn't spotted the number of failed tests grew from 8 to 10. Mea culpa.
11:25stuarthallowayhttps://www.assembla.com/spaces/clojure/tickets/376-make-sure-tests-pass-on-windows
11:25chouserDo we want the reader-supplied :line to overwrite literal metadata of seqs but not symbols?
11:25chouserI guess that's a separate issue.
11:25cemerickstuarthalloway: did you have a straight face when you wrote that? Milestone could be set to *. ;-)
11:26cemerickFWIW, setting up a hudson build slave in a windows VM for build.clojure.org would be a fairly straightforward thing to do.
11:26stuarthallowaycemerick: yes. when we do a build box reset we'll do that
11:27stuarthallowaymaybe get an android CI build too :-)
11:27cemerickground-breaking :-)
11:27noidiWhere should I report the error in the "Getting Started with Maven" page in the Assembla Wiki? For some reason editing or commenting on the page is not allowed.
11:28cemericknoidi: what's the issue?
11:29noidicemerick, the version number of swank-clojure should be 1.2.1 in the example pom.xml
11:29noidi1.2.0-SNAPSHOT is not available in the repos that are listed in the pom
11:30noidithat's one of those tiny things that can be really confusing for newbies
11:31cemericknoidi: fixed, thanks
11:31noidigreat!
11:31cemericknoidi: you just need to ask for someone to elevate your status on assembla on the clojure-dev list
11:31noidiok
11:31cemerick(assuming you're already a member and have sent in your CA)
11:32noidinope, but I'll keep that in mind :)
11:33noidicemerick, is there a reason why you kept the "-SNAPSHOT" suffix?
11:33noidi1.2.1 is tagged and available on clojars http://clojars.org/swank-clojure
11:34cemericknoidi: crud, no. I fixed the fix. Thanks again :-)
11:35rhickeydoes this make sense to anyone? http://gist.github.com/430205
11:36rhickeywhat does it mean to expected: (instance? ...) and actual: $Proxy2
11:36rhickey?
11:37cemerickshouldn't that not be possible?
11:37rhickeyI have no idea how to interpret this stuff
11:38stuarthallowaytarget was actually a $Proxy1
11:38stuarthallowaybut why?
11:39stuarthallowayare you asking about clojure.test's special case behavior for instance?
11:39cemerickperhaps an unprintable parent classname, bad munging?
11:39stuarthallowayor about what went wrong to cause it
11:52rhickeydoes out go to someplace special when testing?
11:52stuarthallowayrhickey: that is f#$%cking ant, not test
11:53stuarthallowayI run tests from a REPL to avoid Ant's help
11:55stuarthallowayrhickey: http://gist.github.com/430231
11:59arohnerI have a few clojure functions, foo, bar,baz. Only one of them can be running at a time, because of limitations in mongoDB. Is the best way to accomplish that with 'locking?
11:59arohnerand what's the best way to get a monitor for it to lock?
12:00a_strange_guy(def lock (Object.))
12:00arohnera_strange_guy: thanks
12:00a_strange_guyj.u.c.locks.Mutex also works
12:01canderaOr you could send the functions to an agent. They'll serialize on it.
12:02arohnercandera: I want to get the return value of each send. Is there a good way to do that with agents?
12:02canderaNot really.
12:04chouseryou could put a watcher on the agent -- guaranteed to get called with each new state
12:04cemerickarohner: you could add a watcher to the agent
12:04cemerickdammit :-P
12:04chouserhehe
12:04cemerickshouldn't I have the time zone advantage?
12:05canderaIt's sort of weird, though. If you really want serialization of activity, locking is probably the way to do it. Unfortunately.
12:05chousercemerick: we're in the same zone. no speaking from the future for you.
12:05arohnerright, but if I have a watcher, I need some way to get the return value back to the calling function
12:05cemerickcandera: if there's one agent, a watcher can capture the results in order
12:06cemerickchouser: oh, right. Intuitionally, EDT should end around PA.
12:06chouserif you really need synchronous calls, an agent is a poor fit.
12:06canderaAnd if you're going to do that, you don't really need to use an agent, right? Watch an atom that a future sets. Although again: blech.
12:06chousercemerick: yeah, we're right on the edge.
12:06arohneryeah, it still seems like locking is my best bet
12:07canderaCells are your best bet. :)
12:07arohnerif they were available :-)
12:07canderaPfft. Details.
12:09canderaSee above re: available.
12:10_fogus_available to early-adopters :p
12:10canderaCh 12 is up on MEAP?
12:10_fogus_yes
12:10cemerickimplementing cells is pretty straightforward -- but if people thought clojure stack traces were bad before....whoo.
12:10cemerick:-)
12:11canderafogus: Good to know. WTH didn't I hear about this...
12:11_fogus_cemerick: I didn't see anyone complaining about the difficulties in debugging cells implementations. :p
12:12cemerickthat'll be in the Winter 2010 edition, I presume :-)
12:12_fogus_heh
12:12cemerickThat's a constant issue for me with our cells impl....which passes around and partially evaluates lazy seqs, too, so it gets really hairy.
12:14canderafogus: OK, I have Chapter 12. Which bit is the cells impl? The contracts stuff?
12:14_fogus_cemerick: Ours just calculates baseball batting averages... so no debugging issues here. :-)
12:15_fogus_candera: Uhhh, section 12.4 I think. defformula
12:16candera12.3.1 in mine. Got it. Will read: thanks.
12:16_fogus_np
12:17rhickeycgrand: if you are still looking into the test failures, don't boter. It is a bad test for annotations that depends on the order of things out of a hash-map
12:18danlucraftcandera: which book is this? Joy or Action?
12:19cgrandrhickey: ok, thanks.
12:19canderadanlucraft: Joy.
12:19danlucraftcandera: good?
12:19canderadanlucraft: great!
12:20cgrandrhickey: I'm sorry to have rushed this patch out
12:21rhickeycgrand: I asked for it! But the bug wasn't yours
12:21danlucraftcandera: oh go on then!
12:21rhickeyI hate brittle tests
12:25noidihave clojure's unit tests caught any regressions that would have been missed without the tests?
12:39powr-tocok well and truly confused... I have compojure 0.4.3-RC working in a lein project but exploding in a mvn project upon a (ns foo (:use [compojure [core :only [wrap!]]))... both are using clojure-1.2.0-master-SNAPSHOT and 1.2.0 of contrib
12:39powr-tocanyone any ideas?
12:39powr-tocI get a NoClassDefFoundError Could not initialize class compojure.core__init
12:41powr-tocbut I can see the compojure jar is included in (System/getProperties) :-(
12:42powr-tocwhich is the same jar that lein copies into lib/
12:57Licensercooookies!
13:00djpowellhmm - has map got broken in HEAD?
13:00djpowell,(map vector [1 2 3] [2 4 6])
13:00clojurebot([1 2] [2 4] [3 6])
13:01djpowellhmm nevermind
13:01djpowellit isn't working in my current repl - I guess I must have screwed something up in there
13:07arohnerhrm. ring.middleware.cache is in the ring source tree, but not in my ring-core-0.2.2.jar
13:17OForerohello
13:18OForeroI was wondering if some one knows the name of the paper
13:18OForeroor author on the Tries which is supposed to be the base for Clojure's collections
13:20technomancyOForero: it's Bagwell, I think
13:20OForerothanks I will try to locate something with that
13:22a_strange_guyhttp://lamp.epfl.ch/papers/idealhashtrees.pdf
13:28OForerothanks ... I am checking ... that work is from EPFL
13:30kycshello, can someone help me understand this NullPointerException when filtering a lazyseq?
13:30kycs(type events) => clojure.lang.LazySeq
13:30kycs(count events) => 367
13:30kycs(count (filter #(= 0.0 (:num %)) events)) => NullPointerException
13:30kycs(count (filter #(= 0.0 (:num %)) (take 150 events)) => 98)
13:30kycs(count (filter #(= 0.0 (:num %)) (take 200 events)) => NullPointerException
13:31a_strange_guy(= 0.0 nil)
13:31a_strange_guy,(= 0.0 nil)
13:31clojurebotfalse
13:31kycsah
13:31kycslet me check that, thank you
13:31cgrandrhickey: inside a deftype a call to (instance? MyType x) fails because what is tested is if x is an instance of the stub class.
13:31a_strange_guynope not the reason
13:32a_strange_guykycs, this code can't fail
13:32a_strange_guyis events a lazy seq?
13:33kycsyes, type returns LazySeq
13:33a_strange_guythe NPE must come from the realization of events
13:39kycsI read in the log of events using contrib.duck-streams.read-lines and generate a lazy-seq of event maps. I bound this lazy-seq to events to test with the code above.
13:40kycsIs binding the correct term when using (def events <the-lazy-seq>)?
13:42OForerojust in case anyone is interested
13:42OForerohttp://infoscience.epfl.ch/search?rg=10&amp;sc=0&amp;sf=&amp;so=d&amp;of_format=hb&amp;of_export=bibtex&amp;ln=fr&amp;sp=&amp;cc=Infoscience/Research/IC&amp;as=1&amp;p1=Bagwell&amp;f1=&amp;ext=collection:REPORT
13:42kycsI am running 1.1.0 if that matters.
13:43chouserkycs: yes, when you provide a value to 'def', it establishes a root binding
13:48kycsthank you
13:49kycsgoing back to this lazyseq question: I can call first and last on my lazyseq and the results are expected. However, filtering the entire lazyseq results in the NPE.
13:49kycsIs there a difference in how the lazyseq is realized when run through a filter vs last?
13:52kycsI can successfully apply filter to the lazyseq if I (take 181 events), however, applying filter to (take 182 events) throws the NPE.
13:53kycsI know the exact number isn't as important as how events is realized.
13:54a_strange_guyactually it is important how 'events is created
13:54kycsok
13:54kycsyou're right
13:55rhickeycgrand: do you have a test case?
13:56kycslet me try slurp in-place of read-lines
13:56cgrandrhickey: http://gist.github.com/430398
13:58chouserkycs: yeah, that's pretty strange. I'm having a hard time imagining how that's possible.
13:59rhickeycgrand: thanks
13:59cgrandrhickey: in usercode, the workaround is to use .isInstance
13:59zakwilsonReading the survey results, it seems a lot of people want a comprehensive IDE for Clojure (and would pay for it). While I dream of spending a year of my life writing such a thing and making a few tens of thousands of dollars from it, perhaps an open-source project would be a better way.
14:01kycsit must be the way I am creating the lazyseq by reading in my log file.
14:03riddochcrhickey: did you get my contributor agreement? What's next?
14:03jcromartiecan I just say namespace.specifier/symbol is so much better than namespace.specifier.symbol
14:03jcromartiethanks for that :P
14:04jcromartiezakwilson: something like DrScheme (DrRacket now) or more like Eclipse?
14:04jcromartieI feel like the Java interop that would be going on in any big/serious project almost necessitates a strong Java side to the IDE, which makes a plugin to an existing IDE very appealing
14:05a_strange_guykycs: what do you do to read the logfile?
14:05jcromartieI'm pretty always use extra Java libraries in my Clojure projects.
14:05a_strange_guyread-lines?
14:05jcromartieI pretty much*
14:05kycsI use read-lines
14:05zakwilsonjcromartie: I was thinking somewhere between, with more than a bit of inspiration from Emacs in terms of how things are implemented under the hood.
14:06lancepantzwhat could a more full featured ide do that slime doesn't?
14:06jcromartiezakwilson: written in Clojure?
14:06kycsa_strange_guy: the file can get pretty large so I was trying to avoid slurp
14:06a_strange_guywrap the call to read-lines in a (dorun ...)
14:06zakwilsonlancepantz: be approachable for people who don't know Emacs
14:06kycsok, trying that
14:06a_strange_guyit will load the whole file in ram though
14:07lancepantzwouldn't an ide of equivalent power have its own barriers though?
14:07jcromartieClojure-IDE-in-Clojure would be great. Someone already made a very small one. I forget what it's called.
14:07zakwilsonjcromartie: yes. I suspect reflection can handle most of the Java interop issues, but I'm no expert there (I have a Lisp background. By Java experience is limited to writing a single applet)
14:08cemerickzakwilson: not sure if you read my scratchpad that "specs" out what's need, but if you can drop emacs into eclipse, I think you win.
14:08cemerick(that's mostly figurative, of course)
14:08technomancywell they did just add xembed support
14:08technomancyoh, you meant figuratively.
14:08kycsI copied my snippet to pastebin: http://pastebin.com/1zNu0VTm
14:08cemerickmostly, yeah :-)
14:08zakwilsoncemerick: I haven't, and that sounds like a horrible monstrosity, but I think I know what you mean.
14:08kycscan you take a look at (parse-file) which generates the lazy-seq from the log file please?
14:09jcromartieParedit is pretty awesome, and I think it's by far the best way to edit Lisp code
14:09kycsI may be missing something obvious that you'll spot
14:09lancepantzagree
14:09cemericktechnomancy: e4 has a lot of hooks that will make dynamic UIs cake to drive at runtime. It's begging for someone to write a clojure shell, and bootstrap all the goodies from there.
14:10technomancycemerick: more power to em. I fully admit to being 100% out of touch with what "regular people" want myself, but the more the merrier.
14:10cemerickzakwilson: my objective would be to ensure that all the defaults are "right" for people that like eclipse et al., but as dynamic and flexible as necessary to support emacs-like customization, etc.
14:12cschreinerHow can I bind *out* to the *Messages* buffer in emacs?
14:12a_strange_guykycs: looking at it
14:12kycsa_strange_guy: nevermind
14:13kycsa_strange_guy: I found an issue
14:13zakwilsonWhat I'm picturing here is an Emacs-style editor platform with a bunch of IDE stuff built on top and included in the default distribution. It would be a one-click install for Clojure.
14:13kycsthe 182 map has nil values
14:13zakwilsonAnd by Emacs-style, I don't mean Emacs learning-curve or keybindings (though there should probably be an option for that)
14:14cemerickzakwilson: that *sounds* good, but that's a long, long road. That "bunch of IDE stuff" is a huge category that I don't think anyone can reasonably replicate.
14:14cemerickThat's why I think stacking on top of one of the IDEs is really the only way to go.
14:14kycsa_strange_guy: thanks for helping me rule out my lazy-seq.
14:15zakwilsonIndeed. I'm not entirely sure what "bunch of IDE stuff" people actually want. The nice thing about an Emacs-style design is that people from the community can extend things without actively being involved in the project, then you can appropriate (with permission, of course) their code in to the project if it's useful.
14:16jcromartieBuilding an IDE on an IDE platform is kind of like building a language on the JVM... and we know how that works
14:17jcromartieit gives you a head start
14:17jcromartieand lots of stuff "for free"
14:17cemerickzakwilson: Basically everything included in a std Java dev environment -- good editors, UI toolkits, outlines, debuggers, maven and ant integration, etc etc etc. Again, all that stuff in my scratchpad.
14:19zakwilsonjcromartie: maybe so, but there's an awful lot of bloat and complexity there. I may also be biased as I kinda like Emacs and wish it had a better Lisp powering it.
14:19zakwilsoncemerick: where's your scratchpad?
14:19cemerickzakwilson: http://muckandbrass.com/web/x/DoBZ
14:20Tweyzakwilson: *approve*
14:20cemerickzakwilson: What people see as bloat is often the bits that are most attractive to the majority of devs.
14:20chouserI think the only role to fill short of ongoing improvement to existing plugins (for emacs, netbeans, eclipse, etc.) is something of specifically limited scope.
14:21chouserperhaps something that ties in with labrepl
14:21zakwilsonWhat I want to make may well not be what people are asking for, and honestly, I probably don't have the determination to make it happen. That said, if a few more people want what I want, I'll most certainly contribute.
14:21technomancyzakwilson: some day clojure will compile to elisp bytecode
14:21chousernot a development environment as such, but an easy-install, feature-poor learning environment
14:22zakwilsonWhat chouser is suggesting could be a good way to get traction on the project I want to build.
14:22technomancychouser: maybe like a repl that doesn't require external commands to be usable?
14:22cemerickthis sound like the IDLE concept that was batted around earlier
14:23a_strange_guytechnomancy: what do you mean by external commands?
14:23chousercemerick: yeah, that's close to what I'm imagining
14:23cemerickI think that'd be stellar, and I'd probably keep it open all the time.
14:24cemerickThere is no single right answer to the dev environment question. Lots of use-cases.
14:24technomancya_strange_guy: rlwrap or an emacs shell
14:24cemerickREPL + better object browser + doc browser perhaps
14:24chousertechnomancy: ah yes, like that.
14:25zakwilsonin-place popup macroexpansion sounds interesting... especially if it highlighted the parts of the resulting code that are macro-generated and prevented editing them.
14:25technomancya_strange_guy: basically I'm saying it'd be nice if Clojure's repl didn't go "durr hurr" when you pressed the arrow keys
14:25chouserheh
14:25arohnertechnomancy: lol
14:25canderaI could see something that had a menu bar with lots of common commands. Pick an item and it would just spew the appropriate text to the REPL. Maybe with an intervening dialog to collect arguments.
14:25canderaE.g. Help->Find Documentation presents a dialog that takes terms. You hit "OK" and it runs (find-doc "whatever you typed in the dialog")
14:26technomancyif jline's license is compatible, I think it'd be a good thing to ship with the clojure releases along with a bin script
14:26technomancyit's not as nice as rlwrap, but it's just a jar file
14:26canderaServes the dual purpose of discovery and education.
14:27a_strange_guyi dislike jline
14:27chouserthis is what I had in mind when I started textjure, but then I got bogged down trying to do vi-like keybindings
14:27a_strange_guyimpossible to enter multiline things
14:27technomancya_strange_guy: it definitely does need work. but the alternatives aren't viable for improving clojure's out-of-the-box repl experience.
14:28a_strange_guysomething like IRB from ruby would rock
14:28a_strange_guyit has nicely done autocompletion
14:29technomancyruby can tie straight into libreadline because it's written in C
14:30jcromartieIRB is OK
14:30jcromartiebut rlwrap makes the clojure console pretty awesome
14:30chouserusing swing instead of a terminal has benefits for consistent handling of unicode, etc.
14:30jcromartieI really think that the Clojure community should banish all mentions of JLine and recommend rlwrap
14:31chouseris rlwrap available for all platforms?
14:31jcromartiechouser: and that's where a "DrClojure" would come iin
14:31jcromartieyeah
14:31jcromartieI use rlwrap on Mac and Windows
14:31jcromartie(through Cygwin on Windows)
14:31technomancyjcromartie: you can't ship rlwrap with clojure though
14:31jcromartieno, but you can recommend it over JLine, which is quite simply terrible
14:31jcromartieand doesn't ship with Clojure anyway
14:32jcromartieI like chouser's Swing console idea
14:32chousera few have even been written already
14:32chousertextjure tries to do some nice things around multi-line input, coloring stdout, stderr, and return values differently, etc.
14:32technomancydo people really still have encoding issues with terminals?
14:32chouserbut no up-arrow support yet. :-P
14:32clojurebotmax people is 283
14:33jcromartieugh, the first result for "clojure drscheme" on Google is that LoperOS doofus
14:33jcromartiespoils my day
14:33jcromartienow I am in a bad mood
14:33jcromartie:P
14:33raek_technomancy: yes
14:35jcromartierlwrap just instantly gives it all of the features one expects from a command-line console, so I'll always recommend that
14:35raek_clojure has worked great, though
14:35jcromartiebut I'll work on that DrClojure :)
14:35raek_DrClojure sounds awesome!
14:35jcromartietabs up top, console on the bottom
14:36jcromartiehttp://plt-scheme.org/screenshots/
14:36jcromartieI'd love to be able to have graphics in the REPL too
14:38raek_lein repl reads utf-8 but writes latin-1 for me though
14:38TweyWhy would you want graphics in REPL?
14:38TweyI'm confused
14:38jcromartieTwey: ask the Scheme people
14:38Tweyin a**
14:38TweyGraphics in emacs bewilder me enough
14:39jcromartieTwey: it's nice to be able to deal with images as just more data
14:39TweyAnd people who insist on using graphical IRC clients
14:39raek_something like arrows for stack traces?
14:39Tweyraek_: There are appropriate Unicode characters…
14:39technomancysomebody please write libreadline bindings using jni or something (no idea if that's even possible)
14:39jcromartieno I mean like if I have an image or a graphics canvas, output the image in the REPL
14:39timcharperTwey: have you ever used Emacs for LaTeX ?
14:39Tweytimcharper: Yeah
14:39TweyI didn't find auctex's previews that useful
14:39jcromartieI don't need a "graphical" REPL
14:39timcharperok...
14:39jcromartieI just want to deal with images the same way I deal with numbers and strings
14:40timcharperWell, I found it useful
14:40jcromartieimage printing
14:40timcharper:-)
14:40jcromartieI guess is the term
14:40TweyYou can still pop up a window…
14:41raek_Twey: what do you mean? when I evaluate the string "åäö", which my terminal encodes in UTF-8, the repl prints "���", which in this case probably means that the terminal got three non-valid-UTF-8 bytes, that is "åäö" encoded in latin-1
14:41jcromartiesure but I'd love to see an image and be able to say (scale *1 200 200)
14:41jcromartieinstead of having 100 windows for 100 iterations of an image
14:42jcromartieit'd be especially handy for encanter
14:42raek_yeah, "widgets" to visualize other kinds of values than numbers and strings
14:42jcromartieimagine being able to just say (histogram x) on a collection
14:42raek_images are values too
14:42jcromartieexactly
14:42Tweyraek_: Are you sure your terminal is encoding it in UTF-8?
14:43TweyThe REPL seems to do UTF-8 okay for me.
14:43jcromartiethey don't have to be treated as magical byte sequences :)
14:43raek_very.
14:43raek_this only happens with "lein repl"
14:43Tweyjcromartie: Fair enough
14:43raek_the "java -jar clojure.jar" repl gets it right
14:44technomancyraek_: if you could try it on the latest version and open a ticket if you could repro that'd be great
14:44technomancyI think it may be fixed
14:44raek_yeah, I suspect so...
14:45raek_is the utf-8 option for swank enabled by default nowadays?
14:45raek_it makes my slime crash if it's not and I write any non-asciii character
14:47raek_I really should pull the latest versions of everything and go bezerk with my swedish letters everywhere I can...
14:47raek_...and then report the bugs, of course
14:48raek_for the greater good of every non-english clojure community
14:48jcromartiehow does Clojure deal with UTF symbols and things?
14:48jcromartiecan I say (def π ...)
14:49arohnerjcromartie: yes
14:49TweyYes
14:49jcromartiecool
14:49Tweyraek_: Please do
14:49arohnerI have (defn Σ ...) and (defn Π ...)
14:49jcromartieExcellent
14:49TweyThe English Clojure community would appreciate it, too :þ
14:50raek_clojure source code is always in UTF-8, IIRC
14:51djpowellyeah
14:51jcromartiefor Spanish Clojurers: ¡disj
14:51canderaraek_: Huh? If I use another encoding, something will barf? Is that true?
14:51TweyHehe
14:51raek_I'm glad clojure inherited the character-byte disctinction from java...
14:52raek_candera: yes, if you use another encoding the reader won't be hapy
14:52canderaI always assumed that whatever awareness Clojure has of encodings is via PushbackReader. Is PushbackREader that broken?
14:53raek_you could always read from your own reader
14:53raek_which you can configure to use any coding you like
14:54raek_broken?
14:54canderaSorry - I'm coming from the .NET side, so my mental model of the Java stuff underneath is far from complete or correct.
14:55canderaSo I would think that the reader is written against an API that is above the level of what particular encoding the source file is in.
14:55raek_IMHO, the fact that clojure source files are encoded in UTF-8 should be considered a part of the file format
14:55canderaE.g. I could use UTF-32 and it would still look like a stream of characters at the level of the reader.
14:55djpowellI think read, uses PushBackReader wrapped around an InputStreamReader initialised to use utf-8
14:56raek_readers provide a stream of characters.
14:56djpowellwell load-file does, you can probably provide your own Reader implementation somehow
14:56canderaOK, so the brokenness comes from forcing use of a UTF-8 InputStreamReader, not from PushbackReader.
14:56djpowellwell it is done deliberately
14:57canderaI eagerly await hearing how once again Rich has made some decision that seems weird to me at first, but brilliant on explanation. :)
14:57djpowellit basically does new PushbackReader(new InputStreamReader(in, "utf-8"))
14:57TweyForcing UTF-8 here isn't really broken
14:58canderaWhy not? What if my file is encoded otherwise?
14:58raek_then you have to load it manually
14:58TweyIt covers everything you'd ever want to read… the only reasons to keep other encodings around are 1) legacy and 2) efficiency
14:58Twey1) shouldn't apply, as there's no Clojure code written prior to UTF-8's advent
14:58TweyAnd for 2) UTF-8 is the best choice, as Clojure syntax is primarily in the ASCII range
14:59Twey(and standard symbols)
14:59canderaThis is not an issue for me, as I don't have anything where I'd need this. I just find it surprising - seems like it would be reasonable to default to UTF-8, but not to force it, especially since one could use the BOM to pick up other encodings.
14:59raek_also, if source files were allowed to be in any coding, where should the information about which coding it uses go?
14:59Crowbar7first line
14:59canderaBut if symbols are restricted to the ASCII and near-ASCII range, then it's even less of an issue.
15:00raek_and what coding should the first line be in?
15:00TweyASCII
15:00djpowelland if your file is in utf-16?
15:00Twey(by dint of largest-common-denominator)
15:00TweySTill ASCII
15:00TweyStill**
15:00Crowbar7I agree focing UTF-8 is a good idea
15:00raek_then, the file cannot be in, say, UTF-16
15:00TweyThe rest of it can
15:00raek_since it's not ascii-compatible
15:01raek_that sort of works for ascii-based encodings
15:01TweyNo, but there's nothing wrong with having the first line be ASCII and the rest UTF-16, other than tool support
15:01Crowbar7UTF-16 do we really have more then 65000 characters?
15:01TweyIf you care about the tools, you can make a separate file, say ‘foo.meta’ for each ‘foo.clj’, that provides the metadata and is fully encoded in ASCII
15:01raek_all text editors would need special cases for clojure code, then
15:02raek_i'm not sure if the Basic Multilingual Plane is full yet...
15:02djpowellif your editor can't support utf-8 (which most can), then I doubt it can support mixed ascii/utf-16
15:02canderaI guess I thought the BOM (if present) would be sufficient for determining the encoding.
15:03canderaOtherwise, assume UTF-8.
15:03TweyBut not all UTF-16 has a BOM
15:03raek_latin-1 cannot code the BOM
15:03TweyThe BOM is optional
15:03canderaI see.
15:03TweyAnd yeah, that doesn't work for other non-ASCII–compatible encodings
15:04TweyBut the upshot of it is that we don't need to care about this stuff because UTF-8 has no real downsides for this usage so we can just use that and be done with it ☺
15:04raek_I think that forcing utf-8 is the most elegant solution for mostly-ascii text
15:04canderaWell, on balance, if we had to pick one, UTF-8 is a great choice. And if it moves the tooling a step closer to supporting it universally, bonus.
15:04raek_agreed
15:04TweyCrowbar7: UTF-16 usage is mostly about encoding characters with higher code-points more efficiently
15:05TweyRather than accessing more code-points
15:05canderaIf I wind up doing any Clojure in Chinese, I may feel differently. :)
15:05raekdon't forget klingon...
15:05TweyUTF-8 allows you to represent ASCII characters in single bytes, but at the cost of requiring more bytes for characters furthur up
15:06TweyE.G. the Han section requires three bytes under UTF-8, but only two under UTF-16
15:06cemerickcandera: chinese write code in ASCII for the most part as well, even in languages that allow for more "exotic" characters. :-)
15:06canderaRight. And it's not like the size of source files is really a big concern.
15:06TweyYeah, that too.
15:06canderaOK, color me enlightened. Again.
15:07canderaErr, "slightly more enlightened".
15:07TweyHehe.
15:07cemerickI guess I'm big into surveys lately. :-P
15:07cemerickAm I missing anything here? http://spreadsheets.google.com/viewform?formkey=dHVEYUg3V3dMZjc0VDdNUFhWMGJ2bmc6MQ
15:07TweyUTF-8 is capable of representing every character UTF-16 is, in fact.
15:08Tweys/furthur/further/
15:08sexpbotUTF-8 is capable of representing every character UTF-16 is, in fact.
15:08TweyNot that message, you silly bot.
15:08Tweys/silly/lovely/
15:08sexpbotNot that message, you lovely bot.
15:09Crowbar7not when a 1Tb HD is $75
15:10Crowbar7source code size is minor
15:13TweyCrowbar7: Depends how much source code you've got… and remember that symbols are preserved in compiled code, too. Transfer is more of an issue than storage, these days.
15:14TweyIt's not an issue in most cases, though.
15:18riddochcHm. I have very specific needs out of an editor that make no existing editor all that good, and I don't expect that to change. So I'm willing to put up with mediocre tools, to an extent, for lack of any other choice.
15:20riddochcThough if anyone wants to make a text editor that combines the interfaces of Dasher and Blender, I'd be thrilled. I don't expect it to happen, though, unless I do it myself, or a whole lot more people suddenly come down with RSI, too.
15:20chouserI imagine using incanter and having charts show up in your repl output along with your other results might be handy
15:21riddochcchouser: That would be cool.
15:21riddochcDoesn't DrSheme do something like that?
15:21chouseractually, I think hiredman's swing repl allows for dumping swing widgets in the output
15:22riddochcThere's also the inspector in -contrib, which brings up simple structures in a swing UI.
15:24riddochcI wonder how hard it would be to make a clojure-emacs with swing, assuming that one is going to break compatibility with emacs-lisp.
15:24canderaAsk the people who are still trying to do it in Common Lisp.
15:25riddochcHemlock, wasn't it?
15:26technomancy"I'm gonna reimplement Emacs in a nicer lisp" comes up about as often in #emacs as "I'm going to make Clojure more accessible for newbies by removing the parens!" does in here FWIW.
15:26canderaMaybe that was what they drank after trying it. :)
15:26cmiles74I know that a lot of the work on Emacs and Guile sounds like it centers around getting Elisp implemented in Guile. Somehow.
15:27technomancycmiles74: right, but that's still using elisp rather than ditching it for greener pastures.
15:27technomancystill crazy mind you, but slightly less crazy.
15:27canderaAnd breaking compatibility with elisp would essentially mean rewriting 40 years worth of existing improvements.
15:27cemerickcmiles74 in #clojure? Be still my beating heart! :-D
15:28cmiles74technomancy: I agree with you! I think letting Elisp go would sound realistic to me.
15:28cmiles74cemerick. :P
15:28cemerick:-)
15:28riddochcI wasn't really proposing *doing* it, just wondering out loud at what degree of insanity it requires.
15:29cmiles74I've actually been hacking away at a simple text editor implemented in Clojure in my (pretty scarce) spare time. :-[
15:29cmiles74It's no Emacs but I can't leave it alone!
15:30chousercmiles74: the question is, are you using it.
15:31cmiles74Not yet. I don't want to rely on the Swing components, partly because they seem to try to do too much and also because it seems like an interesting project.
15:31cmiles74So far I have a piece buffer based implementation that you can add text to. But not delete. :P
15:32chouser:-
15:32chouser:-)
15:32riddochcI mean, there's a lot of editors already out there. They all have their flaws, and their good points...
15:32cmiles74It will display pretty big files and that's a requirement of mine. Still, I don't feel confident enough to commit to producing a working product.
15:33cmiles74It's true. Day-to-day I use Emacs and I like it quite a lot.
15:33cemerickOK, yet another survey, now public. Petition / Market Research: For the development of a commercially-supported, polished Clojure development environment http://spreadsheets.google.com/viewform?formkey=dHVEYUg3V3dMZjc0VDdNUFhWMGJ2bmc6MQ
15:33cmiles74cemerick: After the results of the last poll, I was pretty sure this was coming. ;)
15:34cemerickcmiles74: Yeah, pretty inevitable, especially after Stu said he felt the same as I didn
15:34cemerickdid*
15:35technomancycemerick: which stu?
15:35cemericktechnomancy: Halloway
15:35riddochcI thought so too. And I definitely understand the disire for better tools.
15:36riddochcEr, desire. Yeah, that.
15:39riddochcI think this new poll will show sufficient commercial incentive from professional developers to motivate someone. I don't really feel like I should take the poll myself, given a rather severe lack of funds at the moment.
15:40mmarczykcemerick: great survey -- thanks for that!
15:40riddochc<- outlier
15:41mmarczykhm, I realised I have a protocol defined which is meant to do certain kinds of conversions...
15:41mmarczykthus I called it ANTLR->Clojure and the (single) method -- antlr->clojure
15:42mmarczykshould I change the -> to 2?
15:42mmarczykNB. I don't think I need to care about that being called from anywhere outside of my own code
15:43cemerickriddochc: yeah, unless you can reasonably say you'd buy it today, best to not add your info :-)
15:43cemerickwhen your cirucmstances change though, by all means jump in
15:47riddochcI'm curious to see what this inspires, anyway.
16:03Licenser9cookies
16:11fanaticoWhat happened to extend-class?
16:13chouserjust used extend-type now
16:13chouseruse
16:14tomojba9b7924
16:14fanaticoright, thanks
16:17zakwilsonhugod: NPE from remote-swank: http://gist.github.com/430590
16:42Raynescemerick: Did you delete my comment on those survey results? O.o
16:43cemerickRaynes: no, it's a stupid disqus bug
16:43cemerickbased on whether the comma in the url is encoded or not :-x
16:43Raynescemerick: Just checking. Wanted to make sure I didn't say something that ticked you off. :p
16:44cemerickRaynes: http://muckandbrass.com/web/display/~cemerick/2010/06/07/Results+from+the+State+of+Clojure%2C+Summer+2010+Survey vs http://muckandbrass.com/web/display/~cemerick/2010/06/07/Results+from+the+State+of+Clojure,+Summer+2010+Survey
16:44cemerickStupid.
16:44cemerickRaynes: nah. You're big on tracking people down, though! :-|
16:45Raynes:o
16:52mjg123Hi - I am learning clojure. I have written a prime sieve, but it is *much* slower than the reference code I looked at. If anyone can give me a hint as to why that might be, I'd be really grateful
16:52mjg123http://paste.lisp.org/+2DUX/1
16:56Raynescemerick: "I like nachos. And Rich has fantastic hair."
16:56RaynesThat is the most amusing thing I've read all day.
16:56RaynesBleh. I logged into disqus, and now the comments aren't coming up for me. :\
16:56RaynesI wanted to reply.
16:57cemerickRaynes: yeah, I'm not so thrilled. I filed a support ticket, we'll see what happens.
16:57cemerickThe nachos comment was apparently by @puredanger
16:58Raynescemerick: Anyways, my reply was along the lines of "Yeah, I totally agree. Newcomers already have to overcome their fear of The Almighty Parenthesis, and it can be offputting to have to get rid of Emacsphobia at the same time."
16:58cemerickRaynes: yeah, I saw it, and replied :-)
16:58Raynescemerick: Wait, the comment actually showed up? I typed it up, and before submitting, tried logging into disqus.
16:59RaynesAnd boom.
16:59RaynesGood thing I was finished with the comment. >.>
17:00cemerickRaynes: yup, here: http://muckandbrass.com/web/display/~cemerick/2010/06/07/Results+from+the+State+of+Clojure,+Summer+2010+Survey#comment-55358983
17:00RaynesOkay, now they're loading.
17:00RaynesWewt.
17:02Raynescemerick: That was my first reply.
17:02Raynescemerick: I replied to your reply to my reply with what I said above.
17:02cemerickah, ok
17:02cemerickso, disqus sucks :-P
17:05RaynesAw, come on.
17:06Raynescemerick: Now, it made my reply to your reply to my reply a reply to your main post. :( CONTEXT, MAN, CONTEXT!
17:06Raynes$learn reply <Raynes> cemerick: Now, it made my reply to your reply to my reply a reply to your main post. :( CONTEXT, MAN, CONTEXT!
17:06sexpbotMy memory is more powerful than M-x butterfly. I wont forget it.
17:07RaynesI honestly didn't mean to say reply that many times in that sentence.
17:11cemerickRaynes: It goes deeper than emacsphobia.
17:11cemerickanalogy*
17:11RaynesOh no.
17:12RaynesNot an analogy.
17:12Raynes;)
17:12cemerickheh
17:12RaynesLearning curves and Emacsphobia is the only real problems that I can see. But I have a narrow mind.
17:12Raynes:p
17:13RaynesAnd, I agree with you that nobody should be forced to write code in one specific editor/IDE.
17:13cemerickIt's just a non sequitur. Offering a spoon to someone trying to cut steak.
17:13RaynesEmacs is a spoon? :o
17:14cemerickAssume a company humming along fine using perforce or something. And then someone comes along and says -- hey, you should use git! The reaction would be something along the lines of, "uh, so what if it can make a salad for me, I've got software to ship tomorrow".
17:14cemerickThat's not very well-formed.
17:14chouserGood enough. I'm convinced!
17:14chouser;-)
17:15nDuffheh.
17:15RaynesHeh.
17:16cemerickok, so maybe I'm not so off base with that
17:17Raynescemerick: I don't think in business.
17:17cemerickit's all that open source messin' with your head ;-)
17:17RaynesI'm too young to think about company and how business.
17:17Raynes;)
17:17Rayneshow business works*
17:19cemerickIt's all about solving problems people have now. Where clojure does that, it'll find success. Unless XXX can do that, it's baggage.
17:19cemerick(where XXX could be git from my analogy)
17:32zakwilsonI wonder to what degree being proactive instead of reactive in tech decisions would help most companies.
17:37stuarthallowayhas anybody *ever* written their own clojure.test/assert-expr method?
17:38zakwilsonIs using derive with keywords in one namespace and trying to check a relationship in another the Wrong Thing?
17:38briancarper@stuarthalloway: I did once, a long time ago, I forget what it did though.
17:39stuarthallowaybriancarper: considering breaking it (a little)
17:39stuarthallowayhttps://www.assembla.com/spaces/clojure/tickets/377-fix-file-line-reporting-in-ant-builds
17:39stuarthallowaythe combination of assert-expr and report hooks in clojure.test makes it difficult to fix 377 without changing the public API for someone
17:40stuarthallowayso I chose to change it for the few, the proud, the assert-expr implementors
17:41briancarperstuarthalloway: Seems like a small price to pay for proper line numbers.
17:41mmarczykbriancarper: nice post on learning Emacs, pretty close to my experience :-)
17:41stuarthallowaybriancarper, we could get line numbers some other way, but that seems to me to be the right way
17:42mmarczyktechnomancy: if you're willing to consider my patch to add stuff to pom, I was thinking of extending adding the new entries to sample.project.clj ...?
17:42briancarpermmarczyk: Thanks, still expecting to be flamed by someone soon though. Criticizing text editors is treading on holy ground.
17:42Tweybriancarper: A *year*?! Wow…
17:43mmarczykbriancarper: yup, that's probably par for the course
17:43Tweybriancarper: Have you seen efforts like ErgoEmacs?
17:44briancarperTwey: A year from knowing nothing to feeling entirely comfortable to the point where I could ignore the editor and just code. I haven't seen ErgoEmacs, no.
17:44TweyIt's a default configuration that enables a lot of the things you mention there (as well as providing a saner keymapping for the common commands).
17:44zakwilsonbriancarper: If you don't think everyone including my grandmother should master Emacs inside and out, your obviously stupid and lazy. Any programming language which is POSSIBLE to edit in another editor isn't worth knowing. Kids these days!
17:44zakwilson(how'd I do?)
17:44Tweyzakwilson: Hehehe
17:45briancarperzakwilson: Not enough ad hominem
17:45TweyIt also increases compliance with the norms people expect of apps nowadays.
17:45zakwilsonbriancarper: I'm not very experienced at this flaming thing... I'll work on it.
17:45Twey(largely as a side-effect)
17:46djpowellanyone had a look at my clojure.java.shell patches on clojure-dev?
17:47briancarperTwey: Might be nice, but then you're non-standard and out of sync with the rest of the Emacs world. Those kinds of projects can probably never reach cricial mass.
17:48Tweybriancarper: It's implemented in such a way that it doesn't interfere significantly with normal emacs operation
18:13djpowellhmm, does head have some direct binding going on?
18:14MrEvil #git
18:17djpowellwhoa - memoize rocks for calculating edit-distances
18:25zakwilsonI don't understand how to use much of the functionality that has been offloaded to Ring from Compojure. Where do I put wrap-session in order to create and use a session in Compojure?
18:26briancarperzakwilson: There's an example here http://groups.google.com/group/compojure/browse_frm/thread/6c5662f99777e470
18:28briancarperI've had more luck using sandbar for sessions though, http://github.com/brentonashworth/sandbar
18:28zakwilsonbriancarper: Thank you. Most helpful.
18:33arohneris there an example anywhere of having two sets of routes, adding different middleware to each set of handlers, and then combining them into one handler?
18:33arohnerI don't understand why this isn't working
18:35briancarperarohner: Can you post some code that isn't working? I'vecombined routes before OK.
18:35arohnerbriancarper: ah, I just fixed one of my problems. one of my own middleware was returning nil
18:36arohnernow to figure out why files aren't being served...
18:36arohnerIt's very nice how easy it is to compose functionality in ring and compojure. The problem is, sometimes it's very hard to figure out where that behavior is coming from
18:37RaynesI haven't had any trouble with sessions in Ring. But I use Moustache instead of Compojure. I <3 cgrand
18:37arohnerbriancarper: how did you combine routes? using (routes) / (defroutes) or something else?
18:37briancarperarohner: Yes, and it's hard to figure out what to return from middleware sometimes. You can't step on the toes of middleware that comes before or after you.
18:38briancarperarohner: Just (defroutes all-routes routes1 routes2)
18:39arohnerbriancarper: yeah, that's what I have. Now something else is returning {} rather than nil, stopping the search for the right handler.
18:39mmarczykover 250 lines of stack trace to tell me that apparently I forgot to implement a protocol for one of my types :-(
18:40briancarpermmarczyk: Ouch.
18:40mmarczykOuch indeed.
19:19lancepantzdoing a quick poll, do you use ^C to exit a repl, or ^D?
19:19technomancy
19:21ninjudd^D
19:25Rayneslancepantz: First instinct is to do ^C.
19:26briancarper^D
19:28danlarkin^D
19:28danlarkinit's eof! why use anything different :)
19:30mmarczyk^D
19:32lancepantzthanks for the responses
19:36dsantiagodrewr, what kinds of quoting issues does one find in the real world, with respect to CSVs?
19:39nDuffdsantiago, commas or double quotes in the data are perhaps most common
19:40nDuffdsantiago, ...multiline cell contents aren't completely unheard of...
19:41dsantiagonDuff, yeah, thanks. drewr said that my csv parsing library didn't handle real-world quoting issues, and it in fact does all those you mentioned.
19:41dsantiagoI'm not aware of any more.
19:42dsantiagoI'd add support for any that were brought to my attention.
19:50wlangstrothdsantiago: drewr wasn't specific, he just said "real world"?
19:50dsantiagoYup, that's why I'm asking.
19:52wlangstrothwhere's the library?
21:10dsantiagowlangstroth: sorry, called away. It's github.com/davidsantiago/clojure-csv
21:38hiredman,(str nil)
21:38clojurebot""
22:48Lajla,(+ 1 2 nil)
22:48clojurebotjava.lang.NullPointerException
22:49Lajla,(car (list 1 2 3))
22:49clojurebotjava.lang.Exception: Unable to resolve symbol: car in this context
22:49Lajla,(first nil)
22:49clojurebotnil
22:49Lajla,(rest nil)
22:49clojurebot()
22:49Lajla,(rest 3)
22:49clojurebotjava.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Integer
22:50jartur,(next nil)
22:50clojurebotnil
22:55hiredman,(car (list 1 2 3))
22:55clojurebot:volkswagen
22:55hiredman,(car (+ 1 nil))
22:55clojurebot:volkswagen
22:57LajlaaHAHA
22:57LajlaWho did that?
22:57tomoj,(do (require 'clojure.contrib.repl-utils) (clojure.contrib.repl-utils/source car))
22:57clojurebotjava.lang.RuntimeException: java.lang.ClassNotFoundException: clojure.contrib.repl-utils
22:57Lajla,(car complete-nonsense-with-no-menaing)
22:57clojurebot:volkswagen
22:57tomoj:(
22:57Lajla,(car @#$*@$g2g2 4 g24h
22:57clojurebotNo dispatch macro for: $
22:57Lajla,(car "sshtring")
22:57clojurebot:volkswagen
22:58Lajla,(car more than one argument)
22:58clojurebot:volkswagen
22:58Lajla,(car
22:58clojurebotEOF while reading
22:58LajlaAhhh, there you fail, my friend.
22:58tomojhuh?
22:58Lajlatomoj, I am applying imperical sciene.
23:08hiredmanclojurebot: imperical science is what got the british empire where it is today
23:08clojurebotOk.
23:08lancepantzanyone know why use statements do not work when wrapped within a let?
23:08lancepantzie: (let [] (use 'clojure.contrib.core) (seqable? [:a :b]))
23:22Lajlahiredman, you can adress it?
23:22Lajlaclojurebot: All hail Lelouch vi Britannica, prince of the Holy Empire of Britannica.
23:22clojurebotthe previous sentence is false
23:23LajlaAhhh
23:23LajlaAmazing
23:30jarturlancepantz: why would you do that?
23:31lancepantzit's in a macro that's evaluated inside of a second jvm
23:34jarturlancepantz: okay. probably you're doing something over my head
23:34tomojinterestingly require seems to work fine inside a let
23:34lancepantzyep
23:36RaynesWow, cemerick is really out to get a commerical Clojure IDE going.
23:36jarturlancepantz: does (refer ...) work?
23:36tomojnope
23:37jarturWell, that's why use doesn't I suppose
23:37RaynesI'm not sure how a pricey super-IDE is going to help the community. I suppose it will help Clojure in the business world (which is great), but it sounds terribly disappointing for the cashless Clojure would-be.
23:38RaynesWell, reading his petition a couple of times, I guess he does seem to be generally aiming this towards companies and such.
23:40RaynesIt would be nice for the Clojure community to have access to IDE plugins for Eclipse and Netbeans that people don't have to consistently complain about constantly. :p
23:41jarturRaynes: Yeah. Basically the only working IDE is swank + emacs for now
23:41jarturEverything else is pretty much unusable
23:41Raynesjartur: Enclojure does work, doesn't it?
23:41tomojcertainly not
23:42Raynescounterclockwise works as well, I hear.
23:42tomojI mean, it's certainly not the case that everything else is pretty much unusable, at least in general
23:42RaynesMaybe these plugins aren't up to par yet.
23:42tomojmaybe unusable to you, and probably unusable to me as well :)
23:42lancepantzthe rest are just DE's
23:42jarturWell, they are usable in principle
23:43tomojpeople actually do use them
23:43jarturPeople actually would do anything not to use emacs
23:43tomojmaybe "usable" means something other than what I'm thinking
23:43TheBusbythe survey results indicate that most people seem to use emacs
23:44TheBusbyemacs isn't exactly a high-bar when considering all the things you need to learn to use Clojure proficiently
23:44tomojI suspect it's less skewed that the survey results indicate, but have no proof
23:44jarturI've tried plugins for NetBeans and Idea and just couldn't use them.
23:45jarturI went to emacs though I never have liked it
23:45TheBusbymy experience lends me to believe that many, if not most, of Java dev's likely shouldn't be using clojure
23:45jarturTheBusby: Why so?
23:45TheBusbyJava was designed to try and be idiot proof, and hence it attracted a lot of idiots in certain organizations
23:45jarturTheBusby: Because we are idiots? =)
23:45lancepantzbecause they are too reliant on ide's apparently :)
23:46jarturIDEs for Java are necessity
23:46TheBusbyI would say they are the ones most vocal about things like IDEs
23:46jarturBecause Java is atrocious
23:46TheBusbythey care less about complexity and performance, and more about the GUI
23:46jarturI code on Java daily
23:46jarturAnd I hate it
23:47RaynesThe last message I got was "<lancepantz> the rest are just DE's", could somebody gist what I missed pretty please? <3
23:47jarturRaynes: we're talking about how Java devs are idiots
23:47tomojhttps://gist.github.com/db470ca3a33b35ebd237
23:47RaynesThanks.
23:48TheBusbywould in be valuable to have a great Clojure IDE, of course it would. Will it be as benefitial as many people think to the Clojure communicty? I'm not so sure.
23:49jarturTheBusby: I think something like emacs but not emacs would be great =)
23:49Raynes<Raynes> But rather than building a pricey brand-new plugin that nobody outside of a company can afford is a little less helpful than working to improve the existing plugins for the general public. I just think it's a priority mix up, but that's just me.
23:50TheBusbyI'd be interested to see compare/contrast with other langueges like python/ruby/scala/etc
23:50tomoj32% of the survey responders said they either used java primarily now or did before they started using clojure
23:50RaynesIt looks like Clojure does a good job of converting Java programmers to Emacs.
23:50TheBusbydidn't a similar number say they've only been using it for a few weeks/year as hobby projects?
23:51TheBusbybe interesting to see the overlap of those numbers
23:51jarturTheBusby: Well, I use it at my day job.
23:51jarturTheBusby: Not as much as Java.
23:51jarturYET
23:51RaynesI think the majority had been using it for a year.
23:51tomoj64% for tinkering or "serious" hobby projects
23:51tomojthe majority is less than a year
23:51tomojbut not by much
23:51jarturTheBusby: I think the most ide-requiring languages are Java and C#
23:52jarturRuby, python, haskell and pure C are written in text-editors
23:52jarturLike vim
23:52TheBusbyI agree, I used emacs for a long time but switched to visual slickedit (~1999) for Java
23:52jarturC++ is more comfortable with an IDE as well
23:52TheBusbystopped using Java and switched back to emacs
23:53jarturWriting C# w/o VS is almost impossible =)
23:53jarturI can't handle a medium or big Java project without Idea
23:53LuminousMonkeyIs there any real advantage moving from, say vim to Emacs just for Clojure?
23:54jarturBut I would never use any 'IDE" for, say, Ruby
23:54jarturLuminousMonkey: yes
23:54jarturLuminousMonkey: if only for clojure. I mean not moving
23:54jarturjust use it as a tool for clojure
23:54tomojthere are great clojurists using vim
23:54jarturYes, I know
23:55jarturBut it's not such a seamless integration
23:55jarturvim has its limitations in this field
23:55jarturAnd they are known
23:56lancepantzi've said it before
23:56lancepantzbut i switched from vim to emacs, and had a serious productivity boost after a week or so
23:56lancepantzsooooooo much easier
23:56Rayneschouser seems to enjoy his Vimness.
23:56Rayneshiredman too.
23:56jarturThere are people who invested so much in their vim proficiency
23:57jarturThat they would never give it up
23:57lancepantzi used it for about 10 years
23:57LuminousMonkeyHmmm, I gave Emacs a very quick go, but go put off by needing to move my fingers off the homekeys a bit.
23:57jarturI still hit esc, or i before typing in emacs sometimes
23:57jartur=)
23:57lancepantzit's not ever so much about emacs as it is paredit and slime
23:58lancepantzi could see emacs being annoying with a regular keyboard
23:58jarturLuminousMonkey: it's nothing compared to slime =)
23:58technomancyhired man is one of us now.
23:58LuminousMonkeylancepantz: You've got different bindings, or keyboard?
23:59lancepantzLuminousMonkey: i use one of these http://www.kinesis-ergo.com/advantage.htm
23:59jarturlancepantz: you are they guy
23:59jarturlancepantz: are they really that good?
23:59LuminousMonkeylancepantz: Woah!
23:59lancepantzplaying counter-strike for 16 hours a day in college wasted my tendons