#clojure log - Nov 18 2013

The Joy of Clojure
Main Clojure site
Google Group
List of all logged dates

0:08 dnolen: seantallen: that's fixed in master as far as I can tell

0:08 seangrove: oops, that was for you ^

0:08 seangrove: Ok, just checking

0:08 dnolen: seangrove: re, Keyword stuff

0:08 seangrove: Still on 2014, haven't updated to 2030

0:12 Raynes: SeanCorfield: lol

0:12 Er, seangrove ^

0:12 Too many seans.

0:12 seangrove: We're a prolific bunch.

0:19 SeanCorfield: three seans... i'm just not used to that... back in england i was pretty much always the only sean in any group...

0:20 jetlag 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 :(

0:33 Lajjla: Raynes, are you there?

0:36 danneu: I 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)

0:36 anyone happen to know what would be

0:37 TEttinger: well the error is in your code, are you using :aot in the project file on any classes you use gen-class with?

0:38 I'm just guessing here, I have no idea without at least seeing the project.clj on a pastebin

0:52 danneu: TEttinger: my uberjar compiles unless my aot namespace requires any namespace that requires the file that has this ns form: https://www.refheap.com/21009

1:01 TEttinger: danneu, is sandbox.cli listed in the project.clj as one of the :aot namespaces (or just use :aot :all)

1:01 :aot can be a vector or :all

1:01 danneu: yeah, it's in :aot

1:02 TEttinger: common problem because of a breaking change: is the :main namespace listed under :aot (it isn't implicit in some recent lein versions)

1:02 (but it used to be)

1:04 also, I would try :aot :all and see if it gives a different error or fixes it, which is always possible

1:04 occasionally you end up with difficult-to-reproduce bugs because lein clean hasn't been run

1:05 (old versions of a compiled class might be used without realizing it)

1:05 (lein clean removes all old compiled .class files)

1:13 danneu: TEttinger: 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

1:14 TEttinger: hm, the one you linked to was cli.clj , not util.clj

1:15 are the ns names different than the file names? because that is another possible issue

1:15 danneu: oh, i copied util.clj's ns into cli.clj

1:15 ddellacosta: sometimes emacs just stops parsing a .clj file correctly and parens don't get automatically matched

1:16 what is up with that? I can't tell why it stops working

1:16 is there something I can set to re-start the parsing of a file in emacs?

1:17 danneu: ddellacosta: is paredit-mode getting toggled off or something

1:18 ddellacosta: danneu: 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.

1:19 whatever, restarted it. *sigh*

1:19 also, I would really like to have nrepl automatically save history...gotta set that up

1:20 justin_smith: ddellacosta: (setq nrepl-history-file "~/.emacs.d/nrepl-history.eld")


1:21 that's literally all it takes

1:21 (in your emacs config, of course)

1:21 ddellacosta: justin_smith: thanks...that will tell emacs to automatically record the nrepl history? I really have to learn more about how nrepl + emacs works. :-(

1:21 clojurebot: I don't understand.

1:22 ddellacosta: no, I don't understand.

1:22 justin_smith: ddellacosta: yeah, if the variable is set, it gets saved to

1:22 the file name is totally up to you, if you want it in a different directory or whatever

1:22 ddellacosta: justin_smith: gotcha. Very good, thanks very much!

1:28 danneu: TEttinger: oh god

1:29 TEttinger: hm?

1:29 danneu: TEttinger: clojure.core.typed :refer :all imported `Keyword` which conflicted with `(import clojure.lang Keyword)`

1:29 TEttinger: it was the cli namespace in util.clj?

1:29 oh haha

1:29 danneu: fuck that error message

1:29 seriously

1:29 TEttinger: seriously

1:30 that's really confusing!

1:30 danneu: it clearly knows what symbol is causing the problem

1:30 TEttinger: I think it changed the meaning of... everything

1:30 by changing what keyword meant

2:43 danneu: it defined Keyword so that by the time (:import [clojure.lang Keyword]) happens, Keyword was a Var and couldn't be resolved into a class

2:49 abaranosky: have any of you setup your Emacs with tags, to search for Java symbols?

2:51 danneu: i've had to bring in a .java file recently. i just let myself suffer.

2:51 indentation formatting didn't even work

2:51 abaranosky: no need to suffer though. Emacs can handle it, I just happen to not have it setup right to do so.

2:53 danneu: it does require more skillz with elisp though... But I figure that figuring this out would help me "level up" my Emacs fu :)

2:54 danneu: dunno, this channel is home to some of the greatest yakshavers of all time.

2:55 bringing java to emacs is very... unyak

2:56 logic_prog: is there a way in clojure to get a "repl that cna go up/down stack frames" on an exception?

2:57 the ritz/nrepl stuff seems to only get _one frame_ rather than allowing me to go up/down all the frames

3:48 sveri: Hi, 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?

4:09 amalloy: sveri: i've seen this function recently, and right above it was a definition of indexed

4:12 sveri: amalloy: ok?

4:13 amalloy: i assume it's in his talk somewhere

4:13 clgv: how was clojure/conj?

4:14 sveri: amalloy: hm, i have not found it yet -.-

4:15 sm0ke: where do i find clojure conj videos?

4:17 sveri: it seems to be in the clojure.contrib libraries

4:28 clgv: sveri: what are you looking for?

5:50 logic_prog: i've finally decided to learn datomic -- where can I read up on how to install datomic with riak as the backend?

6:03 nonuby: reviewing 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?

6:05 clgv: nonuby: IMHO you omit the "get-" there

6:19 xsyn: nonuby: let the HTTP verbs do the GET and then make the functions names nouns

6:19 logic_prog: is there any good reason to use positional arguments rather than keyword arguments?

6:21 pjstadig: logic_prog: apply doesn't work so nicely with keyword arguments

6:21 logic_prog: this seems rather easy to fix

6:22 pjstadig: define "easy"

6:24 logic_prog: can be fixed with a < 10 line macro

6:39 nonuby: a 10 line macro is kinda of complicated in my opinion

6:45 clgv: nonuby: why?

6:46 nonuby: from 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

6:46 clgv: logic_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

6:46 nonuby: yeah, if that is possible that is better style

6:47 nonuby: although number of lines is not really apropriate for lisp anyway

7:56 dsrx: sorry 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 ?

7:56 the jar containing that class is on the classpath

7:57 ucb: dsrx: have you :import the class?

7:57 dsrx: (maybe a silly question)

7:57 Jarda: dsrx: sometimes I have to restart the repl process when I get such errors

7:58 dsrx: if I :import the class in my core.clj file I also get the NoClassDefFoundError

7:58 it 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

8:00 oh, neat, i shut down all my cider processes and repl and now i'm getting a different (JNI) error. progress! :) thanks

8:01 ucb: heh

8:01 justin_smith: completion 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

8:01 * ucb shivers at the thought of JNI

8:31 augustl: https://github.com/paulirish/browser-logos :)

8:31 another thing we don't have to maintain anymore

8:31 wrong channel..

8:31 * ucb clicks anyway

8:32 augustl: there's ponies!

9:14 brainproxy: jury duty ... at least there's WiFi this year

10:11 dnolen: two 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:16 makkalot: hi, 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:16 any ideas ?

10:18 tcrawley: makkalot: do you have `:eval-in-leiningen true` in your project.clj?

10:19 makkalot: tcrawley, yes i have

10:19 TimMc: brainproxy: You get to bring in electronic devices?Lucky.

10:24 tcrawley: makkalot: try asking in #leiningen

10:24 makkalot: tcrawley, thanks will do

10:55 seangrove: Wow, like the lighttable integration going on here https://metaphysicaldeveloper.wordpress.com/2013/11/18/idiomatic-clojure-with-lighttable/

10:56 Although the code, while short, seems a bit strange... https://github.com/danielribeiro/LightTableKibit/blob/master/user.keymap.clj#L2

10:59 coventry: What's the right way to get a jar produced by "lein install" into the right place in ~/.m2?

10:59 joegallo: lein install already does that

10:59 that is, it's in the correct place.

10:59 coventry: Sweet, thanks.

11:02 brainproxy: TimMc: 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:02 I'd like to give a macro an "alias" within the same namespace

11:02 right way to do that?

11:03 e.g. suppose I have macro abc, naive attempt: (def also-abc abc)

11:03 learner__: 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:05 coventry: ,(do (defmacro foo2 [] (println "foo")) (def ^{:macro true} bar #'foo2) (bar))

11:05 clojurebot: #<Exception java.lang.Exception: SANBOX DENIED>

11:05 coventry: (works in a non-crippled repl. :-)

11:14 newblue: coventry: that just blew my mind, especially how it handles arguments:

11:15 (do (defmacro foo2 [x y] (println "foo" x y)) (def ^{:macro true} bar #'foo2) (bar 5 10))

11:17 TimMc: What surprises you about the arguments?

11:18 brainproxy: found `defalias`, that works :)

11:19 ToBeReplaced: i've got two questions for the collective IRC knowledge today!

11:19 TimMc: juxt, and map is lazy

11:19 ToBeReplaced: 1) does anyone have a recommendation for clojure/clojurescript windows automation tooling? anything like pywinauto, autohotkey, autoit, etc.

11:20 newblue: TimMc: when they weren't referenced in the #'foo2 part it's when I was like 'Oh this is what's going on'

11:21 TimMc: Ah, OK.

11:22 newblue: I was trying to figure out the exact problem a few days ago so that got me excited too

11:22 nDuff: ToBeReplaced: I'd probably consider writing a wrapper for Maveryx

11:23 newblue: wait no, it just pushed the problem somewhere else....:/

11:25 coventry: brainproxy: 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:37 brainproxy: coventry: but it wasn't working fine, not sure why

11:39 coventry: brainproxy: Huh. Was this in a jvm-clojure context?

11:39 aconbere: hey 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:39 I have the following test I've written

11:39 to test the parse output

11:39 https://github.com/aconbere/clojure-irc/blob/master/test/irc/core_test.clj#L66-L68

11:39 and it doesn't seem to actually be looping through the inputs and asserting anything about the messages

11:39 S11001001: aconbere: use doseq instead of for

11:40 nDuff: aconbere: for just returns a lazy sequence

11:40 aconbere: oooooooooooo

11:40 S11001001: aconbere: for is list-monadplus syntax, not a "looping" construct, per se

11:40 aconbere: brilliant

11:40 srruby: I 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:40 S11001001: srruby: use maven

11:41 really :)

11:41 srruby: S11001001: OK, thanks. I thought that it would be simple to use a jar...

11:42 jlfn: Any other emacs users unable to connect to nrepl with today's CIDER from melpa?

11:46 zerokarmaleft: jlfn: works fine here with 20131118.1754

11:47 srruby: I 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:48 joegallo: srruby: what dependency do you want to pull in?

11:48 that is, give me one example, please

11:48 gtrak: srruby: 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:48 srruby: joegallo: Texhyphj

11:49 joegallo: It is on http://mvnrepository.com

11:49 joegallo: srruby: i searched mavenrepository for it, and found this http://search.maven.org/#artifactdetails|com.googlecode.texhyphj|texhyphj|1.2|bundle

11:49 srruby: joegallo: Right. Now how do I integrate it with Clojure/Leiningen

11:49 joegallo: so you would put [com.googlecode.texhyphj/texhyphj "1.2"] in your project.clj file under :dependencies

11:50 and then run lein deps

11:50 srruby: cool

11:50 joegallo: and it'll download it

11:50 http://i.imgur.com/DgtYV.gif

11:50 srruby: joegallo: Thanks very much!

11:50 joegallo: you're welcome

11:51 zerokarmaleft: srruby: https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L39

11:52 the sample project is well-commented, and it's worth scanning the whole thing just to see what options are available

11:52 joegallo: inc zerokarmaleft

11:52 srruby: Thanks everyone. Perhaps I should write a tutorial to cover this. The google search results were not that useful.

11:54 jlfn: zerokarmaleft: that's good to hear, though I'm getting stuck at "Connecting to nRepl..." even with all my customizations removed

11:54 S11001001: srruby: https://github.com/technomancy/leiningen/blob/stable/doc/TUTORIAL.md#dependencies

11:57 jlfn: uh ok cider-jack-in works, but connecting to an nrepl server hangs :(

12:03 myguidingstar: hi 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:06 zerokarmaleft: myguidingstar: that should be sufficient, most of the basic stuff hasn't changed in a long time

12:06 myguidingstar: zerokarmaleft thanks a lot

12:08 zerokarmaleft: if you hit a wall, someone in here will be happy to help with a specific koan

12:10 myguidingstar: thanks, and I will update it, at least with new lein and dependencies when I finish my learning

12:11 rasmusto: ,()

12:11 clojurebot: ()

12:11 rasmusto: ##()

12:11 lazybot: ⇒ ()

12:12 sritchie: myguidingstar: it is old; probably not the best resource

12:12 brainproxy: coventry: here's where the (def ^{:macro true} my-alias #'something} wouldn't work and I used defalias instead:

12:13 https://gist.github.com/michaelsbradleyjr/7509505#file-cljs-debug-macros-clj-L141

12:13 what's happening is that without the defalias, the resulting form is being evaluted w/in the namespace invoking the aliased macro

12:14 note that the invoking namespace is a cljs namespace

12:14 myguidingstar: well, can you give me ones you think the best?

12:15 * gfredericks fantasizes about an emacs mode for browsing large data structures

12:16 technomancy: gfredericks: I just added hyperlink support to nrepl-discover a few days ago

12:18 schmir: if 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:20 hyPiRion: gfredericks: how would that work?

12:21 I mean, how would you like to browse large data structures?

12:23 TimMc: with style and grace

12:24 justin_smith: for 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:24 since I could quickly see if there were extraneous or missing subdivisions of the tree

12:24 it made me think that an svg based data structure visualizer (or maybe a 3d one?) may be useful in other situations

12:30 technomancy: TimMc: botsnack

12:34 tbaldridge: schmir: yeah, you don't want to do that. It'll block the thread in the fixed thread pool go blocks use

12:35 schmir: tbaldridge: thanks. that's what I assumed.

12:40 coventry2: brainproxy: Oh, I bet the clojurescript context is the key factor, there.

12:53 TimMc: justin_smith: If nothing else, it would at least bring a touch of Hollywood to real-world programming.

12:54 I strap on my VR goggles, don haptic gloves, and settle in to investigate a core dump...

12:55 technomancy: TimMc: oculus rift + keyboard pants and you're halfway there

12:55 coventry2: Is Rich Hickey's pods prototype publically available?

12:56 TimMc: Oh 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:57 That 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:58 (Concept for patent hereby released to public domain.)

12:59 technomancy: contact the Free Infrastructure Foundation; sign some papers

12:59 oh, huh. there actually sorta is such a thing.

12:59 I thought it was just from a Stross novel

13:00 rasmusto: technomancy: no, you're thinking of the nanomachines that convert the entire mass of Jupiter into a supercomputer

13:01 technomancy: how silly of me

13:01 slpsys: yay

13:01 clojurebot: yay is sweet

13:02 slpsys: derp, wrong window

13:04 tupi: hello, 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:05 java -cp clojure.jar:ij-core.jar -Djava.awt.headless=false clojure.main my.clj my-arg1 my-arg2 ...

13:05 throiugh an ssh -CX session, i have this error:

13:05 java.lang.InternalError: Can't connect to X11 window server using 'localhost:11.0' as the value of the DISPLAY variable.


13:05 any hint ?

13:06 justin_smith: tupi: ssh and then having the remote use localhost?

13:06 that seems odd

13:06 tupi: justin_smith: i just exited my ssh session, enter again and it did work

13:07 ssh -CX chatotorix

13:07 cd /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:07 97.514,39.856,7.573,0.708,0.550,0.768,1.081,0.550,0.459,0.817


13:07 but a second ago, it failed

13:07 echo $DISPLAY

13:07 lazybot: $DISPLAY

13:07 tupi: localhost:11.0

13:08 it was the same in the previous session that failed

13:08 why 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:09 nDuff: tupi: -D arguments need to be given before the name of the class to be invoked.

13:09 tupi: nDuff: thanks

13:09 nDuff: tupi: anything after that point is passed to the invoked main as an argument.

13:10 danneu: Is it reliable to use `:uberjar-name "../myapp.jar"` to compile uberjar to project root?

13:10 nDuff: tupi: ...I haven't been paying enough attention to know what you mean by "random".

13:10 tupi: ...if you're asking why DISPLAY changes, that's because ssh -X finds the first free port when setting up the proxy.

13:11 tupi: nDuff: sometimes it work, sometime not, the exact same code.

13:11 nDuff: tupi: ...that issue is unlikely to be java-specific, and much more likely to be something about your X and/or X-forwarding configuration.

13:11 tupi: try running something like xclock, and you'll probably see the same behavior.

13:12 tupi: it is a very serious problem to us because the computer does calculus for hours before it starts to call clojure scripts, and brakes ...

13:12 nDuff: tupi: does this code actually need to do anything GUI-related?

13:12 tupi: if it doesn't, just tell the JVM to turn off its windowing subsystem.

13:12 tupi: nDuff: how, this is what i asked and friends answered the -D option ...

13:12 nDuff: tupi: -Djava.awt.headless=true

13:13 tupi: headless=false is telling it that it *should* use X

13:13 tupi: ie. that it has a head.

13:13 tupi: ...so, your friend had the right option, but the wrong value for it.

13:13 tupi: oh damned, let me try that now!

13:14 that did not work either

13:14 cd /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:14 Exception in thread "main" java.awt.HeadlessException

13:14 at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)


13:14 ... ...

13:15 nDuff: tupi: then the code you're running is built to try to talk to X11.

13:15 tupi: if you don't mind my asking, *why* does it need to do that?

13:16 tupi: nDuff: i sware it his not

13:16 nDuff: tupi: look at the stack trace.

13:16 tupi: it'll tell you which code is trying to talk to the GUI.

13:16 tupi: ...if you follow it further than the part of it you gave us here.

13:17 tupi: 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:17 tupi: nDuff: slow down, i don't follow

13:17 i don't know java

13:17 don't know where and how to interpret the stack

13:18 nDuff: tupi: ...well, if you posted the full stack trace somewhere we could see it...

13:18 tupi: but let me paste the code i run and the complete error.

13:18 yes!

13:18 :)

