#clojure log - Mar 15 2014

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

0:00 seancorfield: can you refheap the code you are trying?

0:02 ah, you mean when you require core.memoize, i gather? :) just trying it myself now

0:08 danielszmulewicz: seancorfield: yes, when loading the file that requires it. I suspect this is the culprit: https://github.com/zcaudate/vinyasa/issues/3

0:13 seancorfield: Yes, I confirm this is the issue. Tricky one. I love Vinyasa, but this needs to be fixed.

0:15 seancorfield: I hit the problem with lein try... it pulls in an older version of core.cache (that doesn't have the through function)

0:18 danielszmulewicz: seancorfield: interesting.

0:19 seancorfield: It's not the memoize library that's guilty, it has the correct dependency. Leiningen itself has a dependency on a previous cache version, if I understood anything from the discussions.

0:20 seancorfield: lein repl is fine in a project with core.memoize as a dep

0:20 danielszmulewicz: seancorfield: Good. So lein try maybe?

0:20 seancorfield: vinyasa depends on pomegranate so that may be the path of the stale core.cache? i bet lein try depends on it too

0:21 danielszmulewicz: lein try requires an old version of leiningen [leiningen "2.1.3"]

0:21 seancorfield: ah yes...

0:21 danielszmulewicz: seancorfield: that's the trouble

0:24 seancorfield: First time I've run into a conflict with lein try :)

0:24 danielszmulewicz: seancorfield: Me too, I mean with Vinyasa. But I still don't understand, because in Vinyasa I have leiningen set to the latest version.

0:25 seancorfield: use lein deps :tree to see what's pulling in the old core.cache

0:25 danielszmulewicz: I did. Couldn't find it.

0:25 seancorfield: and then you can add :exclusions to prevent it

0:25 oh

0:26 where is your vinyasa dependency? in your project or globally?

0:26 danielszmulewicz: globally

0:26 seancorfield: that's probably why it doesn't show up in lein deps?

0:27 danielszmulewicz: seancorfield: exactly.

0:27 seancorfield: I did fix the problem eventually, by disabling some Vinyasa functionality.

0:27 seancorfield: put it in a local project and run lein deps :tree then go back and add exclusions to the global dependency?

0:27 danielszmulewicz: and removing the hard-wired version of Leiningen that Vinyasa demands

0:29 seancorfield: Yeah, I would do that if I hadn't found a workaround. I did leave a message on the github issue notifying about the situation. Maybe the author of Vinyasa will find a solution.

0:30 seancorfield: Thanks a lot for investigating along :-)

0:31 (inc seancorfield)

0:31 lazybot: ⇒ 11

0:35 seancorfield: leiningen depends on stencil and that depends on core.cache 0.6.2

0:35 specifically stencil 0.3.2

0:35 there's an updated stencil (0.3.3) that depends on core.cache 0.6.3

0:36 so you could add :exclusions [stencil] for leiningen and then depend on 0.3.3 explicitly i guess...

0:36 or petition technomancy to update his dependency :)

0:38 Anyways, glad you have a workaround danielszmulewicz

1:12 ddellacosta: akhudek: ping

1:12 akhudek: ddellacosta: pong

1:13 labor_day: ls

1:13 lazybot: bin data dev home src tmp usr var

1:35 danielszmulewicz: seancorfield: Kudos for nailing it down to the exact dependency problem.

4:56 tristanStrange: hey all.. just getting started with clojure and am having some issues with paredit.vim

4:57 none of the commands that have the leader prefix work

4:57 doing my head in. is there something ineed to do to enable them

4:58 doh! should probs be asking this in vim land....

5:45 phao: Hey... is it possible to download the docs, for offline viewing?

5:45 cYmen: Good morning.

6:02 john2x: phao: check out Dash, if you're on OS X.

6:02 phao: I'm on windows, hehe

6:03 clgv: phao: poor guy ;)

6:04 phao: did the leiningen install go smooth for you?

6:04 phao: Hehe. I used to use linux, but I never did anything which bothered me on windows.

6:04 What bugs me most is drivers sometimes, I had some bsod I'm almost sure because of my nvidia driver.

6:04 "leiningen" ?

6:05 clgv: oh so you are pretty new to clojure, right?

6:05 phao: yes.

6:05 clgv: http://leiningen.org/

6:06 cYmen: phao: Could you do me a favor an keep a simple diary of what you are doing any your discoveries?

6:06 s/any/and

6:06 phao: ... ?

6:06 that's weird, I don't think I understand it. WHat do you mean?

6:07 cYmen: It might be useful to know what kinds of things you come across and what you learn from them for other beginners.

6:10 phao: I see.

6:10 cYmen: It's not really important or anything.

6:11 But if you wouldn't mind keeping some notes in a textfile or whatever I would be interested. :)

6:12 phao: I tend to write down some stuff I find interesting. But not always.

6:12 I remember making notes of my whole reading of K&R2, but that was a long time ago.

6:14 cYmen, are you new to clojure?

6:15 cYmen: Pretty much, started a few weeks ago but haven't put in a lot of time.

6:15 phao: And, have you done some lisp before?

6:15 cYmen: The language is pretty cool but the ecosystem is still confusing as hell.

6:16 AdmiralBumbleBee: cYmen: what do you find confusing?

6:16 cYmen: Yeah, I already knew a little common lisp and scheme and haskell.

6:16 phao: =)

6:17 clgv: cYmen: what's confusing with the "ecosystem"? you mean you do not know what libraries exist for what tasks, or something similar?

6:17 cYmen: Well, that and if I know them or people recommend them I have yet another framework to learn.

6:18 clgv: but that's the same as in any other language ;)

6:18 AdmiralBumbleBee: how is that different from any other language?

6:18 cYmen: It's the little things, too. Like, what happens when I start a repl in emacs? What happens when I run (start-server)? Does it run in a new thread? How can I access it? Change some of the code?

6:18 clgv: you'll always have to learn the libraries for some specialized tasks no matter what language you use ;)

6:18 phao: cYmen, that lei... something program has a windows installer which does all the work for you.

6:19 at least it seems to, http://leiningen-win-installer.djpowell.net/

6:19 clojurebot: Titim gan éirí ort.

6:19 tristanStrange: hey all... I'm looking at creating images pixel by pixel in clojure.

6:19 phao: I had to run it on the command line to make it work. I'm not sure why.

6:19 clgv: phao: yeah it has now since a year or so

6:19 tristanStrange: i'm using imagez but it feels a bitslow

6:19 phao: I see.

6:19 cYmen: clgv, AdmiralBumbleBee Yes, it is the same in other languages but it's still not easy and the documentation isn't always great when it comes to communicating the basics.

6:20 clgv: tristanStrange: did you check with (set! *warn-on-reflection* true) and recompile your namespace?

6:20 tristanStrange: can anyone recommend anything quicker? ideally i'd like to update some callback function and have the image update imediately

