#clojure logs

2013-11-18

00:08dnolenseantallen: that's fixed in master as far as I can tell
00:08dnolenseangrove: oops, that was for you ^
00:08seangroveOk, just checking
00:08dnolenseangrove: re, Keyword stuff
00:08seangroveStill on 2014, haven't updated to 2030
00:12RaynesSeanCorfield: lol
00:12RaynesEr, seangrove ^
00:12RaynesToo many seans.
00:12seangroveWe're a prolific bunch.
00:19SeanCorfieldthree seans... i'm just not used to that... back in england i was pretty much always the only sean in any group...
00:20SeanCorfieldjetlag is beginning to get to me... I was up early Eastern time for my flight back from the Conj and now it feels like it's after midnight... but I don't want to give in and go to bed at just 9:30pm :(
00:33LajjlaRaynes, are you there?
00:36danneuI only get this when I attempt to `lein uberjar`: clojure.lang.Var cannot be cast to java.lang.Class, points to myapp.util$loading__invoke(util.clj:1)
00:36danneuanyone happen to know what would be
00:37TEttingerwell the error is in your code, are you using :aot in the project file on any classes you use gen-class with?
00:38TEttingerI'm just guessing here, I have no idea without at least seeing the project.clj on a pastebin
00:52danneuTEttinger: my uberjar compiles unless my aot namespace requires any namespace that requires the file that has this ns form: https://www.refheap.com/21009
01:01TEttingerdanneu, is sandbox.cli listed in the project.clj as one of the :aot namespaces (or just use :aot :all)
01:01TEttinger:aot can be a vector or :all
01:01danneuyeah, it's in :aot
01:02TEttingercommon problem because of a breaking change: is the :main namespace listed under :aot (it isn't implicit in some recent lein versions)
01:02TEttinger(but it used to be)
01:04TEttingeralso, I would try :aot :all and see if it gives a different error or fixes it, which is always possible
01:04TEttingeroccasionally you end up with difficult-to-reproduce bugs because lein clean hasn't been run
01:05TEttinger(old versions of a compiled class might be used without realizing it)
01:05TEttinger(lein clean removes all old compiled .class files)
01:13danneuTEttinger: nothing seems to change. but the stacktrace seems to consistently point to that ns form wherever i put it. at least it points to the file it has it, line 1
01:14TEttingerhm, the one you linked to was cli.clj , not util.clj
01:15TEttingerare the ns names different than the file names? because that is another possible issue
01:15danneuoh, i copied util.clj's ns into cli.clj
01:15ddellacostasometimes emacs just stops parsing a .clj file correctly and parens don't get automatically matched
01:16ddellacostawhat is up with that? I can't tell why it stops working
01:16ddellacostais there something I can set to re-start the parsing of a file in emacs?
01:17danneuddellacosta: is paredit-mode getting toggled off or something
01:18ddellacostadanneu: no, it just sorta kinda works... it will do weird stuff like say "no matching paren found." And then it works again sometimes. Like, right now the same exact chunk of code is suddenly working for me.
01:19ddellacostawhatever, restarted it. *sigh*
01:19ddellacostaalso, I would really like to have nrepl automatically save history...gotta set that up
01:20justin_smithddellacosta: (setq nrepl-history-file "~/.emacs.d/nrepl-history.eld")
01:20justin_smith
01:21justin_smiththat's literally all it takes
01:21justin_smith(in your emacs config, of course)
01:21ddellacostajustin_smith: thanks...that will tell emacs to automatically record the nrepl history? I really have to learn more about how nrepl + emacs works. :-(
01:21clojurebotI don't understand.
01:22ddellacostano, I don't understand.
01:22justin_smithddellacosta: yeah, if the variable is set, it gets saved to
01:22justin_smiththe file name is totally up to you, if you want it in a different directory or whatever
01:22ddellacostajustin_smith: gotcha. Very good, thanks very much!
01:28danneuTEttinger: oh god
01:29TEttingerhm?
01:29danneuTEttinger: clojure.core.typed :refer :all imported `Keyword` which conflicted with `(import clojure.lang Keyword)`
01:29TEttingerit was the cli namespace in util.clj?
01:29TEttingeroh haha
01:29danneufuck that error message
01:29danneuseriously
01:29TEttingerseriously
01:30TEttingerthat's really confusing!
01:30danneuit clearly knows what symbol is causing the problem
01:30TEttingerI think it changed the meaning of... everything
01:30TEttingerby changing what keyword meant
02:43danneuit defined Keyword so that by the time (:import [clojure.lang Keyword]) happens, Keyword was a Var and couldn't be resolved into a class
02:49abaranoskyhave any of you setup your Emacs with tags, to search for Java symbols?
02:51danneui've had to bring in a .java file recently. i just let myself suffer.
02:51danneuindentation formatting didn't even work
02:51abaranoskyno need to suffer though. Emacs can handle it, I just happen to not have it setup right to do so.
02:53abaranoskydanneu: it does require more skillz with elisp though... But I figure that figuring this out would help me "level up" my Emacs fu :)
02:54danneudunno, this channel is home to some of the greatest yakshavers of all time.
02:55danneubringing java to emacs is very... unyak
02:56logic_progis there a way in clojure to get a "repl that cna go up/down stack frames" on an exception?
02:57logic_progthe ritz/nrepl stuff seems to only get _one frame_ rather than allowing me to go up/down all the frames
03:48sveriHi, Neil Ford was giving a talk at WJAX this year, there he showed some code: http://pastebin.com/MHn4YBKt now, when i enter this in the repl i get a runtimeexception that indexed cannot be found. Do i have to import some functions to make this work?
04:09amalloysveri: i've seen this function recently, and right above it was a definition of indexed
04:12sveriamalloy: ok?
04:13amalloyi assume it's in his talk somewhere
04:13clgvhow was clojure/conj?
04:14sveriamalloy: hm, i have not found it yet -.-
04:15sm0kewhere do i find clojure conj videos?
04:17sveriit seems to be in the clojure.contrib libraries
04:28clgvsveri: what are you looking for?
05:50logic_progi've finally decided to learn datomic -- where can I read up on how to install datomic with riak as the backend?
06:03nonubyreviewing clojure style guide (again), i have a function that scrapes (simple call to clj-http and minimal bastardization) events for today, do you tend to prefix with get i.e. get-todays-events or just today-events?
06:05clgvnonuby: IMHO you omit the "get-" there
06:19xsynnonuby: let the HTTP verbs do the GET and then make the functions names nouns
06:19logic_progis there any good reason to use positional arguments rather than keyword arguments?
06:21pjstadiglogic_prog: apply doesn't work so nicely with keyword arguments
06:21logic_progthis seems rather easy to fix
06:22pjstadigdefine "easy"
06:24logic_progcan be fixed with a < 10 line macro
06:39nonubya 10 line macro is kinda of complicated in my opinion
06:45clgvnonuby: why?
06:46nonubyfrom the perspective of someone relatively new to clojure.. must macros I've seen are just a few lines and the rest delegate to functions that can be called a runtime
06:46clgvlogic_prog: pjstadig: an approach to keyword arguments where apply works as well and transitive documentation is provided can be found here https://github.com/guv/clojure.options
06:46clgvnonuby: yeah, if that is possible that is better style
06:47clgvnonuby: although number of lines is not really apropriate for lisp anyway
07:56dsrxsorry if this is too vague a question - might anyone know why i can tab-complete a qualified classname in the REPL but when I try to instantiate it or call static methods on it I get a NoClassDefFoundError ?
07:56dsrxthe jar containing that class is on the classpath
07:57ucbdsrx: have you :import the class?
07:57ucbdsrx: (maybe a silly question)
07:57Jardadsrx: sometimes I have to restart the repl process when I get such errors
07:58dsrxif I :import the class in my core.clj file I also get the NoClassDefFoundError
07:58dsrxit just seems bizarre to me that I cannot import/use the class, and yet the REPL is able to tab-complete its fully qualified name
08:00dsrxoh, neat, i shut down all my cider processes and repl and now i'm getting a different (JNI) error. progress! :) thanks
08:01ucbheh
08:01justin_smithcompletion isn't just possible from the clojure process' info - there is also a method that completes based on the text in other buffers for example
08:31augustlhttps://github.com/paulirish/browser-logos :)
08:31augustlanother thing we don't have to maintain anymore
08:31augustlwrong channel..
08:32augustlthere's ponies!
09:14brainproxyjury duty ... at least there's WiFi this year
10:11dnolentwo things I would like to see wrapped up before cutting the next CLJS release - http://dev.clojure.org/jira/browse/CLJS-681, http://dev.clojure.org/jira/browse/CLJS-674 - help welcome!
10:16makkalothi, i'm writing a lein plugin, when i run it inside the development project it runs ok, when run on some sample project i'm getting that criptic error : Could not locate leiningen/core/eval__init.class or leiningen/core/eval.clj on classpath
10:16makkalotany ideas ?
10:18tcrawleymakkalot: do you have `:eval-in-leiningen true` in your project.clj?
10:19makkalottcrawley, yes i have
10:19TimMcbrainproxy: You get to bring in electronic devices?Lucky.
10:24tcrawleymakkalot: try asking in #leiningen
10:24makkalottcrawley, thanks will do
10:55seangroveWow, like the lighttable integration going on here https://metaphysicaldeveloper.wordpress.com/2013/11/18/idiomatic-clojure-with-lighttable/
10:56seangroveAlthough the code, while short, seems a bit strange... https://github.com/danielribeiro/LightTableKibit/blob/master/user.keymap.clj#L2
10:59coventryWhat's the right way to get a jar produced by "lein install" into the right place in ~/.m2?
10:59joegallolein install already does that
10:59joegallothat is, it's in the correct place.
10:59coventrySweet, thanks.
11:02brainproxyTimMc: can only use them in the selection pool area - place you sit for max 3 days waiting for them to call your name for an actual court case selection process
11:02brainproxyI'd like to give a macro an "alias" within the same namespace
11:02brainproxyright way to do that?
11:03brainproxye.g. suppose I have macro abc, naive attempt: (def also-abc abc)
11:03learner__ Hi a newbie question here. I am seeing a weird compilation exception on lein repl. Not sure what's going wrong. code is on refheap @ https://www.refheap.com/40b0869b10044388f62c69db7 thanks for your help
11:05coventry,(do (defmacro foo2 [] (println "foo")) (def ^{:macro true} bar #'foo2) (bar))
11:05clojurebot#<Exception java.lang.Exception: SANBOX DENIED>
11:05coventry(works in a non-crippled repl. :-)
11:14newbluecoventry: that just blew my mind, especially how it handles arguments:
11:15newblue(do (defmacro foo2 [x y] (println "foo" x y)) (def ^{:macro true} bar #'foo2) (bar 5 10))
11:17TimMcWhat surprises you about the arguments?
11:18brainproxyfound `defalias`, that works :)
11:19ToBeReplacedi've got two questions for the collective IRC knowledge today!
11:19TimMcjuxt, and map is lazy
11:19ToBeReplaced1) does anyone have a recommendation for clojure/clojurescript windows automation tooling? anything like pywinauto, autohotkey, autoit, etc.
11:20newblueTimMc: when they weren't referenced in the #'foo2 part it's when I was like 'Oh this is what's going on'
11:21TimMcAh, OK.
11:22newblueI was trying to figure out the exact problem a few days ago so that got me excited too
11:22nDuffToBeReplaced: I'd probably consider writing a wrapper for Maveryx
11:23newbluewait no, it just pushed the problem somewhere else....:/
11:25coventrybrainproxy: If I understand what defalias is, it's a bigger hammer than you need for this problem. Just adding {:macro true} to the alias metadata works fine.
11:37brainproxycoventry: but it wasn't working fine, not sure why
11:39coventrybrainproxy: Huh. Was this in a jvm-clojure context?
11:39aconberehey folks, I'm new to clojure (started last night) I'm working on a little irc library in clojure to learn with. And I'm having some trouble with tests.
11:39aconbereI have the following test I've written
11:39aconbereto test the parse output
11:39aconberehttps://github.com/aconbere/clojure-irc/blob/master/test/irc/core_test.clj#L66-L68
11:39aconbereand it doesn't seem to actually be looping through the inputs and asserting anything about the messages
11:39S11001001aconbere: use doseq instead of for
11:40nDuffaconbere: for just returns a lazy sequence
11:40aconbereoooooooooooo
11:40S11001001aconbere: for is list-monadplus syntax, not a "looping" construct, per se
11:40aconberebrilliant
11:40srrubyI want to use a jar in clojure. I put the jar in lib. How can I make it accessible to Clojure? ps I'd prefer not to use Maven
11:40S11001001srruby: use maven
11:41S11001001really :)
11:41srrubyS11001001: OK, thanks. I thought that it would be simple to use a jar...
11:42jlfnAny other emacs users unable to connect to nrepl with today's CIDER from melpa?
11:46zerokarmaleftjlfn: works fine here with 20131118.1754
11:47srrubyI understand that I use maven like RubyGems to install and manage Java components. There seems to be a Maven repository at mvnrepository.com where I can pull in jar files. How does this all fit in with leiningen ?
11:48joegallosrruby: what dependency do you want to pull in?
11:48joegallothat is, give me one example, please
11:48gtraksrruby: lein uses maven repos (remote and local) for its artifacts. The particular repos used are specific to a project, but a few are included by default.
11:48srrubyjoegallo: Texhyphj
11:49srrubyjoegallo: It is on http://mvnrepository.com
11:49joegallosrruby: i searched mavenrepository for it, and found this http://search.maven.org/#artifactdetails|com.googlecode.texhyphj|texhyphj|1.2|bundle
11:49srrubyjoegallo: Right. Now how do I integrate it with Clojure/Leiningen
11:49joegalloso you would put [com.googlecode.texhyphj/texhyphj "1.2"] in your project.clj file under :dependencies
11:50joegalloand then run lein deps
11:50srrubycool
11:50joegalloand it'll download it
11:50joegallohttp://i.imgur.com/DgtYV.gif
11:50srrubyjoegallo: Thanks very much!
11:50joegalloyou're welcome
11:51zerokarmaleftsrruby: https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L39
11:52zerokarmaleftthe sample project is well-commented, and it's worth scanning the whole thing just to see what options are available
11:52joegalloinc zerokarmaleft
11:52srrubyThanks everyone. Perhaps I should write a tutorial to cover this. The google search results were not that useful.
11:54jlfnzerokarmaleft: that's good to hear, though I'm getting stuck at "Connecting to nRepl..." even with all my customizations removed
11:54S11001001srruby: https://github.com/technomancy/leiningen/blob/stable/doc/TUTORIAL.md#dependencies
11:57jlfnuh ok cider-jack-in works, but connecting to an nrepl server hangs :(
12:03myguidingstarhi all, I'm going to learn core-logic and I think learning through koans is the best way. But https://github.com/sritchie/core.logic-koans‎ seems to be old. Should I use it? Or any notice?
12:06zerokarmaleftmyguidingstar: that should be sufficient, most of the basic stuff hasn't changed in a long time
12:06myguidingstarzerokarmaleft thanks a lot
12:08zerokarmaleftif you hit a wall, someone in here will be happy to help with a specific koan
12:10myguidingstarthanks, and I will update it, at least with new lein and dependencies when I finish my learning
12:11rasmusto,()
12:11clojurebot()
12:11rasmusto##()
12:11lazybot⇒ ()
12:12sritchiemyguidingstar: it is old; probably not the best resource
12:12brainproxycoventry: here's where the (def ^{:macro true} my-alias #'something} wouldn't work and I used defalias instead:
12:13brainproxyhttps://gist.github.com/michaelsbradleyjr/7509505#file-cljs-debug-macros-clj-L141
12:13brainproxywhat's happening is that without the defalias, the resulting form is being evaluted w/in the namespace invoking the aliased macro
12:14brainproxynote that the invoking namespace is a cljs namespace
12:14myguidingstarwell, can you give me ones you think the best?
12:16technomancygfredericks: I just added hyperlink support to nrepl-discover a few days ago
12:18schmirif I call from a go block into a function, and that function waits with <!! for a message, is this fine or is this more like calling Thread/sleep ?
12:20hyPiRiongfredericks: how would that work?
12:21hyPiRionI mean, how would you like to browse large data structures?
12:23TimMcwith style and grace
12:24justin_smithfor my recent experimentation with implementing quad-trees, I found generating an object in an svg for each data structure, and loading the whole thing in inkscape was an awesome way to debug my code
12:24justin_smithsince I could quickly see if there were extraneous or missing subdivisions of the tree
12:24justin_smithit made me think that an svg based data structure visualizer (or maybe a 3d one?) may be useful in other situations
12:30technomancyTimMc: botsnack
12:34tbaldridgeschmir: yeah, you don't want to do that. It'll block the thread in the fixed thread pool go blocks use
12:35schmirtbaldridge: thanks. that's what I assumed.
12:40coventry2brainproxy: Oh, I bet the clojurescript context is the key factor, there.
12:53TimMcjustin_smith: If nothing else, it would at least bring a touch of Hollywood to real-world programming.
12:54TimMcI strap on my VR goggles, don haptic gloves, and settle in to investigate a core dump...
12:55technomancyTimMc: oculus rift + keyboard pants and you're halfway there
12:55coventry2Is Rich Hickey's pods prototype publically available?
12:56TimMcOh man, patentable idea: A projector with eye-tracking software that can black out the portions of the projected image that would stke the eyes of anyone walking in front of the projected image.
12:57TimMcThat would save presenters from being quite so blinded, and as a bonus you could project colorful geometric imagery on your face while pretending to be from the movie Hackers.
12:58TimMc(Concept for patent hereby released to public domain.)
12:59technomancycontact the Free Infrastructure Foundation; sign some papers
12:59technomancyoh, huh. there actually sorta is such a thing.
12:59technomancyI thought it was just from a Stross novel
13:00rasmustotechnomancy: no, you're thinking of the nanomachines that convert the entire mass of Jupiter into a supercomputer
13:01technomancyhow silly of me
13:01slpsysyay
13:01clojurebotyay is sweet
13:02slpsysderp, wrong window
13:04tupihello, i still have problems, and it seems random, when executing clojure which uses imagej [no dialog, no window opening, just in memory 'scripts'] and launched through the following kind of command:
13:05tupijava -cp clojure.jar:ij-core.jar -Djava.awt.headless=false clojure.main my.clj my-arg1 my-arg2 ...
13:05tupithroiugh an ssh -CX session, i have this error:
13:05tupijava.lang.InternalError: Can't connect to X11 window server using 'localhost:11.0' as the value of the DISPLAY variable.
13:05tupi
13:05tupiany hint ?
13:06justin_smithtupi: ssh and then having the remote use localhost?
13:06justin_smiththat seems odd
13:06tupijustin_smith: i just exited my ssh session, enter again and it did work
13:07tupissh -CX chatotorix
13:07tupicd /usr/lpdi/projects/clojure/jars; java -cp clojure.jar:ij-core.jar -Djava.awt.headless=false clojure.main /usr/lpdi/projects/clojure/measures/me-step4.2.clj /tmp/t1-rc185/tiles-650x515-step-650x515 tile_5_75.bin png
13:07tupi97.514,39.856,7.573,0.708,0.550,0.768,1.081,0.550,0.459,0.817
13:07tupi
13:07tupibut a second ago, it failed
13:07tupiecho $DISPLAY
13:07lazybot$DISPLAY
13:07tupilocalhost:11.0
13:08tupiit was the same in the previous session that failed
13:08tupiwhy is it random ? and also wanted to know if the position of the -D is important ? [please excuse my stupid quiz, i don't know java]
13:09nDufftupi: -D arguments need to be given before the name of the class to be invoked.
13:09tupinDuff: thanks
13:09nDufftupi: anything after that point is passed to the invoked main as an argument.
13:10danneuIs it reliable to use `:uberjar-name "../myapp.jar"` to compile uberjar to project root?
13:10nDufftupi: ...I haven't been paying enough attention to know what you mean by "random".
13:10nDufftupi: ...if you're asking why DISPLAY changes, that's because ssh -X finds the first free port when setting up the proxy.
13:11tupinDuff: sometimes it work, sometime not, the exact same code.
13:11nDufftupi: ...that issue is unlikely to be java-specific, and much more likely to be something about your X and/or X-forwarding configuration.
13:11nDufftupi: try running something like xclock, and you'll probably see the same behavior.
13:12tupiit is a very serious problem to us because the computer does calculus for hours before it starts to call clojure scripts, and brakes ...
13:12nDufftupi: does this code actually need to do anything GUI-related?
13:12nDufftupi: if it doesn't, just tell the JVM to turn off its windowing subsystem.
13:12tupinDuff: how, this is what i asked and friends answered the -D option ...
13:12nDufftupi: -Djava.awt.headless=true
13:13nDufftupi: headless=false is telling it that it *should* use X
13:13nDufftupi: ie. that it has a head.
13:13nDufftupi: ...so, your friend had the right option, but the wrong value for it.
13:13tupioh damned, let me try that now!
13:14tupithat did not work either
13:14tupicd /usr/lpdi/projects/clojure/jars; java -Djava.awt.headless=true -cp clojure.jar:ij-core.jar clojure.main /usr/lpdi/projects/clojure/measures/me-step4.2.clj /tmp/t1-rc185/tiles-650x515-step-650x515 tile_5_75.bin png
13:14tupiException in thread "main" java.awt.HeadlessException
13:14tupi at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
13:14tupi
13:14tupi... ...
13:15nDufftupi: then the code you're running is built to try to talk to X11.
13:15nDufftupi: if you don't mind my asking, *why* does it need to do that?
13:16tupinDuff: i sware it his not
13:16nDufftupi: look at the stack trace.
13:16nDufftupi: it'll tell you which code is trying to talk to the GUI.
13:16nDufftupi: ...if you follow it further than the part of it you gave us here.
13:17nDufftupi: anyhow, if you can't do a code fix, run a 1-pixel-by-1-pixel display with Xvfb and point your DISPLAY variable to that, but the better answer is to read the stack trace, figure out where the code is, and fix it.
13:17tupinDuff: slow down, i don't follow
13:17tupii don't know java
13:17tupidon't know where and how to interpret the stack
13:18nDufftupi: ...well, if you posted the full stack trace somewhere we could see it...
13:18tupibut let me paste the code i run and the complete error.
13:18tupiyes!
13:18tupi:)
13:18tupigive me a sec
13:18nDufftupi: ...btw, no pastebins with ads, please.
13:19TimMcrefheap.com and gist.github.com are good options
13:20tupihttp://paste.lisp.org/display/139990#1
13:26nDufftupi: well, that's pretty obvious; ij.Menus invokes a GUI.
13:26nDufftupi: ...and (IJ/run) sets that up.
13:27nDufftupi: I'd suggest complaining loudly to the folks who built that library, and then setting up Xvfb to provide an immediate workaround.
13:27coventryIn emacs, how do you catch an error from nrepl-send-string-sync? E.g., how do I get this to work? (condition-case foo (nrepl-send-string-sync "(throw (Throwable.))" "user") (error (message (format "Error! %s" (pp-to-string foo)))))
13:27tupinDuff: ok
13:27tupii did complain already actually, but the original design of imagej was all wrong
13:28tupinever mind, i'll find a solution
13:30coventryOh, I think the problem is that nrepl-send-string-sync is an async call pretending to be synchronous. If that's the case I need to make a request using my own handler.
13:30tupii did ask here because although using (IJ/run bin-imp ... ) it is really not obvious at all that the menu must be instatiated elsewhere then in memory
13:31tupinothing is actually opened on the screen at anytime, but let's forget this, i'll complain with them ... or not [they are not very friendly :)]
13:32dsabaninhey guys
13:32dsabaninhaving problems with recur: https://gist.github.com/dsabanin/7532909
13:32dsabaninwhat seems to be a tail position to me, doesn't seem like it to clojure
13:32dsabaninam I missing something?
13:34cemerickdsabanin: you can't recur out of a catch, unfortunately
13:35ziltidsabanin: Recurring out of a catch? Are you insane or something?
13:35dsabaninwhy? :)
13:36dsabanincemerick thanks
13:36cemerickdsabanin: the compiler won't allow it. :-P It's possible to implement, but is a impl. complication that the powers-that-be didn't want to wade into IIRC.
13:37dsabaninthanks for the explanation
13:37hiredmancatch is a dynamic scoping thing, dealing with dynamicly scoped things and loop/recur's contract of fixed stack size is tricky
13:37hiredmanso generally you cannot/should not recur across dynamic scopes
13:38hiredmanif you have (defn foo [x] (binding [...] (recur (inc x)))) you can change it to (defn foo [x] (binding [...] (loop [x x] (recur (inc x)))))
13:39hiredmanrecursive calles from catch tend to end up as a trampoline
13:41dsabaninI guess I can imlement this as a trampoline, thanks for the idea
13:41hiredmandsabanin: have you seen robert bruce? https://github.com/joegallo/robert-bruce
13:43dsabaninyeah, seen it, but I need more control
13:43dsabanintrampoline solution just worked, thanks for the help everyone
14:03danneuWhat's the main reason a jar seems to hang once it should return from whatever you called in -main?
14:03technomancydanneu: active threads
14:03justin_smithdanneu: are you using agents?
14:06Raynes(System/exit 0) ;; DIE!!! DIEEEEE!!!!
14:10kendallbuchananAnyone know how I might restrict the compiled dependencies in my project to a specific version of Clojure? One of the project's dependencies (can't avoid using it) uses a version range (beginning with Clojure 1.2), and now Heroku is compiling 1.2, 1.3, 1.4, 1.5, and 1.5.1 into my slug.
14:11technomancykendallbuchanan: wait for the next version of leiningen, and `lein deps :tree` will show you the proper :exclusions vector to use =)
14:12technomancykendallbuchanan: more seriously, if you have isolated the problematic dependency, put :exclusions [org.clojure/clojure] inside the vector
14:12kendallbuchanantechnomancy: Hehe, so, [org.clojure/clojure :exclusions "1.2" …] or something along those lines?
14:13technomancykendallbuchanan: more like [org.problems/i-use-version-ranges-boo "1.8.1" :exclusions [org.clojure/clojure]]
14:13kendallbuchanantechnomancy: Okay, I see now… the :exclusions key should be added to the dependency that's introducing the wrong versions.
14:14technomancyaye
14:14kendallbuchanantechnomancy: Perfect, thank you!
14:14technomancyseriously one day away from releasing a version of leiningen that tells you this =)
14:14kendallbuchananIs that likely to bring my slug size down substantially?
14:14kendallbuchananThat's awesome.
14:14technomancykendallbuchanan: no, it won't affect size. it doesn't include those versions in your slug, it just downloads the poms for them.
14:15kendallbuchananOkay, then I'm on the wrong track.
14:15technomancykendallbuchanan: switching to an uberjar deploy will drop the slug size a bit though
14:15kendallbuchananK, somehow I've got a slug over 300MB, with a fairly small codebase
14:15kendallbuchananIs this common? Like, is it possible the number of dependencies I have are adding up?
14:16technomancykendallbuchanan: it's possible if your deps have changed a lot that old versions aren't getting properly cleaned out. I recommend switching to an uberjar deploy and seeing if that helps.
14:16technomancykendallbuchanan: if it doesn't let me know the app name (/msg is fine) and I can check it out
14:17kendallbuchananOkay, perfect, lemme try that
14:23augustlanyone happen to know why https://github.com/clojure/data.fressian isn't in clojars or maven central?
14:25dnolencemerick: results of the survey are very interesting
14:25cemerickdnolen: yup, there's some gems in there
14:25cemerickdnolen: you read too fast to have actually read it tho! :-P
14:26dnolencemerick: heh I read the post :) still looking over the graphs
14:26seangroveI didn't participate.
14:26cemerickseangrove: wat?
14:26bbloomdnolen: i'd read it but google groups' "sign in" button is broken
14:26bbloomweee
14:27cemerickbbloom: results are on my blog
14:27mdrogalisInteresting. I see a lot of "I want core.async IN the language"
14:27technomancyeep
14:27mdrogalisIn the "what feature do you want in Clojure" question
14:28joegallosigh...
14:28seangroveWonder why people would want it in the language...
14:28Glenjaminoh, results out?
14:29cemerickI guess this is what happens when you ask people for language feature suggestions.
14:29dnolencemerick: interesting the number of people using ClojureScript, but the uptake seems relatively recent
14:29Apage43that's why I had trouble with that box
14:29technomancycemerick: people too shy to put "dunno; it's all good" in?
14:29hyPiRionseangrove: probably because you can't send messages from functions. It's a bit more constrained than Go's message passing style
14:29mdrogalisTypes, user reader macros, debuggers, TCO from eyeing it up
14:29Apage43I couldn't think of anything that couldn't be "just" a library
14:29hyPiRionI see like that ~5% who answered that question answered "Faster startup time"
14:29seangrovecemerick: In our cose, we were exclusively a cljs shop, and we only late (~7-8 months later) adopted jcm-clj. So we fit your rosier model.
14:30cemericktechnomancy: there are some
14:30dnolenthe number of CLJS Node.js users is significant
14:30mdrogalisHm. "Transactional namespaces". I haven't heard of that before.
14:30mdrogalisWhat do you think that might mean?
14:31technomancymdrogalis: if you run into an error these days you can have a half-compiled namespace
14:31dnolencemerick: lein-cljsbuild mostly won, but 145 people using some other means is interesting
14:31cemerickmdrogalis: long-standing wishlist item for many
14:31technomancymdrogalis: whereas what you want is atomicity
14:31mdrogalisFrom nrepl.el? Or in Clojure itself?
14:31bitemyappI would like this.
14:31mdrogalisI never knew that could even happen.
14:31cemerickdnolen: yeah, I haven't gone through all the freeform bits yet. I'll bet that a large part of that is "configuration overload sucks".
14:32technomancymdrogalis: from anywhere; either completely compile or completely fail
14:32bitemyappmdrogalis: no difference, if it's implemented in Clojure then it's obv available through nRepl.
14:32mdrogalisI use Clojure an awful lot, and I never noticed that. Huh.
14:32technomancymdrogalis: it's easy to do if you're OK making var lookup involve an extra layer of dereferencing =)
14:32mdrogalisThen again, I never write errors, sooo..
14:32hyPiRionWell, most people don't tend to require errored namespaces
14:32bitemyappmdrogalis: happens to me all the time :(
14:32mdrogalisI probably saw it and didn't know what it was.
14:33technomancynamespaces now are a mutable map that gets bashed in place, which is sadface
14:33cemerickdnolen: oddly, those targeting node.js *still* report using both Clojure and ClojureScript.
14:33Glenjamini wonder if lower response means answers are skewed to hardcore clojurists
14:34dnolencemerick: good to see we're working on the right stuff w/ respect to top 3 CLJS frustrations
14:34bitemyappGlenjamin: I'm pretty sure they are, Hacker News would've brought in more muggles.
14:34ToBeReplacedcemerick: i use CLJS on node.js for scripting, clojure for everything else, for example
14:34cemerickToBeReplaced: noted, thanks
14:35joegallofwiw, technomancy, i said that leiningen needs to be in clojure
14:35pjstadigjoegallo: haha wat?
14:35joegallojk
14:35technomancyjoegallo: you monster
14:35bitemyappyes because contributors to Leiningen want to sign a CA and use JIRA.
14:35pjstadigconsolidate all the things!
14:36cemerickdnolen: yeah; going to make Austin bulletproof over the next year.
14:36bitemyappjoegallo: you are trying to kill Clojure, aren't you? :P
14:36joegalloi just, you know, it doesn't feel "official" enough to me right now
14:36joegalloi also think it needs a clarifying rename
14:36technomancyjoegallo: I'll try to post more pics of me coding with a suit and tie
14:36technomancyahaha
14:36hyPiRionhahaha
14:36hyPiRionOn second thought, that would've been a scary sight
14:37bitemyapptechnomancy coding in a suit and tie means the doom of the universe.
14:37ToBeReplacedi'm surprised so little commercial services/products
14:39Glenjamin>> It is still very difficult to find a good, simple "Quick-start" guide to point interested parties at.
14:39Glenjaminthis
14:39Glenjaminoh
14:39Glenjaminthat was me
14:39Glenjamini stand by it
14:40Glenjaminunsure what this means? "Namespaces are a horrible, broken mess. They are a wildly complected nightmare."
14:40coventryI think you could fake transactional namespace loading pretty easily by using the code-loading functions in ztellman's sleight library to run remove-ns on any load which raised an exception.
14:41technomancyhm; interesting
14:41technomancyassumed it was only possible inside the compiler, which is why I haven't taken a shot at it yet =)
14:41technomancybut maybe not
14:42Glenjaminsurprised to not see people complaining about dependency versions much
14:42Glenjaminhah: "Lack of static typing."
14:42Glenjamintools, hiring and docs seem to be a theme though
14:43mdrogalisI put down proper predicate dispatch
14:43Glenjaminpolldaddy doesn't keep your per-page choice when you change pages :(
14:44Glenjaminlots of complaints about lisp syntax - which seems unhelpful
14:46cemericknDuff: those comments are in there. Until something equivalent/better shows up, I just point at cljx.
14:46coventry"why would you need to add a feature? I thought that's what macros are for."
14:46technomancycoventry: ifn regexes!
14:47Glenjamincould tagged literals do feature expressions?
14:47nDuffcoventry: if everyone agreed on those macros (and support for them were universal across build systems), we'd be fine. Not _everyone_ can use lein. :(
14:48technomancylots of people want CL conditions, which is understandable
14:48coventrynDuff, technomancy: Not my line, it's a quote from the desired-language-features list. :-)
14:48technomancyah right
14:48cemerickGlenjamin: Yes, though it's be an absurd hack. Go look at cljx.
14:48ToBeReplacedi remember seeing JIRA discussion on platform-dependent code (a la cljx or others) -- where is the discussion at now?
14:49cemerickToBeReplaced: Linked from the cljx readme.
14:49cemerickCome on, someone else ask a question, I'll find a way to work cljx into it. :-P
14:50xcthulhuI have a scrip that spawns a process using lein, but when I kill lein the underlying java process is still running
14:50Glenjaminbased on this it seems like a kickstarter to fund a decent documentation site would do well
14:50xcthulhuHow do I stop this behavior?
14:51technomancyxcthulhu: have you tried trampolining?
14:51xcthulhuYeah, doesn't work :(
14:51technomancyoh?
14:51hyPiRionhuh
14:51hyPiRionyou using `lein exec` or something like that?
14:52Glenjaminwhat did you do to kill lein?
14:52Glenjamininteresting note: "Who's actively driving the vision now - is Rich focusing on Datomic?"
14:53xcthulhuI spawn lein in a shell with
14:53xcthulhu(cd repo ; lein trampoline ring server-headless ) &
14:53xcthulhuAnd I have in the same script
14:53xcthulhutrap 'kill $(jobs -p)' EXIT
14:53xcthulhuSo all of the child jobs get kill when I exit the script
14:55xcthulhu@Glenjamin Something like hoogle for clojure would be awesome...
15:00bitemyapplolque @ lighttable's nil for something that threw an exception
15:00TimMc"lolque"?
15:00bitemyappTimMc: lolwut
15:00bitemyappbut en Español
15:01bitemyappI'm not actually sure how people get work done in LT.
15:01bitemyappI can't even run my tests and see the exception they threw.
15:05xcthulhuOkay, so the problem was that I was running everything in a child shell
15:05bitemyappxcthulhu: greetings elder one
15:05xcthulhuSo if someone ever comes across this IRC log on google some day, they should know: don't use lein in child shells
15:06xcthulhuYou can do the same thing as ( cd <dir> ; blah blah ) with popd
15:06xcthulhu...and pushd
15:06xcthulhuHey bitemyapp
15:06bitemyappxcthulhu: I listen to music about you.
15:06xcthulhuI develop in LT
15:07bitemyappxcthulhu: so you don't write any tests?
15:07xcthulhuYeah, I write tests
15:07bitemyapp...and how do you know if they worked or not?
15:07xcthulhulein test
15:07bitemyappwhat a cop out.
15:07xcthulhuhaha
15:07bitemyappso what you're actually saying is, "I edit text in LT, but leiningen from the command line does all the heavy lifting"
15:08bitemyappI will say this though, it's very responsive and presents text nicely. Wish the AA was a little better tho.
15:08coventryWhat's AA?
15:09bitemyappcoventry: antialiasing
15:09coventryAh.
15:09bitemyappthe text is kinda janky on my Mac.
15:09bitemyappactually, I can side-by-side the same code and you'll see what I mean.
15:09bitemyappsigh, of course LT doesn't remember what files/folders I had open ;_;
15:09bitemyapp...or it did and it just lagged? dafuq
15:10xcthulhuI thought it used webkit for display?
15:10bitemyappcoventry: http://i.imgur.com/WQ4VEmo.png
15:10coventryAlso, using "lein test" in a conjunction with a tool like lighttable sounds a bit like driving a flying car which you have to get out and push every so often. :-)
15:11bitemyappxcthulhu: it does but you can set the AA of your fonts.
15:11bitemyappcoventry: that's how I reacted!
15:11bitemyappcoventry: left is Emacs, grey weirdness on the right is LT
15:11bitemyapplooks like a shitty courier font or something
15:12bitemyappit is seriously responsive though
15:12bitemyappleveraging webkit was a really good idea.
15:13mtp"a shitty courier font" is redundant
15:13mtp;)
15:14bitemyappI'm willing to believe in the hypothetical non-shitty courier font.
15:14TimMcs/courier/monospace/
15:14TimMcCourier is a specific font.
15:14xcthulhubitemyapp: Anonymous Pro is nice
15:15TimMcConsolas is pretty good.
15:15xcthulhuYeah, I like that one too
15:15TimMcOr Inconsolata, I can't remember which is which
15:16TimMcUbuntu's default monospace is decent. "Ubuntu Mono", I think.
15:16bitemyappTimMc: yeah I like Ubuntu Mono.
15:16bitemyappI use Monospace on Linux and Menlo on Mac.
15:17bitemyapphappy with both.
15:25blrcemerick: enjoyed reading the results of the survey. Just a comment from a co-worker that I felt was worth mentioning, he was looking for a javascript alternative, but didn't consider clojure as he felt it was just for 'alpha-hackers'. Do you think that's a common perception?
15:25blrand if so, what can we do to change that perception?
15:25ToxicFrog"alpha-hackers"?
15:25blrToxicFrog: right, his perception was that clojure was inaccessible and hard
15:26blrToxicFrog: also see people adopting Golang without any consideration of clojure (or erlang) and also wonder why that is
15:27ToxicFrogAah.
15:30bitemyappblr: alpha hackers? lol no.
15:30blrI mean, there must be things we can be doing as a community to make it clear that clojure makes things much easier in many respects. I guess part of the problem is that there are so many innovative (and potentially challenging) things worth talking about like core.logic and core.async that might be intimidating
15:31blrbitemyapp: I know it's silly, but if that's the impression most software developers have of clojure it's a problem
15:31bitemyappI've been teaching Clojure to Python programmers for awhile.
15:31bitemyappNobody perceives Pythonistas as being alpha anything, let alone alpha hackers.
15:31blrbitemyapp: the perception isn't correct, I'm just saying that I think it's there
15:31bitemyappblr: then correct it, it's silly.
15:32blrI'm a totally mediocre programmer that does python professionally - if I can get my head around it anyone can :P
15:32bitemyappClojure is not a difficult language to learn by any means. There are almost no non-trivial prerequisites at all
15:32blrbitemyapp: I know this, but I don't think most programmers do. I think the general perception is that it is 'academic' and too hard
15:33nDuffThe language isn't hard to learn. But if you've had your head wrapped around OOP for the last decade, it can take a pretty substantial while before one feels comfortable.
15:33TimMcbitemyapp: Wait, you mean you *don't* need to understand how to use monad assembly language to use Clojure?
15:33upwardindexWas 'format'
15:33bitemyappagghhhhhhh fucked by laziness again
15:33upwardindex oops
15:33bitemyappI knew that wasn't going to work.
15:33amalloybrb inventing monad assembly language
15:33bitemyappfuckity fuck
15:34upwardindexWas 'format' removed for cljs? I just updated and it won't find the function anymore?
15:34cemerickblr: I'm not sure I can comment on that usefully. ClojureScript is definitely undocumented, so you do need to know what you're doing to use it. Ease of use and round edges aren't really a development priority at the moment. Honestly, there's bigger fish to fry.
15:34amalloyupwardindex: did it ever exist? jvm format is based on String/format, and i didn't think there was a cljs port to begin with
15:34dnolenupwardindex: format no longer exists was removed some time ago, you can just use goog.format directly - that's all it ever did anyway
15:34TimMcIt's for alpha-hackers, in the sense of programmers who like using alpha-stage languages. :-P
15:35upwardindexdnolen: ok that explains it thanks!
15:35blrcemerick: I understand that entirely, I'm just concerned that many people I work with are making new language choices without any consideration of clojure and clojurescript
15:35solidus_I can't connect using nrepl from emacs to "lein repl" - its just saying "Connecting to nREPL on 127.0.0.1:38689"
15:35cemerickThat said, who doesn't want to be an "alpha hacker", whatever that means? AFAICT, the other big languages targeting JavaScript are, in relative terms, duller tools that I'd rather not spend mental capital working around.
15:35dnolenblr: fwiw, I don't think learning core.logic is all that important/interesting, as much as it gets name dropped.
15:36dnolenblr: and if people are adopting go, core.async is the same CSP concepts, you're going to have a learning curve regardless
15:36blrdnolen: oh right, but things like core.logic are typically what you see on hackernews, not how easy it is to build a web application in clojure
15:36cemerickblr: well, Clojure is *very* mature, works well, and has tonnes of books, blog posts, etc written about it, not to mention very comprehensive official documentation. I have little sympathy with anyone that thinks it's "too hard".
15:36bitemyappyou don't really have to use core.async for most things anyway
15:36bitemyappit's only if you want to go STRAIGHT TO PLAID with something concurrent
15:37bitemyappoddly I see people freaking out a lot less about the equivalent tooling in Haskell with forkIO, MVars, and the rest.
15:37dnolenblr: huh, I think Clojure + web gets decent play on HN
15:37cemerickdnolen: fair point, but you have to admit, braces and = signs are awesome
15:37cemerick:-P
15:37solidus_any good recent tutorial on how to work with emacs/lein? can't seem to get nrepl to work....
15:37bitemyappblr: your mistake was reading hacker news.
15:38bitemyappsolidus_: can't seem or can't?
15:38bitemyappbecause if you're mistaken in your perception of non-functionality and incapability to rectify the situation we might end up in a rabbit hole.
15:38blrbitemyapp: this is from my coworkers perspectives
15:39bitemyappblr: well tell them not to read Hacker News either.
15:40glosoliHacker News has too much crap in it lately
15:40solidus_bitemyapp: nice man, using big words and everything
15:40solidus_Need help on getting emacs/nrepl/lein working plz
15:40bitemyappsolidus_: https://github.com/bitemyapp/dotfiles/
15:40bitemyappsolidus_: nice man, using "plz" and everything.
15:40Glenjamini showed my co-workers some of my clojure, they said "wtf loads of parens", I looked, and suddently saw parens i hadn't been seeing
15:40bitemyappsolidus_: look at the repo. Figure out what you fucked up.
15:41bitemyappGlenjamin: whining about parens reminds me of when you give a 10 year old kid their first taste of beer
15:41bitemyapp"YUCK I'LL NEVER DRINK THIS!"
15:41Glenjaminyes, but social pressure makes you
15:41Glenjaminbut there's less social pressure to embrace lisps
15:41Apage43i have coworkers walk over to my monitor and point "AGH! PARENS!"
15:42Apage43It's a bit exasperating
15:42Glenjaminit was really odd that i didn't even notice until they went argh
15:42bitemyappApage43: I'm surprised I haven't seen you perp-walked out of your office for murder.
15:42blranyway, I'm giving an introductory talk about clojurescript at my local tech meetup. I guess that's the best thing we can do?
15:42clojurebotexcusez-moi
15:42Glenjamini think a really good "here's how you get started with clojure" guide would be great
15:43coventrysolidus_: Does M-x nrepl-jack-in work for you?
15:43solidus_coventry: nope
15:43Apage43what do you get when you try nrepl-jack-in
15:43solidus_Starting nREPL server...
15:43bitemyappsolidus_: don't use nrepl-jack-in.
15:43solidus_and its stuck
15:43bitemyappsolidus_: start lein repl from the terminal in the project you want to use
15:43Apage43huh
15:44bitemyappsolidus_: connect to the port directly from Emacs.
15:44llasrambitemyapp: WHat?
15:44llasrambitemyapp: Why would you suggest people do that?
15:44bitemyappllasram: because then we can find out which part is breaking.
15:44solidus_Exception Unsupported option(s) supplied: :headless clojure.core/load-libs (core.clj:5408)
15:44llasramOh, for testing, I see
15:44bitemyappwhy the fuck else would I suggest that?
15:44llasramHaha
15:44solidus_I did that too, doesn't work
15:44tolitiusGlenjamin: I hooked several people on Clojure via 4clojure. It has all the right properties: challenging, addictive and "game competitive"
15:44llasrambitemyapp: I don't know. Because you'd gone mad? :-)
15:44bitemyappsolidus_: you don't need headless
15:44bitemyappsolidus_: type in, "lein repl"
15:44bitemyappsolidus_: no more, no less
15:44bitemyappsolidus_: in the project you want to start
15:45bitemyappsolidus_: when you've done that let me know so I can provide the next instruction
15:45bitemyappbecause I didn't say, "lein repl and some other bullshit like :headless"
15:45bitemyappI said, "lein repl" in the project you're trying to load.
15:45Glenjamintolitius: i like 4clojure, but i think it lacks a companion piece that tells you what's available to solve the problems
15:45solidus_lein repl => nrepl from emacs => got a *nrepl-connection* buffer with "user=>" but I can't do anything
15:46solidus_i mean i etner numbers and press enter nothing happens
15:46bitemyappsolidus_: I said to wait my next instruction
15:46bitemyappsolidus_: okay, first off, in the lein repl, what port does it say?
15:46bitemyappclose emacs
15:46bitemyappreopen it.
15:46solidus_5014 same one i entered in emacs
15:46bitemyappsolidus_: stop jumping ahead of my instructions.
15:46coventrysolidus_: Can you interact with the repl in the terminal where you ran "lein repl"?
15:46solidus_yes
15:46bitemyappcoventry: thanks, I was about to get there
15:46bitemyappcoventry: you know what, he's all yours.
15:46bitemyappcoventry: solidus_ good luck to both of you.
15:47tolitiusGlenjamin: yes, I see this side of it, however it is engaging enough for people (read interested in problem solving, programming) to find the way (read clojure docs with examples)
15:47Glenjaminmm
15:47mdrogalisHadoop just rained all over my parade. Escaped Java polymorphism problem by calling into Clojure protocols. Hadoop hated that. D:
15:47Glenjaminthe cheatsheet is pretty good, but clojure.org links to an old version
15:47coventrysolidus_: Can you telnet to the port lein repl opened?
15:47Glenjaminand google throws up clojuredocs which only does 1.2 and 1.3
15:47Apage43o.0
15:48Glenjaminhttp://www.braveclojure.com/getting-started/ seems like it might be good though
15:48solidus_ahmmm telnet 127.0.0.1:5014 hangs...
15:48tolitiusGlenjamin: that "old" version is 99% good for all the problems (I only say 99%, since I have not seen a problem that required something other than what's already in the docs)
15:48tolitiusGlenjamin: a 4clojure problem, I mean
15:48coventrysolidus_: Probably a firewall issue.
15:48solidus_telnet: could not resolve 127.0.0.1:5014/telnet: System error
15:48Apage43no :, space
15:49Apage43but also
15:49Apage43that's a weird thing to do
15:49Glenjamintolitius: telnet is odd and wants a space between the host and port instead of a colon
15:49coventryOh, Apage43 is right. "telnet localhost 5014" (space rather than colon.)
15:49solidus_oh right, with space it works
15:49Glenjaminthe problem is, i'm past that beginner stage, so i'm not in a position to evaluate intro guides very well
15:49glosoliGlenjamin: http://aphyr.com/
15:49solidus_i get the user=> prompt
15:49Glenjamin4clojure is how i got into it
15:50glosoliGlenjamin: this is pretty decent imo
15:50coventrysolidus_: You get a "user=>" prompt from the telnet command? That's weird.
15:50solidus_yea i do
15:50Apage43( I think he might have a very old leiningen guys )
15:50Glenjaminglosoli: oo, looks good from a quick skim - seems similar in structure to the python tutorial - which is excellent
15:51Glenjaminsolidus_: what output does `lein version` get you?
15:51Apage43solidus_: make sure you have the latest lein; https://raw.github.com/technomancy/leiningen/stable/bin/lein
15:51coventryWell, if Apage43 is right, you might try "lein upgrade" and starting over.
15:51Apage43or that
15:51Apage43it should upgrade itself. But I believe he's actually on 1.X
15:51glosoliGlenjamin: also you should follow Planet Clojure RSS
15:51Apage43which may or may not require updating the script
15:52arrdembitemyapp: how goes
15:52bitemyapparrdem: resisting the urge to strangle bitches.
15:52blrGlenjamin: looking to python for guidance around documentation is generally not a bad idea
15:52bitemyapparrdem: working on brambling.
15:52solidus_oh shit i wasn't using the right command, got Leiningen 2.1.2 on Java 1.7.0_25 OpenJDK Client VM
15:52solidus_and this version doesn't give user=> prompt on telnet
15:52Apage43oh, 2.1.2's not that old
15:52Glenjaminblr: mm, the python core docs are really excellent
15:52Apage43hm
15:52Apage43oh
15:52solidus_but it does connect
15:52Apage432.1.2 is what you have *now*
15:53blrGlenjamin: a lot of the docs for popular projects are generally very good too
15:53Apage43right, so now you actually do *have nREPL*
15:53bitemyapparrdem: turns out, laziness in Clojure isn't just a matter of s/reduce/reductions/g - whodathunkit?
15:53tolitiusGlenjamin: it seems that you are not looking for sources that make people understand how to get started, but for "why would they need to bother", and that is not something that can be solved by a single tutorial.. "it's inside, Luke"..
15:53aconberedo people have a preferred way to read off a socket in clojure? I can just pull in some java libraries, but wondering if there's something a little more native that's preferable"
15:54Glenjamintolitius: "why" = watch "Simple made easy"
15:54ibdknoxis anyone aware of someone working on a code formatter for clojure?
15:54Glenjaminit's more: I'm a programmer and i've decided to learn clojure. Walk me through it
15:54Glenjaminthe aphyr link from glosoli looks pretty good
15:54blribdknox: something like gofmt?
15:54coventrysolidus_: I would try "lein upgrade" and "lein repl" then telneting to the new port. See if you still get a repl prompt in the telnet session then.
15:54bitemyappaconbere: https://github.com/bitemyapp/revise/
15:55bitemyappibdknox: why do unit tests that fail just show "nil" in an instarepl'd buffer?
15:55bitemyappfail meaning an exception was thrown.
15:55ibdknoxblr: yep
15:56bitemyappWhich is indistinguishable from the test succeeding.
15:56ibdknoxbitemyapp: anything in the console?
15:56bitemyappI have no idea
15:56bitemyappI was so disgusted I closed LT
15:56ibdknoxlol
15:56blribdknox: sure wouldn't hurt, would nicely compliment kibit
15:56bitemyappkibit with side effects? ick, plz no.
15:57ibdknoxit's actually necessary for a number of things
15:57bitemyappmake code formatting its own plugin.
15:57blrbitemyapp: wasn't suggesting that kibit change :P
15:57ibdknoxI was just asking if anyone was aware of a project like that already being worked on
15:57blrlooks like you are now ibdknox! :D
15:57ibdknoxlol
15:58Glenjaminthe closest i've got is https://github.com/odyssomay/sublime-lispindent
15:58Glenjaminwhich does a sort-of ok job if you do the linebreaks
15:58ibdknoxyeah, indenting is already taken care of
15:59Glenjamindeciding when to newline seems non-deterministic though
15:59Glenjaminespecially when you include things like GET and POST from compojure and with-*
15:59Glenjaminwell, if it was just with-* thats a fairly easy rule
15:59ibdknoxI imagine there's a fairly straightforward set of rules you could follow to get most of the way there
16:00ibdknoxthe use case would be for formatting generated code
16:00Glenjaminit would have to be easily tweakable so it doesn't undo your nice work when you want to step outside the existing rules
16:00coventryibdknox: What about clojure's pprint?
16:00solidus_i updated lein to [Leiningen 2.3.3 on Java 1.7.0_25 OpenJDK Client VM] still no luck connecting from emacs
16:00hyPiRionProblem is comments
16:01coventryhyPiRion: Ah, right.
16:01coventrysolidus_: What about the telnet response?
16:02solidus_connecting, without "user=>" prompt
16:02ibdknoxcoventry: also pprint doesn't do a very good job with code
16:03coventrysolidus_: No idea, then.
16:03solidus_oh jesus fuck, i had some auto-complete related shit in my .emacs
16:03solidus_removed it now it connects just fine
16:03solidus_thanks for the help anyways
16:04ibdknoxbitemyapp: exceptions are caught by the clojure.test and it prints them out to the console.
16:04ibdknoxbitemyapp: not much I can do about that
16:04bitemyappIndeed.
16:05blrhas anyone made the jump from vim to emacs and found it valuable?
16:05arrdembitemyapp: that isn't surprising in the least...
16:05ibdknoxonce plugin authoring is in, presumably someone will write a nice clojure.test plugin :)
16:06blras in genuinely worth the mental anguish...
16:06TimMcbitemyapp: I still think beer is yucky. :-P
16:06hyPiRionibdknox: `emacs --batch -l ~/.emacs.d/init.el --eval='(clojure-mode)' --eval='(indent-region (point-min) (point-max) nil)' -f save-buffer myfile.clj` can indent files properly :)
16:06glosoliblr: VIM lacking proper integration with nREPl was the case for me of ditching it
16:06glosoli:)
16:06hyPiRionAlthough I have high doubts that was what you're looking for
16:07arrdemglosoli: I agree... but at least they have fireplace now
16:07blrglosoli: I'm finding vim-fireplace good, but then I don't really know what I'm missing in emacs
16:07glosoliarrdem: I did use fireplace it's inferior to what emacs provide
16:07ibdknoxhyPiRion: wait, emacs has true code formmating?
16:07ibdknoxformatting*
16:08glosolilast time I checked it does :)
16:08blrglosoli: I've been using vim for 15 years though, so it's going to be a painful process...
16:08TimMcibdknox!
16:08glosoliblr: Well, if you don't feel like VIM fireplace is uncomfortable, don't switch
16:08TimMcGood to see you around.
16:09coventryibdknox: M-x c-guess even does a fairly decent job of inferring the formatting rules for clojure's java code. It's pretty sweet.
16:09arrdemglosoli: it's better than nailgun tho...
16:09blrarrdem: yes, that wasn't great.
16:09arrdemglosoli: nailgun is what drove me to transition to Emacs this past Christmass
16:09technomancyemacs won't break long lines for you though; I don't think anyone's attacked that problem algorithmically in the general case
16:10technomancy(meaning outside ns)
16:10hyPiRionibdknox: That invokation just performs proper indentation
16:10blrarrdem: and you've found it generally worthwhile? (presumably using evil-mode?)
16:10glosoliarrdem: I wasn't around Clojure at that time, but switching to Emacs meant doing most of the stuff in it for me lol
16:11arrdemblr: nope I've never run evil-mode. I actually find modal gets in my way and that keychords are nice. personal perfference.
16:11arrdemblr: I totally use vim when I need to change users and work in a terminal, but Emacs is my IDE
16:11blrah ok, I'm not sure I can ever part from modal editing.. kind of like a brain lesion.
16:12arrdemit's really cool when I :wq in an Elisp file and Emacs bitches "Could not evaluate symbol wq"
16:12glosoliblr: I had problems with nREPL buffer when I used evil mode, it jumped cursor in some weird way
16:16technomancyllasram: re the "Batman is very much a child’s fantasy" conversation from the conj: http://comicsalliance.com/ask-chris-96-why-spider-man-is-the-best-character-ever-yes/
16:16blrwonder if anyone has been working on codemirror's vim support...
16:17bitemyappworking on codemirror means writing JS. Tough sell.
16:19pbostromblr: I use evil-mode, I was never a VIM power user but I like VIM's modal editing and motions too much
16:19solidus_nrepl is still being developed or now CIDER has completely replaced it?
16:20glosolisolidus_: they renamed project
16:20glosoli:)
16:20solidus_btw anyone used lightable or managed to get emacs shortcuts to work there?
16:21coventrysolidus_: I would stick with nrepl for now (vs cider. No opinion on LT.)
16:21glosolisolidus_: https://groups.google.com/forum/#!msg/light-table-discussion/KE-qSBjfRxA/lgC5l3ykjGcJ
16:21blrsolidus_: the editor that lighttable uses (codemirror) will have emacs bindings, but if it's anything like the vim support will be woefully incomplete
16:23solidus_coventry: why do your prefer nrepl?
16:23glosolisolidus_: More stable :)
16:23coventrysolidus_: What glosoli said.
16:24coventrysolidus_: Until there are new features I want in cider, I don't see the upside. https://github.com/clojure-emacs/cider/issues
16:24TimMcreply -> nrepl -> cider?
16:25TimMcOr is cider just the new name for the Emacs side of things?
16:25glosoliemacs side of things
16:25coventryTimMc: Yep.
16:25dnolennice https://news.ycombinator.com/item?id=6757031
16:27blrdnolen: I'm maintaining a large angular project now and it is getting hairy
16:28teslanickblr: Anything specific to look out for? I've been advocating moving a big app toward Angular
16:29dnolenblr: I don't think it's actually and either/or thing, CLJS + Angular.js seems like a combination people like
16:29coventrylazybot's findfn should try permuting the arguments if it comes up empty the first time.
16:30Rayneshttp://github.com/Raynes/findfn
16:30RaynesOn one hand that pull request would be mighty useful. On the other, findfn is already amazingly slow.
16:30RaynesBut hey, if you're in it you might as well be in it for the long hall.
16:30Rayneshaul*
16:31RaynesOr a long hall. Doesn't matter to me. Whatever you're into.
16:31blrdnolen: you don't find that clojure and MVC are at odds with eachother? Have been investingating frp approaches as an alternative, but it requires a fairly major shift in thinking
16:32blrteslanick: angular is just very agnostic about how you structure your project, you just have to be disciplied about reuse through directives and make sure you're putting logic in services rather than controllers... nothing specific to angular
16:33upwardindexRecommendation for a notification library that is a pleasure to use from clojurescript?
16:33TimMc&(keep :foo [{:bar 6} {:foo 7} {} {:foo 9}])
16:33lazybot⇒ (7 9)
16:34dnolenblr: not saying CLJS+Angular.js is something I would personally use, I think CLJS offers some cool opportunities to rethink how client side apps are done, but this will take some time to shake out.
16:34dnolenupwardindex: core.async?
16:34coventryRaynes: You're right, if it's doing that it should send periodic messages back so you know it's not just that it's died. And because that's potentially a lot of spam, it should probably only do that when it's /msg'ing, not when it's broadcasting to the channel.
16:34upwardindexdnolen: I mean growl type of thing
16:34logic_progwhat is the inverse of .getBytes? (I have taken a string, encoded it with .getBytes, stuffed it in a db, read it back out, now I need to convert it back to a string)
16:35Raynes(String. (.getBytes "foo"))
16:35dnolenupwardindex: oh not that I know of, shouldn't be too hard to leverage a JS lib if one exists.
16:35Raynes&(String. (.getBytes "foo"))
16:35lazybot⇒ "foo"
16:35Rayneslogic_prog: ^
16:35logic_progRaynes: exactly what I needed. Thanks!
16:36upwardindexdnolen: there are tens of libraries luckily
16:36Rayneslogic_prog: Keep in mind that this uses the default charset. You can specify another if necessary.
16:36blrupwardindex: https://github.com/CodeSeven/toastr seems popular (haven't used it myself)
16:37teslanick&(-> "foo" .getBytes String.)
16:37lazybot⇒ "foo"
16:37teslanickRaynes: wouldn't that be easier to read?
16:37upwardindexblr: that is a pretty one!
16:38Raynesteslanick: Not really, no.
16:38RaynesIn larger, more complex examples, sure.
16:43stompyjIs there an IRC channel for caribou / Are there any caribou users/authors in here?
16:44coventrystompyj: justin_smith is affiliated with caribou.
16:47stompyjcoventry: thanks!
16:48gfrederickshyPiRion: I would like to browse large data structures by having some top-level stuff shown, and being able to expand
16:48gfrederickslike a tree, yunno
16:48gfredericksif a map has lots of keys, only show a few of them
16:48stompyjtrying to decide if it's worth using as purely a REST API
16:48hyPiRionhmm, okay
16:48stompyjit seems like that's not it's intended use case, but it also seems like it may work that way
16:49TimMcgfredericks, hyPiRion: Further request: Interactively map different functions across certain parts of the tree.
16:50gtrakanyone have an idea how to tune lein for a smaller heap? -server just gets out of hand once I get past a few project repls.
16:50gfredericksTimMc: oh dang now we're getting advanced
16:50technomancygtrak: -server is a no-op
16:50technomancyunless you have a 32-bit JDK
16:50gfrederickshyPiRion: in particular it should work without sending all the data back to emacs
16:50gtraktechnomancy: right, I mean the implicit -server that's run on a 64-bit box.
16:51TimMcE.g. "Run #(String. %) on all the byte arrays" or perhaps on certain paths.
16:51hyPiRiongfredericks: sending or printing?
16:51technomancygtrak: you mean beyond -Xmx?
16:51Raynescemerick: "(is-this-element-in-this-collection? nil [1 2 nil]) ; And no, the (some #{x} coll) hack doesn't work for nil" is one of the responses for missing Clojure features.
16:51gfrederickshyPiRion: sending; e.g., a 20GB data structure
16:51gfredericksso it has to maintain a reference to the data back in the jvm process
16:51Raynescemerick: If you ever find out who that was by some miracle of fate, tell them about (some nil? coll)
16:52TimMcIt would also be nice to e.g. show the first element of each collection by default (down to a certain depth).
16:52gtraktechnomancy: I can limit the heap, but looking at jvisualVM it seems like it's just keeping a massive heap allocated and not using all of it, I'd like for the max to grow down dynamically instead of relying on OS paging.
16:52gtrakthe heaps get thrown into swap eventually, is what I mean, I'd like to avoid the swap.
16:52hyPiRionTimMc: *print-depth* and *print-length* can already do that to some extent, no?
16:53enquoracan anyone point to sample code using core.async to manage simultaneous network requests and local persistence to disk? Just finished debugging a viper's nest of callbacks in a javascript implementation of CouchDB - both network access and local persistence use asynchronous apis. Need to get my head around doing this in a some fashion that clearly exposes intent in code. Alternative seems to be a formal statechart/statemachine
16:53cemerickRaynes: heh, sure; though, (some nil? ...) doesn't help if you want to generically check for some value in a sequential, and don't know the type or nil-ness of that value
16:53technomancygtrak: I know stuff like certain IO buffers are allocated off the main heap; native libs can allocate there as well
16:53egosumdid clojuredocs.org get abandoned?
16:54egosumAnd does anyone know/can anyone guess why? And is there a replacement?
16:54bitemyappegosum: yes
16:54bitemyappegosum: I'm considering starting a wiki.
16:54gtrakI'll play with it :-), thanks
16:54gfredericksbitemyapp: who owns it? not interested in transferrinc?
16:54bitemyappegosum: I'll do it today if I can get at least one person to commit to helping me make content for it.
16:54bitemyappgfredericks: zachary kim. I don't know.
16:54hyPiRioncemerick: (some #(= % my-value) ...) does work though
16:55bitemyappI'm rather envious of Haskell.org and EmacsWiki.
16:55hyPiRionThat was probably to Raynes as well
16:55technomancygfredericks: they've been looking for someone to help for like two and a half years or something
16:55technomancyno one ever does
16:55technomancythe circle of rage continues
16:55egosumtechnomancy: what sort of help? and who?
16:55gfredericksokay so it's not abandoned by somebody, it's abandoned by allo f us?
16:55bitemyapptechnomancy: nobody wants to work on a Rails app.
16:55RayneshyPiRion: nil?
16:55technomancygfredericks: exactly
16:55bitemyapptechnomancy: and they have a team that is supposed to be working on it, but hasn't.
16:55Raynes&(some nil? [1 2 nil 3 4])
16:55lazybot⇒ true
16:55gfredericksoh it's a rails app
16:55Raynes&(some nil? [1 2 3 4])
16:55lazybot⇒ nil
16:55bitemyappgfredericks: they started a team to maintain it but the team didn't do anything
16:56bitemyappgfredericks: the team said they had it in hand and that we didn't need to do anything.
16:56cemerickhyPiRion: true, true; perhaps not obvious tho
16:56bitemyappso it's not entirely on us.
16:56technomancybitemyapp: everything's done except the html front-end, which no one on the team is qualified to write
16:57technomancyegosum: https://github.com/clojuredocs/web
16:57bitemyapptechnomancy: link it in the channel so people can see what we're talking about, please.
16:57cemerickI love how the survey always manages to spur the vitriol here :-P
16:57bitemyappyes.
16:57gtraktechnomancy: this looks like what I want: -XX:+UseAdaptiveSizePolicy 'if both the pause time goal and the throughput goal are being met, then the size of the generations are decreased to reduce footprint'
16:57bitemyappsigh, that's just an API.
16:57technomancycemerick: you asked for opinions, you get an opinionfest =)
16:57cemerickmmm, so I hear
16:57technomancybitemyapp: right; that's the problem. the API is done, the HTML isn't
16:58egosumtechnomancy: thank you, technomancy
16:58bitemyapptechnomancy: it's not just HTML, it's structuring the whole site and content.
16:58technomancybitemyapp: ok, sure
16:58bitemyappaka, actually making the thing we actually need
16:58bitemyappwe didn't need an API
16:58bitemyappwe needed up to date content
16:58technomancyyou can access all the data from the repl
16:59logic_prog [org.apache.zookeeper/zookeeper "3.4.5"]
16:59logic_progfuck ... how do I installa zookeper in lein
16:59logic_proglein deps Could not find artifact javax.jms:jms:jar:1.1 in central (http://repo1.maven.org/maven2/) Could not find artifact javax.jms:jms:jar:1.1 in clojars (https://clojars.org/repo/)
17:00bitemyapplogic_prog: maven install
17:00logic_progbitemyapp: maven install -what- ?
17:00blrtechnomancy: is that todo in the README complete? doesn't mention any frontend tasks
17:00nDuffbitemyapp: that doesn't really help for code that isn't distributed in Maven Central for licensing reasons.
17:00nDufflogic_prog: you can use a :exclude for javax.jms:jms and then add a 3rd-party implementation. I think Apache has one.
17:01technomancyblr: «website [not started]» under Progress
17:01logic_prognDuff: I'm new to maven; is there a website I can read up on ?
17:01logic_progsomething like "how to install zookeper/clj for idiots"
17:01nDufflogic_prog: ...though, well, yes, you can download JMS from Sun, and then use ''mvn install'' to put that jar in your local cache.
17:02technomancynDuff: you can actually do that with lein now
17:02technomancyneeds better docs though =\
17:02logic_progtechnomancy: please enlighten us and teach me how to install zookeeper with lein
17:02nDufflogic_prog: *shrug*. I'm at a shop where we have the Ivy packager task set up to build a package of JMS for our local repo (which we can't legally distribute on account of Oracle being unhelpful).
17:02zilti3
17:03logic_prognduff: http://search.oracle.com/search/search?start=1&amp;search_p_main_operator=all&amp;q=jms <-- where do I even get jms?
17:03technomancylogic_prog: if you have a jar file you need, you can use `lein deploy` to get it into ~/.m2
17:03nDufflogic_prog: have you tried just excluding them?
17:03technomancylogic_prog: I have no idea how zookeeper works
17:03blrtechnomancy: ah okay. will keep an eye on it
17:03nDufflogic_prog: they may not be strictly necessary.
17:04nDufflogic_prog: ...alternately, legalities notwithstanding, it looks like it's available in https://repository.jboss.org/nexus/content/groups/public
17:04nDufflogic_prog: ...so you can just add that repository to your project.clj
17:04logic_prognDuff: where is the docs on how to adding a repo to lein?
17:05nDufflogic_prog: the leiningen README links to a sample project.clj that uses every possible option.
17:05nDufflogic_prog: "every possible option", by its nature, includes adding extra repos.
17:05logic_proghttps://github.com/technomancy/leiningen/blob/master/sample.project.clj ?
17:05nDufflogic_prog: *nod*. See :repositories
17:06technomancy`lein help sample`
17:07egosumwell, i pinged #clojure-doc — I'm looking through their repos now. I don't understand why new tags/whatever they call them weren't just introduced for 1.4 and 1.5, though. Seems a shame to let the site become stale for a rewrite? Unless it was somehow necessary?
17:07bitemyappegosum: clojure-doc is somebody else.
17:08bitemyapppretty sure that's the clojurewerkz people not the clojuredocs API people
17:08egosumbitemyapp: from ://github.com/clojuredocs/web the README refers me to #clojure-doc
17:08egosumon freenode
17:09bitemyappegosum: sigh, then that's a namespace collision.
17:09bitemyappegosum: clojure-doc the website is the friggin' github wiki the clojurewerkz guys started.
17:09bitemyappthe offer still stands, I'll launch the wiki if I can get at least one person to commit to helping me put the content up.
17:10egosumbitemyapp: somehow, they're connected. That clojure-doc.org -> the same repo that hosts the web repo for clojuredocs.org
17:10technomancybitemyapp: it's the same folks
17:10egosumSo somehow clojurewerkz are involved as well
17:10egosumthere you go
17:10technomancythere's just a lot of overlap
17:11egosumbitemyapp: I'm going to wait to hear back from them, first; if they're really just some HTML away from re-launching, I may find some time to help in the coming weeks. Though I'd love to hear why it all went dead?
17:11bitemyapp"just HTML"
17:12bitemyappyeah good luck with that.
17:12bitemyapp"just HTML" yet that's the part we're stalling out on.
17:12egosumbitemyapp: We'll see :) I'm optimistic. Rather not reinvent the wheel, at the very least.
17:12bitemyappthat's not the point
17:12bitemyappthe API isn't enough
17:12bitemyappyou need community created examples underneath the raw docs themselves
17:12bitemyappthat means you need a wiki
17:12bitemyappbut if you have a wiki, integrating the API after the fact is not a big deal at all.
17:13bitemyappbut until the structure and ability to add community created content is in place, you don't have much to work with.
17:13bitemyappI don't know why others cannot see that.
17:13egosumbitemyapp: i don't know what they have in mind, but what they have now on clojuredocs.org is a wiki, essentially. Right?
17:14bitemyappegosum: in Rails
17:15blrbitemyapp: any existing resources worth looking to for inspiration? wiki.python.org?
17:15egosumbitemyapp: I don't have a problem with that. Rails works. Less fun, sure, but this is a CRUD app
17:15technomancyclojure-doc.org is basically a wiki where edits are pull requests
17:16bitemyappblr: haskell.org + Haddock and EmacsWiki are stand-outs in my opinion.
17:16bitemyappegosum: I have a problem with working on a rails app in a community that supposedly has good web tools.
17:16bitemyappsomething that the Haskell community somehow sidestepped.
17:16bitemyappegosum: I am not going to perpetuate the use of Rails on my free time.
17:16bitemyappI'd rather suck fruit wax.
17:17egosumbitemyapp: Then go ahead and write one in Clojure :) I'd be happy to contribute once it looks like it's as close to working at clojuredocs.org is
17:18blrbitemyapp: any way you could collaborate with clojurewerkz? there's a lot of good content on clojure-doc.org
17:18blrthe default bootstrap theme isn't doing much for me though
17:19bitemyappblr: I don't like the pull request workflow and I think it discourages contributions.
17:19gtraktechnomancy: seems like -XX:+UseG1GC is much more aggressive about releasing mem, from what I've read, that's expected.
17:19bitemyappblr: I really just want something like Haskell.org or EmacsWiki.
17:19bitemyappblr: I've already discussed this with them, they refuse to acknowledge how irritating it is to PR contributions to a wiki.
17:19technomancygtrak: but yeah, unpredictable memory usage is a huge source of support issues for JVM users on Heroku
17:20egosumblr: the problem (insofar as you'd call it one) with clojure-doc is that they don't want to cover the API with it. Just use it for guides/tutorials. According to the README
17:20bitemyappegosum: you're not understanding me.
17:20bitemyappegosum: I'm not doing a damn thing until I get at least one person besides myself who is interested in having a wiki. Doesn't necessarily mean writing one.
17:20danneuI started writing a clojuredocs clone like everyone else probably has in their neglected ~/oldcode folder, and used the gist api for contributions
17:20bitemyappegosum: I own clojurewiki.com, I'm just waiting.
17:20blrbitemyapp: are there any wiki projects in clojure atm?
17:20blras in wiki softwrae
17:21bitemyappblr: I've written a micro CMS in Clojure that runs bitemyapp.com
17:21gtraktechnomancy: this bug was informative: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6498735 . You're probably not going to futz with it for heroku until G1 is default, but check it out :-).
17:21bitemyappit could be turned into a wiki, but I don't think that's necessary.
17:21danneui own... wait for it... docjure.com
17:21bitemyappmediawiki + wrapper site for the API would probably be sufficient.
17:21egosumah, perpetuating the use of PHP ;)
17:22bitemyappthere's a difference between deploying a mediawiki and *hacking* on a Rails app.
17:22bitemyappI am not going to replicate everything mediawiki does in Rails.
17:22bitemyappI'm open to writing a wiki, but my point is that you don't *HAVE* to write a goddamn wiki.
17:22technomancyI'm not going to do any significant editing in a browser
17:23danneuyou should probably write a documentation archive in the language it's documenting
17:23danneuaudience are people that could commit
17:24bitemyappI would tend to agree.
17:24egosumThe salient questions are "what do people want?" and "what are people looking for?". I still get people hitting my many-years-old introductions to Clojure articles, searching with general keywords like "doing IO in clojure"
17:24blrbitemyapp: seems like something that should be discussed with clojure core?
17:24bitemyappblr: lol no.
17:24bitemyappthey're the last people you should talk to about documentation.
17:24technomancyheh
17:26blrjust seems a pity to have people independently duplicating documentation efforts, and it's confusing for new people
17:26egosumblr: agreed
17:27egosumIt would be nice to get a group of people together interested in creating a canonical wiki
17:27technomancywikis are easy to create
17:27egosumclojure and canon don't go well together, though
17:27technomancymaintaining over years is far more difficult
17:28danneuwiki is overkill. you just want a low-barrier code-formatted comment box
17:28danneufor a clojuredocs clone
17:29bitemyappI want a wiki.
17:29technomancyTBH I don't see why people don't just use it from the repl
17:29blrtechnomancy: that's not so intuitive for someone new to clojure
17:30blrneed both ideally
17:30technomancyblr: people gotta learn to get over their browser-addiction same as getting over the instinct to modify arrays in-place
17:30egosumtechnomancy: blr: coming from a guy who uses lynx from tmux :P some of us like a little more GUI in our lives
17:31blregosum: as a tmux user, sometimes I'm tempted myself..
17:31egosumblr: I use tmux, too. But god no not lynx.
17:31egosumActually, you use konqueror, don't you technomancy
17:31mtpi use w3m and elinks
17:31technomancyegosum: nooooo
17:31technomancyegosum: conkeror!
17:31technomancytotally different =P
17:31blrhah, yeah, that's a whole different kind of techno-luddism (no offense technomancy :) )
17:31technomancyhaha
17:32technomancyI just added in-emacs HTML rendering to nrepl-dicsover though
17:32hiredmantechnomancy: nice!
17:32egosumtechnomancy: seriously? that's awesome. I feel like I miss out on a lot using iterm2 instead of X
17:32technomancyI should add support for https://github.com/dakrone/clojuredocs-client though
17:33bitemyapparrdem: what is scc/sc13?
17:33technomancyhiredman: I'm hoping to port Javert to it \m/
17:34technomancyegosum: well it's not webkit; it's basically the equivalent of w3m's renderer, but without the dependency on an external binary
17:34arrdembitemyapp: http://sc13.supercomputing.org/
17:34technomancyperfect for an inspector though
17:34TimMc&((->> (?) lazy-seq (fn ? [])))
17:34arrdembitemyapp: I'm on the UT team for http://sc13.supercomputing.org/content/student-cluster-competition
17:34lazybotExecution Timed Out!
17:35technomancydakrone: would that make sense? creating M-x nrepl-cdoc that could use clojuredocs-client?
17:35bitemyapptechnomancy: seems reasonable to me.
17:35dakronetechnomancy: makes sense to me
17:35technomancydakrone: also, does your client support submitting or just reading?
17:35arrdembitemyapp: it's a high performance, power management based timed devops challenge
17:35TimMc&(->> ? trampoline lazy-seq (fn ? []) trampoline) ;; ah, much better
17:35dakronetechnomancy: just reading
17:36lazybotExecution Timed Out!
17:36technomancyI wonder if I could do a clojure/west talk on nrepl and nrepl-discover
17:36pjstadigtechnomancy: yes
17:36technomancygotta get the word out =D
17:37egosumI'm confused re: Cider v. nrepl. There's nothing on the nrepl repo pointing to cider (https://github.com/clojure-emacs/cider)
17:38joegalloegosum: i think you'll find that the project rename made it impossible for you to be confused
17:38joegallo(jk, man, i'm just messing around, you can totally ignore me)
17:38technomancygeez; you scraed scared him off?
17:39joegallosome people scrae easily
17:39hiredmanjoegallo: kings ignore jesters at their own peril
17:40joegalloi can't tell if you're calling me a fool or not, but the shoe fits
17:40joegallo:)
17:40Glenjaminis cider a fork or a rename?
17:40hiredmanthe big shoe :)
17:40technomancyGlenjamin: rename with a new maintainer
17:41Glenjaminoh, i thought nrepl.el was still under active dev
17:42arrdembitemyapp: we have a total of a 26 amp power budget and we've got the hardware tuned so tight we're french kissing the line. suddenly there's a word of the law dispute that may totoally screw us... I'm stressed :/
17:42Glenjaminah, found the issue tracker
17:42bitemyapparrdem: :( good luck!
17:42gtraktechnomancy: for comparison, notG1: http://imgur.com/C7r5hFa , G1: http://imgur.com/tuk8ilV .
17:43technomancynice
17:43gtrakthat massive cliff in the first is just unnecessary
17:44technomancyit is super annoying that there's no "never use more than $MAX mb of RAM" setting
17:44gtrakit would be inconsequential in a dedicated server setting, so I see why it's like that.
17:45mtpterom, what about ulimit? :p
17:45mtperr
17:45mtptechnomancy*
17:45seangroveAh, ffs heroku...
17:45gtraktechnomancy: there's MaxHeapFreeRatio and MinHeapFreeRatio, I was going to try that, but just flipping on G1 worked well enough.
17:46gtrak'-XX:MaxHeapFreeRatio=70, Maximum percentage of heap free after GC to avoid shrinking.'
17:46seangroveAddon got removed, but I never got an email, whole site is busted, didn't get an email because I don't have the original domain I signed up with years ago, can't update my email because I have to confirm an email from the original email
17:47technomancymtp: is that visible from inside the affected process?
17:47seangroveGave up on it before out of frustration, and now it has come back to haunt me.
17:48mtptechnomancy, there are syscalls to get it, so "not sure" :)
17:48technomancyseangrove: for clojars what we did when the original email account was locked was make a request signed with the SSH key we have on file
17:49technomancy(I only recently learned that you could do that with SSH)
17:50seangrovetechnomancy: ... to the heroku api?
17:50technomancyseangrove: no, in a manual support request
17:50seangroveOr are you talking about the design of clojars specifically,?
17:51seangroveAh, ok
17:51seangroveThat's a nice idea. I'll see if I can open another security ticket and get it taken care of this time.
17:51seangroveErr, suport ticket*
17:51seangrove"The cloud is great, as long as it doesn't fall out from underneath you."
17:53Glenjaminwas there an announcement about the nrepl.el->cider thing on the clojure mailing list? i don't remember seeing anything
17:54technomancyno idea; still using nrepl.el
17:54technomancyworks great
17:55Glenjaminmm, fair enough
17:55Glenjaminbtw technomancy, someone told me you had a hack that would allow loading multiple versions of a dependency into the same app - was that heresay, or is there some code floating around somewhere i could poke at?
17:56technomancyGlenjamin: it's basically a proof-of-concept https://github.com/technomancy/metaverse
17:56technomancy2-hour hack night project; do not use; feel free to read
17:56Glenjaminmm, it's an idea i'm very keen on
17:56Glenjamini claim it's best, if not only reason to use node.js
17:56technomancyI don't think it's a good idea actually
17:57Glenjaminin java-land, or in general?
17:57technomancyif you want something like that it's almost surely a sign that your codebase is too big
17:57Glenjaminit's the dependency hell problem
17:57technomancyso that's like taking painkillers to "solve" a broken leg
17:57Glenjaminif i include a library in my library, consumers shouldn't have to care
17:57GlenjaminB depends on utilA-1.0, C depends on utilA-2.0
17:57Glenjaminnow D can't use B and C
17:58seangroveGlenjamin: But loading them both doesn't help...
17:58Glenjaminseangrove: unless you could keep them separated
17:59technomancyit's easy to do with clojure namespaces for the most part, but as soon as you involve classes it gets hard
17:59seangroveGlenjamin: I suppose, sounds like a time bomb
17:59Glenjaminso B gets what it wants, and C gets what it wants, and unless you expose types over public interfaces you're fine
17:59Glenjaminwhich is where it falls down, of course
17:59technomancyin practice incompatibility usually comes from underlying java libs
17:59Glenjaminmm
18:00Glenjaminbut java peeps have gotten used to not using small dependencies
18:00Glenjamini think it would be a shame for clojure to have to follow that path
18:00Glenjamin"just copy that fn from the source into you app" shouldn't be the accepted solution in 2013 :)
18:01technomancyclojure is still small enough that you can shame authors of misbehaving libs into compliance though; it's great
18:01Glenjaminyeah, but that doesn't scale
18:01gtrakGlenjamin: seen codec? it's a start.
18:01gtrakcodeq, excuse me
18:02Glenjaminthats an interesting way of thinking about it
18:02Glenjamini'm familiar with the concept of codeq, but not played with it properly
18:02technomancyyeah, when clojure gets too big for that to work you gotta find another niche
18:02technomancyfactor, ocaml, elixir, etc =)
18:02seangrovehah
18:02Glenjaminbasically, I'm convinced that the node.js approach to dependency loading is onto something - and in theory clojure's namespaces would support the same model
18:03Glenjaminbut as you say, java complicates things
18:03seangroveCould be a good troll talk. "If the language is soo large I can't personally shame a library author into doing the right thing, I don't want to use it."
18:03gtrakmy dream someday :-). clojure-in-clojure -> environment-as-a-value -> distributed-versioned-repls
18:04Glenjaminbut yeah, i don't want to live in a world where "this project has no dependencies" is a plus point
18:04bitemyappgtrak: environment is a value already in Haskell
18:04bitemyappgtrak: monads gg.
18:04gtrakbitemyapp: hmmmmmm
18:04Glenjaminbecause for any non-trivial project, that either means you did lots of copy-pasting, or you reinvented a bunch of wheels
18:04bitemyappGlenjamin: sometimes yes, sometimes no.
18:05bitemyappthe only dependencies brambling has are datomic-pro, clj-time, and clojure itself.
18:05bitemyappthat's probably my lowest-number-of-dependencies library.
18:05bitemyappthere are some datomic wrapper utils that could get split out, but I don't have enough of them to bother yet.
18:06RaynesIt's like he knows I'm waiting... watching...
18:06technomancyRaynes: it wasn't in the most flattering context
18:06RaynesIt wasn't a horrible contxt.
18:06Raynescontext*
18:06RaynesOne day I'm gonna get used to the keyboard on this macbook, bitemyapp.
18:07bitemyappthe fuck did I do?
18:07bitemyappoh right
18:07bitemyapptechnically that is my fault.
18:07RaynesIt makes no sense. The keyboard on a macbook air is the exact same size as the one on the macbook pro, right?
18:07bitemyappI don't know.
18:07blrRaynes: he didn't compare it to ruby at least
18:07bitemyappI own both and have no idea.
18:07Glenjaminbitemyapp: it seems fairly well factored to me - although there's some scary reduce calls in there!
18:07Raynesblr: Not much beyond syntax that you can reasonably compare with Ruby.
18:07bitemyappblr: Ruby isn't a niche, it's a fuckpit of hate fueled by money and self-aggrandizement.
18:07dnolenGlenjamin: I for one hate the depend everything style of Ruby & Node that I've seen at the lib level, and it's annoying when you see it in Clojure outside of *applications*, and even there it's easy to get out of hand.
18:07RaynesWell, I'm staying out of that one. :P
18:08blruh oh, looks like I used someone's trigger word
18:08Glenjamindnolen: what is it you dislike about it?
18:08arrdembitemyapp: okay... I think we're gonna be OK.
18:08bitemyappGlenjamin: actually yeah, I would love feedback on brambling.
18:08dnolenGlenjamin: random crap
18:08bitemyappGlenjamin: I take the "scary reduce" as a badge of honor tho :)
18:08srrubyIs this idiomatic clojure? https://gist.github.com/anonymous/7537032 I use defonce to avoid loading a resource until the method is called.
18:08hansengelHi all -- I have a patch I'd like to contribute to Clojure core re: an issue
18:08hansengelon JIRA. Is this the right place to ask if it's sane and OK? :)
18:08bitemyappsrruby: oh my god no don't
18:08bitemyappsrruby: never def inside a function
18:08bitemyappsrruby: don't nest defs
18:08bitemyappgod no ick ugh vomit no.
18:09arrdemhansengel: do you have a clojure CA?
18:09technomancybitemyapp: just breathe
18:09arrdemhansengel: we'll do a code review for sure, but clojure core can't take it until you've submitted a CA
18:09bitemyappsrruby: (def hyphenator (memoize (fn [] ...body of thing here...)))
18:09hansengelarrdem: OK, I was going to mail one today.
18:09srrubybitemyapp: Thanks!!
18:09seangroveI blame korma and my own initial designs though
18:10hansengelThis is a super tiny fix, but I'm not sure I've done it in the right place
18:10Glenjamindnolen: anything specific? I have a theory that most issues come down to having to deal with dependency hell - which tooling can solve - i'm interesting in discussing more widely
18:10bitemyappsrruby: at the top-level, not nested :|
18:10hansengelre: this ticket http://dev.clojure.org/jira/browse/CLJ-1282
18:10bitemyappfor the record, Korma's not my fault either.
18:10hansengelmy fix: http://pastebin.com/d9JndGJn
18:10hansengelI'm a bit wary about changing something so general sounding as "ConstantExpr," though
18:11hansengelI'm still new to the Clojure core code ;)
18:11hansengelAdding tests now, by the way
18:11technomancyhansengel: technically your patch is under the threshold of copyright in the US, but you still have to assign "copyright" on it for some reason before anyone on the core team will speak to you about it
18:12dnolenGlenjamin: what I mean is I don't see value in that approach other than making the dependency graph look ridiculous. I prefer to be relatively familiar w/ the dependencies in a project.
18:13hansengeltechnomancy: Hmm, okay, is there a standard way to do that?
18:13Glenjamindnolen: from my pov, you either need dependencies, or you need to write them yourself. Splitting out into modules and putting docs and tests on each one means you shouldn't have to touch them much once they're stable
18:13technomancyhansengel: yes, but you're not gonna like it
18:13technomancyit involves a printer, stamps, and lots of waiting
18:13Glenjaminif the modules are all small, then stitching them together and sanity-checking them should be less effort than re-creating from scratch
18:14hansengeltechnomancy: I see, ha.. so I really can't get anywhere without the CA then.
18:14gtraksometimes a project's dependencies are just massive, and the cost of futzing with adding another is less than the time it takes to split the project and create an IPC layer.
18:14seangroveGlenjamin: Using data helps avoid many versioning problems
18:14seangroveNot all, but some
18:14dnolenGlenjamin: except in the latter I have to contact the dev to fix or monkey patch. In the former I can fix.
18:14dnolensmall dependencies just means more hell
18:14dnolennot under my own control
18:14technomancyhansengel: yeah, it's a pain.
18:15Glenjaminthats why we have forks and things, the tooling should enable us to break out clean dependencies
18:15seangrovetechnomancy: hansengel My CA took ~48 hours to be processed
18:15dnolenGlenjamin: yeah I agree w/ basically nothing you are saying
18:15Glenjaminfair enough
18:15technomancyseangrove: sure, but that's just step 1. now you have to fight Jira
18:15seangroveWasn't bad at all, I regret moaning about it as much as I did
18:15dnolenif I have to maintain a fork for 100 lines of code ... what the hell do I need a module for
18:15gtrakthe project I'm working on has 174 entries in lein deps :tree
18:16dnolenI'll just write that myself
18:16seangrovetechnomancy: Also not too upset with JIRA these days. I just do the basics, and let dnolen handle the rest of the pain.
18:16Glenjamindnolen: because your module has tests, docs and a clean separation from the rest of your code. its impossible to couple to your app
18:16hansengelOK, thanks seangrove, technomancy, arrdem. I'll be back in a few days then :)
18:16technomancyseangrove: that doesn't scale =)
18:17seangrovetechnomancy: Are you sure? dnolen seems to be indefatigueable.
18:17danneui thought clojure handled DependencyA leaning on bouncycastle1.7 and your app pulling in bouncycastle1.8.
18:18Glenjaminit tells you it might not work
18:18technomancyseangrove: dunno; rewriting small libs to avoid growing a dependency tree sounds tiring =)
18:18Glenjaminor rather, lein does
18:18seangrovetechnomancy: I figure if we have him, you, cemerick, and maybe two others, there's no immediate concern for scaling bottlenecks :)
18:18technomancyseangrove: I just send cemerick actual pull requests; he looks the other way and keeps me out of trouble.
18:18seangroveHahahahahaha
18:19seangrovetechnomancy: Well, you are listed here after all http://clojure.org/contributing
18:19Glenjaminanyway, i'd like to see more people discussing whether it's actually a problem, or if just-write-it-yourself actually is a better solution
18:19technomancyClaiming Copyright Ownership of Submitted Patches as a Service
18:19technomancyseangrove: yeah, but I got dumped off the clojure-dev mailing list for some reason
18:20technomancypossibly my own fault; google groups UI is terrible
18:20bitemyappit damages the community when people don't use and improve each others' libraries.
18:20seangrovetechnomancy: Before or after everyone unanimously voted for ops for you?
18:20Glenjamin(inc bitemyapp)
18:20lazybot⇒ 13
18:20seangroveYou're not exactly an unknown figure...
18:20technomancyseangrove: I think it was before
18:20seangroveI imagine cemerick might have more reservations about looking the other way if pr's came from less savory sources
18:21technomancyI send in the CA when I was young and starry-eyed; back when Rich promised to switch to github.
18:21bitemyappseangrove: you're the one that has "unsavory" in his profile, not me.
18:21arrdembitemyapp: well played
18:21Glenjaminbitemyapp: on brambling, i'm only broadly familiar with datomic - but i really can't figure out what groupings->temp-ids does
18:21technomancybitemyapp: well I have "bumbling" in mine, does that count
18:21seangrovebitemyapp: You're tainted by association, I'm afraid.
18:22bitemyappseangrove: I'm pretty sure my intolerance speaks for itself.
18:22bitemyappGlenjamin: you can't directly transact primary keys from one database into another
18:22pmdehi clojure people. I have a function that i need to call for each item in a list, but once after the other, each one after the one before has completed. the function is all side effects... and i want a timeout... i was thinking of using agents.. is that a good idea? or could i just use map? thanks
18:22bitemyappGlenjamin: you have to use a temporary id intermediary. So everytime you see primary key "2" in the old database, I replace it with the mapped-to temp id
18:22bitemyappI group the datoms by the entity id (primary key) in the datom vector.
18:23bitemyapphence the name groupings
18:23seangrovetechnomancy: Didn't you say you had replaced the built-in nrepl-greetings?
18:23bitemyappGlenjamin: I then reduce the association of primary key to a newly created temp id if one wasn't already created, then I map the datoms over to the tempid in the transaction.
18:23technomancyseangrove: absolutely http://p.hagelb.org/nrepl-words.el.html
18:24seangroveOh man, that's lovely
18:24technomancyit brightens my day every time
18:24seangroveThat's what I was thinking
18:24bitemyappGlenjamin: So [:db/add 1 :muh-attr :muh-data] turns into [:db/add (d/tempid whatever) :muh-attr :muh-data]
18:24bitemyappGlenjamin: then the whole translated transaction gets reduced through the mappers.
18:24bitemyappit's per transaction translation, no transaction folding
18:25bitemyappI'm working on incremental processing and transaction pipelining atm
18:25clojurebotexcusez-moi
18:25technomancyholy smokes; cider became a lot of files
18:25bitemyapp`cbp: oh god why did I write a datomic migration library
18:25bitemyapp`cbp: don't let me do this again
18:25`cbpbitemyapp: what happened
18:25Glenjamini'd suggest adding some of what you just said into these doc-strings :)
18:26bitemyapp`cbp: making brambling incremental and pipelining the transactions, rewriting a reduce in terms of lazy-seq.
18:26bitemyapppossibly^H^H^H^H^Hdefinitely losing my sanity.
18:26bitemyappgetting results from my functions that don't make any fucking sense.
18:27technomancynice https://github.com/clojure-emacs/cider/pull/415
18:27seangroveDocumentation for cider-words-of-inspiration: "Scientifically-proven optimal words of hackerish encouragement."
18:28danneudatomic is awesome. every day i use it, i get better at actually thinking of the db as a val i can just pass into a plain ol function.
18:28technomancyseangrove: I could do without the quotations
18:28seangrovetechnomancy: heh, "fellow hacker"
18:28`cbpbitemyapp: here here
18:28bitemyappdanneu: are you volunteering to work on brambling? :P
18:28seangrovetechnomancy: Was a direct quotation
18:29`cbpbitemyapp: After some soul searching ive decided to do a heckle in clj. You have been warned
18:29bitemyapp`cbp: HAHAHAHAHA
18:29bitemyapp`cbp: we can go to the looney bin together.
18:29bitemyappI will shanghai the next person that says they love Datomic into working on Brambling just to see how much they love Datomic afterward :P
18:29Glenjamini wonder if opt-in sandboxed dependency versions with a slightly different (ns) incantation would be more palatable
18:29bitemyapp`cbp: I will buy you multiple pizzas if you push a working version of it to clojars.
18:30seangrovetechnomancy: I would have liked adventurer more than "fellow hacker", I thought that was more in the spirit of things
18:30MorgawrI have a legal-ish question, can I put the clojure logo a website of an application/program/library powered by clojure?
18:30`cbpthat's cheap. They sell 3 for the price of 1 here
18:30bitemyappMorgawr: didn't stop rethinkdb
18:30bitemyapp`cbp: well design your own reward.
18:30bitemyappeither way, it's something I've wanted.
18:31`cbp:-)
18:31MorgawrI don't see the clojure logo on http://www.rethinkdb.com/
18:32Glenjaminoh wait, thats what this does - (ns-)
18:34`cbpMorgawr: It's supposed to be here but it's apparently broken: http://www.rethinkdb.com/docs/install-drivers/
18:34danneuspeaking of db, fleetdb.org expired 10/31/2013
18:35Morgawr`cbp: I see... I guess I can put it up there and if there are problems I can take it down
18:35srrubyIs rethinkdb well regarded? I know couchdb.
18:35egosumjoegallo: hah, sorry about leaving; library shut off the wifi
18:36bitemyappMorgawr: they were on there, but the icon is broken, hold on.
18:38technomancyGlenjamin: yeah that's the premise of metaverse
18:38Glenjaminthere's some dark magic going on here, but the surface area is smaller than i'd have expected
18:39devinuswhere's my (def newsletter) ?
18:39technomancyGlenjamin: part of that was because I was too busy cackling with glee at the fact that it actually sorta worked to clean it up
18:39technomancyalso it was a seajure hack-night project
18:39Glenjaminyeah, i can pretty much see how it fits together
18:40dsrxbitemyapp: rethinkdb isn't powered by clojure...
18:40bitemyappI didn't say it was.
18:40bitemyappI said they had no problem using the logo.
18:41bitemyappI think as long as you're using the logo to refer to something actually to do with Clojure itself, there's no problem.
18:41bitemyappIf you try to appropriate it for something that isn't Clojure, there's a problem.
18:41bitemyappbasic trademark, AFAIK
18:41Glenjaminit's a shame you have to duplicate the file-parsing and line numbering bit
18:41Glenjaminbut again, there's no much to it
18:41Morgawryeah I read Rich saying that the logo should only be used to refer to Clojure as the language
18:42MorgawrI'll just say "powered by Clojure" and it will link to the clojure website so I guess it's not a problem, if it is then I'll remove it
18:42technomancyI believe most objectionable uses are around derivatives of the logo
18:43technomancybut if you include the logo in your codebase it won't be DFSG-compliant
18:43Glenjamini was thinking potentially allowing something like (ns my-app (:require [stuff :as usual]) (:versioned [lib :as other])) might be interesting
18:43technomancywhich I know everyone would regard as the greatest of tragedies
18:44technomancyGlenjamin: ns is fairly resistant to hacking
18:44seangrovetechnomancy: diamond state financial group?
18:44bitemyappGlenjamin: added docstring to groupings->tempids per your recommendation. Thanks.
18:44Glenjaminhrm, with a different macro then - but opting in to versioned/sandboxed instead of chomping all the requires might actually get some traction
18:45technomancyseangrove: debian free software guidelines, the only rule of righteousness for the pure in heart
18:45GlenjaminPHP had to remove doug crockford's JSON parser - JSON says "do no evil", PHP says "do what you want" => licence incompatibility
18:45technomancyit really is a shame ns doesn't allow fully-qualified clauses
18:46technomancyGlenjamin: short jump from that to "php is evil"
18:46Glenjaminheh, sadly true
18:46technomancyI'm sure it could be proven with core.logic
18:46Glenjamini think for a certain class of libs, it'd be easy to convince people to sandbox - utility-belts spring to mind
18:46bitemyappGlenjamin: what?
18:46technomancyGlenjamin: please read up on http://nixos.org before continuing =)
18:47bitemyappGlenjamin: sandbox?
18:47Glenjamintechnomancy: this sounds interesting
18:47technomancyit's beautiful
18:48bitemyappGlenjamin: I've seen people use nixos with docker.
18:48bitemyapppretty cute.
18:48technomancyanyway, it can be done without convinging authors to opt in
18:48gfrederickstechnomancy: have you used nixos yet?
18:48Glenjaminbitemyapp: my cannonical example is B depends on utilA-1.0, C depends on utilA-2.0, now D can't use B and C
18:48Glenjaminthis problem is solvable with software
18:48bitemyappGlenjamin: well yeah, ideally each library operates in its own little universe.
18:48technomancygfredericks: no, I've only used nix from debian
18:48Glenjaminbut requires stepping away from java classloader land
18:49nDuffhrm.
18:49Glenjaminas much as people love to hate on nodejs, this works amazingly surprisingly well: http://nodejs.org/api/modules.html#modules_all_together
18:50technomancy(ns my.lib (:require [clojure.set :as set]) (:my.tool/versioned-require [conflicting.lib1] [conflicting.lib2])) ; <- I would love if ns supported this
18:51technomancyright now clauses are hard-coded to clojure.core
18:51gtrakthis is like multiple-inheritance, why not look to C++ for advice? /ducks
18:51seangroveI'm not particularly excited by much the node.js world does. It seems to work more or less though, so that's good for them.
18:51technomancyseangrove: modules as first-class maps is absolutely the right choice though
18:51technomancynamespaces are weird bash-in-place things
18:51nDuffhugod: I see you've done some related work with clasm; could I ask your advice re: tooling on the inverse (decompilation) side of the spectrum?
18:52Glenjaminseangrove: i have no itention of trying to sell any other aspects here, but sandboxed versioned module loading is truly awesome
18:52hiredmantechnomancy: there is nothing stopping you from using your own module system instead of clojure's namespaces
18:53technomancyhiredman: sorta. the ns macro is hard-coded in a bunch of places and it's difficult to replace.
18:53Glenjamintechnomancy: how would multiverse get loaded? don't you need to start with a (ns) before you can (ns-) ?
18:53hiredmantechnomancy: then don't use it?
18:54technomancyGlenjamin: that's basically what I'm complaining about =)
18:54technomancyhiredman: it's very difficult to bootstrap an alternative sanely
18:54Glenjamini suppose in theory all it does is set *ns* and call out to require, import etc?
18:55hiredmantechnomancy: metaverse is cute, but not very useful as is, so lamenting the inabaility to extend ns to use it is kind of silly
18:55technomancyhiredman: sure, but ns+ has :like, which is way useful
18:55lemonodorGlenjamin: i am totally with you on the node approach to dependencies. it's wonderful when you can do it.
18:56dsrxi'm really impressed btw that everyone in clojure seems to have rallied around something like leiningen from the get-go :)
18:56technomancyhttp://p.hagelb.org/qualified-ns-clauses.html <- yes please
18:56dsrxor well, at least relatively early on in the language
18:56hiredmantechnomancy: *shrug*
18:56dsrxit's nice that the tooling is more or less consistent across every clojure project
18:56technomancyhiredman: are you guys still using :like?
18:56hiredmantechnomancy: we never did really
18:56technomancyI totally did
18:57hiredmantechnomancy: we had a hack in user.clj to enable it, and we had 1-2 example ns's to target with :like, but it never was used, so I think it is gone now
18:58technomancysadface
18:58technomancyI wonder how loudly core would object if I submitted that ~25-byte change
18:58hiredman*shrug*
18:58technomancypower to the people!
18:58gfrederickstechnomancy: I can't figure out what it does
18:58Glenjaminit doesn't seem like it particularly has any/many downsides
18:58technomancythe ns macro is not very egalitarian
18:58Glenjaminit allows user-space extensions to ns
18:59technomancygfredericks: (ns my.lib (:println [hello.world])) is a thing that works
18:59gfredericksriiight
18:59gfredericksgot it
18:59technomancygfredericks: but it's hard-coded to only resolve from clojure.core
18:59hiredmantechnomancy: if you do that, then you introduce load order problems
18:59gfrederickscount me in
18:59technomancywhich is a form of oppression
18:59gfredericksoh coutn me out
18:59danneuwhat's the max yall are willing to wait for your autotest feedback loop every time you file-save? 1 sec? 3 sec? 15 min?
18:59technomancyhiredman: no more than regular require
18:59gfredericksoh count me in
18:59hiredmantechnomancy: given the ns form as is now, everything it needs is loaded by clojure.core, so any other clojure namespace that uses ns can be loaded, because it knows how to load everything
19:00danneubecause i'm about to perf optimize my tests
19:00technomancyhiredman: right; the patch needs to do a *bit* more to require the clause-containing ns
19:00Glenjamindanneu: <1 sec is proper autotest
19:00hiredmantechnomancy: with that change if a namespace uses it's own require, you cannot load it unless the definition of that require has been loaded
19:00hiredmanfeh
19:01technomancyhiredman: of course
19:01technomancyyou can't have circular dependencies
19:01hiredmantechnomancy: I didn't say anything about circular dependencies
19:02Glenjaminyou require the defining namespace be loaded before any utilising namespaces
19:02Glenjaminbut anyone opting into using this functionality could handle that?
19:02hiredmantechnomancy: use/import/require lived a life before ns, and proved their utility to be added in to ns, what else do you have that has done that?
19:02technomancyhttp://p.hagelb.org/egalitarian-ns.html
19:03hiredmantechnomancy: are you using a custom require all over the place that you want to move in to ns?
19:03technomancyhiredman: I'm not using :like solely because I *can't* use it sanely
19:03technomancyI would use the heck out of it if it weren't for the wacky bootstrapping issues
19:03hiredmantechnomancy: there is nothing stopping you from having like outside of ns
19:03Glenjaminwhat's the cost of this extension point?
19:04hiredman(like 'some.ns)
19:04technomancyGlenjamin: 10-20 hours of arguing on the internet
19:04Glenjaminheh
19:04technomancyhiredman: this offends my aesthetic sensibilities
19:04hiredmantechnomancy: *shrug*
19:05hiredmantechnomancy: if custom forms like that proliferate, then I think you could make a case for making ns extendable
19:05hiredmanbut they haven't and they don't
19:05bitemyapptechnomancy for Dictator!
19:05hiredmanwhy make a change that only exists for aesthetics? what is this, scheme?
19:06technomancythey don't because they're hideous
19:06bitemyappdown with the obstructionists!
19:06technomancyhaha
19:06hiredmanno more hideous than (ns ...)
19:06devnns is beautiful in its hideous-ness
19:06Glenjaminhrm, there's no reason the sandboxed version loading thingy has to take over :require in the ns block...
19:06bitemyapp(ns ...) Brown Shirts
19:06devnit's like a really beautiful wig
19:06bitemyappNS. get it? NS. lol.
19:06technomancywell the main reason I'd foresee getting pushback is that ns is infamous for being overly-permissive
19:07bitemyappdevn: wigs creep me out. made riding the subway in brooklyn difficult.
19:07hiredmanin order for this to be engineering, we need at least the veneer of evidence based decision making
19:07technomancyhiredman: this is art!
19:07hiredmantechnomancy: take your harmonikit and run
19:07Glenjaminwait hang on, (ns) technically lets you call any clojure.core form?
19:07hyPiRionyes
19:07technomancyGlenjamin: glorious, innit
19:08bitemyappGlenjamin: da.
19:08bitemyapp"innit" (inc technomancy)
19:08Glenjaminwould a 6-keyword guard really be that expensive?
19:08bitemyapp(inc technomancy)
19:08lazybot⇒ 85
19:08BronsaI enjoy doing (ns .. (:alias c.c clojure.core)).
19:08blrwat
19:09technomancyI'm not sure whether you can call ns from ns though
19:09Glenjaminthis nix scheme is genius
19:09Glenjaminencoding the dep tree into the directory name
19:09bitemyappoh god making this lazy is going to require refactoring half the code
19:10bitemyappI have to translate the carried mapping into a progressive reduction
19:10technomancyGlenjamin: http://p.hagelb.org/power.gif
19:10bitemyappffffffuuu
19:10hiredman(ns … (:refer-clojure :rename {+ - - +}])
19:10bitemyapphiredman: that's a plus, not a minus.
19:10bitemyappyou can do the same thing in Haskell fyi.
19:10technomancythat's no moon
19:10bitemyappnobody got my pun :(
19:12bitemyappI wonder if I could dynamically prune the...no lets not go there.
19:12bitemyappthat way lies MADNESS
19:12hyPiRiontechnomancy: hmm yeah, (:ns bar) expands to (ns 'bar). Tricky
19:13technomancyhyPiRion: if anyone can do it, you or TimMc can
19:14Glenjaminbah, trying to shoehorn a defmulti into (ns) but can't seem to get the destructuring right
19:15seangroveHTML5 ui controls... I wish we had better primitives.
19:15hyPiRiontechnomancy: Well, you could do (:eval (ns bar)), that should work
19:15technomancyaha
19:16bitemyappseangrove: that was the intent behind GWT, escaping reimplementation of widgets/functionality.
19:16blroh god, don't mention GWT
19:16Glenjaminaha, (ns (:eval ...))
19:17bitemyappblr: I didn't say it worked out well in that case :)
19:17bitemyappJava isn't known for doing a good job with reusable code or DSLs.
19:17seangrovebitemyapp: Also the idea behind cappuccino.
19:17blrJSNI gave me PTSD
19:17bitemyappseangrove: that was particularly egregious.
19:17Glenjamindont worry, the W3C is going to get it right this time
19:17Glenjaminhttp://www.w3.org/TR/components-intro/
19:18seangrovebitemyapp: I thought it was lovely as an idea. Wish they had made it further, and lookin forward to a cljs company recreating and surpassing what they did.
19:18bitemyappGlenjamin: trying to give me nightmares eh?
19:18bitemyappseangrove: it was way too fat.
19:18bitemyappseangrove: I'd like something like that, but way more lightweight and componentized.
19:18seangrovebitemyapp: Only for the time.
19:18Glenjaminin theory we have better primitives now
19:18bitemyappno it's still really bad by today's standards.
19:18Glenjaminso it wouldn't be as fat today
19:18seangrovebitemyapp: What Glenjamin said.
19:18bitemyappseangrove: I've used cappuccino and sproutcore based applications recently, they make my retina macbook pro overheat.
19:18bitemyappGlenjamin: oh possibly.
19:18Glenjaminthe shadow dom stuff is actually really interesting
19:19bitemyappI still think the design is unsound.
19:19hyPiRionhey, hm
19:19bitemyappI just want singular, reusable widgets.
19:19bitemyappnot an all-consuming desktop toolkit
19:19hyPiRion,(ns foo (:eval (println 10)))
19:19clojurebot10\n
19:19bitemyappaka, I don't want to emulate an OS graphical toolkit in JS.
19:19Glenjaminthe web was build for documents, and we're now stuck with some constraints from that
19:19hyPiRionwhy am I not surprised
19:19technomancyhyPiRion: sandbox escape route?
19:19dsrxweb components?
19:19Glenjamins/build/built/
19:19bitemyapptechnomancy: WHOA, good call.
19:19mtpthe web was rebuilt for advertisements about 10 years ago
19:20technomancy$eval (ns foo (:eval (println 10)))
19:20mtpeveryone took this long to notice
19:20Glenjamin,(println 10)
19:20clojurebot10\n
19:20technomancymtp: that's why I only communicate over email and IRC!
19:20mtptechnomancy, :)
19:20AimHereContrariwise, what was about the time that browsers helped users shut ads out
19:20AimHere*that was
19:20seangrovehaha, suddenly everyone goes crazy with eval
19:20Glenjaminwhat can't you normally do in a sandbox?
19:20mtpwhen was that ever a time?
19:20bitemyappGlenjamin: networking
19:20hyPiRiontechnomancy: apparently, although there probably are other ways to bypass it
19:20seangrove,(def x 10)
19:20clojurebot#<Exception java.lang.Exception: SANBOX DENIED>
19:21AimHereSANBOX?
19:21technomancyhyPiRion: on clojurebot, sure. how about lazybot?
19:21seangrove,(ns foo (:eval (def x 10))) x
19:21clojurebot#<Exception java.lang.Exception: SANBOX DENIED>
19:21bitemyapp,(ns foo (:eval (def x 10)))
19:21clojurebot#<Exception java.lang.Exception: SANBOX DENIED>
19:21Glenjamin,(ns foo (:eval (def x 10)))
19:21clojurebot#<Exception java.lang.Exception: SANBOX DENIED>
19:21bitemyapp,x
19:21clojurebot#<CompilerException java.lang.RuntimeException: Unable to resolve symbol: x in this context, compiling:(NO_SOURCE_PATH:0:0)>
19:21hyPiRiontechnomancy: is ns allowed there?
19:21technomancyno idea
19:21Glenjaminseems to be save
19:21bitemyappnuts.
19:21Glenjaminsafe even
19:21hyPiRion&(ns foo (:eval (println 'hello)))
19:21lazybotjava.lang.SecurityException: You tripped the alarm! class clojure.lang.Var is bad!
19:21seangrove,(ns foo (:eval '(def x 10))) x
19:21clojurebot#<Exception java.lang.Exception: SANBOX DENIED>
19:22bitemyapp"sanbox"
19:22seangroveWell, glad to see sanbox survives to see another day
19:22hyPiRiontechnomancy: oh right, I think clojail is doing post-macroexpand checks
19:22technomancyof course
19:23blrjust imagine clojurebot has a southern accent, then it makes sense.
19:24technomancyRaynes is laughing; "Those fools thought they could defeat me"
19:25blranyone live, or have lived in north carolina? is it a nice state?
19:26lgs32aevening everyone
19:26lgs32ai have a question that i have often asked myself
19:26seangroveblr: Flew through the airport recently. Nothing particularly notable about it.
19:26ibdknoxblr: depends very much on where you are
19:26bitemyappblr: depends on what you're into. You're not going to get a deeply urban experience out of it.
19:26technomancythe first three conjes were in north carolina
19:26lgs32awhen is it more idiomatic to use when vs if
19:26bitemyappblr: if you like low cost of living, access to the outdoors, home ownership, etc it's a great place to live.
19:26technomancylgs32a: I'm glad you asked!
19:26bitemyappif you like super-dense cities, not so much.
19:26blrwell, currently I'm in New Zealand, but the family is thinking about moving to the states
19:27bitemyapp~when
19:27clojurebotCool story bro.
19:27technomancylgs32a: when has an implicit do, so it signals to the reader that side effects are involved.
19:27bitemyapp~whentousewhen
19:27clojurebotexcusez-moi
19:27lgs32abecause, in traditional lisp, you use when for side-effects
19:27lgs32ayes exactly
19:27hyPiRionhow was the venue compared to the one in North Carolina?
19:27technomancylgs32a: exactly! but many clojure people do not know this, sadly.
19:27ibdknoxblr: it's not a progressive place at all, it's pretty conservative
19:27seangrovelgs32a: Don't listen to technomancy, he blasphemes.
19:27technomancyit is our job to educate them
19:27lgs32aso because i often see this attitude in clojure: there is no else-clause, so lets use when
19:27bitemyappwat.
19:27hiredmanthe n. carolina venue tended to feel like a ghost town, so it was like the whole place was dedicated to the conj
19:28blribdknox: yeah, I'm kind of prepared for that... NZ is pretty liberal
19:28technomancyprotip: if you're less concerned about side-effects than CLers, you should reconsider your opinions
19:28bitemyappI personally wouldn't mind living in NC, but I hate cities.
19:28Glenjamin,(doc when)
19:28clojurebot"([test & body]); Evaluates test. If logical true, evaluates body in an implicit do."
19:28hiredman"how do these resturants stay open? no one is here but people from the conj?"
19:28lgs32aand then i just read this article: https://metaphysicaldeveloper.wordpress.com/2013/11/18/idiomatic-clojure-with-lighttable/
19:28Glenjaminthe docs could be more obvious
19:28bitemyapphiredman: low cost of living and doing business :P
19:28Glenjamin"use to trigger side effects"
19:28technomancylgs32a: kibit is wrong =(
19:29lgs32aand i wondered - wow so it must be different in clj
19:29lgs32ayea
19:29Glenjamini admit i did pick it for the no-else-clause once, but weave jester reviewed and told me why
19:29hyPiRionlgs32a: yeah, that's not idiomatic use of `when`from my perspective
19:29lgs32athanks for clearing that up
19:29Glenjaminso i'm now enlightened on the subject
19:29technomancylgs32a: https://github.com/jonase/kibit/issues/2 <- basically wontfix'd =(
19:29Glenjaminin that example kibit is collapsing the do()
19:30ibdknoxblr: having lived there most of my life: it's very humid, with mild winters, not a big tech hub by any means, but strong hard science in the triangle area, it's cheap to live there, but southern culture is likely going to be a bit of a shock if you're used to a liberal lifestyle
19:30blribdknox: I play banjo, so I'm hoping that will ingratiate me with the natives
19:30lgs32atechnomance: interesting
19:30lgs32atechnomancy: interesting
19:31bitemyappblr: southern people are friendly in my experience
19:31technomancylgs32a: it is a controversial topic and I'm doing my best to cover it quickly before I get yelled at by one of those when-for-return-values heretics
19:31swarthyblr: I live in N. Carolina. I currently live in Raleigh, but have lived briefly in Wilmington and visited several other cities in the area.
19:31bitemyappit's only liberals from the city intentionally looking to pick a an ideological fight that seems to get anybody's hackles raised.
19:31bitemyappbut OTOH, most southerners I've interacted with were in the larger cities.
19:31bitemyappI haven't been in the boonies much.
19:31bitemyappexcept for in Ohio.
19:32bitemyappblr: the humidity is pretty killer in the summer if you don't like heat.
19:32blrthanks for the comments, glad to hear they are mostly positive
19:32bitemyappblr: I'm a relatively liberal person and would pick NC as a possible place to live once I can escape the bay area.
19:32seangrovetechnomancy: Heretics and blasphemers, I like the cool-headed framing of the issue :)
19:32blryeah I think I would go spare living in SF
19:32blror anywhere in the valley
19:33bitemyappblr: I can't wait to leave and buy a house.
19:33lgs32aDoes anybody know when the conj talks will be on YT?
19:33technomancyseangrove: speaking of getting hackles raised
19:33bitemyappblr: I'm thinking mostly of moving to Austin, Seattle, or Portland at present.
19:34blrportland seems a lot like NZ, I could probably live there quite happily
19:34bitemyappblr: so probably not NC, but NC I would be willing to consider if the aforementioned weren't so awesome :)
19:34bitemyappblr: Probably so.
19:34technomancyportland is great
19:34blrthere don't seem to be many software jobs though
19:34technomancyvery sad that clojure/west won't be there for 2014
19:34nDuffLow cost of living, no shortage of work.
19:34seangrovetechnomancy: I was hoping it would be. Do you know where it'll be instead?
19:35bitemyappnDuff: thanks, I'm trying to collect data.
19:35technomancyblr: per capita there are a lot I think
19:35ibdknoxSeattle is by far my favorite place to live
19:35bitemyappnDuff: why are you leaving Austin and where are you headed?
19:35seangroveEven Seattle would be acceptable.
19:35bitemyappibdknox: what'd you like about it?
19:35blrtechnomancy: in portland? interesting
19:35technomancyseangrove: they said at the conj it was going to be SF. not sure if that means in the city or in the area.
19:35bitemyappwell I have no excuse not to go now.
19:35hiredmanibdknox: the smallest big city
19:35technomancyblr: intel is headquartered outside portland
19:35bitemyapptoo bad it'll be in SF though.
19:35nDuffbitemyapp: headed to Chicago. Austin doesn't work for my wife for medical reasons.
19:36seangrovetechnomancy: Ah, well, that's ok too then. Was hoping to have a chance to get back up to Portland, but I don't mind a good conf in this city, of course.
19:36ibdknoxbitemyapp: very smart people, sane management, the greenest place I've ever been, amazing outdoor activities, it is incredibly beautiful, *great* food
19:36bitemyappnDuff: good luck in Chicago, sadly there are some particulars to CHI that make it an absolute no-go.
19:36technomancySF means a better water supply than san jose, which is relevant to my interests
19:36nDuffbitemyapp: (both weather, and lack of good transit services; to live without a car here, one needs to (1) be downtown, and (2) be able to bicycle)
19:36Apage43where does SF water come from?
19:36bitemyappibdknox: I'm rather fond of forests and trees, that's the main thing counting against Austin at present.
19:36technomancy(my interests being brewing coffee)
19:36bitemyappbut Seattle is already getting VERY expensive.
19:37bitemyapphouse prices are headed north of $500k
19:37ibdknoxbitemyapp: don't live directly in the city
19:37Apage43man I would like to see a tree
19:37nDuffbitemyapp: ...may I ask?
19:37ibdknoxbitemyapp: from my apartment in redmond I was 1.5 hours from over 1500 different hikes
19:37hyPiRiontechnomancy: man, you and your coffee
19:37bitemyappnDuff: I'm a fairly liberal, but that's really a euphemism for eclectic left-libertarian, I happen to be a fan of the 2nd amendment.
19:37bitemyappnDuff: Chicago is absolute-no on that front.
19:37technomancybitemyapp: in another, um, 10 years we'll have light rail to the north of the city
19:37nDuffbitemyapp: Ahh. Gotcha.
19:38nDuffbitemyapp: You'll find no shortage of politically like-minded folks in Austin.
19:38hiredmanseattle has views everywhere since it is so hilly, ever time you crest a hill you are looking down at trees and water with mountains behind them
19:38bitemyappnDuff: part of the reason I want to leave the bay area is so that I can own more than just my beretta and mosin.
19:38bitemyappnDuff: uhm, not quite. Texas is conservative, not left-libertarian. We'll only agree on guns.
19:38hiredmantechnomancy is always an optimist
19:38nDuffbitemyapp: Austin isn't Texas.
19:38blrfrom what I've heard Austin is a bit different though
19:38bitemyappI'd emphasize the *LEFT* part. It's not the same as the typical anarcho-capitalist libertarians you run into.
19:38Apage43bitemyapp: I thought I was more left than I was, then I moved to the bay area
19:39technomancyhiredman: heh yeah.. theoretically
19:39bitemyappnDuff: oh I suppose so.
19:39bitemyappApage43: yeah I feel pretty conservative here.
19:39bitemyappweird feeling.
19:39bitemyappApage43: I believe in property rights, the bill of rights, sane budgets, and the rule of law. I'm crazy like that.
19:39Glenjaminpfft, isn't all american politics basically right anyway? </troll>
19:40nDuffbitemyapp: ...see the notation in http://dieselsweeties.com/archive.php?s=1436
19:40Apage43I just want some GMO food to eat ;)
19:40nDuffbitemyapp: ...in general, Austin is liberal (far, *far* more so than the rest of the state), but still Texan enough that we like our guns.
19:40bitemyappnDuff: sounds amenable to me then.
19:41bitemyappI don't necessarily need to be surrounded by like minded people though, I just need my property and rights left alone.
19:41nDuffbitemyapp: *shrug*. You might disagree with the city council from time to time, then, but... *shrug*.
19:42bitemyappnDuff: it's rather serious in SF. The confiscatory ordinance SF passed lets them slap you with a misdemeanor for having property that the State grandfathered.
19:42blrshow me a town where people speak favourably of their city council ... :P
19:42bitemyappnDuff: which is to say, they're ignoring state preemption.
19:42bitemyappand they're getting away with it because picking on gun owners is free points in SF.
19:42Glenjaminanyway, i'm calling it a night
19:42Glenjaminthanks all for indulging my versioned-modules fantasy
19:43bitemyappnDuff: are you headed to a Clojure gig in Chicago?
19:43bitemyapp`cbp`: w/b
19:43bitemyappGlenjamin: cheers
19:43Glenjamintechnomancy: am i right in thinking using (metaverse/require) outside of (ns) should "just work" ?
19:43`cbpbitemyapp: whoops that's just my other computer waking up :S
19:43nDuffbitemyapp: going to start looking actively for interesting ones starting at the beginning of December.
19:44technomancyGlenjamin: I think so
19:44bitemyappnDuff: I think Groupon is the more well known employer of Clojure users?
19:44technomancyit's been ... two years?
19:44nDuffbitemyapp: Not happening.
19:44bitemyapphaha, okay. :)
19:44nDuffbitemyapp: I was early staff at one of their competitors. One of my very good friends, founder of same, would disown me if I even considered working there.
19:45bitemyappnDuff: understood.
19:45blrthink I'd rather contract hemorrhagic fever than work for an SV startup again.
19:45nDuff(also, said competitor was started to have a more sane variant of Groupon's business model; suffice to say that the version they're running is... not as solid as one would like; the ratio of customer acquisition costs to purchases made over customer life time is not what you'd like it to be).
19:46Glenjamini'm not sure if i'm missing something - but it doesn't look like the version number is used in the part which finds the resource
19:48bitemyappoh yes, my old nemesis, "is older than database basis" how nice to see you.
19:48coventrynDuff: What are you working on? Sounds interesting.
19:48bitemyappnDuff: what's the data model like?
19:50nDuffcoventry: pondering something similar to ekeko (a core.logic-based query interface to the bytecode generated by a project's compilation), but w/o the Eclipse dependency and capable of working on bigger datasets.
19:50nDuffcoventry: just exploratory at this point.
19:52nDuffbitemyapp: jimple is a representation of Java bytecode as typed 3-tuples.
19:55benediktanybody here have experience in writing android applications with lein-droid, neko and clojure?
19:55seangroveHrm, doing quite a bit of filtering on data client side, basically recreating a relational interface... wonder if I should bring in core.logic in cljs here...
19:56bitemyappseangrove: use datalog!
19:56coventrynDuff: Huh, what do you use something like that for?
19:56bitemyappcoventry: nicer processing of JVM bytecode from Clojure.
19:56seangrovebitemyapp: Client-side? I'd like to for its composability though. Might be a good idea
19:58seangroveSomeone, please, please, create a nice core.async html widget library. Please.
19:58seangroveI really don't want to.
19:58blrseangrove: but you must.
19:59bitemyappseangrove: you've clearly been nominated for the job of making an async widget toolkit.
19:59bitemyappgg gl hf
19:59bitemyappCan't Tom Sawyer me into this one, I don't enjoy working in the DOM that much.
19:59seangroveWe need a indiegogo campaign. I'd donate.
20:00bitemyappI'd donate and then cringe.
20:00`cbpi vote for seangrove
20:01blrseangrove? I heard he was working on a core.async widget library
20:01arohnerbitemyapp: Austin has trees. Not like the redwoods, but it has a fair amount of green
20:01seangrovebitemyapp: You know how reliable arohner is, I'd take it with a grain of salt.
20:01arohner:-)
20:01bitemyappseangrove: why are you trying to make everyone seem unreliable? :P
20:01bitemyappfirst me, now arohner.
20:02seangroveI'd say that's a pretty select group.
20:02bitemyapparohner: how does your "commute" to SF generally work? Do you visit a week at a time periodically or something?
20:02bitemyappseangrove: I am large and contain multitudes.
20:02arohner2.5 weeks or so, yeah
20:02bitemyapparohner: how often?
20:02bitemyappsorry for prying, was just wondering how you made it work.
20:02arohnerit's generally 3weeks/2weeks. Hoping to get it to 2/2 next year
20:02arohnerno worries
20:02bitemyappThanks
20:03arohnerOur team is also > 1/3rd remote, so that makes it easier
20:03arohneractually, the devs are half remote
20:04bitemyapparohner: planning for remoteness upfront helps a lot, yeah.
20:05bitemyappmy company is starting to accommodate remote workers but it's slow going and I'm trying to figure out how to work with it as I plan for escaping the Bay.
20:05akurilinbitemyapp, where are you going?
20:07bitemyappakurilin: nowhere presently, which is part of the problem.
20:07bitemyappakurilin: I'm considering Austin, Seattle, and Portland right now.
20:07akurilinI can vouch for Seattle.
20:08bitemyappSave for the handful of people I really like in the programming community here, I really strongly dislike the bay area.
20:08bitemyappakurilin: cool, what'd you like about it?
20:08technomancybitemyapp: you've read gilesgoatboy's screed on it, right?
20:09arohnertechnomancy: link? this sounds relevant to my interests
20:09technomancyhe's gone a bit off th deep end since, but this one was classic; lemme see
20:09akurilinbitemyapp, I lived on Capitol Hill for a year or two, it just had a very friendly, safe and still anti-establishment atmosphere. You can get anything from the best coffee to the heaviest metal bands in the range of a few blocks :)
20:10bitemyapptechnomancy: link the post?
20:10bitemyapptechnomancy: I might've, but I can't find the post to confirm whether or not I'd read it.
20:10bitemyappakurilin: yeah I actually happen to be really into cascadian black metal.
20:10bitemyappakurilin: which are based out of washington and oregon obviously.
20:10technomancyclojurebot: never hate only ever destroy is http://gilesbowkett.blogspot.com/2008/05/never-hate-only-ever-destroy.html
20:10clojurebotIk begrijp
20:10technomancybitemyapp, arohner ^
20:10akurilinbitemyapp, Agalloch are our shining beacons in one those subgenres :)
20:11akurilinbitemyapp, they're Portland specifically.
20:11technomancy^ or anyone else really; highly recommended =)
20:12bitemyappakurilin: yeah Agalloch is one of my favorite all-time bands.
20:12technomancyit's long though. not yegge-long, but a bit long
20:13technomancyI think his point about whuffie is ill-founded though; part of the point of that novel seems to be how insane it is to narrow things down to a one-dimensional number.
20:13technomancystill a good read
20:13blrbitemyapp: wolves in the throne room are another good west coast band imo
20:14bitemyappblr: another favorite of mine :)
20:14akurilinblr, bitemyapp rishloo are Tacoma-based, incredible art prog-rock if you're into that
20:14blrcool, don't know them, will check it out
20:14akurilinbitemyapp, I've also yet to have the bay area grow on me, I don't know why it's not clicking
20:15blrhave been listening to Panopticon's Kentucky which is 'blue-grass black metal'. it makes no sense, but somehow works
20:15akurilinguess the $3500/1br really sours things for a normal person, in addition to how little you get from the city.
20:15bitemyappakurilin: NYC was a better trade. $1500 for a 3 bedroom apartment in Astoria, Queens, 20 minute subway ride to Manhattan.
20:15bitemyappakurilin: still don't want to live in NYC though.
20:16akurilinbitemyapp, sounds like a steal!
20:16blrwell, NYC has rent controlled areas.. is that the case in SF?
20:16bitemyappakurilin: it was great, split the rent three ways. Programmer salary + $550 a month in rent + living in NYC == PARTY ALL THE TIIIIIME
20:16bitemyappblr: my apartment wasn't rent controlled.
20:17bitemyappblr: and SF has rent control too.
20:17bitemyapp$1500 a month for a three bedroom was market rate, not rent controlled.
20:17akurilinbitemyapp, yeah I can't even imagine :)
20:17bitemyapprent control is part of SF's problem.
20:17blrah okay.. I lived in Park Slope for a while, it was a decent enough neighbourhood, but NYC isn't a great place to have family
20:17akurilinrent control really screws up the newcomers.
20:18bitemyappblr: I definitely don't want to go back.
20:18blrmiss the Hatian food though, dayam.
20:18akurilinbitemyapp, what was wrong with NYC? I always considered living there at some point, but I have 0 experience with the place outside of a touristy visit :|
20:19blrakurilin: it's a stressful environment generally, but if you're young and don't have any attachments it's fun.
20:19blrpersonally I found taking the train every day kind of draining
20:20amacdougallI'm typing this from 24th & 2nd in Manhattan, and I can confirm that it seems like a really tough place to raise kids. If you get lucky on rent, though, it's a great place to experience.
20:20akurilinamacdougall, so if you're not big on kids, pretty much everything else falls into place?
20:21amacdougallSince you're in #clojure, I'm sure you won't have a problem with the rent, so yeah.
20:21blryeah, it's an amazing city... but you have to like city living. That being said, upstate new york is beautiful
20:21amacdougallIt's worth trying.
20:22technomancyeh; just because you *can* afford something doesn't mean doing so fits into your values.
20:26coventryYeah, upstate NY is beautiful. Not a hotbed of tech development, though.
20:26dsrxthere are a few defense contractors around buffalo
20:27dsrxprotecting us from the canadian menace across lake ontario, no doubt
20:27blrthose shifty canadians...
20:28coventryThere's a few startups and a bit of web development in Ithaca, too.
20:32bbloompeople don't realize just how friggin big NY is
20:34swarthybbloom: I just had a friend move to NYC. He said he doesn't think he can see everything there in his lifetime, that was his explanation when I asked him how big it 'felt'.
20:35bbloomswarthy: yeah, sooo manhattan is only 22ish square miles
20:35amacdougallI've been here six years, and I feel like I keep finding new things I like about it. And I take the high rent as a tradeoff for high availability of high-paying jobs. ...maybe with a slight tax.
20:36bbloomswarthy: it feels huge b/c it's so dense, but NY *state* is genuinely quite huge
20:36bbloomalso people are like "why do they call it long island? how long is it"
20:37mikerod,(apply merge-with concat (for [i (range 4000)] {:a [i]}))
20:37clojurebot#<StackOverflowError java.lang.StackOverflowError>
20:37swarthybbloom: yeah that same friend is from Long Island, he complains about that same comment.
20:37mikerod:(
20:37bbloomit's like a 3 hour drive long :-P
20:37mikerodI just learned about the StackOverflowing potential for lazy seqs today
20:38mikerodmerge-with concat is what got me
20:38bbloomswarthy: "If it were a U.S. state, Long Island would rank 13th in population (after Virginia) and first in population density." -- Wikipedia
20:38swarthybbloom: and that is why he left lol.
20:40amacdougallSo, non-NYC-related question -- I'm trying to set up some ClojureScript unit tests, and I understand that if my test code is going to have access to my webapp code, I need to specify :source ["src/cljs" "test/src/cljs"] in the cljsbuild setup. But of course the webapp has some namespaces that do a bunch of DOM stuff, and the node.js test runner fails on those before it gets a chance to detect my actual tests. Is there a way of compiling only certain
20:41blramacdougall: cut off after "compiling only certain"
20:41amacdougall...only certain namespaces into a file? Am I missing something fundamental?
20:41amacdougall(didn't realize the message limit was so short, but maybe it's my client)
20:42amacdougallHm, maybe this will help: https://github.com/emezeske/lein-cljsbuild/wiki/Troubleshooting-build-issues
20:42hiredmanamacdougall: so the way I generall structure cljs stuff is I have an exported main function, which I call from a <script></script> stub in an html template
20:43hiredmanwhich, in this case, you would move all your side effecting dom stuff out of the top level and in to functions
20:43amacdougallhiredman: That's a good idea. I was thinking it might be smarter to have a single entry point function I call explicitly from "outside" of the webapp code.
20:44amacdougallhiredman: My stuff is already namespaced, but maybe not as strictly as necessary.
20:45amacdougallThanks for the tip!
20:48bitemyappwhat is good that has come from Long Island?
20:48bitemyappserious question.
20:48amacdougallOysters?
20:48bitemyappnot really specific to LI
20:48arohnerbitemyapp: both of my parents :-p
20:48amacdougallBluepoint Toasted Lager. Aesop Rock, if you're into him.
20:49bitemyapparohner: they don't have that accent do they?
20:49bbloomme.
20:49egosumGatsby
20:49arohnernot anymore
20:50bitemyappWhen I lived in NYC I used to get really annoyed when people assumed the LI accent was from NYC
20:50bitemyappand would then perform the accent to my face when asking me (NYC resident) why I didn't have that accent.
20:51arohnerI grew up in Texas. You'd be amazed the number of times I got the "but why don't you have an accent?"
20:51bitemyappGlenjamin has inspired me to write the scariest reduces in Clojure-land/
20:51bbloomarohner: where in texas?
20:52bitemyapparohner: that's one nice thing about being from ohio, we're actually the standard for neutral newscaster American English.
20:52arohnerbbloom: Dallas originally. now I'm in Austin (half the time)
20:52bitemyappnobody expects anything of us, unless it's Southeastern Ohio.
20:52bitemyappin which case, wash is "worsh"
20:52bbloomarohner: so that probably explains the lack of accent, right? i wonder if folks from Austin or whatever should just say "I'm from Blue Texas"
20:52bbloom:-P
20:53bitemyappcalling Austin blue does California a serious injustice
20:53bitemyappSF Bay Area is bluer than a suffocating smurf.
20:55arohnerbbloom: meh, there are all kinds. I used to work with a programmer who grew up in Austin. He had no accent, unless he used any of the words #{"mother", "gun", "truck"...}
20:55arohnerhe'd switch accents in the middle of a sentence
20:55bbloomheh
20:56seangrovebitemyapp: Just SF and some part of LA though, the rest is overwhelmingly red
20:56seangroveTypical civiliation vs rural divide.
20:56bitemyapparohner: that's pretty funny
20:57blrseangrove: SD is fairly conservative eh?
20:57bitemyappseangrove: except for all the LA suburbs, Marin County, Humboldt, Sacramento....
20:57arohnerseangrove: 'rest' by area, not by population
20:57arohnerhttp://www.270towin.com/states/California
20:57bitemyappseangrove: Santa Cruz...
20:58bitemyappseangrove: http://www.politico.com/2012-election/results/president/california/
20:58seangrovebitemyapp: Pockets of small areas and relatively large populations
20:58bitemyappyeah but if one dude in a 1,000 sq mi area votes for Romney, does that really make the whole area meaningfully red? :P
20:58seangroveI just meant that 1-2 hours in any direction and you'll be in a red district
20:59seangrovebitemyapp: No, it just makes the socially pleasant areas very limited.
20:59bitemyapphow people vote doesn't make them socially pleasant or unpleasant, in my humble opinion.
20:59bitemyappunless you really thrive on political conversation. Then yes, that would be problematic if you thrive on political conversation where nobody disagrees with you.
21:00seangrovebitemyapp: Yeah, not worried about voting behavior, though it's correlated. More generally speaking about social mores, shared ambitions and ideals, and topics of conversation.
21:00bitemyappI don't really mind discussing politics with people who vote or think differently from me and this tendency to avoid people that think differently is bothersome.
21:00bitemyappseangrove: I guess? I run into plenty of ho-hum folk in the bay area.
21:00bitemyappThey represent the majority of the population definitionally. They have to. We can't all be super-motivated hacker-preneurs.
21:00seangrovebitemyapp: Sure, and it's still beating the averages.
21:01Bronsaseangrove: out of curiosity, did you found out what caused that AOT crash involving tools.reader you were telling me ~1 month ago?
21:01bitemyappLearning to enjoy the company of a variety of people, muggles included, is probably one of the best things that came out of being from ohio and growing up in a modest environment.
21:01seangroveBronsa: Including austin in the profile did it
21:01seangroveBronsa: https://github.com/cemerick/austin/issues/23
21:02seangrovebitemyapp: I grew up in a small/rural town as well, didn't particularly enjoy it, and still don't care to go back.
21:02bitemyappI don't either, but the problem for me wasn't the people that *were* there.
21:02bitemyappIt was the people that *weren't*
21:03seangroveHrm, could be.
21:03bitemyappI prefer not to gripe about the people that *do* exist in such places, I think it's unfairly negative to expect people to live up to your uncommon expectations. I'd rather think about how to seek out and meet people whose company I enjoy.
21:03bitemyappso rather than "contrasting" normal people with the exceptional types I really like, I just focus on talking to as many hackers as I can.
21:04arohnerbitemyapp: that might be the most positive thing I think I've ever heard you say :-)
21:04bitemyappwhich I had to do, because I was out in the boonies and my only link to the outside world was IRC.
21:04arohnerbitemyapp: yes, damning with faint praise :-)
21:04bitemyapparohner: the happiest memories of my life had zero hackers in the room.
21:04coventryHey, bitemyapp said nice things about troncle the other day. :-)
21:04bitemyapparohner: the *Very* happiest memories were card games and dinner with friends and family. I was the only programmer present.
21:05bitemyappI love my work, I love programming, and I love talking to hackers, but the deep and lasting memories of my life haven't come from that.
21:05bitemyappI perfectly happy being around "normal" people.
21:05bitemyappno intent to damn with faint praise. it's just differentiated needs.
21:06bitemyappcase in point, you wouldn't expect your spouse to satisfy all your needs WRT talking about programming, so why would you expect your immediate surroundings to always be able to do that at the drop of a hat?
21:06bitemyappI want the people in my town/area to be nice. That's it.
21:07Bronsaseangrove: so it's not tools.reader's fault after all, I'm feeling better now :)
21:07seangroveBronsa: Maybe, maybe ;)
21:07lgs32ai remember there was an excellent bitset / bitvector library on github but I can't find it anymore. Does anybody know which one it could have been?
21:07bitemyapphaving to load Austin to prevent an exception in tools.reader is kinda strange.
21:07bitemyapplgs32a: ztellman?
21:07lgs32abitemyapp: i think that was it. let me see
21:07bitemyappif it's unusual and a little performance oriented it's probably a ztellman library.
21:08bitemyappif it's a bad idea it's definitely a ztellman library.
21:08bitemyapplgs32a: https://github.com/ztellman/immutable-bitset
21:09lgs32abitemyapp: awesome. truely awesome. thanks
21:09bitemyapplgs32a: I'm serious though, anytime you want something questionable/weird/performance-oriented, check ztellman's github first.
21:09Bronsabitemyapp: it's actually the other way around if I'm not reading it correctly. loading Austin causes an AOT exception loading c.t.r.reader_types.Reader
21:10bitemyappBronsa: egads. is he smashing the namespace?
21:10amacdougallBah... it looks like the mere act of having a namespace which includes a library which uses Domina causes Domina to fire off all its feature detection functions, which all fail in a node.js test runner.
21:11amacdougallSo I'm back to the original problem of compiling a test js file with only certain namespaces. I can do it, it will just be a much more verbose cljsbuild config.
21:12amacdougallI don't think it's really justified yet. My app is small enough that I can write black-box functional tests and call it good enough.
21:12Bronsabitemyapp: I have absolutely no idea what Austin is doing, I'd guess it might have something to do with messing the classloader given the error
21:12bitemyappamacdougall: write the black box functional tests and call it good enough.
21:12amacdougallWise advice! :)
21:13bitemyappjava.util.concurrent.ExecutionException: java.lang.AssertionError: Assert failed: (zero? (.getE d)) ;; clearly a sign to just call it a night.
21:13blramacdougall: I've enjoyed using Kerodon for integration tests
21:14bitemyappamacdougall: anecdotally, I've heard dommy is superior to domina.
21:14bitemyappamacdougall: which may or may not indirectly solve your problems. I've also heard good things about Kerodon.
21:14bitemyappseangrove: dommy > domina right?
21:14seangrovebitemyapp: For me, without a doubt.
21:15blrdommy has nicer event handling imo
21:20radsI might have found a bug in core.async: http://cljsfiddle.net/fiddle/rads.close-pipe
21:21radswhen you (pipe c1 c2), c2 should get closed at the same time as c1, but in this example it doesn't get closed
21:21radswhen you run the example, it logs 42 to console
21:22arohnercan slingshot match on a nested map?
21:23arohner(catch [:foo true :bar {:baz true}] t) ?
21:23arohnerusing kv destructuring, I know about fns and other options
21:25hiredmanarohner: slingshot must do a = on the key
21:26arohnerhiredman: ty
21:26arohnercatch (-> % ...) t isn't bad at all
21:26hiredmannot really a match per se
21:27arohnersupporting get-in rather than get might be interesting
21:27arohner(catch [:foo true [:bar :baz] true] t...
21:27arohnerhrm, maybe not
21:27arohnerthat's a little gnarly
21:30bitemyapparohner: if you wanted to Cali that up a bit, you could even say it was "gnar-gnar"
21:31TEttingerbitemyapp, remember the carlyfornia site for carly fiorina's governer bid?
21:33bitemyappTEttinger: no, I try to not be stateful.
21:36bitemyappzomg tests passing
21:36TEttingerah, it was a really poorly-thought-out webpage for her campaign. turns out it was for senator
21:36bitemyappgoing to go jump off the bay bridge now
21:36TEttingerbitemyapp, don't forget your water wings
21:37bitemyappTEttinger: the lack of a type system is starting to make me really mad.
21:37TEttingerhave you started submitting lengthy patches to core.typed ?
21:37bitemyappI spent a third or maybe even a half of my entire workday today to the accumulated type errors.
21:37bitemyappTEttinger: the verbosity of core.typed is sanity-destroying right now.
21:37bitemyappI'm hoping/waiting for it to become less severe.
21:40TEttingerperhaps you want a full-program analyzer of some sort? that can "read the code?" I think it exists, it's called a second programmer, but it's very expensive and not very reliable
21:41blrhuh, this bob martin presentation about the 'last pl' is interesting, suggesting that major innovations are primarily about restriction
21:42blrresonates with what rhickey was saying about instruments in a way
21:45TEttingerblr, indeed, it is an odd thing how the most restrictive languages can be productive and popular, but only on the tasks those restrictions don't make difficult. Java is more restricted than C++, but it has less you need to learn to write more-than-the-basics programs. Clojure restricts reader macros (supposedly they don't exist, but we have seen them here) because they _can_ provide too much power to shoot yourself in
21:46seangroveI should probably just build this all on top of bootstrap 3's components to start with. Fastest way to "bootstrap" it...
21:46blrTEttinger: and the restrictions around mutable state are a big one
21:46blrseangrove: in the end, everyone resigns themself to bootstrap
21:46seangroveBut goddamn, the in-place mutation...
21:46seangroveWasn't pedestal supposed to come out with some ui components?
21:47blrseangrove: I've been waiting to hear more about pedestal 0.3 - was there anything at the conj about the roadmap?
21:48seangroveblr: Seemed like they were hoping to get something out, but probably didn't quite make it looking at their twitter
21:48TEttingerI don't see many DSLs in Java, like you see in clojure, and clojure DSLs are less... "natural" or "organic" than some Common Lisp ones I am aware of (since common lisp has reader macros, you can make code look un-lisp-y). but, clojure dsls are more compatible with each other than total alterations to a language's syntax
21:48blrah okay, rkneufeld mentioned 0.3 will potentially make 'crud' easier, which while not exactly thrilling, is pragmatic
21:53seangroveSide-effecting functions everywhere.
21:54seangrove"Cannon to right of them, Cannon to left of them, into the valley of Death he charged..."
21:59coventryThe silence about pedestal at the conj was a little surprising, actually. I missed tbaldridge's talk unfortunately, so it may have been mentioned there, but otherwise it didn't get much of a mention during the conference-proper.
22:03xeqicoventry: they can only have a limited number of topics coming out of cognitect before it is too exclusive, (core.async, fressian, 2 "keynotes", and harmonikit, so 6/21 this year)
22:04xeqiand apparently I can't add
22:04hiredmantwo keynotes?
22:05xeqihiredman: eh, I'd put Hand Tools and Moon in that general category
22:13jeremyheilerthough, i'd say harmonikit doesn't really count since it's a hobby non-work project
22:16jeremyheilerthen again, the "keynotes" weren't very work specific either. meh. lol
22:16jeremyheilerbut. point stands, gotta let others talk
22:18bitemyappTEttinger: I prefer Clojure DSLs. They're usually just data.
22:18bitemyappdata > DSL
22:18TEttingeryes, me too
22:19bitemyappTEttinger: Haskell has a similar attitude, DSLs are usually just type-safe interpreters that take data.
22:23bbloombitemyapp: i write so many things that look like interpreters now
22:23bbloombitemyapp: have my code can be summarized as (->> input linearize (reduce init step))
22:24bblooms/have/half
22:24bitemyappbbloom: you write weird things though.
22:25majykis anyone here using the vsClojure plugin for Visual Studio and Clojure-CLR? It seems to be broken out of the box for me on VS 2013.
22:26bbloombitemyapp: true story
22:26bitemyappmajyk: don't use ClojureCLR and expect anything to work.
22:26bitemyapp~ClojureCLR is don't use ClojureCLR and expect anything to work out of the box.
22:26clojurebotIk begrijp
22:26majykhaha
22:26bitemyapp~ClojureCLR
22:26clojurebotClojureCLR is don't use ClojureCLR and expect anything to work out of the box.
22:26bitemyapp~botsnack
22:26clojurebotThanks, but I prefer chocolate
22:29valmonIn clojurescript if you need to use a counter is an atom the correct way of doing it?
22:31bitemyappucb: it's time.
22:31bitemyappucb: http://www.youtube.com/watch?v=SFY0hYEqQQw
22:33valmonI'm trying to replicate the following javascript code: https://gist.github.com/4290d8cfccb9fe5258be
22:38bbloomvalmon: are you using jquery or a wrapper in cljs?
22:39bbloomhttps://github.com/ibdknox/jayq for example ?
22:39valmonI'd like to use domina to do this
22:39seangroveget/update-in are just wonderful, so happy to have them in cljs
22:39bbloomvalmon: ok domina works too
22:40bbloomvalmon: to do something like .children().clone().slice(...
22:40bbloomyou'd want something like the -> macro
22:40bbloom(doc ->)
22:40clojurebot"([x] [x form] [x form & more]); Threads the expr through the forms. Inserts x as the second item in the first form, making a list of it if it is not a list already. If there are more forms, inserts the first form as the second item in second form, etc."
22:40bbloomand beyond that, it's probably a pretty straight forward port
22:40bbloomeach -> doseq
22:40bbloometc
22:43valmonyea I was thinking that this could be done with map with a function that changes the value when the regex matches the thing with the counter and what to do with the current name value hurt my head badly though
22:43valmonthough thinking about it now I should be able to use let
22:44bbloomvalmon: it's somewhat unfortunate that the DOM ruins some clojure fun magic happy times by being so imperative
22:45valmonyea
22:45bbloomfor example clojure.core/map is lazy, so it's really different than forEach for jquery's each: so you have to use doseq
22:45valmonawww it never would have worked anyway?
22:46valmonwell im glad I asked
22:51seangroveso, so, so goddamn imperative.
22:52seangroveWelp, time to drink and try to think of ways to push the imperative-ness out to the shell.
23:08bitemyappseangone: stateful code gettin' ya down?
23:08bitemyappah, he left. bugger.
23:10amalloyby the way, technomancy, http://java-performance.info/changes-to-string-java-1-7-0_06/ will make you happy
23:22radshey everyone, I made a port of core.async to regular javascript using ES6 generators. check it out here: https://github.com/rads/csp.js
23:43hammerandtongsgreat idea rads
23:43hammerandtongsno alt! ?
23:44radsoh, alts is in there. just forgot to list it in the README. thanks :)
23:45hammerandtongs:D
23:45hammerandtongsgo select is one of my favorites things
23:45hammerandtongsexcellent
23:46radsthere we go, fixed
23:47radsthe example in the readme uses alts
23:48radsno alt! because it's a macro :(
23:49radsthough if you want to go all the way, sweet.js support might be possible in the future