13:18 give me a sec

13:18 nDuff: tupi: ...btw, no pastebins with ads, please.

13:19 TimMc: refheap.com and gist.github.com are good options

13:20 tupi: http://paste.lisp.org/display/139990#1

13:26 nDuff: tupi: well, that's pretty obvious; ij.Menus invokes a GUI.

13:26 tupi: ...and (IJ/run) sets that up.

13:27 tupi: I'd suggest complaining loudly to the folks who built that library, and then setting up Xvfb to provide an immediate workaround.

13:27 coventry: In 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:27 tupi: nDuff: ok

13:27 i did complain already actually, but the original design of imagej was all wrong

13:28 never mind, i'll find a solution

13:30 coventry: Oh, 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:30 tupi: i 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:31 nothing 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:32 dsabanin: hey guys

13:32 having problems with recur: https://gist.github.com/dsabanin/7532909

13:32 what seems to be a tail position to me, doesn't seem like it to clojure

13:32 am I missing something?

13:34 cemerick: dsabanin: you can't recur out of a catch, unfortunately

13:35 zilti: dsabanin: Recurring out of a catch? Are you insane or something?

13:35 dsabanin: why? :)

13:36 cemerick thanks

13:36 cemerick: dsabanin: 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:37 dsabanin: thanks for the explanation

13:37 hiredman: catch is a dynamic scoping thing, dealing with dynamicly scoped things and loop/recur's contract of fixed stack size is tricky

13:37 so generally you cannot/should not recur across dynamic scopes

13:38 if 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:39 recursive calles from catch tend to end up as a trampoline

13:41 dsabanin: I guess I can imlement this as a trampoline, thanks for the idea

13:41 hiredman: dsabanin: have you seen robert bruce? https://github.com/joegallo/robert-bruce

13:43 dsabanin: yeah, seen it, but I need more control

13:43 trampoline solution just worked, thanks for the help everyone

14:03 danneu: What's the main reason a jar seems to hang once it should return from whatever you called in -main?

14:03 technomancy: danneu: active threads

14:03 justin_smith: danneu: are you using agents?

14:06 Raynes: (System/exit 0) ;; DIE!!! DIEEEEE!!!!

14:10 kendallbuchanan: Anyone 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:11 technomancy: kendallbuchanan: wait for the next version of leiningen, and `lein deps :tree` will show you the proper :exclusions vector to use =)

14:12 kendallbuchanan: more seriously, if you have isolated the problematic dependency, put :exclusions [org.clojure/clojure] inside the vector

14:12 kendallbuchanan: technomancy: Hehe, so, [org.clojure/clojure :exclusions "1.2" …] or something along those lines?

14:13 technomancy: kendallbuchanan: more like [org.problems/i-use-version-ranges-boo "1.8.1" :exclusions [org.clojure/clojure]]

14:13 kendallbuchanan: technomancy: Okay, I see now… the :exclusions key should be added to the dependency that's introducing the wrong versions.

14:14 technomancy: aye

14:14 kendallbuchanan: technomancy: Perfect, thank you!

14:14 technomancy: seriously one day away from releasing a version of leiningen that tells you this =)

14:14 kendallbuchanan: Is that likely to bring my slug size down substantially?

14:14 That's awesome.

14:14 technomancy: kendallbuchanan: no, it won't affect size. it doesn't include those versions in your slug, it just downloads the poms for them.

14:15 kendallbuchanan: Okay, then I'm on the wrong track.

14:15 technomancy: kendallbuchanan: switching to an uberjar deploy will drop the slug size a bit though

14:15 kendallbuchanan: K, somehow I've got a slug over 300MB, with a fairly small codebase

14:15 Is this common? Like, is it possible the number of dependencies I have are adding up?

14:16 technomancy: kendallbuchanan: 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:16 kendallbuchanan: if it doesn't let me know the app name (/msg is fine) and I can check it out

14:17 kendallbuchanan: Okay, perfect, lemme try that

14:23 augustl: anyone happen to know why https://github.com/clojure/data.fressian isn't in clojars or maven central?

14:25 dnolen: cemerick: results of the survey are very interesting

14:25 cemerick: dnolen: yup, there's some gems in there

14:25 dnolen: you read too fast to have actually read it tho! :-P

14:26 dnolen: cemerick: heh I read the post :) still looking over the graphs

14:26 seangrove: I didn't participate.

14:26 * seangrove hangs his head in shame

14:26 cemerick: seangrove: wat?

14:26 bbloom: dnolen: i'd read it but google groups' "sign in" button is broken

14:26 weee

14:27 cemerick: bbloom: results are on my blog

14:27 * bbloom navigates

14:27 mdrogalis: Interesting. I see a lot of "I want core.async IN the language"

14:27 technomancy: eep

14:27 mdrogalis: In the "what feature do you want in Clojure" question

14:28 joegallo: sigh...

14:28 seangrove: Wonder why people would want it in the language...

14:28 Glenjamin: oh, results out?

14:29 cemerick: I guess this is what happens when you ask people for language feature suggestions.

14:29 dnolen: cemerick: interesting the number of people using ClojureScript, but the uptake seems relatively recent

14:29 Apage43: that's why I had trouble with that box

14:29 technomancy: cemerick: people too shy to put "dunno; it's all good" in?

14:29 hyPiRion: seangrove: probably because you can't send messages from functions. It's a bit more constrained than Go's message passing style

14:29 mdrogalis: Types, user reader macros, debuggers, TCO from eyeing it up

14:29 Apage43: I couldn't think of anything that couldn't be "just" a library

14:29 hyPiRion: I see like that ~5% who answered that question answered "Faster startup time"

14:29 seangrove: cemerick: 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:30 cemerick: technomancy: there are some

14:30 dnolen: the number of CLJS Node.js users is significant

14:30 mdrogalis: Hm. "Transactional namespaces". I haven't heard of that before.

14:30 What do you think that might mean?

14:31 technomancy: mdrogalis: if you run into an error these days you can have a half-compiled namespace

14:31 dnolen: cemerick: lein-cljsbuild mostly won, but 145 people using some other means is interesting

14:31 cemerick: mdrogalis: long-standing wishlist item for many

14:31 technomancy: mdrogalis: whereas what you want is atomicity

14:31 mdrogalis: From nrepl.el? Or in Clojure itself?

14:31 bitemyapp: I would like this.

14:31 mdrogalis: I never knew that could even happen.

14:31 cemerick: dnolen: 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:32 technomancy: mdrogalis: from anywhere; either completely compile or completely fail

14:32 bitemyapp: mdrogalis: no difference, if it's implemented in Clojure then it's obv available through nRepl.

14:32 mdrogalis: I use Clojure an awful lot, and I never noticed that. Huh.

14:32 technomancy: mdrogalis: it's easy to do if you're OK making var lookup involve an extra layer of dereferencing =)

14:32 mdrogalis: Then again, I never write errors, sooo..

14:32 hyPiRion: Well, most people don't tend to require errored namespaces

14:32 bitemyapp: mdrogalis: happens to me all the time :(

14:32 mdrogalis: I probably saw it and didn't know what it was.

14:33 technomancy: namespaces now are a mutable map that gets bashed in place, which is sadface

14:33 cemerick: dnolen: oddly, those targeting node.js *still* report using both Clojure and ClojureScript.

14:33 Glenjamin: i wonder if lower response means answers are skewed to hardcore clojurists

14:34 dnolen: cemerick: good to see we're working on the right stuff w/ respect to top 3 CLJS frustrations

14:34 bitemyapp: Glenjamin: I'm pretty sure they are, Hacker News would've brought in more muggles.

14:34 ToBeReplaced: cemerick: i use CLJS on node.js for scripting, clojure for everything else, for example

14:34 cemerick: ToBeReplaced: noted, thanks

14:35 joegallo: fwiw, technomancy, i said that leiningen needs to be in clojure

14:35 pjstadig: joegallo: haha wat?

14:35 joegallo: jk

14:35 technomancy: joegallo: you monster

14:35 bitemyapp: yes because contributors to Leiningen want to sign a CA and use JIRA.

14:35 pjstadig: consolidate all the things!

14:36 cemerick: dnolen: yeah; going to make Austin bulletproof over the next year.

14:36 bitemyapp: joegallo: you are trying to kill Clojure, aren't you? :P

14:36 joegallo: i just, you know, it doesn't feel "official" enough to me right now

14:36 i also think it needs a clarifying rename

14:36 technomancy: joegallo: I'll try to post more pics of me coding with a suit and tie

14:36 ahaha

14:36 hyPiRion: hahaha

14:36 On second thought, that would've been a scary sight

14:37 bitemyapp: technomancy coding in a suit and tie means the doom of the universe.

14:37 ToBeReplaced: i'm surprised so little commercial services/products

14:39 Glenjamin: >> It is still very difficult to find a good, simple "Quick-start" guide to point interested parties at.

14:39 this

14:39 oh

14:39 that was me

14:39 i stand by it

14:40 unsure what this means? "Namespaces are a horrible, broken mess. They are a wildly complected nightmare."

14:40 coventry: I 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:41 technomancy: hm; interesting

14:41 assumed it was only possible inside the compiler, which is why I haven't taken a shot at it yet =)

14:41 but maybe not

14:42 Glenjamin: surprised to not see people complaining about dependency versions much

14:42 hah: "Lack of static typing."

14:42 tools, hiring and docs seem to be a theme though

14:42 * nDuff is disappointed not to see more folks wanting (an equivalent to) feature expressions.

14:43 mdrogalis: I put down proper predicate dispatch

14:43 Glenjamin: polldaddy doesn't keep your per-page choice when you change pages :(

14:44 lots of complaints about lisp syntax - which seems unhelpful

14:46 cemerick: nDuff: those comments are in there. Until something equivalent/better shows up, I just point at cljx.

14:46 coventry: "why would you need to add a feature? I thought that's what macros are for."

14:46 technomancy: coventry: ifn regexes!

14:47 Glenjamin: could tagged literals do feature expressions?

14:47 nDuff: coventry: 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:48 technomancy: lots of people want CL conditions, which is understandable

14:48 coventry: nDuff, technomancy: Not my line, it's a quote from the desired-language-features list. :-)

14:48 technomancy: ah right

14:48 cemerick: Glenjamin: Yes, though it's be an absurd hack. Go look at cljx.

14:48 ToBeReplaced: i remember seeing JIRA discussion on platform-dependent code (a la cljx or others) -- where is the discussion at now?

14:49 cemerick: ToBeReplaced: Linked from the cljx readme.

14:49 Come on, someone else ask a question, I'll find a way to work cljx into it. :-P

14:50 xcthulhu: I have a scrip that spawns a process using lein, but when I kill lein the underlying java process is still running

14:50 Glenjamin: based on this it seems like a kickstarter to fund a decent documentation site would do well

14:50 xcthulhu: How do I stop this behavior?

14:51 technomancy: xcthulhu: have you tried trampolining?

14:51 xcthulhu: Yeah, doesn't work :(

14:51 technomancy: oh?

14:51 hyPiRion: huh

14:51 you using `lein exec` or something like that?

14:52 Glenjamin: what did you do to kill lein?

14:52 interesting note: "Who's actively driving the vision now - is Rich focusing on Datomic?"

14:53 xcthulhu: I spawn lein in a shell with

14:53 (cd repo ; lein trampoline ring server-headless ) &

14:53 And I have in the same script

14:53 trap 'kill $(jobs -p)' EXIT

14:53 So all of the child jobs get kill when I exit the script

14:55 @Glenjamin Something like hoogle for clojure would be awesome...

15:00 bitemyapp: lolque @ lighttable's nil for something that threw an exception

15:00 TimMc: "lolque"?

15:00 bitemyapp: TimMc: lolwut

15:00 but en Español

15:01 I'm not actually sure how people get work done in LT.

15:01 I can't even run my tests and see the exception they threw.

15:05 xcthulhu: Okay, so the problem was that I was running everything in a child shell

15:05 bitemyapp: xcthulhu: greetings elder one

15:05 xcthulhu: So if someone ever comes across this IRC log on google some day, they should know: don't use lein in child shells

15:06 You can do the same thing as ( cd <dir> ; blah blah ) with popd

15:06 ...and pushd

15:06 Hey bitemyapp

15:06 bitemyapp: xcthulhu: I listen to music about you.

15:06 xcthulhu: I develop in LT

15:07 bitemyapp: xcthulhu: so you don't write any tests?

15:07 xcthulhu: Yeah, I write tests

15:07 bitemyapp: ...and how do you know if they worked or not?

15:07 xcthulhu: lein test

15:07 bitemyapp: what a cop out.

15:07 xcthulhu: haha

15:07 bitemyapp: so what you're actually saying is, "I edit text in LT, but leiningen from the command line does all the heavy lifting"

15:08 * bitemyapp grumps back to his Emacs, grumbling about kids

15:08 bitemyapp: I will say this though, it's very responsive and presents text nicely. Wish the AA was a little better tho.

15:08 coventry: What's AA?

15:09 bitemyapp: coventry: antialiasing

15:09 coventry: Ah.

15:09 bitemyapp: the text is kinda janky on my Mac.

15:09 actually, I can side-by-side the same code and you'll see what I mean.

15:09 sigh, of course LT doesn't remember what files/folders I had open ;_;

15:09 ...or it did and it just lagged? dafuq

15:10 xcthulhu: I thought it used webkit for display?

15:10 bitemyapp: coventry: http://i.imgur.com/WQ4VEmo.png

15:10 coventry: Also, 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:11 bitemyapp: xcthulhu: it does but you can set the AA of your fonts.

15:11 coventry: that's how I reacted!

15:11 coventry: left is Emacs, grey weirdness on the right is LT

15:11 looks like a shitty courier font or something

15:12 it is seriously responsive though

15:12 leveraging webkit was a really good idea.

15:13 mtp: "a shitty courier font" is redundant

15:13 ;)

15:14 bitemyapp: I'm willing to believe in the hypothetical non-shitty courier font.

15:14 TimMc: s/courier/monospace/

15:14 Courier is a specific font.

15:14 xcthulhu: bitemyapp: Anonymous Pro is nice

15:15 TimMc: Consolas is pretty good.

15:15 xcthulhu: Yeah, I like that one too

15:15 TimMc: Or Inconsolata, I can't remember which is which

15:16 Ubuntu's default monospace is decent. "Ubuntu Mono", I think.

15:16 bitemyapp: TimMc: yeah I like Ubuntu Mono.

15:16 I use Monospace on Linux and Menlo on Mac.

15:17 happy with both.

15:17 * xuser wonders how consolas behaves in linux

15:25 blr: cemerick: 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:25 and if so, what can we do to change that perception?

15:25 ToxicFrog: "alpha-hackers"?

15:25 blr: ToxicFrog: right, his perception was that clojure was inaccessible and hard

15:26 ToxicFrog: also see people adopting Golang without any consideration of clojure (or erlang) and also wonder why that is

15:27 ToxicFrog: Aah.