6:20 clgv: cYmen: well, I always hesitate to use libraries with poor documentation

6:20 tristanStrange: clgv ... no, i've not heard of this

6:21 whats the idea with this? currently i'm running a session via lein repl (in vim)

6:21 clgv: tristanStrange: since there are probably java classes involved it is likely that bad performs comes from reflection

6:21 phao: Anyone here using clojurescript could tell me if, given I have a valid clojurescript program, then clojurescript tools will generate js which runs on all current browsers?

6:21 clgv: *bad performance

6:22 tristanStrange: that's the only hint I can give without seeing your code ;)

6:30 cYmen: In emacs, is there any way to jump to a clojure function under point?

6:31 Pate_: I'm struggling to connect to an nREPL running inside a Docker container. I've exposed port 7888 that "lein repl :headless :port 7888" is running on. The message I get is "Connecting to nREPL at, ConnectException Connection refused".

6:31 clgv: cYmen: probably - but since I do not use emacs I can only suggest to search the docs of whatever clojure integration you use

6:31 cYmen: clgv: What do you use?

6:31 clgv: cYmen: Counterclockwise

6:31 cYmen: That's eclipse, right?

6:32 clgv: yes

6:32 Pate_: To be more specific, I'm trying to connect from one docker container to another linked container.

6:33 clgv: Pate_: if the IP above is correct for adressing the container thats probably more a technical issues of that container stuff you use

6:36 Pate_: hmm, I'm able to connect up dockers for other services, e.g. amqp.

6:36 could it be an ubuntu firewall thing, or a port limitation?

6:37 clgv: I dont think there is any restrictive firewall on ubuntu except you configured it yourself

6:38 Pate_: you could try the connection via telnet or curl. I think there is documentation about "talking manually to nrepl"

6:38 tristanStrange: thanks cljb.... i've put :warn-on-reflection true in my project.clj... what will that actually do?unfortunately its not sped things up yet.

6:39 if you could take a peek at the code it'd be much appreciated

6:39 the slow bit is the dotimes... as you'd imagine

6:39 https://gist.github.com/triss/1a83c8f130f0003a337c

6:39 clgv: Pate_: https://github.com/clojure/tools.nrepl#transports-

6:40 Pate_: ok, if I try to connect to a different port where no repl is running on, I get the same "Connection refused" error, so I'm assuming it's not punching through to the running nREPL.

6:41 clgv: tristanStrange: line 24 is slow because clojure does not know that "pixels" is an array. you have to hint ^ints or ^longs or whatever applies

6:42 Pate_: afaik you'll always get connection refused when no process is listening on that port

6:43 tristanStrange: for maximum speed you'll also need to use primitive functions.

6:44 tristanStrange: https://www.assembla.com/spaces/clojure/wiki/Enhanced_Primitive_Support

6:44 lazybot: Assembla is deprecated. Use http://dev.clojure.org

6:44 clgv: lazybot: botsnack

6:44 lazybot: clgv: Thanks! Om nom nom!!

6:44 tristanStrange: clgv: thanks man... just getting started with this. I've got some reading to do!

6:46 cYmen: tristanStrange: What do you use to run that?

6:46 Just wondering because it has several top level forms...

6:46 tristanStrange: i'm using fireplace in vim - throwing stuff at a lein repl

6:47 top level forms?

6:47 clgv: tristanStrange: ah right for measuring performance you should add :jvm-opts ^:replace [] to project.clj

6:47 cYmen: I'm not sure that's the correct term. Basically I meant you don't have a main function just code in there. :)

6:48 clgv: cYmen: yeah he should definitely wrap the dotimes into a function

6:48 tristanStrange: heh... I've not even worked out how to write a main function yet! :)

6:49 cYmen: I know the feeling I always get them from lein and then I feel compelled to use them. ^^

6:50 clgv: tristanStrange: add (:gen-class) to your ns-form of pictures.core and then specify :main pictures.core in your project.clj

6:50 Pate_: got it working!

6:50 tristanStrange: ok. ill give it a go. what will that do?

6:51 Pate_: have to include :host when running the repl

6:51 clgv: tristanStrange: ah right. the main function you want to implement in pictures.core must eb named -main

6:51 cYmen: clgv: I copied tristan's code to a lein project what do I have to do after adding the image lib dependency so lein will actually download it?

6:52 clgv: cYmen: "lein repl" should suffice if you want to try it on the repl - otherwise the equivalent repl restart in emacs

6:52 tristanStrange: and now i can use lein run i guess?

6:52 Pate_: thx for input clgv.

6:52 clgv: tristanStrange: yes. or build an uberjar via "lein uberjar" which you can then run "java -jar ..."

6:53 cYmen: tristanStrange: psychedelic ^^

6:57 tristanStrange: hm...emacs doesn't like that you put code at the top level it reports a failure starting the repl when I close the window :)

6:58 tristanStrange: i'm using fireplace in vim

6:58 cYmen: clgv: See, it is exactly these kinds of details that are totally opaque to me.

6:58 tristanStrange: I have used that but I have no idea how it works or what the differences to emacs behavior are. ;)

6:59 tristanStrange: ah ok. so is there an issue with having my functions at the top level?

7:00 clgv: cYmen: yeah well, I only learned them as soon as I needed them via a book, a blog article or docs ;)

7:00 tristanStrange: should I be embedding that code in some larger structure... apolagies chaps i only started clojuring yesterday

7:00 clgv: cYmen: it is the same convention as in java btw. ;)

7:00 cYmen: tristanStrange: Most people use lein projects but I'm not even sure if that's a good way for getting started.

7:00 tristanStrange: and how does that relate to performance?

7:01 clgv: tristanStrange: no, defns are supposed to be toplevel

7:01 cYmen: it is an awesome way, since there is no easier method to get your dependencies ;)

7:01 cYmen: you might use an ide which hides leiningen's command line usage from you for the beginning^^

7:02 cYmen: I don't really mind command lines...

7:02 clgv: maybe lighttable or counterclockwise

7:02 cYmen: What bothers me is, that it is really easy to get started with clojure but then as soon as you want to do something you have no idea how anything actually works because it is so well automated. :)

7:02 At least that's how I feel. ^^

7:02 clgv: yeah well, if the command line interface is not the problem than there only remains the project.clj which is pretty well documented for the daily use cases

7:03 cYmen: Anyway, it just takes time to get to know stuff.

7:04 clgv: as usual :P

7:05 cYmen: Annoyingly true. :)

7:05 clgv: I'd be supprised if you knew all the .NET library from day 3 on ;)

7:05 similar with java^^

7:05 tristanStrange: so how do you chaps suggest I get started without lein?

7:05 clgv: or the C++ STL ;)

7:05 cYmen: tristanStrange: Aren't you already started? :)