15:30 bitemyapp: blr: alpha hackers? lol no.

15:30 blr: I 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:31 bitemyapp: I know it's silly, but if that's the impression most software developers have of clojure it's a problem

15:31 bitemyapp: I've been teaching Clojure to Python programmers for awhile.

15:31 Nobody perceives Pythonistas as being alpha anything, let alone alpha hackers.

15:31 blr: bitemyapp: the perception isn't correct, I'm just saying that I think it's there

15:31 bitemyapp: blr: then correct it, it's silly.

15:32 blr: I'm a totally mediocre programmer that does python professionally - if I can get my head around it anyone can :P

15:32 bitemyapp: Clojure is not a difficult language to learn by any means. There are almost no non-trivial prerequisites at all

15:32 blr: bitemyapp: 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:33 nDuff: The 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:33 TimMc: bitemyapp: Wait, you mean you *don't* need to understand how to use monad assembly language to use Clojure?

15:33 upwardindex: Was 'format'

15:33 bitemyapp: agghhhhhhh fucked by laziness again

15:33 upwardindex: oops

15:33 bitemyapp: I knew that wasn't going to work.

15:33 amalloy: brb inventing monad assembly language

15:33 bitemyapp: fuckity fuck

15:34 upwardindex: Was 'format' removed for cljs? I just updated and it won't find the function anymore?

15:34 cemerick: blr: 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:34 amalloy: upwardindex: 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:34 dnolen: upwardindex: format no longer exists was removed some time ago, you can just use goog.format directly - that's all it ever did anyway

15:34 TimMc: It's for alpha-hackers, in the sense of programmers who like using alpha-stage languages. :-P

15:35 upwardindex: dnolen: ok that explains it thanks!

15:35 blr: cemerick: 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:35 solidus_: I can't connect using nrepl from emacs to "lein repl" - its just saying "Connecting to nREPL on"

15:35 cemerick: That 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:35 dnolen: blr: fwiw, I don't think learning core.logic is all that important/interesting, as much as it gets name dropped.

15:36 blr: and if people are adopting go, core.async is the same CSP concepts, you're going to have a learning curve regardless

15:36 blr: dnolen: 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:36 cemerick: blr: 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:36 bitemyapp: you don't really have to use core.async for most things anyway

15:36 it's only if you want to go STRAIGHT TO PLAID with something concurrent

15:37 oddly I see people freaking out a lot less about the equivalent tooling in Haskell with forkIO, MVars, and the rest.

15:37 dnolen: blr: huh, I think Clojure + web gets decent play on HN

15:37 cemerick: dnolen: fair point, but you have to admit, braces and = signs are awesome

15:37 :-P

15:37 solidus_: any good recent tutorial on how to work with emacs/lein? can't seem to get nrepl to work....

15:37 bitemyapp: blr: your mistake was reading hacker news.

15:38 solidus_: can't seem or can't?

15:38 because 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:38 blr: bitemyapp: this is from my coworkers perspectives

15:39 bitemyapp: blr: well tell them not to read Hacker News either.

15:40 glosoli: Hacker News has too much crap in it lately

15:40 solidus_: bitemyapp: nice man, using big words and everything

15:40 Need help on getting emacs/nrepl/lein working plz

15:40 bitemyapp: solidus_: https://github.com/bitemyapp/dotfiles/

15:40 solidus_: nice man, using "plz" and everything.

15:40 Glenjamin: i 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:40 bitemyapp: solidus_: look at the repo. Figure out what you fucked up.

15:41 Glenjamin: whining about parens reminds me of when you give a 10 year old kid their first taste of beer


15:41 Glenjamin: yes, but social pressure makes you

15:41 but there's less social pressure to embrace lisps

15:41 Apage43: i have coworkers walk over to my monitor and point "AGH! PARENS!"

15:42 It's a bit exasperating

15:42 Glenjamin: it was really odd that i didn't even notice until they went argh

15:42 bitemyapp: Apage43: I'm surprised I haven't seen you perp-walked out of your office for murder.

15:42 blr: anyway, I'm giving an introductory talk about clojurescript at my local tech meetup. I guess that's the best thing we can do?

15:42 clojurebot: excusez-moi

15:42 Glenjamin: i think a really good "here's how you get started with clojure" guide would be great

15:43 coventry: solidus_: Does M-x nrepl-jack-in work for you?

15:43 solidus_: coventry: nope

15:43 Apage43: what do you get when you try nrepl-jack-in

15:43 solidus_: Starting nREPL server...

15:43 bitemyapp: solidus_: don't use nrepl-jack-in.

15:43 solidus_: and its stuck

15:43 bitemyapp: solidus_: start lein repl from the terminal in the project you want to use

15:43 Apage43: huh

15:44 bitemyapp: solidus_: connect to the port directly from Emacs.

15:44 llasram: bitemyapp: WHat?

15:44 bitemyapp: Why would you suggest people do that?

15:44 bitemyapp: llasram: because then we can find out which part is breaking.

15:44 solidus_: Exception Unsupported option(s) supplied: :headless clojure.core/load-libs (core.clj:5408)

15:44 llasram: Oh, for testing, I see

15:44 bitemyapp: why the fuck else would I suggest that?

15:44 llasram: Haha

15:44 solidus_: I did that too, doesn't work

15:44 tolitius: Glenjamin: I hooked several people on Clojure via 4clojure. It has all the right properties: challenging, addictive and "game competitive"

15:44 llasram: bitemyapp: I don't know. Because you'd gone mad? :-)

15:44 bitemyapp: solidus_: you don't need headless

15:44 solidus_: type in, "lein repl"

15:44 solidus_: no more, no less

15:44 solidus_: in the project you want to start

15:45 solidus_: when you've done that let me know so I can provide the next instruction

15:45 because I didn't say, "lein repl and some other bullshit like :headless"

15:45 I said, "lein repl" in the project you're trying to load.

15:45 Glenjamin: tolitius: i like 4clojure, but i think it lacks a companion piece that tells you what's available to solve the problems

15:45 solidus_: lein repl => nrepl from emacs => got a *nrepl-connection* buffer with "user=>" but I can't do anything

15:46 i mean i etner numbers and press enter nothing happens

15:46 bitemyapp: solidus_: I said to wait my next instruction

15:46 solidus_: okay, first off, in the lein repl, what port does it say?

15:46 close emacs

15:46 reopen it.

15:46 solidus_: 5014 same one i entered in emacs

15:46 bitemyapp: solidus_: stop jumping ahead of my instructions.

15:46 coventry: solidus_: Can you interact with the repl in the terminal where you ran "lein repl"?

15:46 solidus_: yes

15:46 bitemyapp: coventry: thanks, I was about to get there

15:46 coventry: you know what, he's all yours.

15:46 coventry: solidus_ good luck to both of you.

15:47 tolitius: Glenjamin: 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:47 Glenjamin: mm

15:47 mdrogalis: Hadoop just rained all over my parade. Escaped Java polymorphism problem by calling into Clojure protocols. Hadoop hated that. D:

15:47 Glenjamin: the cheatsheet is pretty good, but clojure.org links to an old version

15:47 coventry: solidus_: Can you telnet to the port lein repl opened?

15:47 Glenjamin: and google throws up clojuredocs which only does 1.2 and 1.3

15:47 Apage43: o.0

15:48 Glenjamin: http://www.braveclojure.com/getting-started/ seems like it might be good though

15:48 solidus_: ahmmm telnet hangs...

15:48 tolitius: Glenjamin: 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:48 Glenjamin: a 4clojure problem, I mean

15:48 coventry: solidus_: Probably a firewall issue.

15:48 solidus_: telnet: could not resolve System error

15:48 Apage43: no :, space

15:49 but also

15:49 that's a weird thing to do

15:49 Glenjamin: tolitius: telnet is odd and wants a space between the host and port instead of a colon

15:49 coventry: Oh, Apage43 is right. "telnet localhost 5014" (space rather than colon.)

15:49 solidus_: oh right, with space it works

15:49 Glenjamin: the problem is, i'm past that beginner stage, so i'm not in a position to evaluate intro guides very well

15:49 glosoli: Glenjamin: http://aphyr.com/

15:49 solidus_: i get the user=> prompt

15:49 Glenjamin: 4clojure is how i got into it

15:50 glosoli: Glenjamin: this is pretty decent imo

15:50 coventry: solidus_: You get a "user=>" prompt from the telnet command? That's weird.

15:50 solidus_: yea i do

15:50 Apage43: ( I think he might have a very old leiningen guys )

15:50 Glenjamin: glosoli: oo, looks good from a quick skim - seems similar in structure to the python tutorial - which is excellent

15:51 solidus_: what output does `lein version` get you?

15:51 Apage43: solidus_: make sure you have the latest lein; https://raw.github.com/technomancy/leiningen/stable/bin/lein

15:51 coventry: Well, if Apage43 is right, you might try "lein upgrade" and starting over.

15:51 Apage43: or that

15:51 it should upgrade itself. But I believe he's actually on 1.X

15:51 glosoli: Glenjamin: also you should follow Planet Clojure RSS

15:51 Apage43: which may or may not require updating the script

15:52 arrdem: bitemyapp: how goes

15:52 bitemyapp: arrdem: resisting the urge to strangle bitches.

15:52 blr: Glenjamin: looking to python for guidance around documentation is generally not a bad idea

15:52 bitemyapp: arrdem: working on brambling.

15:52 solidus_: oh shit i wasn't using the right command, got Leiningen 2.1.2 on Java 1.7.0_25 OpenJDK Client VM

15:52 and this version doesn't give user=> prompt on telnet

15:52 Apage43: oh, 2.1.2's not that old

15:52 Glenjamin: blr: mm, the python core docs are really excellent

15:52 Apage43: hm

15:52 oh

15:52 solidus_: but it does connect

15:52 Apage43: 2.1.2 is what you have *now*

15:53 blr: Glenjamin: a lot of the docs for popular projects are generally very good too

15:53 Apage43: right, so now you actually do *have nREPL*

15:53 bitemyapp: arrdem: turns out, laziness in Clojure isn't just a matter of s/reduce/reductions/g - whodathunkit?

15:53 tolitius: Glenjamin: 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:53 aconbere: do 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:54 Glenjamin: tolitius: "why" = watch "Simple made easy"

15:54 ibdknox: is anyone aware of someone working on a code formatter for clojure?

15:54 Glenjamin: it's more: I'm a programmer and i've decided to learn clojure. Walk me through it

15:54 the aphyr link from glosoli looks pretty good

15:54 blr: ibdknox: something like gofmt?

15:54 coventry: solidus_: 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:54 bitemyapp: aconbere: https://github.com/bitemyapp/revise/

15:55 ibdknox: why do unit tests that fail just show "nil" in an instarepl'd buffer?

15:55 fail meaning an exception was thrown.

15:55 ibdknox: blr: yep

15:56 bitemyapp: Which is indistinguishable from the test succeeding.

15:56 ibdknox: bitemyapp: anything in the console?

15:56 bitemyapp: I have no idea

15:56 I was so disgusted I closed LT

15:56 ibdknox: lol

15:56 blr: ibdknox: sure wouldn't hurt, would nicely compliment kibit

15:56 bitemyapp: kibit with side effects? ick, plz no.

15:57 ibdknox: it's actually necessary for a number of things

15:57 bitemyapp: make code formatting its own plugin.

15:57 blr: bitemyapp: wasn't suggesting that kibit change :P

15:57 ibdknox: I was just asking if anyone was aware of a project like that already being worked on

15:57 blr: looks like you are now ibdknox! :D

15:57 ibdknox: lol

15:58 Glenjamin: the closest i've got is https://github.com/odyssomay/sublime-lispindent

15:58 which does a sort-of ok job if you do the linebreaks

15:58 ibdknox: yeah, indenting is already taken care of

15:59 Glenjamin: deciding when to newline seems non-deterministic though

15:59 especially when you include things like GET and POST from compojure and with-*

15:59 well, if it was just with-* thats a fairly easy rule

15:59 ibdknox: I imagine there's a fairly straightforward set of rules you could follow to get most of the way there

16:00 the use case would be for formatting generated code

16:00 Glenjamin: it would have to be easily tweakable so it doesn't undo your nice work when you want to step outside the existing rules

16:00 coventry: ibdknox: What about clojure's pprint?

16:00 solidus_: i updated lein to [Leiningen 2.3.3 on Java 1.7.0_25 OpenJDK Client VM] still no luck connecting from emacs

16:00 hyPiRion: Problem is comments

16:01 coventry: hyPiRion: Ah, right.

16:01 solidus_: What about the telnet response?

16:02 solidus_: connecting, without "user=>" prompt

16:02 ibdknox: coventry: also pprint doesn't do a very good job with code

16:03 coventry: solidus_: No idea, then.

16:03 solidus_: oh jesus fuck, i had some auto-complete related shit in my .emacs

16:03 removed it now it connects just fine

16:03 thanks for the help anyways

16:04 ibdknox: bitemyapp: exceptions are caught by the clojure.test and it prints them out to the console.

16:04 bitemyapp: not much I can do about that

16:04 bitemyapp: Indeed.

16:05 blr: has anyone made the jump from vim to emacs and found it valuable?

16:05 arrdem: bitemyapp: that isn't surprising in the least...

16:05 ibdknox: once plugin authoring is in, presumably someone will write a nice clojure.test plugin :)

16:06 blr: as in genuinely worth the mental anguish...

16:06 TimMc: bitemyapp: I still think beer is yucky. :-P