7:06 clgv: tristanStrange: dont. just use an IDE that integrates that well with leininge that you only have to care to add your dependencies in the project.clj

7:06 tristanStrange: just about... but clojure/lisp is a very alien thing to me

7:06 clgv: tristanStrange: you got one of the most recent books?

7:07 tristanStrange: my usual recommendation: buy a recent book and then perform read and try cycles ;)

7:07 tristanStrange: i'm just hacking around and looking at this: http://www.creativeapplications.net/tutorials/introduction-to-clojure-part-1/

7:07 and the docs for the imagez library and preying really

7:08 but yes... i was hoping clojure would be a quick learn...

7:08 and i can see whats going on...

7:08 i'm just a touch dissapointed by performance

7:09 clgv: tristanStrange: I needed a about 4 days to get the basic but I was reading one of the books full time and trying out examples as I read

7:10 tristanStrange: yeah well image manipulation is only fast if you use primitives to avoid boxing/unboxing and if you avoid reflection

7:10 tristanStrange: you choose the wrong topic to get started ;)

7:11 cYmen: Indeed, image manipulation is usually heavily optimized and tricky to make nice.

7:11 tristanStrange: trust me to choose a tough one

7:11 phao: ANy easy way I can check the java decompiled code form the bytecode generated from compiling clojure?

7:11 cYmen: I remember asking in #haskell about image processing once and they told me to just write all the actual image processing in C and create high level functions for use from haskell. :)

7:11 tristanStrange: but it's just a case of flagging an argument's vars type... i forgot to to do that

7:12 would any of you kind sirs mind tweaking my gist such that i can see how its done?

7:14 types

7:14 clgv: tristanStrange: just go through the fibonacci example here https://www.assembla.com/spaces/clojure/wiki/Enhanced_Primitive_Support

7:14 lazybot: Assembla is deprecated. Use http://dev.clojure.org

7:15 cYmen: Well, is it or is it not deprecated?!

7:16 clgv: yeah but google still lists it above the page in dev.clojure.org

7:16 the information is the same

7:17 tristanStrange: coll thanks clgv

7:17 clgv: http://dev.clojure.org/display/design/Enhanced+Primitive+Support

7:17 better? ;)

7:17 cYmen: I don't know ask the damn bot! :D

7:18 clgv: well it's colorfull so it's better ;)

7:18 :P

7:55 Pate_: Is there a simple "IDE" for Clojure that isn't Light Table or Emacs? I found Nightcode, and am downloading it now.

7:55 xsyn: vim?

7:55 clojurebot: Gesundheit!

7:55 Pate_: something that makes it easy to evaluate forms in an nREPL

7:56 lol @ clojurebot

7:56 xsyn: ah, jammer, not sure

7:56 Pate_: xsyn: were you at any cpt user group meetups?

7:57 also found Clooj: https://github.com/arthuredelstein/clooj

8:00 clgv: Pate_: counterclockwise - pretty easy when you used it for java already ;)

8:10 cYmen: Pate_: "cpt"?

8:11 Pate_: cape town :)

9:16 xsyn: Pate_: no, i'm in jhb

9:17 Pate_: xsyn, ah.

9:34 For those who have not seen Bret Victor's talk, Inventing on Principle, boy are you in for a treat: http://vimeo.com/36579366 When I first saw that talk, I had so many a-ha moments as a dev. I think that Clojure's memory model lends itself to tools that work in this way - bringing the creator closer to their creation.

9:41 clgv: Pate_: that one came around here several times already ;)

9:41 Pate_: clgv: glad to hear it :)

9:47 clgv: Pate_: do you know that one? http://vimeo.com/71278954

9:48 Pate_: not yet, but can't wait to watch it

10:02 cYmen: hm...Bret Victor

10:02 Well, I did like his point about getting the "parts bucket on the floor".

10:03 Knowledge management should really get more focus.

10:16 arav93: Hi!

10:17 tmciver: good morning!

10:33 gfredericks: halloo

10:53 Kneiva: how do I get to use dissoc-in ?

10:57 opqdonut: Kneiva: do you want an example or what?

10:58 oh, right, it's not in core

10:58 Kneiva: what do I need to import?

11:01 arav93: Is anyone here familiar with what the main namespaces does?

11:01 ambrosebs: Kneiva: I think it's in core.incubator

11:01 https://github.com/clojure/core.incubator/blob/master/src/main/clojure/clojure/core/incubator.clj#L62

11:11 Kneiva: ambrosebs: thanks.

11:14 clgv: Kneiva: (update-in m [:k1 :k2] dissoc :k3)

11:14 martinklepsch: cemerick, I'm trying to figure out a way to get my cljs compiled and put into the uberjar when running lein uberjar in an app that also has clj sources, but I can't figure out how to do it: https://github.com/mklappstuhl/suggest/blob/master/project.clj

11:14 clojurebot: Excuse me?

11:14 martinklepsch: https://groups.google.com/forum/#!topic/clojurescript/4Y8OWUl6u_Y

11:14 cemerick, any advise?

11:15 cemerick: martinklepsch: you want the compiled .js in the jar?

11:15 martinklepsch: cemerick, yes

11:16 cemerick: martinklepsch: set :output-to to "target/classes"

11:16 martinklepsch: cemerick, I can achieve that using leinigens resource path as well, right?

11:17 maybe the problem is more that cljs does not get compiled when I run lein jar/uberhar

11:17 maybe the problem is more that cljs does not get compiled when I run lein jar/uberjar

11:19 putting it into the jar using resource-path is working, just the compilation seemingly doesn't find my cljs sources (https://www.refheap.com/59066)

11:21 cemerick: martinklepsch: oh, ok; I generally define a release or deploy alias, since releases generally require a particular set of operations that aren't necessary otherwise

11:21 martinklepsch: e.g. https://github.com/cemerick/pprng/blob/master/project.clj#L43

11:27 martinklepsch: cemerick, ah, ok, will experiment a bit witht hat

11:29 cemerick, that seems to be a good way of doing it, thanks!

11:29 cemerick, what I know wonder though is: what are hooks good for? I setup the cljsbuild hook and always get "Compiling Clojurescript" but never my actual cljs files get compiled?

11:35 steckerhalter: so trying to understand why I'm getting a stackoverflow with my atoms, this is what I found out: http://steckerhalter.co.vu/paste/stackoverflow.html

11:37 so counting the pool up there is magically fixing the bug

11:39 but just accessing it is not working... shit. I don't know, but that feels like a bug in the underlying thing

11:41 I guess I could just get rid of atoms and use def

11:41 then it would probably work

12:36 so it was the lazy-seq from `remove` that caused the problem

12:36 man, now I have spent so many hours with this bug...

13:49 martinklepsch: cemerick, I'm still trying to figure out a way to integrate cljs compilation into process of building the uberjar