16:06 hyPiRion: ibdknox: `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:06 glosoli: blr: VIM lacking proper integration with nREPl was the case for me of ditching it

16:06 :)

16:06 hyPiRion: Although I have high doubts that was what you're looking for

16:07 arrdem: glosoli: I agree... but at least they have fireplace now

16:07 blr: glosoli: I'm finding vim-fireplace good, but then I don't really know what I'm missing in emacs

16:07 glosoli: arrdem: I did use fireplace it's inferior to what emacs provide

16:07 ibdknox: hyPiRion: wait, emacs has true code formmating?

16:07 formatting*

16:08 glosoli: last time I checked it does :)

16:08 blr: glosoli: I've been using vim for 15 years though, so it's going to be a painful process...

16:08 TimMc: ibdknox!

16:08 glosoli: blr: Well, if you don't feel like VIM fireplace is uncomfortable, don't switch

16:08 TimMc: Good to see you around.

16:09 coventry: ibdknox: 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:09 arrdem: glosoli: it's better than nailgun tho...

16:09 blr: arrdem: yes, that wasn't great.

16:09 arrdem: glosoli: nailgun is what drove me to transition to Emacs this past Christmass

16:09 technomancy: emacs won't break long lines for you though; I don't think anyone's attacked that problem algorithmically in the general case

16:10 (meaning outside ns)

16:10 hyPiRion: ibdknox: That invokation just performs proper indentation

16:10 blr: arrdem: and you've found it generally worthwhile? (presumably using evil-mode?)

16:10 glosoli: arrdem: I wasn't around Clojure at that time, but switching to Emacs meant doing most of the stuff in it for me lol

16:11 arrdem: blr: nope I've never run evil-mode. I actually find modal gets in my way and that keychords are nice. personal perfference.

16:11 blr: I totally use vim when I need to change users and work in a terminal, but Emacs is my IDE

16:11 blr: ah ok, I'm not sure I can ever part from modal editing.. kind of like a brain lesion.

16:12 arrdem: it's really cool when I :wq in an Elisp file and Emacs bitches "Could not evaluate symbol wq"

16:12 glosoli: blr: I had problems with nREPL buffer when I used evil mode, it jumped cursor in some weird way

16:16 technomancy: llasram: 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:16 blr: wonder if anyone has been working on codemirror's vim support...

16:17 bitemyapp: working on codemirror means writing JS. Tough sell.

16:19 pbostrom: blr: I use evil-mode, I was never a VIM power user but I like VIM's modal editing and motions too much

16:19 solidus_: nrepl is still being developed or now CIDER has completely replaced it?

16:20 glosoli: solidus_: they renamed project

16:20 :)

16:20 solidus_: btw anyone used lightable or managed to get emacs shortcuts to work there?

16:21 coventry: solidus_: I would stick with nrepl for now (vs cider. No opinion on LT.)

16:21 glosoli: solidus_: https://groups.google.com/forum/#!msg/light-table-discussion/KE-qSBjfRxA/lgC5l3ykjGcJ

16:21 blr: solidus_: the editor that lighttable uses (codemirror) will have emacs bindings, but if it's anything like the vim support will be woefully incomplete

16:23 solidus_: coventry: why do your prefer nrepl?

16:23 glosoli: solidus_: More stable :)

16:23 coventry: solidus_: What glosoli said.

16:24 solidus_: Until there are new features I want in cider, I don't see the upside. https://github.com/clojure-emacs/cider/issues

16:24 TimMc: reply -> nrepl -> cider?

16:25 Or is cider just the new name for the Emacs side of things?

16:25 glosoli: emacs side of things

16:25 coventry: TimMc: Yep.

16:25 dnolen: nice https://news.ycombinator.com/item?id=6757031

16:27 blr: dnolen: I'm maintaining a large angular project now and it is getting hairy

16:28 teslanick: blr: Anything specific to look out for? I've been advocating moving a big app toward Angular

16:29 dnolen: blr: I don't think it's actually and either/or thing, CLJS + Angular.js seems like a combination people like

16:29 coventry: lazybot's findfn should try permuting the arguments if it comes up empty the first time.

16:30 Raynes: http://github.com/Raynes/findfn

16:30 On one hand that pull request would be mighty useful. On the other, findfn is already amazingly slow.

16:30 But hey, if you're in it you might as well be in it for the long hall.

16:30 haul*

16:31 Or a long hall. Doesn't matter to me. Whatever you're into.

16:31 blr: dnolen: 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:32 teslanick: 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:33 upwardindex: Recommendation for a notification library that is a pleasure to use from clojurescript?

16:33 TimMc: &(keep :foo [{:bar 6} {:foo 7} {} {:foo 9}])

16:33 lazybot: ⇒ (7 9)

16:34 dnolen: blr: 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:34 upwardindex: core.async?

16:34 coventry: Raynes: 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:34 upwardindex: dnolen: I mean growl type of thing

16:34 logic_prog: what 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:35 Raynes: (String. (.getBytes "foo"))

16:35 dnolen: upwardindex: oh not that I know of, shouldn't be too hard to leverage a JS lib if one exists.

16:35 Raynes: &(String. (.getBytes "foo"))

16:35 lazybot: ⇒ "foo"

16:35 Raynes: logic_prog: ^

16:35 logic_prog: Raynes: exactly what I needed. Thanks!

16:36 upwardindex: dnolen: there are tens of libraries luckily

16:36 Raynes: logic_prog: Keep in mind that this uses the default charset. You can specify another if necessary.

16:36 blr: upwardindex: https://github.com/CodeSeven/toastr seems popular (haven't used it myself)

16:37 teslanick: &(-> "foo" .getBytes String.)

16:37 lazybot: ⇒ "foo"

16:37 teslanick: Raynes: wouldn't that be easier to read?

16:37 upwardindex: blr: that is a pretty one!

16:38 Raynes: teslanick: Not really, no.

16:38 In larger, more complex examples, sure.

16:43 stompyj: Is there an IRC channel for caribou / Are there any caribou users/authors in here?

16:44 coventry: stompyj: justin_smith is affiliated with caribou.

16:47 stompyj: coventry: thanks!

16:48 gfredericks: hyPiRion: I would like to browse large data structures by having some top-level stuff shown, and being able to expand

16:48 like a tree, yunno

16:48 if a map has lots of keys, only show a few of them

16:48 stompyj: trying to decide if it's worth using as purely a REST API

16:48 hyPiRion: hmm, okay

16:48 stompyj: it seems like that's not it's intended use case, but it also seems like it may work that way

16:49 TimMc: gfredericks, hyPiRion: Further request: Interactively map different functions across certain parts of the tree.

16:50 gtrak: anyone 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:50 gfredericks: TimMc: oh dang now we're getting advanced

16:50 technomancy: gtrak: -server is a no-op

16:50 unless you have a 32-bit JDK

16:50 gfredericks: hyPiRion: in particular it should work without sending all the data back to emacs

16:50 gtrak: technomancy: right, I mean the implicit -server that's run on a 64-bit box.

16:51 TimMc: E.g. "Run #(String. %) on all the byte arrays" or perhaps on certain paths.

16:51 hyPiRion: gfredericks: sending or printing?

16:51 technomancy: gtrak: you mean beyond -Xmx?

16:51 Raynes: cemerick: "(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:51 gfredericks: hyPiRion: sending; e.g., a 20GB data structure

16:51 so it has to maintain a reference to the data back in the jvm process

16:51 Raynes: cemerick: If you ever find out who that was by some miracle of fate, tell them about (some nil? coll)

16:52 TimMc: It would also be nice to e.g. show the first element of each collection by default (down to a certain depth).

16:52 gtrak: technomancy: 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:52 the heaps get thrown into swap eventually, is what I mean, I'd like to avoid the swap.

16:52 hyPiRion: TimMc: *print-depth* and *print-length* can already do that to some extent, no?

16:53 enquora: can 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:53 cemerick: Raynes: 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:53 technomancy: gtrak: I know stuff like certain IO buffers are allocated off the main heap; native libs can allocate there as well

16:53 egosum: did clojuredocs.org get abandoned?

16:54 And does anyone know/can anyone guess why? And is there a replacement?

16:54 bitemyapp: egosum: yes

16:54 egosum: I'm considering starting a wiki.

16:54 gtrak: I'll play with it :-), thanks

16:54 gfredericks: bitemyapp: who owns it? not interested in transferrinc?

16:54 bitemyapp: egosum: I'll do it today if I can get at least one person to commit to helping me make content for it.

16:54 gfredericks: zachary kim. I don't know.

16:54 hyPiRion: cemerick: (some #(= % my-value) ...) does work though

16:55 bitemyapp: I'm rather envious of Haskell.org and EmacsWiki.

16:55 hyPiRion: That was probably to Raynes as well

16:55 technomancy: gfredericks: they've been looking for someone to help for like two and a half years or something

16:55 no one ever does

16:55 the circle of rage continues

16:55 egosum: technomancy: what sort of help? and who?

16:55 gfredericks: okay so it's not abandoned by somebody, it's abandoned by allo f us?

16:55 bitemyapp: technomancy: nobody wants to work on a Rails app.

16:55 Raynes: hyPiRion: nil?

16:55 technomancy: gfredericks: exactly

16:55 bitemyapp: technomancy: and they have a team that is supposed to be working on it, but hasn't.

16:55 Raynes: &(some nil? [1 2 nil 3 4])

16:55 lazybot: ⇒ true

16:55 gfredericks: oh it's a rails app

16:55 Raynes: &(some nil? [1 2 3 4])

16:55 lazybot: ⇒ nil

16:55 bitemyapp: gfredericks: they started a team to maintain it but the team didn't do anything

16:56 gfredericks: the team said they had it in hand and that we didn't need to do anything.

16:56 cemerick: hyPiRion: true, true; perhaps not obvious tho

16:56 bitemyapp: so it's not entirely on us.

16:56 technomancy: bitemyapp: everything's done except the html front-end, which no one on the team is qualified to write

16:57 egosum: https://github.com/clojuredocs/web

16:57 bitemyapp: technomancy: link it in the channel so people can see what we're talking about, please.

16:57 cemerick: I love how the survey always manages to spur the vitriol here :-P

16:57 bitemyapp: yes.

16:57 gtrak: technomancy: 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:57 bitemyapp: sigh, that's just an API.

16:57 technomancy: cemerick: you asked for opinions, you get an opinionfest =)

16:57 cemerick: mmm, so I hear

16:57 technomancy: bitemyapp: right; that's the problem. the API is done, the HTML isn't

16:58 egosum: technomancy: thank you, technomancy

16:58 bitemyapp: technomancy: it's not just HTML, it's structuring the whole site and content.

16:58 technomancy: bitemyapp: ok, sure

16:58 bitemyapp: aka, actually making the thing we actually need

16:58 we didn't need an API

16:58 we needed up to date content

16:58 technomancy: you can access all the data from the repl

16:59 logic_prog: [org.apache.zookeeper/zookeeper "3.4.5"]

16:59 fuck ... how do I installa zookeper in lein

16:59 lein 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:00 bitemyapp: logic_prog: maven install

17:00 logic_prog: bitemyapp: maven install -what- ?

17:00 blr: technomancy: is that todo in the README complete? doesn't mention any frontend tasks

17:00 nDuff: bitemyapp: that doesn't really help for code that isn't distributed in Maven Central for licensing reasons.

17:00 logic_prog: you can use a :exclude for javax.jms:jms and then add a 3rd-party implementation. I think Apache has one.

17:01 technomancy: blr: «website [not started]» under Progress

17:01 logic_prog: nDuff: I'm new to maven; is there a website I can read up on ?

17:01 something like "how to install zookeper/clj for idiots"

17:01 nDuff: logic_prog: ...though, well, yes, you can download JMS from Sun, and then use ''mvn install'' to put that jar in your local cache.

17:02 technomancy: nDuff: you can actually do that with lein now

17:02 needs better docs though =\

17:02 logic_prog: technomancy: please enlighten us and teach me how to install zookeeper with lein

17:02 nDuff: logic_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:02 zilti: 3

17:03 logic_prog: nduff: http://search.oracle.com/search/search?start=1&search_p_main_operator=all&q=jms <-- where do I even get jms?

17:03 technomancy: logic_prog: if you have a jar file you need, you can use `lein deploy` to get it into ~/.m2

17:03 nDuff: logic_prog: have you tried just excluding them?

17:03 technomancy: logic_prog: I have no idea how zookeeper works

17:03 blr: technomancy: ah okay. will keep an eye on it

17:03 nDuff: logic_prog: they may not be strictly necessary.

17:04 logic_prog: ...alternately, legalities notwithstanding, it looks like it's available in https://repository.jboss.org/nexus/content/groups/public

17:04 logic_prog: ...so you can just add that repository to your project.clj

17:04 logic_prog: nDuff: where is the docs on how to adding a repo to lein?

17:05 nDuff: logic_prog: the leiningen README links to a sample project.clj that uses every possible option.

17:05 logic_prog: "every possible option", by its nature, includes adding extra repos.

17:05 logic_prog: https://github.com/technomancy/leiningen/blob/master/sample.project.clj ?

17:05 nDuff: logic_prog: *nod*. See :repositories

17:06 technomancy: `lein help sample`

17:07 egosum: well, 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:07 bitemyapp: egosum: clojure-doc is somebody else.

17:08 pretty sure that's the clojurewerkz people not the clojuredocs API people

17:08 egosum: bitemyapp: from ://github.com/clojuredocs/web the README refers me to #clojure-doc

17:08 on freenode

17:09 bitemyapp: egosum: sigh, then that's a namespace collision.

17:09 egosum: clojure-doc the website is the friggin' github wiki the clojurewerkz guys started.

17:09 the 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:10 egosum: bitemyapp: somehow, they're connected. That clojure-doc.org -> the same repo that hosts the web repo for clojuredocs.org

17:10 technomancy: bitemyapp: it's the same folks

17:10 egosum: So somehow clojurewerkz are involved as well

17:10 there you go

17:10 technomancy: there's just a lot of overlap

17:11 egosum: bitemyapp: 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:11 bitemyapp: "just HTML"

17:12 yeah good luck with that.

17:12 "just HTML" yet that's the part we're stalling out on.

17:12 egosum: bitemyapp: We'll see :) I'm optimistic. Rather not reinvent the wheel, at the very least.

17:12 bitemyapp: that's not the point

17:12 the API isn't enough

17:12 you need community created examples underneath the raw docs themselves

17:12 that means you need a wiki

17:12 but if you have a wiki, integrating the API after the fact is not a big deal at all.

17:13 but until the structure and ability to add community created content is in place, you don't have much to work with.

17:13 I don't know why others cannot see that.

17:13 egosum: bitemyapp: i don't know what they have in mind, but what they have now on clojuredocs.org is a wiki, essentially. Right?

17:14 bitemyapp: egosum: in Rails

17:15 blr: bitemyapp: any existing resources worth looking to for inspiration? wiki.python.org?

17:15 egosum: bitemyapp: I don't have a problem with that. Rails works. Less fun, sure, but this is a CRUD app

17:15 technomancy: clojure-doc.org is basically a wiki where edits are pull requests

17:16 bitemyapp: blr: haskell.org + Haddock and EmacsWiki are stand-outs in my opinion.

17:16 egosum: I have a problem with working on a rails app in a community that supposedly has good web tools.

17:16 something that the Haskell community somehow sidestepped.

17:16 egosum: I am not going to perpetuate the use of Rails on my free time.

17:16 I'd rather suck fruit wax.

17:17 egosum: bitemyapp: 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:18 blr: bitemyapp: any way you could collaborate with clojurewerkz? there's a lot of good content on clojure-doc.org

17:18 the default bootstrap theme isn't doing much for me though

17:19 bitemyapp: blr: I don't like the pull request workflow and I think it discourages contributions.

17:19 gtrak: technomancy: seems like -XX:+UseG1GC is much more aggressive about releasing mem, from what I've read, that's expected.

17:19 bitemyapp: blr: I really just want something like Haskell.org or EmacsWiki.

17:19 blr: I've already discussed this with them, they refuse to acknowledge how irritating it is to PR contributions to a wiki.

17:19 technomancy: gtrak: but yeah, unpredictable memory usage is a huge source of support issues for JVM users on Heroku

17:20 egosum: blr: 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:20 bitemyapp: egosum: you're not understanding me.

17:20 egosum: 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:20 danneu: I started writing a clojuredocs clone like everyone else probably has in their neglected ~/oldcode folder, and used the gist api for contributions

17:20 bitemyapp: egosum: I own clojurewiki.com, I'm just waiting.

17:20 blr: bitemyapp: are there any wiki projects in clojure atm?

17:20 as in wiki softwrae

17:21 bitemyapp: blr: I've written a micro CMS in Clojure that runs bitemyapp.com

17:21 gtrak: technomancy: 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:21 bitemyapp: it could be turned into a wiki, but I don't think that's necessary.

17:21 danneu: i own... wait for it... docjure.com

17:21 bitemyapp: mediawiki + wrapper site for the API would probably be sufficient.

17:21 egosum: ah, perpetuating the use of PHP ;)

17:22 bitemyapp: there's a difference between deploying a mediawiki and *hacking* on a Rails app.

17:22 I am not going to replicate everything mediawiki does in Rails.

17:22 * technomancy <3 gollum

17:22 bitemyapp: I'm open to writing a wiki, but my point is that you don't *HAVE* to write a goddamn wiki.

17:22 technomancy: I'm not going to do any significant editing in a browser

17:23 danneu: you should probably write a documentation archive in the language it's documenting

17:23 audience are people that could commit

17:24 bitemyapp: I would tend to agree.

17:24 egosum: The 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:24 blr: bitemyapp: seems like something that should be discussed with clojure core?

17:24 bitemyapp: blr: lol no.

17:24 they're the last people you should talk to about documentation.

17:24 technomancy: heh

17:26 blr: just seems a pity to have people independently duplicating documentation efforts, and it's confusing for new people

17:26 egosum: blr: agreed

17:27 It would be nice to get a group of people together interested in creating a canonical wiki

17:27 technomancy: wikis are easy to create

17:27 egosum: clojure and canon don't go well together, though

17:27 technomancy: maintaining over years is far more difficult

17:28 danneu: wiki is overkill. you just want a low-barrier code-formatted comment box

17:28 for a clojuredocs clone

17:29 bitemyapp: I want a wiki.

17:29 technomancy: TBH I don't see why people don't just use it from the repl

17:29 blr: technomancy: that's not so intuitive for someone new to clojure

17:30 need both ideally

17:30 technomancy: blr: people gotta learn to get over their browser-addiction same as getting over the instinct to modify arrays in-place

17:30 egosum: technomancy: blr: coming from a guy who uses lynx from tmux :P some of us like a little more GUI in our lives

17:31 blr: egosum: as a tmux user, sometimes I'm tempted myself..

17:31 egosum: blr: I use tmux, too. But god no not lynx.

17:31 Actually, you use konqueror, don't you technomancy

17:31 mtp: i use w3m and elinks

17:31 technomancy: egosum: nooooo

17:31 egosum: conkeror!

17:31 totally different =P

17:31 blr: hah, yeah, that's a whole different kind of techno-luddism (no offense technomancy :) )

17:31 * egosum IS VERY SORRY

17:31 technomancy: haha

17:32 * egosum will google first in the future :)

17:32 technomancy: I just added in-emacs HTML rendering to nrepl-dicsover though

17:32 hiredman: technomancy: nice!

17:32 egosum: technomancy: seriously? that's awesome. I feel like I miss out on a lot using iterm2 instead of X

17:32 technomancy: I should add support for https://github.com/dakrone/clojuredocs-client though

17:33 bitemyapp: arrdem: what is scc/sc13?

17:33 technomancy: hiredman: I'm hoping to port Javert to it \m/

17:34 egosum: well it's not webkit; it's basically the equivalent of w3m's renderer, but without the dependency on an external binary

17:34 arrdem: bitemyapp: http://sc13.supercomputing.org/

17:34 technomancy: perfect for an inspector though

17:34 TimMc: &((->> (?) lazy-seq (fn ? [])))

17:34 arrdem: bitemyapp: I'm on the UT team for http://sc13.supercomputing.org/content/student-cluster-competition

17:34 lazybot: Execution Timed Out!

17:35 technomancy: dakrone: would that make sense? creating M-x nrepl-cdoc that could use clojuredocs-client?

17:35 bitemyapp: technomancy: seems reasonable to me.

17:35 dakrone: technomancy: makes sense to me

17:35 technomancy: dakrone: also, does your client support submitting or just reading?

17:35 arrdem: bitemyapp: it's a high performance, power management based timed devops challenge

17:35 TimMc: &(->> ? trampoline lazy-seq (fn ? []) trampoline) ;; ah, much better

17:35 dakrone: technomancy: just reading

17:36 lazybot: Execution Timed Out!

17:36 technomancy: I wonder if I could do a clojure/west talk on nrepl and nrepl-discover

17:36 pjstadig: technomancy: yes

17:36 technomancy: gotta get the word out =D

17:37 egosum: I'm confused re: Cider v. nrepl. There's nothing on the nrepl repo pointing to cider (https://github.com/clojure-emacs/cider)

17:38 joegallo: egosum: i think you'll find that the project rename made it impossible for you to be confused

17:38 (jk, man, i'm just messing around, you can totally ignore me)

17:38 technomancy: geez; you scraed scared him off?

17:39 joegallo: some people scrae easily

17:39 hiredman: joegallo: kings ignore jesters at their own peril

17:40 joegallo: i can't tell if you're calling me a fool or not, but the shoe fits

17:40 :)

17:40 Glenjamin: is cider a fork or a rename?

17:40 hiredman: the big shoe :)

17:40 technomancy: Glenjamin: rename with a new maintainer

17:41 Glenjamin: oh, i thought nrepl.el was still under active dev

17:42 arrdem: bitemyapp: 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:42 Glenjamin: ah, found the issue tracker

17:42 bitemyapp: arrdem: :( good luck!

17:42 gtrak: technomancy: for comparison, notG1: http://imgur.com/C7r5hFa , G1: http://imgur.com/tuk8ilV .

17:43 technomancy: nice

17:43 gtrak: that massive cliff in the first is just unnecessary

17:44 technomancy: it is super annoying that there's no "never use more than $MAX mb of RAM" setting

17:44 gtrak: it would be inconsequential in a dedicated server setting, so I see why it's like that.

17:45 mtp: terom, what about ulimit? :p

17:45 err

17:45 technomancy*

17:45 seangrove: Ah, ffs heroku...

17:45 gtrak: technomancy: there's MaxHeapFreeRatio and MinHeapFreeRatio, I was going to try that, but just flipping on G1 worked well enough.

17:46 '-XX:MaxHeapFreeRatio=70, Maximum percentage of heap free after GC to avoid shrinking.'

17:46 seangrove: Addon 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:47 technomancy: mtp: is that visible from inside the affected process?

17:47 seangrove: Gave up on it before out of frustration, and now it has come back to haunt me.

17:48 mtp: technomancy, there are syscalls to get it, so "not sure" :)

17:48 technomancy: seangrove: 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:49 (I only recently learned that you could do that with SSH)

17:50 seangrove: technomancy: ... to the heroku api?

17:50 technomancy: seangrove: no, in a manual support request

17:50 seangrove: Or are you talking about the design of clojars specifically,?

17:51 Ah, ok

17:51 That's a nice idea. I'll see if I can open another security ticket and get it taken care of this time.

17:51 Err, suport ticket*

17:51 "The cloud is great, as long as it doesn't fall out from underneath you."

17:53 * technomancy hugs erc-cloud-to-butt.el

17:53 Glenjamin: was there an announcement about the nrepl.el->cider thing on the clojure mailing list? i don't remember seeing anything

17:54 technomancy: no idea; still using nrepl.el

17:54 works great

17:55 Glenjamin: mm, fair enough

17:55 btw 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:56 technomancy: Glenjamin: it's basically a proof-of-concept https://github.com/technomancy/metaverse

17:56 2-hour hack night project; do not use; feel free to read

17:56 Glenjamin: mm, it's an idea i'm very keen on

17:56 i claim it's best, if not only reason to use node.js

17:56 technomancy: I don't think it's a good idea actually

17:57 Glenjamin: in java-land, or in general?

17:57 technomancy: if you want something like that it's almost surely a sign that your codebase is too big

17:57 Glenjamin: it's the dependency hell problem

17:57 technomancy: so that's like taking painkillers to "solve" a broken leg

17:57 Glenjamin: if i include a library in my library, consumers shouldn't have to care

17:57 B depends on utilA-1.0, C depends on utilA-2.0

17:57 now D can't use B and C

17:58 seangrove: Glenjamin: But loading them both doesn't help...

17:58 Glenjamin: seangrove: unless you could keep them separated

17:59 technomancy: it's easy to do with clojure namespaces for the most part, but as soon as you involve classes it gets hard

17:59 seangrove: Glenjamin: I suppose, sounds like a time bomb

17:59 Glenjamin: so B gets what it wants, and C gets what it wants, and unless you expose types over public interfaces you're fine

17:59 which is where it falls down, of course

17:59 technomancy: in practice incompatibility usually comes from underlying java libs

17:59 Glenjamin: mm

18:00 but java peeps have gotten used to not using small dependencies

18:00 i think it would be a shame for clojure to have to follow that path

18:00 "just copy that fn from the source into you app" shouldn't be the accepted solution in 2013 :)

18:01 technomancy: clojure is still small enough that you can shame authors of misbehaving libs into compliance though; it's great

18:01 Glenjamin: yeah, but that doesn't scale

18:01 gtrak: Glenjamin: seen codec? it's a start.

18:01 codeq, excuse me

18:02 Glenjamin: thats an interesting way of thinking about it

18:02 i'm familiar with the concept of codeq, but not played with it properly

18:02 technomancy: yeah, when clojure gets too big for that to work you gotta find another niche

18:02 factor, ocaml, elixir, etc =)

18:02 seangrove: hah

18:02 Glenjamin: basically, 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:03 but as you say, java complicates things

18:03 seangrove: Could 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:03 gtrak: my dream someday :-). clojure-in-clojure -> environment-as-a-value -> distributed-versioned-repls

18:04 Glenjamin: but yeah, i don't want to live in a world where "this project has no dependencies" is a plus point

18:04 bitemyapp: gtrak: environment is a value already in Haskell

18:04 gtrak: monads gg.

18:04 gtrak: bitemyapp: hmmmmmm

18:04 Glenjamin: because for any non-trivial project, that either means you did lots of copy-pasting, or you reinvented a bunch of wheels

18:04 bitemyapp: Glenjamin: sometimes yes, sometimes no.

18:05 the only dependencies brambling has are datomic-pro, clj-time, and clojure itself.

18:05 that's probably my lowest-number-of-dependencies library.

18:05 there are some datomic wrapper utils that could get split out, but I don't have enough of them to bother yet.

18:05 * Raynes gives technomancy a hug for mentioning Elixir.

18:06 Raynes: It's like he knows I'm waiting... watching...

18:06 technomancy: Raynes: it wasn't in the most flattering context

18:06 Raynes: It wasn't a horrible contxt.

18:06 context*

18:06 One day I'm gonna get used to the keyboard on this macbook, bitemyapp.

18:07 bitemyapp: the fuck did I do?

18:07 oh right

18:07 technically that is my fault.

18:07 Raynes: It makes no sense. The keyboard on a macbook air is the exact same size as the one on the macbook pro, right?

18:07 bitemyapp: I don't know.

18:07 blr: Raynes: he didn't compare it to ruby at least

18:07 bitemyapp: I own both and have no idea.

18:07 Glenjamin: bitemyapp: it seems fairly well factored to me - although there's some scary reduce calls in there!

18:07 Raynes: blr: Not much beyond syntax that you can reasonably compare with Ruby.

18:07 bitemyapp: blr: Ruby isn't a niche, it's a fuckpit of hate fueled by money and self-aggrandizement.

18:07 dnolen: Glenjamin: 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:07 Raynes: Well, I'm staying out of that one. :P

18:08 blr: uh oh, looks like I used someone's trigger word

18:08 Glenjamin: dnolen: what is it you dislike about it?

18:08 arrdem: bitemyapp: okay... I think we're gonna be OK.

18:08 * arrdem tries to chill

18:08 bitemyapp: Glenjamin: actually yeah, I would love feedback on brambling.

18:08 dnolen: Glenjamin: random crap

18:08 bitemyapp: Glenjamin: I take the "scary reduce" as a badge of honor tho :)

18:08 srruby: Is this idiomatic clojure? https://gist.github.com/anonymous/7537032 I use defonce to avoid loading a resource until the method is called.

18:08 hansengel: Hi all -- I have a patch I'd like to contribute to Clojure core re: an issue

18:08 on JIRA. Is this the right place to ask if it's sane and OK? :)

18:08 bitemyapp: srruby: oh my god no don't

18:08 srruby: never def inside a function

18:08 srruby: don't nest defs

18:08 god no ick ugh vomit no.

18:09 arrdem: hansengel: do you have a clojure CA?

18:09 technomancy: bitemyapp: just breathe

18:09 arrdem: hansengel: we'll do a code review for sure, but clojure core can't take it until you've submitted a CA

18:09 bitemyapp: srruby: (def hyphenator (memoize (fn [] ...body of thing here...)))

18:09 * seangrove is sheepish abotu having a function just like srruby's in production code

18:09 hansengel: arrdem: OK, I was going to mail one today.

18:09 srruby: bitemyapp: Thanks!!

18:09 seangrove: I blame korma and my own initial designs though

18:10 hansengel: This is a super tiny fix, but I'm not sure I've done it in the right place

18:10 Glenjamin: dnolen: 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:10 bitemyapp: srruby: at the top-level, not nested :|

18:10 hansengel: re: this ticket http://dev.clojure.org/jira/browse/CLJ-1282

18:10 bitemyapp: for the record, Korma's not my fault either.

18:10 hansengel: my fix: http://pastebin.com/d9JndGJn

18:10 I'm a bit wary about changing something so general sounding as "ConstantExpr," though

18:11 I'm still new to the Clojure core code ;)

18:11 Adding tests now, by the way

18:11 technomancy: hansengel: 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:12 dnolen: Glenjamin: 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:13 hansengel: technomancy: Hmm, okay, is there a standard way to do that?

18:13 Glenjamin: dnolen: 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:13 technomancy: hansengel: yes, but you're not gonna like it

18:13 it involves a printer, stamps, and lots of waiting

18:13 Glenjamin: if the modules are all small, then stitching them together and sanity-checking them should be less effort than re-creating from scratch

18:14 hansengel: technomancy: I see, ha.. so I really can't get anywhere without the CA then.

18:14 gtrak: sometimes 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:14 seangrove: Glenjamin: Using data helps avoid many versioning problems

18:14 Not all, but some

18:14 dnolen: Glenjamin: except in the latter I have to contact the dev to fix or monkey patch. In the former I can fix.

18:14 small dependencies just means more hell

18:14 not under my own control

18:14 technomancy: hansengel: yeah, it's a pain.

18:15 Glenjamin: thats why we have forks and things, the tooling should enable us to break out clean dependencies

18:15 seangrove: technomancy: hansengel My CA took ~48 hours to be processed

18:15 dnolen: Glenjamin: yeah I agree w/ basically nothing you are saying

18:15 Glenjamin: fair enough

18:15 technomancy: seangrove: sure, but that's just step 1. now you have to fight Jira

18:15 seangrove: Wasn't bad at all, I regret moaning about it as much as I did

18:15 dnolen: if I have to maintain a fork for 100 lines of code ... what the hell do I need a module for

18:15 gtrak: the project I'm working on has 174 entries in lein deps :tree

18:16 dnolen: I'll just write that myself

18:16 seangrove: technomancy: Also not too upset with JIRA these days. I just do the basics, and let dnolen handle the rest of the pain.

18:16 Glenjamin: dnolen: because your module has tests, docs and a clean separation from the rest of your code. its impossible to couple to your app

18:16 hansengel: OK, thanks seangrove, technomancy, arrdem. I'll be back in a few days then :)

18:16 technomancy: seangrove: that doesn't scale =)

18:17 seangrove: technomancy: Are you sure? dnolen seems to be indefatigueable.

18:17 danneu: i thought clojure handled DependencyA leaning on bouncycastle1.7 and your app pulling in bouncycastle1.8.

18:18 Glenjamin: it tells you it might not work

18:18 technomancy: seangrove: dunno; rewriting small libs to avoid growing a dependency tree sounds tiring =)

18:18 Glenjamin: or rather, lein does

18:18 seangrove: technomancy: I figure if we have him, you, cemerick, and maybe two others, there's no immediate concern for scaling bottlenecks :)

18:18 technomancy: seangrove: I just send cemerick actual pull requests; he looks the other way and keeps me out of trouble.

18:18 seangrove: Hahahahahaha

18:19 technomancy: Well, you are listed here after all http://clojure.org/contributing

18:19 Glenjamin: anyway, 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:19 technomancy: Claiming Copyright Ownership of Submitted Patches as a Service

18:19 seangrove: yeah, but I got dumped off the clojure-dev mailing list for some reason

18:20 possibly my own fault; google groups UI is terrible

18:20 bitemyapp: it damages the community when people don't use and improve each others' libraries.

18:20 seangrove: technomancy: Before or after everyone unanimously voted for ops for you?

18:20 Glenjamin: (inc bitemyapp)

18:20 lazybot: ⇒ 13

18:20 seangrove: You're not exactly an unknown figure...

18:20 technomancy: seangrove: I think it was before

18:20 seangrove: I imagine cemerick might have more reservations about looking the other way if pr's came from less savory sources

18:20 * seangrove glances in bitemyapp's general direction

18:21 technomancy: I send in the CA when I was young and starry-eyed; back when Rich promised to switch to github.

18:21 bitemyapp: seangrove: you're the one that has "unsavory" in his profile, not me.

18:21 arrdem: bitemyapp: well played

18:21 Glenjamin: bitemyapp: on brambling, i'm only broadly familiar with datomic - but i really can't figure out what groupings->temp-ids does

18:21 technomancy: bitemyapp: well I have "bumbling" in mine, does that count

18:21 seangrove: bitemyapp: You're tainted by association, I'm afraid.

18:22 bitemyapp: seangrove: I'm pretty sure my intolerance speaks for itself.

18:22 Glenjamin: you can't directly transact primary keys from one database into another

18:22 pmde: hi 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:22 bitemyapp: Glenjamin: 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:22 I group the datoms by the entity id (primary key) in the datom vector.

18:23 hence the name groupings

18:23 seangrove: technomancy: Didn't you say you had replaced the built-in nrepl-greetings?

18:23 bitemyapp: Glenjamin: 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:23 technomancy: seangrove: absolutely http://p.hagelb.org/nrepl-words.el.html

18:24 seangrove: Oh man, that's lovely

18:24 technomancy: it brightens my day every time

18:24 seangrove: That's what I was thinking

18:24 bitemyapp: Glenjamin: So [:db/add 1 :muh-attr :muh-data] turns into [:db/add (d/tempid whatever) :muh-attr :muh-data]

18:24 Glenjamin: then the whole translated transaction gets reduced through the mappers.

18:24 it's per transaction translation, no transaction folding

18:25 I'm working on incremental processing and transaction pipelining atm

18:25 clojurebot: excusez-moi

18:25 technomancy: holy smokes; cider became a lot of files

18:25 bitemyapp: `cbp: oh god why did I write a datomic migration library