13:51 cemerick, in the end I'd like to be able to deploy to heroku and uberjar triggering the cljsbuild

13:55 cemerick, using an alias doesn't really work because some env vars are missing then: https://github.com/heroku/heroku-buildpack-clojure/blob/master/bin/compile#L145

13:56 technomancy, maybe you have some other ideas how to integrate that?

14:24 seangrove: technomancy: Do you have an emacs macro to "pretty-indent" a nested clojure hashmap/vectors?

14:43 cYmen: did I accidentally ignore this technomancy everybody seems to be talking to?

14:46 TimMc: cYmen: No, he hasn't been talking.

14:46 cYmen: :)

15:12 yedi: if im writing a clojure webapp that has a cljs client, and there's some initial data i want the client's cljs to have access to when it starts running. How would I go about accomplishing that?

15:12 mdeboard: yedi: Where does the initial data live?

15:12 yedi: on the server

15:13 i don't want to explicitly have to do another ajax request when my cljs app loads

15:13 mdeboard: yedi: Then you'd need to make a request to the server to get the data, like javascript

15:13 yedi: i want to send the data to the client along with the hmtl and cljs gen js

15:13 mdeboard: If you want to *send* the data then you'd have to establish an websocket connection on startup

15:14 servers don't just randomly send data out, they respond to requests

15:14 yedi: right im aware of that

15:14 I can use clabango to create html files with a json representation of data created within a script tag. so that my i can call js fns on that data that was built into the page

15:14 is there a way i can replicate that methodology with cljs? i feel like the closure compilation step makes that complicated

15:15 mdeboard: idk this is kind of independent of whatever language you're using on client or server. Q: "I want my client to have data that lives on the server. How do I get it?" A: "Make a request from the client to the server." A': "Establish a persistent connection [websocket] that the server will use to xmit data."

15:17 cYmen: mdeboard: The client sent a request to get the webpage with the cljs code in it. What he wants to do is include some initialization values for the cljs code in that response.

15:17 mdeboard: Ah

15:18 forgive me then I misunderstood

15:18 TimMc: yedi: This is a problem I've encountered when using various languages and libraries and frameworks, and none of them have had a particularly nice answer.

15:21 mdeboard: The only time I've done something similar is with Python + Javascript

15:22 It basically involved sending down the template for the page that had some javascript, interspersed with template engine variables. At request time Python would populate the template

15:22 it's gross

15:22 yedi: it's usually not too bad if you could set a global var somewhere via a templating language and read from that var / call the fns directly from inline js in the built html

15:22 yea

15:22 but that's the only way i've seen it work

15:23 i wonder if cljs can read js globals... gonna go test

15:25 apparently i need something called externs

15:34 katratxo: hi all, using friend library, `:default-landing-uri` to something like `/:user` or a function that returns the redirect path after login ? the current examples always show "/" as value

15:43 TimMc: yedi: But it's complicated, because you need to do things like make sure the string "</script>" is not present in the data, etc.

15:43 You can't just dump it into JSON and HTML-encode it.

16:01 dissipate: what are the guidelines on using thread first and thread last macros? -> and ->>

16:01 sdegutis: No guidelines, just make sure it's readable.

16:02 When you're doing collection stuff, you usually want ->>

16:03 dissipate: sdegutis, is it for more 'imperative' type situations? i want to do X and then Y and then Z

16:03 sdegutis: No, you usually use 'doto' for that.

16:04 dissipate: sdegutis, that looks kind of similar

16:05 sdegutis: Look up some examples that use them.

16:06 dissipate: sdegutis, looking at examples

16:06 sdegutis: Great.

16:07 dissipate: sdegutis, you wouldn't happen to know why (and) evaluates differently than (or) would you?

16:07 ,(and)

16:07 clojurebot: true

16:07 dissipate: ,(or)

16:07 clojurebot: nil

16:08 sdegutis: dissipate: I do.

16:08 ,(doc and)

16:08 clojurebot: "([] [x] [x & next]); Evaluates exprs one at a time, from left to right. If a form returns logical false (nil or false), and returns that value and doesn't evaluate any of the other expressions, otherwise it returns the value of the last expr. (and) returns true."

16:08 sdegutis: ,(doc or)

16:08 clojurebot: "([] [x] [x & next]); Evaluates exprs one at a time, from left to right. If a form returns a logical true value, or returns that value and doesn't evaluate any of the other expressions, otherwise it returns the value of the last expression. (or) returns nil."

16:09 dissipate: sdegutis, i see it is documented, but i don't understand the reasoning behind the difference

16:10 sdegutis, it seems more consistent to me that they both evaluate to nil

16:10 sdegutis: dissipate: you mean specifically for the zero-arg call?

16:10 dissipate: sdegutis, yes

16:10 sdegutis: No idea, but I've never used them that way or seen them used that way.

16:10 pyrtsa: dissipate: (or x y ...) is generally used to pick the first truthy argument, not just a boolean.

16:10 sdegutis: So I think it's an exercise in futility.

16:10 pyrtsa: The same why (some ...) has no question mark but (every? ...) does.

16:11 dissipate: pyrtsa, that's strange

16:11 ,(def some? some)

16:11 clojurebot: #'sandbox/some?

16:12 dissipate: pyrtsa, fixed?

16:12 sdegutis: :)

16:12 pyrtsa: N.B. some does *not* return a Boolean in general.

16:12 every? *does* return a Boolean.

16:12 dissipate: N.B.?

16:12 pyrtsa: Nota bene.

16:12 dpritchett_: morning

16:12 dissipate: nota bene? what so that?

16:12 pyrtsa: "Note that"

16:13 dissipate: er, what is that

16:13 pyrtsa: Nevermind.

16:13 dpritchett_: latin for pay attention to this in particular

16:13 pyrtsa: dpritchett_: Thanks.

16:13 dissipate: ,(doc some)

16:13 clojurebot: "([pred coll]); Returns the first logical true value of (pred x) for any x in coll, else nil. One common idiom is to use a set as pred, for example this will return :fred if :fred is in the sequence, otherwise nil: (some #{:fred} coll)"

16:13 yedi: when rendering an html file with clabango, \" get escaped to &quot

16:13 is there's a cljs reader fn for reading those escaped chars?

16:14 dissipate: ah, that makes sense. it returns a 'truthy' value, not a boolean

16:14 pyrtsa: dissipate: Btw, I think some would have been much nicer if it's semantics was "return the first x for which (f x) evaluates truthy", but it's current version does have its uses occasionally.

16:15 Of course, my version would have its troubles with something like (some nil? xs), but then there could've been (any? nil? xs) or something like that.

16:15 dissipate: pyrtsa, it seems 'some?' would be a perfectly valid function that wrapped 'some' but returned a boolean instead of an actual value. not sure if it would be useful at all though.

16:16 pyrtsa: dissipate: some? will be implemented in Clojure 1.6 with the result of (not (nil? x)).