18:25 `cbp: don't let me do this again

18:25 `cbp: bitemyapp: what happened

18:25 Glenjamin: i'd suggest adding some of what you just said into these doc-strings :)

18:26 bitemyapp: `cbp: making brambling incremental and pipelining the transactions, rewriting a reduce in terms of lazy-seq.

18:26 possibly^H^H^H^H^Hdefinitely losing my sanity.

18:26 getting results from my functions that don't make any fucking sense.

18:27 technomancy: nice https://github.com/clojure-emacs/cider/pull/415

18:27 seangrove: Documentation for cider-words-of-inspiration: "Scientifically-proven optimal words of hackerish encouragement."

18:28 danneu: datomic 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:28 technomancy: seangrove: I could do without the quotations

18:28 seangrove: technomancy: heh, "fellow hacker"

18:28 `cbp: bitemyapp: here here

18:28 bitemyapp: danneu: are you volunteering to work on brambling? :P

18:28 seangrove: technomancy: Was a direct quotation

18:29 `cbp: bitemyapp: After some soul searching ive decided to do a heckle in clj. You have been warned

18:29 bitemyapp: `cbp: HAHAHAHAHA

18:29 `cbp: we can go to the looney bin together.

18:29 I 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:29 Glenjamin: i wonder if opt-in sandboxed dependency versions with a slightly different (ns) incantation would be more palatable

18:29 bitemyapp: `cbp: I will buy you multiple pizzas if you push a working version of it to clojars.