16:16 sdegutis: Meh, Clojure doesn't stand up to Haskell in terms of purity.

16:16 Anyone serious about PLT should use Haskell.

16:16 Or Clojure, depending on the project.

16:16 dissipate: sdegutis, PLT?

16:16 sdegutis: programming language theory

16:16 dissipate: sdegutis, are you referring to the fact that clojure has side effects?

16:17 sdegutis: No sir, its type system.

16:18 dissipate: sdegutis, i agree, but AFAIK that is the source of much of the complexity of Haskell. or perhaps, in broader terms the whole category theory stuff

16:19 sdegutis: Yeah, good poi-- Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException

16:19 pyrtsa: :D

16:20 tbaldridge: I think there will always be that battle between purity vs getting crap done.

16:20 kaw_: I'm trying to use cljx with CIDER in Emacs. Mostly everything works, but when I C-c C-k a .clj buffer, CIDER doesn't seem to find the .clj that was generated by cljx.. does anyone have any idea what I might have missed in my configuration?

16:20 pyrtsa: For one thing, I'm glad Clojure 1.6 is fixing some of the troubles of dealing with nil values.

16:20 tbaldridge: Agreed.

16:20 tbaldridge: Hence the reason I use Clojure, life is to short for me to learn Haskell's type system. </troll>

16:20 whodidthis: i heard clojure is all about "god enough"

16:21 tbaldridge: Well Rich certainly is god enough for many people.

16:21 dissipate: sdegutis, actually, i am not keen on any heavy syntax language. if you look at what happens with a heavy syntax language in practice is the developers just end up using a subset of the language. for instance, google has developer guides that steer the developers away from certain language constructs.

16:21 tbaldridge: :-P

16:21 kaw_: cljx is set up to generate .clj into target/generated/clj which is in my :source-paths

16:21 sdegutis: dissipate: right, which is why we should avoid (. this syntax) in clojure

16:22 dissipate: sdegutis, or rather, specifically they have guides steering developers away from certain language constructs in C++

16:22 sdegutis, what syntax?

16:23 pyrtsa: dissipate: Probably a good thing there's no Clojure or Haskell style guide in https://code.google.com/p/google-styleguide/ yet.

16:23 sdegutis: Friends, friends! Do you not perceive what is now happening? Lo, they are attempting to turn us against one another! Let us defy their games and not succumb the temptation to vain rivalry!

16:24 https://github.com/bbatsov/clojure-style-guide

16:24 pyrtsa: ^ That's a good one.

16:24 dissipate: pyrtsa, there wouldn't be because clojure is not an official language at Google, but i'm sure it is used internally

16:25 pyrtsa: Sure. And, I think Clojure is still simple enough that style guides like the bbatsov one above, don't have to explicitly ban certain commonly used features of the language.

16:25 Which is a Good Thing.

16:26 dissipate: pyrtsa, ah, nevermind, i see they went beyond their official languages for that guide

16:26 pyrtsa, well, the problem with that style guide is it doesn't have a 'lint' utility to go with it. :P

16:27 sdegutis: Well, back to fighting libffi.

16:30 dissipate: sdegutis, hmm, i see that haskell is not listed for libffi. strange

16:30 sdegutis: Or is it?

16:30 pyrtsa: http://en.wikipedia.org/wiki/Libffi#Haskell

16:32 dissipate: sdegutis, i didn't see it listed here: http://sourceware.org/libffi/

16:33 sdegutis: Or is it?

16:36 dissipate: sdegutis, it is not

16:39 kaw_: Oops, never mind, my problem was user error with the full module name, CIDER/cljx works fine

16:40 sdegutis: Or is it?

16:40 Oh yeah you're right it's not.

16:41 dissipate: sdegutis, to be fair, the list is not intended to be exhaustive

16:42 sdegutis: Or is it?

16:47 murphy_: good afternoon - this is a stupid question, but if I'm using the cider library in emacs and I'm trying to evaluate, say, the following expression: (defn parse-args [args] {})

16:47 sorry, bad paste

16:47 (= (- 10 (* 2 3)) 4) while I'm hovering on the 4

16:47 or the 2

16:47 what's the right function to evaluate with ?

16:52 liflash: murphy_: I just joined and only see your last three posts, what's your question?

16:53 murphy_: trying to use cider in emacs, and I'm trying to figure out which function I need to use to evaluate the above expression to true no matter where my cursor is in the function

16:53 e.g. if I use C-x C-e, I need to be at the end of the line

16:53 liflash: use C-c C-c from anywhere within the sexp

16:54 murphy_: that was easy

16:54 thanks

16:54 I wasn't sure how to ask the question to google

16:54 liflash: :) you're welcome

16:54 maybe you can help me, too

16:55 murphy_: haha, *probably* not, but we'll see

16:55 liflash: are you familiar with macros?

16:55 murphy_: no, not at all

16:55 :)

16:55 liflash: ;) ok, nevermind

16:56 so maybe someone else: I'm calling a function within a macro. this function returns a list created by (map ...)

16:56 now I get the error 'string cannot be cast to fn'

16:57 how comes, that the list is evaluated, too?

16:57 cYmen: liflash: it seems to be trying to execute that map you need to quote it

16:58 liflash: yeah, exactly, but where? I don't want to quote it in the function (and this doesn't help). How could I quote it within the macro, since it is returned by the function...

17:00 amalloy: liflash: code please. it's so much easier to say something specific than talk in generalities

17:01 liflash: ur right, give me a second

17:01 cYmen: I was about to say something like "uh...just quote unquote?" but then that didn't seem very helpful.

17:04 liflash: ok, here the simplest case reproducing it: (defn foo [] '("foo")), (defmacro bar [] (foo))

17:04 calling (foo) gives the error

17:04 amalloy: well, calling (bar) does

17:04 liflash: oh, sorry, calling bar, I mean

17:04 ;)

17:05 aaronj1335: hey folks, i'm trying to re-bind a random number generator for testing purposes: https://gist.github.com/aaronj1335/9573879 is there a way to do this?