18:30 seangrove: technomancy: I would have liked adventurer more than "fellow hacker", I thought that was more in the spirit of things

18:30 Morgawr: I have a legal-ish question, can I put the clojure logo a website of an application/program/library powered by clojure?

18:30 `cbp: that's cheap. They sell 3 for the price of 1 here

18:30 bitemyapp: Morgawr: didn't stop rethinkdb

18:30 `cbp: well design your own reward.

18:30 either way, it's something I've wanted.

18:31 `cbp: :-)

18:31 Morgawr: I don't see the clojure logo on http://www.rethinkdb.com/

18:32 Glenjamin: oh wait, thats what this does - (ns-)

18:34 `cbp: Morgawr: It's supposed to be here but it's apparently broken: http://www.rethinkdb.com/docs/install-drivers/

18:34 danneu: speaking of db, fleetdb.org expired 10/31/2013

18:35 Morgawr: `cbp: I see... I guess I can put it up there and if there are problems I can take it down

18:35 srruby: Is rethinkdb well regarded? I know couchdb.

18:35 egosum: joegallo: hah, sorry about leaving; library shut off the wifi

18:36 bitemyapp: Morgawr: they were on there, but the icon is broken, hold on.

18:38 technomancy: Glenjamin: yeah that's the premise of metaverse

18:38 Glenjamin: there's some dark magic going on here, but the surface area is smaller than i'd have expected

18:39 devinus: where's my (def newsletter) ?

18:39 technomancy: Glenjamin: 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:39 also it was a seajure hack-night project

18:39 Glenjamin: yeah, i can pretty much see how it fits together

18:40 dsrx: bitemyapp: rethinkdb isn't powered by clojure...

18:40 bitemyapp: I didn't say it was.

18:40 I said they had no problem using the logo.

18:41 I think as long as you're using the logo to refer to something actually to do with Clojure itself, there's no problem.

18:41 If you try to appropriate it for something that isn't Clojure, there's a problem.

18:41 basic trademark, AFAIK

18:41 Glenjamin: it's a shame you have to duplicate the file-parsing and line numbering bit

18:41 but again, there's no much to it

18:41 Morgawr: yeah I read Rich saying that the logo should only be used to refer to Clojure as the language

18:42 I'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:42 technomancy: I believe most objectionable uses are around derivatives of the logo

18:43 but if you include the logo in your codebase it won't be DFSG-compliant

18:43 Glenjamin: i was thinking potentially allowing something like (ns my-app (:require [stuff :as usual]) (:versioned [lib :as other])) might be interesting

18:43 technomancy: which I know everyone would regard as the greatest of tragedies

18:44 Glenjamin: ns is fairly resistant to hacking

18:44 seangrove: technomancy: diamond state financial group?

18:44 bitemyapp: Glenjamin: added docstring to groupings->tempids per your recommendation. Thanks.

18:44 Glenjamin: hrm, with a different macro then - but opting in to versioned/sandboxed instead of chomping all the requires might actually get some traction

18:45 technomancy: seangrove: debian free software guidelines, the only rule of righteousness for the pure in heart

18:45 Glenjamin: PHP had to remove doug crockford's JSON parser - JSON says "do no evil", PHP says "do what you want" => licence incompatibility

18:45 technomancy: it really is a shame ns doesn't allow fully-qualified clauses

18:46 Glenjamin: short jump from that to "php is evil"

18:46 Glenjamin: heh, sadly true

18:46 technomancy: I'm sure it could be proven with core.logic

18:46 Glenjamin: i think for a certain class of libs, it'd be easy to convince people to sandbox - utility-belts spring to mind

18:46 bitemyapp: Glenjamin: what?

18:46 technomancy: Glenjamin: please read up on http://nixos.org before continuing =)

18:47 bitemyapp: Glenjamin: sandbox?

18:47 Glenjamin: technomancy: this sounds interesting

18:47 technomancy: it's beautiful

18:48 bitemyapp: Glenjamin: I've seen people use nixos with docker.

18:48 pretty cute.

18:48 technomancy: anyway, it can be done without convinging authors to opt in

18:48 gfredericks: technomancy: have you used nixos yet?

18:48 Glenjamin: bitemyapp: 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:48 this problem is solvable with software

18:48 bitemyapp: Glenjamin: well yeah, ideally each library operates in its own little universe.

18:48 technomancy: gfredericks: no, I've only used nix from debian

18:48 Glenjamin: but requires stepping away from java classloader land

18:49 nDuff: hrm.

18:49 Glenjamin: as much as people love to hate on nodejs, this works amazingly surprisingly well: http://nodejs.org/api/modules.html#modules_all_together

18:50 technomancy: (ns my.lib (:require [clojure.set :as set]) (:my.tool/versioned-require [conflicting.lib1] [conflicting.lib2])) ; <- I would love if ns supported this

18:51 right now clauses are hard-coded to clojure.core

18:51 gtrak: this is like multiple-inheritance, why not look to C++ for advice? /ducks

18:51 seangrove: I'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:51 * nDuff is looking for tooling for inspecting Java bytecode, and coming to the impression that building a wrapper around soot might be the right place to start.

18:51 technomancy: seangrove: modules as first-class maps is absolutely the right choice though

18:51 namespaces are weird bash-in-place things

18:51 nDuff: hugod: 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:52 Glenjamin: seangrove: i have no itention of trying to sell any other aspects here, but sandboxed versioned module loading is truly awesome

18:52 hiredman: technomancy: there is nothing stopping you from using your own module system instead of clojure's namespaces

18:53 technomancy: hiredman: sorta. the ns macro is hard-coded in a bunch of places and it's difficult to replace.

18:53 Glenjamin: technomancy: how would multiverse get loaded? don't you need to start with a (ns) before you can (ns-) ?

18:53 hiredman: technomancy: then don't use it?

18:54 technomancy: Glenjamin: that's basically what I'm complaining about =)

18:54 hiredman: it's very difficult to bootstrap an alternative sanely

18:54 Glenjamin: i suppose in theory all it does is set *ns* and call out to require, import etc?

18:54 * Glenjamin goes to read

18:55 hiredman: technomancy: metaverse is cute, but not very useful as is, so lamenting the inabaility to extend ns to use it is kind of silly

18:55 technomancy: hiredman: sure, but ns+ has :like, which is way useful

18:55 lemonodor: Glenjamin: i am totally with you on the node approach to dependencies. it's wonderful when you can do it.

18:56 dsrx: i'm really impressed btw that everyone in clojure seems to have rallied around something like leiningen from the get-go :)

18:56 technomancy: http://p.hagelb.org/qualified-ns-clauses.html <- yes please

18:56 dsrx: or well, at least relatively early on in the language

18:56 hiredman: technomancy: *shrug*

18:56 dsrx: it's nice that the tooling is more or less consistent across every clojure project

18:56 technomancy: hiredman: are you guys still using :like?

18:56 hiredman: technomancy: we never did really

18:56 technomancy: I totally did

18:57 hiredman: technomancy: 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:58 technomancy: sadface

18:58 I wonder how loudly core would object if I submitted that ~25-byte change

18:58 hiredman: *shrug*

18:58 technomancy: power to the people!

18:58 gfredericks: technomancy: I can't figure out what it does

18:58 Glenjamin: it doesn't seem like it particularly has any/many downsides

18:58 technomancy: the ns macro is not very egalitarian

18:58 Glenjamin: it allows user-space extensions to ns

18:59 technomancy: gfredericks: (ns my.lib (:println [hello.world])) is a thing that works

18:59 gfredericks: riiight

18:59 got it

18:59 technomancy: gfredericks: but it's hard-coded to only resolve from clojure.core

18:59 hiredman: technomancy: if you do that, then you introduce load order problems

18:59 gfredericks: count me in

18:59 technomancy: which is a form of oppression

18:59 gfredericks: oh coutn me out

18:59 danneu: what'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:59 technomancy: hiredman: no more than regular require

18:59 gfredericks: oh count me in

18:59 hiredman: technomancy: 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:00 danneu: because i'm about to perf optimize my tests

19:00 technomancy: hiredman: right; the patch needs to do a *bit* more to require the clause-containing ns

19:00 Glenjamin: danneu: <1 sec is proper autotest

19:00 hiredman: technomancy: 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:00 feh

19:01 technomancy: hiredman: of course

19:01 you can't have circular dependencies

19:01 hiredman: technomancy: I didn't say anything about circular dependencies

19:02 Glenjamin: you require the defining namespace be loaded before any utilising namespaces

19:02 but anyone opting into using this functionality could handle that?

19:02 hiredman: technomancy: 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:02 technomancy: http://p.hagelb.org/egalitarian-ns.html

19:03 hiredman: technomancy: are you using a custom require all over the place that you want to move in to ns?

19:03 technomancy: hiredman: I'm not using :like solely because I *can't* use it sanely

19:03 I would use the heck out of it if it weren't for the wacky bootstrapping issues

19:03 hiredman: technomancy: there is nothing stopping you from having like outside of ns

19:03 Glenjamin: what's the cost of this extension point?

19:04 hiredman: (like 'some.ns)

19:04 technomancy: Glenjamin: 10-20 hours of arguing on the internet

19:04 Glenjamin: heh

19:04 technomancy: hiredman: this offends my aesthetic sensibilities

19:04 hiredman: technomancy: *shrug*

19:05 technomancy: if custom forms like that proliferate, then I think you could make a case for making ns extendable

19:05 but they haven't and they don't

19:05 bitemyapp: technomancy for Dictator!

19:05 hiredman: why make a change that only exists for aesthetics? what is this, scheme?

19:06 technomancy: they don't because they're hideous

19:06 bitemyapp: down with the obstructionists!

19:06 technomancy: haha

19:06 hiredman: no more hideous than (ns ...)

19:06 devn: ns is beautiful in its hideous-ness

19:06 Glenjamin: hrm, there's no reason the sandboxed version loading thingy has to take over :require in the ns block...

19:06 bitemyapp: (ns ...) Brown Shirts

19:06 devn: it's like a really beautiful wig

19:06 bitemyapp: NS. get it? NS. lol.

19:06 technomancy: well the main reason I'd foresee getting pushback is that ns is infamous for being overly-permissive

19:07 bitemyapp: devn: wigs creep me out. made riding the subway in brooklyn difficult.

19:07 hiredman: in order for this to be engineering, we need at least the veneer of evidence based decision making

19:07 technomancy: hiredman: this is art!

19:07 * technomancy flees

19:07 hiredman: technomancy: take your harmonikit and run

19:07 Glenjamin: wait hang on, (ns) technically lets you call any clojure.core form?

19:07 hyPiRion: yes

19:07 technomancy: Glenjamin: glorious, innit

19:08 bitemyapp: Glenjamin: da.

19:08 "innit" (inc technomancy)

19:08 Glenjamin: would a 6-keyword guard really be that expensive?

19:08 bitemyapp: (inc technomancy)

19:08 lazybot: ⇒ 85

19:08 Bronsa: I enjoy doing (ns .. (:alias c.c clojure.core)).

19:08 blr: wat

19:09 technomancy: I'm not sure whether you can call ns from ns though

19:09 Glenjamin: this nix scheme is genius

19:09 encoding the dep tree into the directory name

19:09 bitemyapp: oh god making this lazy is going to require refactoring half the code

19:10 I have to translate the carried mapping into a progressive reduction

19:10 technomancy: Glenjamin: http://p.hagelb.org/power.gif

19:10 bitemyapp: ffffffuuu

19:10 hiredman: (ns … (:refer-clojure :rename {+ - - +}])

19:10 bitemyapp: hiredman: that's a plus, not a minus.

19:10 you can do the same thing in Haskell fyi.

19:10 technomancy: that's no moon

19:10 bitemyapp: nobody got my pun :(

19:12 I wonder if I could dynamically prune the...no lets not go there.

19:12 that way lies MADNESS

19:12 hyPiRion: technomancy: hmm yeah, (:ns bar) expands to (ns 'bar). Tricky

19:13 technomancy: hyPiRion: if anyone can do it, you or TimMc can

19:14 Glenjamin: bah, trying to shoehorn a defmulti into (ns) but can't seem to get the destructuring right

19:15 seangrove: HTML5 ui controls... I wish we had better primitives.

19:15 hyPiRion: technomancy: Well, you could do (:eval (ns bar)), that should work

19:15 technomancy: aha

19:15 * hyPiRion tried it, and it seems to work

19:16 bitemyapp: seangrove: that was the intent behind GWT, escaping reimplementation of widgets/functionality.

19:16 blr: oh god, don't mention GWT

19:16 Glenjamin: aha, (ns (:eval ...))

19:17 bitemyapp: blr: I didn't say it worked out well in that case :)

19:17 Java isn't known for doing a good job with reusable code or DSLs.

19:17 seangrove: bitemyapp: Also the idea behind cappuccino.

19:17 blr: JSNI gave me PTSD

19:17 bitemyapp: seangrove: that was particularly egregious.

19:17 Glenjamin: dont worry, the W3C is going to get it right this time

19:17 http://www.w3.org/TR/components-intro/

19:18 seangrove: bitemyapp: 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:18 bitemyapp: Glenjamin: trying to give me nightmares eh?

19:18 seangrove: it was way too fat.

19:18 seangrove: I'd like something like that, but way more lightweight and componentized.

19:18 seangrove: bitemyapp: Only for the time.

19:18 Glenjamin: in theory we have better primitives now

19:18 bitemyapp: no it's still really bad by today's standards.

19:18 Glenjamin: so it wouldn't be as fat today

19:18 seangrove: bitemyapp: What Glenjamin said.

19:18 bitemyapp: seangrove: I've used cappuccino and sproutcore based applications recently, they make my retina macbook pro overheat.

19:18 Glenjamin: oh possibly.

19:18 Glenjamin: the shadow dom stuff is actually really interesting

19:19 bitemyapp: I still think the design is unsound.

19:19 hyPiRion: hey, hm

19:19 bitemyapp: I just want singular, reusable widgets.

19:19 not an all-consuming desktop toolkit

19:19 hyPiRion: ,(ns foo (:eval (println 10)))

19:19 clojurebot: 10\n

19:19 bitemyapp: aka, I don't want to emulate an OS graphical toolkit in JS.

19:19 Glenjamin: the web was build for documents, and we're now stuck with some constraints from that

19:19 hyPiRion: why am I not surprised

19:19 technomancy: hyPiRion: sandbox escape route?

19:19 dsrx: web components?

19:19 Glenjamin: s/build/built/

19:19 bitemyapp: technomancy: WHOA, good call.

19:19 mtp: the web was rebuilt for advertisements about 10 years ago

19:20 technomancy: $eval (ns foo (:eval (println 10)))

19:20 mtp: everyone took this long to notice

19:20 Glenjamin: ,(println 10)

19:20 clojurebot: 10\n

19:20 technomancy: mtp: that's why I only communicate over email and IRC!

19:20 mtp: technomancy, :)

19:20 AimHere: Contrariwise, what was about the time that browsers helped users shut ads out

19:20 *that was

19:20 seangrove: haha, suddenly everyone goes crazy with eval

19:20 Glenjamin: what can't you normally do in a sandbox?

19:20 mtp: when was that ever a time?

19:20 bitemyapp: Glenjamin: networking

19:20 hyPiRion: technomancy: apparently, although there probably are other ways to bypass it

19:20 seangrove: ,(def x 10)

19:20 clojurebot: #<Exception java.lang.Exception: SANBOX DENIED>

19:21 AimHere: SANBOX?

19:21 technomancy: hyPiRion: on clojurebot, sure. how about lazybot?

19:21 seangrove: ,(ns foo (:eval (def x 10))) x

19:21 clojurebot: #<Exception java.lang.Exception: SANBOX DENIED>

19:21 bitemyapp: ,(ns foo (:eval (def x 10)))

19:21 clojurebot: #<Exception java.lang.Exception: SANBOX DENIED>

19:21 Glenjamin: ,(ns foo (:eval (def x 10)))

19:21 clojurebot: #<Exception java.lang.Exception: SANBOX DENIED>

19:21 bitemyapp: ,x

19:21 clojurebot: #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: x in this context, compiling:(NO_SOURCE_PATH:0:0)>

19:21 hyPiRion: technomancy: is ns allowed there?

19:21 technomancy: no idea

19:21 Glenjamin: seems to be save

19:21 bitemyapp: nuts.

19:21 Glenjamin: safe even

19:21 hyPiRion: &(ns foo (:eval (println 'hello)))

19:21 lazybot: java.lang.SecurityException: You tripped the alarm! class clojure.lang.Var is bad!

19:21 seangrove: ,(ns foo (:eval '(def x 10))) x

19:21 clojurebot: #<Exception java.lang.Exception: SANBOX DENIED>

19:22 bitemyapp: "sanbox"

19:22 seangrove: Well, glad to see sanbox survives to see another day

19:22 hyPiRion: technomancy: oh right, I think clojail is doing post-macroexpand checks

19:22 technomancy: of course

19:23 blr: just imagine clojurebot has a southern accent, then it makes sense.

19:24 technomancy: Raynes is laughing; "Those fools thought they could defeat me"

19:25 blr: anyone live, or have lived in north carolina? is it a nice state?

19:26 lgs32a: evening everyone

19:26 i have a question that i have often asked myself

19:26 seangrove: blr: Flew through the airport recently. Nothing particularly notable about it.

19:26 ibdknox: blr: depends very much on where you are

19:26 bitemyapp: blr: depends on what you're into. You're not going to get a deeply urban experience out of it.

19:26 technomancy: the first three conjes were in north carolina

19:26 lgs32a: when is it more idiomatic to use when vs if

19:26 bitemyapp: blr: if you like low cost of living, access to the outdoors, home ownership, etc it's a great place to live.

19:26 technomancy: lgs32a: I'm glad you asked!

19:26 bitemyapp: if you like super-dense cities, not so much.

19:26 blr: well, currently I'm in New Zealand, but the family is thinking about moving to the states

19:27 bitemyapp: ~when

19:27 clojurebot: Cool story bro.

19:27 technomancy: lgs32a: when has an implicit do, so it signals to the reader that side effects are involved.

19:27 bitemyapp: ~whentousewhen

19:27 clojurebot: excusez-moi

19:27 lgs32a: because, in traditional lisp, you use when for side-effects

19:27 yes exactly

19:27 hyPiRion: how was the venue compared to the one in North Carolina?

19:27 technomancy: lgs32a: exactly! but many clojure people do not know this, sadly.

19:27 ibdknox: blr: it's not a progressive place at all, it's pretty conservative

19:27 seangrove: lgs32a: Don't listen to technomancy, he blasphemes.

19:27 technomancy: it is our job to educate them

19:27 lgs32a: so because i often see this attitude in clojure: there is no else-clause, so lets use when

19:27 bitemyapp: wat.

19:27 hiredman: the n. carolina venue tended to feel like a ghost town, so it was like the whole place was dedicated to the conj

19:28 blr: ibdknox: yeah, I'm kind of prepared for that... NZ is pretty liberal

19:28 technomancy: protip: if you're less concerned about side-effects than CLers, you should reconsider your opinions

19:28 bitemyapp: I personally wouldn't mind living in NC, but I hate cities.

19:28 Glenjamin: ,(doc when)

19:28 clojurebot: "([test & body]); Evaluates test. If logical true, evaluates body in an implicit do."

19:28 hiredman: "how do these resturants stay open? no one is here but people from the conj?"

19:28 lgs32a: and then i just read this article: https://metaphysicaldeveloper.wordpress.com/2013/11/18/idiomatic-clojure-with-lighttable/

19:28 Glenjamin: the docs could be more obvious

19:28 bitemyapp: hiredman: low cost of living and doing business :P

19:28 Glenjamin: "use to trigger side effects"

19:28 technomancy: lgs32a: kibit is wrong =(

19:29 lgs32a: and i wondered - wow so it must be different in clj

19:29 yea

19:29 Glenjamin: i admit i did pick it for the no-else-clause once, but weave jester reviewed and told me why

19:29 hyPiRion: lgs32a: yeah, that's not idiomatic use of `when`from my perspective

19:29 lgs32a: thanks for clearing that up

19:29 Glenjamin: so i'm now enlightened on the subject

19:29 technomancy: lgs32a: https://github.com/jonase/kibit/issues/2 <- basically wontfix'd =(

19:29 Glenjamin: in that example kibit is collapsing the do()

19:30 ibdknox: blr: 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:30 blr: ibdknox: I play banjo, so I'm hoping that will ingratiate me with the natives

19:30 lgs32a: technomance: interesting

19:30 technomancy: interesting

19:31 bitemyapp: blr: southern people are friendly in my experience

19:31 technomancy: lgs32a: 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:31 swarthy: blr: 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:31 bitemyapp: it's only liberals from the city intentionally looking to pick a an ideological fight that seems to get anybody's hackles raised.

19:31 but OTOH, most southerners I've interacted with were in the larger cities.

19:31 I haven't been in the boonies much.

19:31 except for in Ohio.

19:32 blr: the humidity is pretty killer in the summer if you don't like heat.

19:32 blr: thanks for the comments, glad to hear they are mostly positive

19:32 bitemyapp: blr: I'm a relatively liberal person and would pick NC as a possible place to live once I can escape the bay area.

19:32 seangrove: technomancy: Heretics and blasphemers, I like the cool-headed framing of the issue :)

19:32 blr: yeah I think I would go spare living in SF

19:32 or anywhere in the valley

19:33 bitemyapp: blr: I can't wait to leave and buy a house.

19:33 lgs32a: Does anybody know when the conj talks will be on YT?

19:33 technomancy: seangrove: speaking of getting hackles raised

19:33 bitemyapp: blr: I'm thinking mostly of moving to Austin, Seattle, or Portland at present.

19:34 blr: portland seems a lot like NZ, I could probably live there quite happily

19:34 bitemyapp: blr: so probably not NC, but NC I would be willing to consider if the aforementioned weren't so awesome :)

19:34 blr: Probably so.

19:34 technomancy: portland is great

19:34 * nDuff is in the process of departing Austin, but would generally recommend it to folks who can deal with the weather.

19:34 blr: there don't seem to be many software jobs though

19:34 technomancy: very sad that clojure/west won't be there for 2014

19:34 nDuff: Low cost of living, no shortage of work.

19:34 seangrove: technomancy: I was hoping it would be. Do you know where it'll be instead?

19:35 bitemyapp: nDuff: thanks, I'm trying to collect data.

19:35 technomancy: blr: per capita there are a lot I think

19:35 ibdknox: Seattle is by far my favorite place to live

19:35 bitemyapp: nDuff: why are you leaving Austin and where are you headed?

19:35 seangrove: Even Seattle would be acceptable.

19:35 bitemyapp: ibdknox: what'd you like about it?

19:35 blr: technomancy: in portland? interesting

19:35 technomancy: seangrove: they said at the conj it was going to be SF. not sure if that means in the city or in the area.

19:35 bitemyapp: well I have no excuse not to go now.

19:35 hiredman: ibdknox: the smallest big city

19:35 technomancy: blr: intel is headquartered outside portland

19:35 bitemyapp: too bad it'll be in SF though.

19:35 nDuff: bitemyapp: headed to Chicago. Austin doesn't work for my wife for medical reasons.

19:36 seangrove: technomancy: 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:36 ibdknox: bitemyapp: very smart people, sane management, the greenest place I've ever been, amazing outdoor activities, it is incredibly beautiful, *great* food

19:36 bitemyapp: nDuff: good luck in Chicago, sadly there are some particulars to CHI that make it an absolute no-go.

19:36 technomancy: SF means a better water supply than san jose, which is relevant to my interests

19:36 nDuff: bitemyapp: (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:36 Apage43: where does SF water come from?

19:36 bitemyapp: ibdknox: I'm rather fond of forests and trees, that's the main thing counting against Austin at present.

19:36 technomancy: (my interests being brewing coffee)

19:36 bitemyapp: but Seattle is already getting VERY expensive.

19:37 house prices are headed north of $500k

19:37 ibdknox: bitemyapp: don't live directly in the city

19:37 Apage43: man I would like to see a tree

19:37 nDuff: bitemyapp: ...may I ask?

19:37 ibdknox: bitemyapp: from my apartment in redmond I was 1.5 hours from over 1500 different hikes

19:37 hyPiRion: technomancy: man, you and your coffee

19:37 bitemyapp: nDuff: 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:37 nDuff: Chicago is absolute-no on that front.

19:37 technomancy: bitemyapp: in another, um, 10 years we'll have light rail to the north of the city

19:37 nDuff: bitemyapp: Ahh. Gotcha.

19:38 bitemyapp: You'll find no shortage of politically like-minded folks in Austin.

19:38 hiredman: seattle 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:38 bitemyapp: nDuff: 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:38 nDuff: uhm, not quite. Texas is conservative, not left-libertarian. We'll only agree on guns.

19:38 hiredman: technomancy is always an optimist

19:38 nDuff: bitemyapp: Austin isn't Texas.

19:38 blr: from what I've heard Austin is a bit different though

19:38 bitemyapp: I'd emphasize the *LEFT* part. It's not the same as the typical anarcho-capitalist libertarians you run into.

19:38 Apage43: bitemyapp: I thought I was more left than I was, then I moved to the bay area

19:39 technomancy: hiredman: heh yeah.. theoretically

19:39 bitemyapp: nDuff: oh I suppose so.

19:39 Apage43: yeah I feel pretty conservative here.

19:39 weird feeling.

19:39 Apage43: I believe in property rights, the bill of rights, sane budgets, and the rule of law. I'm crazy like that.

19:39 Glenjamin: pfft, isn't all american politics basically right anyway? </troll>

19:40 nDuff: bitemyapp: ...see the notation in http://dieselsweeties.com/archive.php?s=1436

19:40 Apage43: I just want some GMO food to eat ;)

19:40 nDuff: bitemyapp: ...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:40 bitemyapp: nDuff: sounds amenable to me then.

19:41 I don't necessarily need to be surrounded by like minded people though, I just need my property and rights left alone.

19:41 * Apage43 grew up in east tx and that was warm enough

19:41 nDuff: bitemyapp: *shrug*. You might disagree with the city council from time to time, then, but... *shrug*.

19:42 bitemyapp: nDuff: 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:42 blr: show me a town where people speak favourably of their city council ... :P

19:42 bitemyapp: nDuff: which is to say, they're ignoring state preemption.

19:42 and they're getting away with it because picking on gun owners is free points in SF.

19:42 Glenjamin: anyway, i'm calling it a night

19:42 thanks all for indulging my versioned-modules fantasy

19:43 bitemyapp: nDuff: are you headed to a Clojure gig in Chicago?

19:43 `cbp`: w/b

19:43 Glenjamin: cheers

19:43 Glenjamin: technomancy: am i right in thinking using (metaverse/require) outside of (ns) should "just work" ?

19:43 `cbp: bitemyapp: whoops that's just my other computer waking up :S