17:05 isaacbw: ,(defn foo [] '("foo")) (defmacro bar [] (foo))

17:05 clojurebot: #'sandbox/foo

17:05 isaacbw: ,(defn foo [] '("foo")) (defmacro bar [] (foo)) (bar)

17:05 clojurebot: #'sandbox/foo

17:05 isaacbw: hrm

17:05 ,(defmacro bar [] (foo)) (bar)

17:06 clojurebot: #'sandbox/bar

17:06 isaacbw: ,(bar)

17:06 clojurebot: #<ClassCastException java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn>

17:06 isaacbw: ah, persistent scope is nice for an eval bot

17:06 liflash: ah, that's cool... didn't know this is possible here :)

17:06 cYmen: liflash: Which output would you expect?

17:06 pyrtsa: liflash: The macro invocation (bar) gets replaced to ("foo") which tries to call the string as a function, which is an error.

17:07 cYmen: I mean bar contains a list of strings as code...?

17:07 ,(defmacro bar [] '(foo))

17:07 clojurebot: #'sandbox/bar

17:07 cYmen: ,(bar)

17:07 clojurebot: ("foo")

17:08 liflash: actually this list is contained in a map

17:08 aha, hmm... let me try that

17:08 cYmen: hm... I have no idea why it did what it did.

17:09 Well, I guess the ' makes it create a list and foo is still a symbol...

17:09 macronfusion.

17:09 liflash: lol, nice you don't get into it, too ;)

17:09 but thank you very much!!

17:10 this totally does the trick

17:10 you saved my evening

17:11 was working on it for hours already and couldn't find anything on google

17:11 I definitely have to read more about macros...

17:11 cYmen: liflash: obligatory question: are you sure you need a macro? can't you use a function?

17:12 liflash: I'm working on a web app and use clojurescript.. this macro generates some templates I want to use on the client side

17:15 cYmen: liflash: What are you making? :)

17:16 liflash: cYmen: nothing of interest for the crowd ;) A small release planning tool

17:17 cYmen: It's just a playfield to get used to clojure/script

17:17 cYmen: :)

17:17 sounds good

17:17 I'm trying to do more or less the same but still working through a book. (Which to be honest is a good way to feel productive without getting anywhere.)

17:18 liflash: hehe

17:18 that's why I decided to do something else than the book practices

17:18 In the last year I read some stuff about lisp, clojure, web dev etc.

17:18 but didn't implement anything

17:19 than I thought it would be boring to go through all the excercises 'again'

17:19 which book are u reading?

17:20 cYmen: currently web-development-with-clojure

17:20 I'm about 2/3 through joy of clojure, too

17:21 liflash: nice

17:21 cYmen: I got annoyed by the java interop chapters :)

17:21 liflash: are they worth reading?

17:21 hehe

17:21 I don't like it, too... or at least I don't like java any more

17:21 but I guess it's good thing to be able to use it sometimes

17:22 cYmen: probably :)

17:24 liflash: would you recommend the web-dev book?

17:25 cYmen: Can't really say because I don't know how much of it you can get in the form of free tutorials anyway.

17:25 But I like working through examples to get a feel for things and it's pleasant to read.

17:26 liflash: that's already a good thing

17:26 and I think it's to really get a big picture out of (small) tutorials

17:27 aaronj1335: can anyone answer this question about rebinding? http://stackoverflow.com/questions/22429778/re-bind-a-random-number-generator-in-clojure

17:33 dissipate: what is the web dev book?

17:33 cYmen: dissipate: we were talking about "web development with clojure"

17:34 SegFaultAX: dissipate: If you already know about Clojure's web development story, it's probably not that interesting.

17:35 dissipate: cYmen, i see. and is web development with clojure a joy?

17:35 SegFaultAX: It's basically a couple of long tutorials for building trivial applications + some interesting appendices.

17:35 cYmen: hrhr

17:35 can't tell yet

17:35 dissipate: SegFaultAX, i don't know the story, but i did hear that Pedastal is going through an overhaul

17:36 SegFaultAX: Then it might be useful for you.

17:36 cYmen: SegFaultAX: don't use words like trivial they are demeaning and ruin my motivation :p

17:36 SegFaultAX: Although that book uses liberator not pedestal.

17:37 dissipate: SegFaultAX, i'm still learning the basics though. today i finally figured out the difference between -> and ->>

17:37 SegFaultAX: cYmen: Trivial isn't a bad thing, but they can't be very complicated without making the book very long and probably boring.

17:38 dissipate: If you intend to build web apps in clojure, it might be a good starting point.

17:38 cYmen: I don't know. They may be trivial by clojure standards but having a guestbook with user sessions would have been a book filling topic a couple of years ago. ;)

17:38 SegFaultAX: Personally I'd suggest reading Clojure Programming followed by JoC.

17:39 cYmen: I'm not such a big fan of JoC.

17:39 SegFaultAX: cYmen: If by a couple you mean like 15.

17:39 dissipate: SegFaultAX, what about 4clojure?

17:39 cYmen: It doesn't really do the common book job of "explaining things well".

17:40 dissipate: i have a Clojure REPL on my android phone. it's great, especially for looking at docs on the go.

17:40 SegFaultAX: dissipate: 4clojure is awesome! But it requires at least some knowledge of the language to do anything above elementary.

17:40 dissipate: That's a fun REPL, yea.

17:41 cYmen: Well it's more intermediate to advanced. It's about the why of clojure, not the how.

17:41 That's why I don't suggest reading it until after you've read cemerick's book.

17:41 dissipate: SegFaultAX, i thought it was about idiomatic clojure?

17:41 jjttjj: yeah clojure programming is great

17:42 dissipate: jjttjj, i bought the ebook version for my kindle paper white. good stuff. :D

17:43 robink: Is jRTF still the best way to output RTF from Clojure w/o having to, y'know, *know* the RTF format.

17:43 dissipate: SegFaultAX, do you use clojure as CLI?

17:44 SegFaultAX: dissipate: For scripts and stuff? Definitely not.

17:44 dissipate: SegFaultAX, can't you do cljs with node.js?

17:44 for scripting

17:45 SegFaultAX: Probably, but I still don't/wouldn't.

17:45 dissipate: SegFaultAX, why not?

17:47 SegFaultAX: dissipate: Because the tools I already have are much better suited to the problem, and they don't require anything special to be installed on any given *nix host.

17:48 dissipate: i want a utility that imports all of my Bash commands as symbols in a clojure repl

17:49 SegFaultAX: dissipate: What /would/ be kinda cool is a Clojure DSL that compiles to bash. I feel like the guys over at CircleCI were working on something along those lines.

17:50 dissipate: (ls '(l a r t))

17:50 SegFaultAX: But I'm probably not remembering correctly.

17:51 dissipate: SegFaultAX, that would be good

17:51 wink: cd wonderland && ls

17:53 dissipate: SegFaultAX, clsh?

17:53 SegFaultAX: Maybe.

17:54 dissipate: well, before that comes out, i'll stick with Python i suppose.

17:55 dpritchett_: I'm trying to implement a simple trie in clojure just as a learning exercise

17:55 not making much headway so far though

17:56 mostly due to clojure's style of recursion I guess

17:56 SegFaultAX: dpritchett_: What?

17:56 dpritchett_: What does that have to do with anything?

17:57 dpritchett_: i'm about to write one up in ruby so i can explain better

17:57 amalloy: SegFaultAX: i presume dpritchett_ is working up to a more specific question, even if the stuff he's saying on the way is not terribly meaningful

17:57 dpritchett_: ^

17:57 wink: trie harder :D

17:57 SegFaultAX: amalloy: Ok.

17:58 whodidthis: https://github.com/alandipert/gherkin

17:59 SegFaultAX: whodidthis: Yea I saw that when it hit HN a few weeks back. I thought it looked cool if impractical.

18:06 dissipate: would the commands in bash be functions or macros in clojure?

18:08 amalloy: dpritchett_: while i'm waiting for your ruby example, i threw together a quick trie-set example, which implements set-membership by using a prefix trie: https://www.refheap.com/59198

18:08 dpritchett_: thanks amalloy, that's what i wanted to do but it works and isn't huge

18:09 i'll read through it and see what i can make of it

18:09 dissipate: dpritchett_, perhaps you could do a red-black tree while you are at it?

18:09 robink: Can (should?) I place non-Mavenized dependencies in projectroot/resource?

18:09 s/resource/resources/

18:09 dissipate: dpritchett_, actually, you could take things even further and implement the clojure data structures in clojure (e.g. the map)

18:11 dpritchett_: not a bad idea dissipate

18:11 just trying to practice using basic clojure to the point where i can get comfortable doing real work

18:12 I do Rails full time but I guess I don't really do data structures often aside from regular CRUD stuff via postgres or K:V stuff via memcached

18:12 dissipate: dpritchett_, i'm in the same boat

18:14 dpritchett_, i feel like i've gotten very rusty on my data structures. at work it's just too easy to use a red-black tree that's already available i guess.

18:15 amalloy: well, and it's good to have rb trees available, and to use them when they are

18:15 having them lets you use them as building blocks for more interesting structures too, like my trie is assuming the existence of an efficient map type

18:15 dpritchett_: i finished grad school nearly a decade ago, not sure i've built a datatype from the ground up since

18:15 good fun

18:16 err data structure

18:25 martinklepsch: can anyone explain me how reference equality checking works? (thats how it's called is it?)

18:26 is it basically working like: symbol points to some memory and it's equal if it still points to the exact same space in memory?

18:41 robink: Ah, found the problem

18:42 What's the best way to cast a Clojure sequence (list, vec, I don't care) to a Java ArrayList so it can be fed into a static Java method that expects a multiple-arity argument?

18:44 Oh, duh, into-array

18:45 maleghast: Anyone in here experimenting with Om / Clojurescript?

18:45 rovar: yes

18:45 probably a couple dozen people

18:46 maleghast: I'm trying to get a click (onClick) in a component to add new markup to the page, but I can't work out what I'm doing wrong...

18:46 Anyone cracked that yet..?

18:48 rovar: have you followed the beginner and intermediate om tutorials? I'm pretty sure that is covered in depth

18:51 martinklepsch: maleghast,also it might be best to ask in #clojurescript

18:51 maleghast, what you basically need to do is to render dom dones based on component state and change that component state in your onclick handler

18:51 maleghast: rovar: Yep, but I may be doing something wrong...

18:52 martinklepsch: so I need to be using render-state instead of render?

18:52 martinklepsch: if your render function depends on component state yes

18:54 maleghast: martinklepsch: Well, I am not really sure, but if you mean by that that I am going to need to change state in order to inject more markup then yes, that's the situation.

18:57 martinklepsch: maleghast, you can do it differently but probably you'd want to use state

18:58 maleghast, basically, onClick calls a function that calls set-state! and then in render-state you do something like (when (:expand state) (dom/p .... )))

19:00 maleghast: martinklepsch: At the moment I am using plain old render, and that is doing a great job at changing colours and positions of things - it's addeing somehthing new to the page that I'm finding hard to do.

19:00 martinklepsch: maleghast, can you pastebin the code somewhere?

19:01 maleghast: martinklepsch: Yeah, one sec...

19:03 martinklepsch: Here you go... https://www.refheap.com/69f0c4a220aa0bc7a2fa0ed5f

19:03 Basically the only bit that is not workign is that the onClick is not creating a new square in a random position.

19:06 martinklepsch: maleghast first of you want to use render-state instead of having get-state everywhere https://github.com/swannodette/om/wiki/Documentation#irenderstate

19:09 maleghast, what I'd suggest is that you use a global app-state and maintain a list of boxes that are then rendered + you can put information about new boxes in there and things will re-render automatically

19:10 maleghast: martinklepsch: Thanks - I'll try that :-)

19:10 martinklepsch: maleghast, don't quite understand what lines 27-29 are supposed to do — isnt (go ...) a macro for core.async?

19:11 maleghast: martinklepsch: Yes it is - I'm using it...

19:11 martinklepsch: That bit is working :_)

19:11 s/:_)/:-)

19:12 martinklepsch: ok, maybe I'm just missing the context then :)

19:12 good luck

19:12 maleghast: martinklepsch: Thanks very much :-)

19:12 martinklepsch: oh and there is #clojurescript on freenode as well btw

19:13 maleghast: martinklepsch: I will go have a look - thanks :-)

19:37 trap_exit: Is there a simplification of (apply vector (concat ... )) ?

19:37 like concatv

19:39 michaniskin: (vec (concat …)) is a little simpler?

19:39 ,(vec (concat [1 2] [3 4]))

19:39 clojurebot: [1 2 3 4]

19:42 amalloy: (reduce into [] [...])

19:45 michaniskin: vec looks like it does some stuff lazily

19:46 amalloy: i don't think so. LazilyPersistentVector is just a confusing name

19:51 yeah. vec creates a simple vector structure if the input collection is less than 32 items long, but so does the vector function

19:52 whereas into [] never does the optimization, but does use transients

20:07 gfredericks: is there any good reason for clojure.core/set not to be #(into #{} %)?

20:07 it seems bizarre that we have this unoptimized way to create sets which looks more standard

20:09 I'm just gonna go create a ticket

20:12 trap_exit: fuck ... I need to insert a <mo> &sum; </mo>

20:12 but when I try to insert it, I get a literal &

20:12 is there a way (in cljs) to generate the unicode char equiv to &sum; ?

20:13 gfredericks: trap_exit: can you just use the unicode character directly?

20:14 ToBeReplaced: gfredericks: same with vec -- is it really slower than #(into #{} %)? (i know nothing about this)

20:14 trap_exit: http://rypress.com/tutorials/mathml/symbol-reference.html

20:14 is the #x part of the unicode character?

20:15 gfredericks: ToBeReplaced: I believe so

20:15 there's an open ticket for zipmap

20:15 trap_exit: gredericks: ha! it worked! thanks!

20:16 gfredericks: ,(let [long-list (range 1000000)] (time (count (vec long-list))))

20:16 clojurebot: #<OutOfMemoryError java.lang.OutOfMemoryError: Java heap space>

20:16 gfredericks: ,(let [long-list (range 100000)] (time (count (vec long-list))))

20:16 clojurebot: "Elapsed time: 25.226604 msecs"\n100000