19:43 nDuff: bitemyapp: going to start looking actively for interesting ones starting at the beginning of December.

19:44 technomancy: Glenjamin: I think so

19:44 bitemyapp: nDuff: I think Groupon is the more well known employer of Clojure users?

19:44 technomancy: it's been ... two years?

19:44 nDuff: bitemyapp: Not happening.

19:44 bitemyapp: haha, okay. :)

19:44 nDuff: bitemyapp: 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:45 bitemyapp: nDuff: understood.

19:45 blr: think I'd rather contract hemorrhagic fever than work for an SV startup again.

19:45 nDuff: (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:46 Glenjamin: i'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:47 * nDuff tries to figure out how best to map jimple's data model into datomic; the ordered nature of instructions makes things tricky.

19:48 bitemyapp: oh yes, my old nemesis, "is older than database basis" how nice to see you.

19:48 coventry: nDuff: What are you working on? Sounds interesting.

19:48 bitemyapp: nDuff: what's the data model like?

19:50 nDuff: coventry: 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:50 coventry: just exploratory at this point.

19:52 bitemyapp: jimple is a representation of Java bytecode as typed 3-tuples.

19:54 * nDuff wanders home

19:55 benedikt: anybody here have experience in writing android applications with lein-droid, neko and clojure?

19:55 seangrove: Hrm, 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:56 bitemyapp: seangrove: use datalog!

19:56 coventry: nDuff: Huh, what do you use something like that for?

19:56 bitemyapp: coventry: nicer processing of JVM bytecode from Clojure.

19:56 seangrove: bitemyapp: Client-side? I'd like to for its composability though. Might be a good idea

19:58 Someone, please, please, create a nice core.async html widget library. Please.

19:58 I really don't want to.

19:58 blr: seangrove: but you must.

19:59 bitemyapp: seangrove: you've clearly been nominated for the job of making an async widget toolkit.

19:59 gg gl hf

19:59 Can't Tom Sawyer me into this one, I don't enjoy working in the DOM that much.

19:59 seangrove: We need a indiegogo campaign. I'd donate.

20:00 bitemyapp: I'd donate and then cringe.

20:00 `cbp: i vote for seangrove

20:01 blr: seangrove? I heard he was working on a core.async widget library

20:01 arohner: bitemyapp: Austin has trees. Not like the redwoods, but it has a fair amount of green

20:01 seangrove: bitemyapp: You know how reliable arohner is, I'd take it with a grain of salt.

20:01 arohner: :-)

20:01 bitemyapp: seangrove: why are you trying to make everyone seem unreliable? :P

20:01 first me, now arohner.

20:02 seangrove: I'd say that's a pretty select group.

20:02 bitemyapp: arohner: how does your "commute" to SF generally work? Do you visit a week at a time periodically or something?

20:02 seangrove: I am large and contain multitudes.

20:02 arohner: 2.5 weeks or so, yeah

20:02 bitemyapp: arohner: how often?

20:02 sorry for prying, was just wondering how you made it work.

20:02 arohner: it's generally 3weeks/2weeks. Hoping to get it to 2/2 next year

20:02 no worries

20:02 bitemyapp: Thanks

20:03 arohner: Our team is also > 1/3rd remote, so that makes it easier

20:03 actually, the devs are half remote

20:04 bitemyapp: arohner: planning for remoteness upfront helps a lot, yeah.

20:05 my 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:05 akurilin: bitemyapp, where are you going?

20:07 bitemyapp: akurilin: nowhere presently, which is part of the problem.

20:07 akurilin: I'm considering Austin, Seattle, and Portland right now.

20:07 akurilin: I can vouch for Seattle.

20:08 bitemyapp: Save for the handful of people I really like in the programming community here, I really strongly dislike the bay area.

20:08 akurilin: cool, what'd you like about it?

20:08 technomancy: bitemyapp: you've read gilesgoatboy's screed on it, right?

20:09 arohner: technomancy: link? this sounds relevant to my interests

20:09 technomancy: he's gone a bit off th deep end since, but this one was classic; lemme see

20:09 akurilin: bitemyapp, 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:10 bitemyapp: technomancy: link the post?

20:10 technomancy: I might've, but I can't find the post to confirm whether or not I'd read it.

20:10 akurilin: yeah I actually happen to be really into cascadian black metal.

20:10 akurilin: which are based out of washington and oregon obviously.

20:10 technomancy: clojurebot: never hate only ever destroy is http://gilesbowkett.blogspot.com/2008/05/never-hate-only-ever-destroy.html

20:10 clojurebot: Ik begrijp

20:10 technomancy: bitemyapp, arohner ^

20:10 akurilin: bitemyapp, Agalloch are our shining beacons in one those subgenres :)

20:11 bitemyapp, they're Portland specifically.

20:11 technomancy: ^ or anyone else really; highly recommended =)

20:12 bitemyapp: akurilin: yeah Agalloch is one of my favorite all-time bands.

20:12 technomancy: it's long though. not yegge-long, but a bit long

20:13 I 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:13 still a good read

20:13 blr: bitemyapp: wolves in the throne room are another good west coast band imo

20:14 bitemyapp: blr: another favorite of mine :)

20:14 akurilin: blr, bitemyapp rishloo are Tacoma-based, incredible art prog-rock if you're into that

20:14 blr: cool, don't know them, will check it out

20:14 akurilin: bitemyapp, I've also yet to have the bay area grow on me, I don't know why it's not clicking

20:15 blr: have been listening to Panopticon's Kentucky which is 'blue-grass black metal'. it makes no sense, but somehow works

20:15 akurilin: guess the $3500/1br really sours things for a normal person, in addition to how little you get from the city.

20:15 bitemyapp: akurilin: NYC was a better trade. $1500 for a 3 bedroom apartment in Astoria, Queens, 20 minute subway ride to Manhattan.

20:15 akurilin: still don't want to live in NYC though.

20:16 akurilin: bitemyapp, sounds like a steal!

20:16 blr: well, NYC has rent controlled areas.. is that the case in SF?

20:16 bitemyapp: akurilin: it was great, split the rent three ways. Programmer salary + $550 a month in rent + living in NYC == PARTY ALL THE TIIIIIME

20:16 blr: my apartment wasn't rent controlled.

20:17 blr: and SF has rent control too.

20:17 $1500 a month for a three bedroom was market rate, not rent controlled.

20:17 akurilin: bitemyapp, yeah I can't even imagine :)

20:17 bitemyapp: rent control is part of SF's problem.

20:17 blr: ah 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:17 akurilin: rent control really screws up the newcomers.

20:18 bitemyapp: blr: I definitely don't want to go back.

20:18 blr: miss the Hatian food though, dayam.

20:18 akurilin: bitemyapp, 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:19 blr: akurilin: it's a stressful environment generally, but if you're young and don't have any attachments it's fun.

20:19 personally I found taking the train every day kind of draining

20:20 amacdougall: I'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:20 akurilin: amacdougall, so if you're not big on kids, pretty much everything else falls into place?

20:21 amacdougall: Since you're in #clojure, I'm sure you won't have a problem with the rent, so yeah.

20:21 blr: yeah, it's an amazing city... but you have to like city living. That being said, upstate new york is beautiful

20:21 amacdougall: It's worth trying.

20:22 technomancy: eh; just because you *can* afford something doesn't mean doing so fits into your values.

20:26 coventry: Yeah, upstate NY is beautiful. Not a hotbed of tech development, though.

20:26 dsrx: there are a few defense contractors around buffalo

20:27 protecting us from the canadian menace across lake ontario, no doubt

20:27 blr: those shifty canadians...

20:28 coventry: There's a few startups and a bit of web development in Ithaca, too.

20:32 bbloom: people don't realize just how friggin big NY is

20:34 swarthy: bbloom: 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:35 bbloom: swarthy: yeah, sooo manhattan is only 22ish square miles

20:35 amacdougall: I'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:36 bbloom: swarthy: it feels huge b/c it's so dense, but NY *state* is genuinely quite huge

20:36 also people are like "why do they call it long island? how long is it"

20:37 mikerod: ,(apply merge-with concat (for [i (range 4000)] {:a [i]}))

20:37 clojurebot: #<StackOverflowError java.lang.StackOverflowError>

20:37 swarthy: bbloom: yeah that same friend is from Long Island, he complains about that same comment.

20:37 mikerod: :(

20:37 bbloom: it's like a 3 hour drive long :-P

20:37 mikerod: I just learned about the StackOverflowing potential for lazy seqs today

20:38 merge-with concat is what got me

20:38 bbloom: swarthy: "If it were a U.S. state, Long Island would rank 13th in population (after Virginia) and first in population density." -- Wikipedia

20:38 swarthy: bbloom: and that is why he left lol.

20:40 amacdougall: So, 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:41 blr: amacdougall: cut off after "compiling only certain"

20:41 amacdougall: ...only certain namespaces into a file? Am I missing something fundamental?

20:41 (didn't realize the message limit was so short, but maybe it's my client)

20:42 Hm, maybe this will help: https://github.com/emezeske/lein-cljsbuild/wiki/Troubleshooting-build-issues

20:42 hiredman: amacdougall: 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:43 which, in this case, you would move all your side effecting dom stuff out of the top level and in to functions

20:43 amacdougall: hiredman: 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:44 hiredman: My stuff is already namespaced, but maybe not as strictly as necessary.

20:45 Thanks for the tip!

20:48 bitemyapp: what is good that has come from Long Island?

20:48 serious question.

20:48 amacdougall: Oysters?

20:48 bitemyapp: not really specific to LI

20:48 arohner: bitemyapp: both of my parents :-p

20:48 amacdougall: Bluepoint Toasted Lager. Aesop Rock, if you're into him.

20:49 bitemyapp: arohner: they don't have that accent do they?

20:49 bbloom: me.

20:49 egosum: Gatsby

20:49 arohner: not anymore

20:50 bitemyapp: When I lived in NYC I used to get really annoyed when people assumed the LI accent was from NYC

20:50 and would then perform the accent to my face when asking me (NYC resident) why I didn't have that accent.

20:51 arohner: I grew up in Texas. You'd be amazed the number of times I got the "but why don't you have an accent?"

20:51 bitemyapp: Glenjamin has inspired me to write the scariest reduces in Clojure-land/

20:51 bbloom: arohner: where in texas?

20:52 bitemyapp: arohner: that's one nice thing about being from ohio, we're actually the standard for neutral newscaster American English.

20:52 arohner: bbloom: Dallas originally. now I'm in Austin (half the time)

20:52 bitemyapp: nobody expects anything of us, unless it's Southeastern Ohio.

20:52 in which case, wash is "worsh"

20:52 bbloom: arohner: 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:52 :-P

20:53 bitemyapp: calling Austin blue does California a serious injustice

20:53 SF Bay Area is bluer than a suffocating smurf.

20:55 arohner: bbloom: 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:55 he'd switch accents in the middle of a sentence

20:55 bbloom: heh

20:56 seangrove: bitemyapp: Just SF and some part of LA though, the rest is overwhelmingly red

20:56 Typical civiliation vs rural divide.

20:56 bitemyapp: arohner: that's pretty funny

20:57 blr: seangrove: SD is fairly conservative eh?

20:57 bitemyapp: seangrove: except for all the LA suburbs, Marin County, Humboldt, Sacramento....

20:57 arohner: seangrove: 'rest' by area, not by population

20:57 http://www.270towin.com/states/California

20:57 bitemyapp: seangrove: Santa Cruz...

20:58 seangrove: http://www.politico.com/2012-election/results/president/california/

20:58 seangrove: bitemyapp: Pockets of small areas and relatively large populations

20:58 bitemyapp: yeah 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:58 seangrove: I just meant that 1-2 hours in any direction and you'll be in a red district

20:59 bitemyapp: No, it just makes the socially pleasant areas very limited.

20:59 bitemyapp: how people vote doesn't make them socially pleasant or unpleasant, in my humble opinion.

20:59 unless you really thrive on political conversation. Then yes, that would be problematic if you thrive on political conversation where nobody disagrees with you.

21:00 seangrove: bitemyapp: 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:00 bitemyapp: I 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:00 seangrove: I guess? I run into plenty of ho-hum folk in the bay area.

21:00 They represent the majority of the population definitionally. They have to. We can't all be super-motivated hacker-preneurs.

21:00 seangrove: bitemyapp: Sure, and it's still beating the averages.

21:01 Bronsa: seangrove: out of curiosity, did you found out what caused that AOT crash involving tools.reader you were telling me ~1 month ago?

21:01 bitemyapp: Learning 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:01 seangrove: Bronsa: Including austin in the profile did it

21:01 Bronsa: https://github.com/cemerick/austin/issues/23

21:02 bitemyapp: I grew up in a small/rural town as well, didn't particularly enjoy it, and still don't care to go back.

21:02 bitemyapp: I don't either, but the problem for me wasn't the people that *were* there.

21:02 It was the people that *weren't*

21:03 seangrove: Hrm, could be.

21:03 bitemyapp: I 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:03 so 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:04 arohner: bitemyapp: that might be the most positive thing I think I've ever heard you say :-)

21:04 bitemyapp: which I had to do, because I was out in the boonies and my only link to the outside world was IRC.

21:04 arohner: bitemyapp: yes, damning with faint praise :-)

21:04 bitemyapp: arohner: the happiest memories of my life had zero hackers in the room.

21:04 coventry: Hey, bitemyapp said nice things about troncle the other day. :-)

21:04 bitemyapp: arohner: the *Very* happiest memories were card games and dinner with friends and family. I was the only programmer present.

21:05 I 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:05 I perfectly happy being around "normal" people.

21:05 no intent to damn with faint praise. it's just differentiated needs.

21:06 case 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:06 I want the people in my town/area to be nice. That's it.

21:07 Bronsa: seangrove: so it's not tools.reader's fault after all, I'm feeling better now :)

21:07 seangrove: Bronsa: Maybe, maybe ;)

21:07 lgs32a: i 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:07 bitemyapp: having to load Austin to prevent an exception in tools.reader is kinda strange.

21:07 lgs32a: ztellman?

21:07 lgs32a: bitemyapp: i think that was it. let me see

21:07 bitemyapp: if it's unusual and a little performance oriented it's probably a ztellman library.

21:08 if it's a bad idea it's definitely a ztellman library.

21:08 lgs32a: https://github.com/ztellman/immutable-bitset

21:09 lgs32a: bitemyapp: awesome. truely awesome. thanks

21:09 bitemyapp: lgs32a: I'm serious though, anytime you want something questionable/weird/performance-oriented, check ztellman's github first.

21:09 Bronsa: bitemyapp: 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:10 bitemyapp: Bronsa: egads. is he smashing the namespace?

21:10 amacdougall: Bah... 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:11 So 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:12 I 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:12 Bronsa: bitemyapp: 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:12 bitemyapp: amacdougall: write the black box functional tests and call it good enough.

21:12 amacdougall: Wise advice! :)

21:13 bitemyapp: java.util.concurrent.ExecutionException: java.lang.AssertionError: Assert failed: (zero? (.getE d)) ;; clearly a sign to just call it a night.

21:13 blr: amacdougall: I've enjoyed using Kerodon for integration tests

21:14 bitemyapp: amacdougall: anecdotally, I've heard dommy is superior to domina.

21:14 amacdougall: which may or may not indirectly solve your problems. I've also heard good things about Kerodon.

21:14 seangrove: dommy > domina right?

21:14 seangrove: bitemyapp: For me, without a doubt.

21:15 blr: dommy has nicer event handling imo

21:20 rads: I might have found a bug in core.async: http://cljsfiddle.net/fiddle/rads.close-pipe

21:21 when you (pipe c1 c2), c2 should get closed at the same time as c1, but in this example it doesn't get closed

21:21 when you run the example, it logs 42 to console

21:22 arohner: can slingshot match on a nested map?

21:23 (catch [:foo true :bar {:baz true}] t) ?

21:23 using kv destructuring, I know about fns and other options

21:25 hiredman: arohner: slingshot must do a = on the key

21:26 arohner: hiredman: ty

21:26 catch (-> % ...) t isn't bad at all

21:26 hiredman: not really a match per se

21:27 arohner: supporting get-in rather than get might be interesting

21:27 (catch [:foo true [:bar :baz] true] t...

21:27 hrm, maybe not

21:27 that's a little gnarly

21:30 bitemyapp: arohner: if you wanted to Cali that up a bit, you could even say it was "gnar-gnar"

21:31 TEttinger: bitemyapp, remember the carlyfornia site for carly fiorina's governer bid?

21:33 bitemyapp: TEttinger: no, I try to not be stateful.

21:36 zomg tests passing

21:36 TEttinger: ah, it was a really poorly-thought-out webpage for her campaign. turns out it was for senator

21:36 bitemyapp: going to go jump off the bay bridge now

21:36 TEttinger: bitemyapp, don't forget your water wings

21:37 bitemyapp: TEttinger: the lack of a type system is starting to make me really mad.

21:37 TEttinger: have you started submitting lengthy patches to core.typed ?

21:37 bitemyapp: I spent a third or maybe even a half of my entire workday today to the accumulated type errors.

21:37 TEttinger: the verbosity of core.typed is sanity-destroying right now.

21:37 I'm hoping/waiting for it to become less severe.

21:40 TEttinger: perhaps 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:41 blr: huh, this bob martin presentation about the 'last pl' is interesting, suggesting that major innovations are primarily about restriction

21:42 resonates with what rhickey was saying about instruments in a way

21:45 TEttinger: blr, 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:46 seangrove: I should probably just build this all on top of bootstrap 3's components to start with. Fastest way to "bootstrap" it...

21:46 blr: TEttinger: and the restrictions around mutable state are a big one

21:46 seangrove: in the end, everyone resigns themself to bootstrap

21:46 seangrove: But goddamn, the in-place mutation...

21:46 Wasn't pedestal supposed to come out with some ui components?

21:47 blr: seangrove: I've been waiting to hear more about pedestal 0.3 - was there anything at the conj about the roadmap?

21:48 seangrove: blr: Seemed like they were hoping to get something out, but probably didn't quite make it looking at their twitter

21:48 TEttinger: I 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:48 blr: ah okay, rkneufeld mentioned 0.3 will potentially make 'crud' easier, which while not exactly thrilling, is pragmatic

21:53 seangrove: Side-effecting functions everywhere.

21:54 "Cannon to right of them, Cannon to left of them, into the valley of Death he charged..."

21:59 coventry: The 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:03 xeqi: coventry: 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:04 and apparently I can't add

22:04 hiredman: two keynotes?

22:05 xeqi: hiredman: eh, I'd put Hand Tools and Moon in that general category

22:13 jeremyheiler: though, i'd say harmonikit doesn't really count since it's a hobby non-work project

22:16 then again, the "keynotes" weren't very work specific either. meh. lol

22:16 but. point stands, gotta let others talk

22:18 bitemyapp: TEttinger: I prefer Clojure DSLs. They're usually just data.

22:18 data > DSL

22:18 TEttinger: yes, me too

22:19 bitemyapp: TEttinger: Haskell has a similar attitude, DSLs are usually just type-safe interpreters that take data.

22:23 bbloom: bitemyapp: i write so many things that look like interpreters now

22:23 bitemyapp: have my code can be summarized as (->> input linearize (reduce init step))

22:24 s/have/half

22:24 bitemyapp: bbloom: you write weird things though.

22:25 majyk: is 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:26 bbloom: bitemyapp: true story

22:26 bitemyapp: majyk: don't use ClojureCLR and expect anything to work.

22:26 ~ClojureCLR is don't use ClojureCLR and expect anything to work out of the box.

22:26 clojurebot: Ik begrijp

22:26 majyk: haha

22:26 bitemyapp: ~ClojureCLR

22:26 clojurebot: ClojureCLR is don't use ClojureCLR and expect anything to work out of the box.

22:26 bitemyapp: ~botsnack

22:26 clojurebot: Thanks, but I prefer chocolate

22:29 valmon: In clojurescript if you need to use a counter is an atom the correct way of doing it?

22:31 bitemyapp: ucb: it's time.

22:31 ucb: http://www.youtube.com/watch?v=SFY0hYEqQQw

22:33 valmon: I'm trying to replicate the following javascript code: https://gist.github.com/4290d8cfccb9fe5258be

22:38 bbloom: valmon: are you using jquery or a wrapper in cljs?

22:39 https://github.com/ibdknox/jayq for example ?

22:39 valmon: I'd like to use domina to do this

22:39 seangrove: get/update-in are just wonderful, so happy to have them in cljs

22:39 bbloom: valmon: ok domina works too

22:40 valmon: to do something like .children().clone().slice(...

22:40 you'd want something like the -> macro

22:40 (doc ->)

22:40 clojurebot: "([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:40 bbloom: and beyond that, it's probably a pretty straight forward port

22:40 each -> doseq

22:40 etc

22:43 valmon: yea 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:43 * valmon is no clojure expert

22:43 valmon: though thinking about it now I should be able to use let

22:44 bbloom: valmon: it's somewhat unfortunate that the DOM ruins some clojure fun magic happy times by being so imperative

22:45 valmon: yea

22:45 bbloom: for example clojure.core/map is lazy, so it's really different than forEach for jquery's each: so you have to use doseq

22:45 valmon: awww it never would have worked anyway?

22:46 well im glad I asked

22:51 seangrove: so, so, so goddamn imperative.

22:52 Welp, time to drink and try to think of ways to push the imperative-ness out to the shell.

23:08 bitemyapp: seangone: stateful code gettin' ya down?

23:08 ah, he left. bugger.

23:10 amalloy: by the way, technomancy, http://java-performance.info/changes-to-string-java-1-7-0_06/ will make you happy

23:22 rads: hey 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:43 hammerandtongs: great idea rads

23:43 no alt! ?

23:44 rads: oh, alts is in there. just forgot to list it in the README. thanks :)

23:45 hammerandtongs: :D

23:45 go select is one of my favorites things

23:45 excellent

23:46 rads: there we go, fixed

23:47 the example in the readme uses alts

23:48 no alt! because it's a macro :(

23:49 though if you want to go all the way, sweet.js support might be possible in the future

Logging service provided by n01se.net