20:16 gfredericks: ,(let [long-list (range 100000)] (time (count (into [] long-list))))

20:16 clojurebot: "Elapsed time: 19.888831 msecs"\n100000

20:17 gfredericks: ,(let [long-list (range 100000)] (time (count (set long-list))))

20:17 clojurebot: "Elapsed time: 184.069027 msecs"\n100000

20:17 gfredericks: ,(let [long-list (range 100000)] (time (count (into #{} long-list))))

20:17 clojurebot: "Elapsed time: 49.259436 msecs"\n100000

20:18 gfredericks: starker for sets

20:20 ah ha, vec already uses transients

20:20 so that is why

20:20 that's good now I know what the patch should look like :)

20:20 TimMc: clojurebot: benchmarking?

20:20 clojurebot: benchmarking is https://github.com/hugoduncan/criterium

20:20 TimMc: :-P

20:22 * gfredericks glares at TimMc for like twenty-five seconds

20:22 TimMc: hah

20:28 gfredericks: I don't think I can write this java code without less than three typecasts O_O

20:29 PersistentHashSet is typed a bit differently from PersistentVector

20:39 ha whoever was asking for rhickey's public email address the other day could have got it from the pom.xml

20:40 trap_exit: why do people need r hickey's emial?

20:41 I thought the ideal way to get an answer to a a clojure question is to (1) create two email accounts, (2) post question witha ccount a, (3) wait 10 minutes, post an incorrect answer with account b; .... then wait for someone to post correct answer out of frustration

20:42 gfredericks: wanted to ask about speaking

20:42 trap_exit: 1) grow curly hair

20:43 2) spend 3 years thinking in a hammock

20:43 3) invent a famous language

20:43 4) speak :-)

20:43 gfredericks: no somebody with a conference

20:43 wanted him to speak at it

20:43 trap_exit: oh

20:44 I think the solution to that problem

20:44 is pay 10x regular speaking rates :-)

20:46 gfredericks: yeah he said he turns down at least twice as many as he accepts

20:47 I don't know of any keynote he's done since last year's clojure/west & variants thereof

21:00 does anybody know about NPE's in clj-stacktrace masking actual exceptions?

21:21 chare: channel dead

21:26 amalloy: gfredericks: i know that it happens, so i don't use clj-stacktrace

21:31 john2x: oh, (:require (foo [bar.baz])) isn't allowed?

21:34 amalloy: john2x: no. most folks discourage using prefix lists at all these days

21:35 john2x: oh ok. I thought it was good practice..

21:37 xeqi: only person I know who does that is cemerick

21:38 amalloy: xeqi: ztellman

21:38 ztellman: ?

21:38 amalloy: ztellman: using you as an example of someone who uses prefix lists in :require

21:39 sorry for the unwarranted ping

21:39 ztellman: haha, no worries

21:39 where did I do that?

21:39 usually I'm verbose about it, I think

21:39 amalloy: you do it like everywhere, IIRC

21:40 ztellman: oh, in the bigger libraries, yeah

21:42 amalloy: maybe i'm thinking of the potemkin imports or something. i can't actually find any examples in lamina

21:43 gfredericks: (inc Raynes)

21:43 lazybot: ⇒ 44

21:44 gfredericks: amalloy: I'm not intentionally using clj-stacktrace; this might be nrepl?

21:44 cider? dunno

21:44 amalloy: gfredericks: probably. that's one reason i still use slime - i tried nrepl and got clj-stacktrace bugs once

21:47 gfredericks: amalloy: oh man you're some kind of double hipster

21:49 amalloy: double?

21:50 gfredericks: well I mean if we count clojure + emacs maybe triple

21:50 I can't defend the statement as particularly interesting

21:50 amalloy: *chuckle*

21:51 Raynes: gfredericks: What did I do?

21:52 gfredericks: Raynes: I just spent an hour trying to figure out why clj-irc wasn't doing what it seemed like it was supposed to be doing

21:52 then guess what I did

21:52 Raynes: [me.raynes/irclj "someversionhere"[?

21:52 gfredericks: totes magoats

21:52 Raynes: Except with the proper closing brackets, of course.

21:56 gfredericks: Raynes: it is the most ridiculously undocumented library that I have ever had the easiest time using

21:56 Raynes: gfredericks: Yeah, it was left in a pretty transitory state.

21:56 Which is why there is no official release.

21:56 I don't really release libraries without pretty thorough docs.

21:56 But the library should work fine.

21:57 Just may be missing things here and there

21:57 Nothing prohibitive for most use cases.

21:57 gfredericks: I take it back, it would have been rather harder without the large comment at the top of core.clj

21:57 Raynes: amalloy took a shot at making it use lamina once, but we couldn't get it to work in lazybot and gave up pretty quickly. Job for ztellman one day. ;p

21:58 ztellman: Raynes: haven't you heard? Lamina's old hat https://github.com/ztellman/manifold

21:58 Raynes: Whatever crazy shit you're working on lately

21:58 That's what irclj should use

21:58 ztellman: :)

21:58 Raynes: <3

21:59 ztellman: Raynes: you coming to Clojure/West?

21:59 Raynes: Nope

21:59 :(

22:00 amalloy will be the life of the party for me, I'm sure.

22:00 gfredericks: clojurebot: manifold is an abstraction layer for event-driven compatibility

22:00 clojurebot: 'Sea, mhuise.

22:00 gfredericks: amalloy is going?

22:01 amalloy: gfredericks: indeed

22:01 ztellman: Factual's out in force

22:01 Raynes: Scopely's holding down LA for you guys.

22:01 gfredericks: Raynes: is amalloy safe to talk to using faces?

22:01 Raynes: I do it quite often.

22:01 amalloy: :D

22:02 Raynes: Be careful. His wit is quite sharp.

22:02 Don't want to get cut.

22:02 ;)

22:02 * amalloy is practicing using faces

22:02 amalloy: :/

22:03 gfredericks: this must be amalloy's first conference

22:03 amalloy: i went to the conj in...2011?

22:03 * gfredericks realizes he needs to figure out how to pronounce "amalloy"

22:04 xeqi: am ma loi

22:05 gfredericks: Ama El El Oh Why

22:06 amalloy: in person it's usually just easier to call me alan

22:09 AmandaC: Whatever you say “alan"

22:10 Raynes: gfredericks: He answered like the majority of my clojail talk's questions at the second conj :P

22:10 gfredericks: amalloy: I assume that's because my middle name is alan; so you can call me by your middle name

22:11 Raynes: that was the first of many conj's that I didn't attend

22:29 dsrx: sort of off-topic: does elisp have a reader macro equivalent or near-equivalent to #_ in clojure?

22:40 hyPiRion: dsrx: C-M-@ M-; ? It's not a reader macro, but comments out current sexp

22:44 dsrx: hmm

Logging service provided by n01se.net