#clojure logs

2014-03-15

00:00seancorfieldcan you refheap the code you are trying?
00:02seancorfieldah, you mean when you require core.memoize, i gather? :) just trying it myself now
00:08danielszmulewiczseancorfield: yes, when loading the file that requires it. I suspect this is the culprit: https://github.com/zcaudate/vinyasa/issues/3
00:13danielszmulewiczseancorfield: Yes, I confirm this is the issue. Tricky one. I love Vinyasa, but this needs to be fixed.
00:15seancorfieldI hit the problem with lein try... it pulls in an older version of core.cache (that doesn't have the through function)
00:18danielszmulewiczseancorfield: interesting.
00:19danielszmulewiczseancorfield: 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.
00:20seancorfieldlein repl is fine in a project with core.memoize as a dep
00:20danielszmulewiczseancorfield: Good. So lein try maybe?
00:20seancorfieldvinyasa depends on pomegranate so that may be the path of the stale core.cache? i bet lein try depends on it too
00:21danielszmulewiczlein try requires an old version of leiningen [leiningen "2.1.3"]
00:21seancorfieldah yes...
00:21danielszmulewiczseancorfield: that's the trouble
00:24seancorfieldFirst time I've run into a conflict with lein try :)
00:24danielszmulewiczseancorfield: Me too, I mean with Vinyasa. But I still don't understand, because in Vinyasa I have leiningen set to the latest version.
00:25seancorfielduse lein deps :tree to see what's pulling in the old core.cache
00:25danielszmulewiczI did. Couldn't find it.
00:25seancorfieldand then you can add :exclusions to prevent it
00:25seancorfieldoh
00:26seancorfieldwhere is your vinyasa dependency? in your project or globally?
00:26danielszmulewiczglobally
00:26seancorfieldthat's probably why it doesn't show up in lein deps?
00:27danielszmulewiczseancorfield: exactly.
00:27danielszmulewiczseancorfield: I did fix the problem eventually, by disabling some Vinyasa functionality.
00:27seancorfieldput it in a local project and run lein deps :tree then go back and add exclusions to the global dependency?
00:27danielszmulewiczand removing the hard-wired version of Leiningen that Vinyasa demands
00:29danielszmulewiczseancorfield: 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.
00:30danielszmulewiczseancorfield: Thanks a lot for investigating along :-)
00:31danielszmulewicz(inc seancorfield)
00:31lazybot⇒ 11
00:35seancorfieldleiningen depends on stencil and that depends on core.cache 0.6.2
00:35seancorfieldspecifically stencil 0.3.2
00:35seancorfieldthere's an updated stencil (0.3.3) that depends on core.cache 0.6.3
00:36seancorfieldso you could add :exclusions [stencil] for leiningen and then depend on 0.3.3 explicitly i guess...
00:36seancorfieldor petition technomancy to update his dependency :)
00:38seancorfieldAnyways, glad you have a workaround danielszmulewicz
01:12ddellacostaakhudek: ping
01:12akhudekddellacosta: pong
01:13labor_dayls
01:13lazybotbin data dev home src tmp usr var
01:35danielszmulewiczseancorfield: Kudos for nailing it down to the exact dependency problem.
04:56tristanStrangehey all.. just getting started with clojure and am having some issues with paredit.vim
04:57tristanStrangenone of the commands that have the leader prefix work
04:57tristanStrangedoing my head in. is there something ineed to do to enable them
04:58tristanStrangedoh! should probs be asking this in vim land....
05:45phaoHey... is it possible to download the docs, for offline viewing?
05:45cYmenGood morning.
06:02john2xphao: check out Dash, if you're on OS X.
06:02phaoI'm on windows, hehe
06:03clgvphao: poor guy ;)
06:04clgvphao: did the leiningen install go smooth for you?
06:04phaoHehe. I used to use linux, but I never did anything which bothered me on windows.
06:04phaoWhat bugs me most is drivers sometimes, I had some bsod I'm almost sure because of my nvidia driver.
06:04phao"leiningen" ?
06:05clgvoh so you are pretty new to clojure, right?
06:05phaoyes.
06:05clgvhttp://leiningen.org/
06:06cYmenphao: Could you do me a favor an keep a simple diary of what you are doing any your discoveries?
06:06cYmens/any/and
06:06phao... ?
06:06phaothat's weird, I don't think I understand it. WHat do you mean?
06:07cYmenIt might be useful to know what kinds of things you come across and what you learn from them for other beginners.
06:10phaoI see.
06:10cYmenIt's not really important or anything.
06:11cYmenBut if you wouldn't mind keeping some notes in a textfile or whatever I would be interested. :)
06:12phaoI tend to write down some stuff I find interesting. But not always.
06:12phaoI remember making notes of my whole reading of K&R2, but that was a long time ago.
06:14phaocYmen, are you new to clojure?
06:15cYmenPretty much, started a few weeks ago but haven't put in a lot of time.
06:15phaoAnd, have you done some lisp before?
06:15cYmenThe language is pretty cool but the ecosystem is still confusing as hell.
06:16AdmiralBumbleBeecYmen: what do you find confusing?
06:16cYmenYeah, I already knew a little common lisp and scheme and haskell.
06:16phao=)
06:17clgvcYmen: what's confusing with the "ecosystem"? you mean you do not know what libraries exist for what tasks, or something similar?
06:17cYmenWell, that and if I know them or people recommend them I have yet another framework to learn.
06:18clgvbut that's the same as in any other language ;)
06:18AdmiralBumbleBeehow is that different from any other language?
06:18cYmenIt'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?
06:18clgvyou'll always have to learn the libraries for some specialized tasks no matter what language you use ;)
06:18phaocYmen, that lei... something program has a windows installer which does all the work for you.
06:19phaoat least it seems to, http://leiningen-win-installer.djpowell.net/
06:19clojurebotTitim gan éirí ort.
06:19tristanStrangehey all... I'm looking at creating images pixel by pixel in clojure.
06:19phaoI had to run it on the command line to make it work. I'm not sure why.
06:19clgvphao: yeah it has now since a year or so
06:19tristanStrangei'm using imagez but it feels a bitslow
06:19phaoI see.
06:19cYmenclgv, 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.
06:20clgvtristanStrange: did you check with (set! *warn-on-reflection* true) and recompile your namespace?
06:20tristanStrangecan anyone recommend anything quicker? ideally i'd like to update some callback function and have the image update imediately
06:20clgvcYmen: well, I always hesitate to use libraries with poor documentation
06:20tristanStrangeclgv ... no, i've not heard of this
06:21tristanStrangewhats the idea with this? currently i'm running a session via lein repl (in vim)
06:21clgvtristanStrange: since there are probably java classes involved it is likely that bad performs comes from reflection
06:21phaoAnyone 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?
06:21clgv*bad performance
06:22clgvtristanStrange: that's the only hint I can give without seeing your code ;)
06:30cYmenIn emacs, is there any way to jump to a clojure function under point?
06:31Pate_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 172.17.0.2:7888, ConnectException Connection refused".
06:31clgvcYmen: probably - but since I do not use emacs I can only suggest to search the docs of whatever clojure integration you use
06:31cYmenclgv: What do you use?
06:31clgvcYmen: Counterclockwise
06:31cYmenThat's eclipse, right?
06:32clgvyes
06:32Pate_To be more specific, I'm trying to connect from one docker container to another linked container.
06:33clgvPate_: if the IP above is correct for adressing the container thats probably more a technical issues of that container stuff you use
06:36Pate_hmm, I'm able to connect up dockers for other services, e.g. amqp.
06:36Pate_could it be an ubuntu firewall thing, or a port limitation?
06:37clgvI dont think there is any restrictive firewall on ubuntu except you configured it yourself
06:38clgvPate_: you could try the connection via telnet or curl. I think there is documentation about "talking manually to nrepl"
06:38tristanStrangethanks cljb.... i've put :warn-on-reflection true in my project.clj... what will that actually do?unfortunately its not sped things up yet.
06:39tristanStrangeif you could take a peek at the code it'd be much appreciated
06:39tristanStrangethe slow bit is the dotimes... as you'd imagine
06:39tristanStrangehttps://gist.github.com/triss/1a83c8f130f0003a337c
06:39clgvPate_: https://github.com/clojure/tools.nrepl#transports-
06:40Pate_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.
06:41clgvtristanStrange: line 24 is slow because clojure does not know that "pixels" is an array. you have to hint ^ints or ^longs or whatever applies
06:42clgvPate_: afaik you'll always get connection refused when no process is listening on that port
06:43clgvtristanStrange: for maximum speed you'll also need to use primitive functions.
06:44clgvtristanStrange: https://www.assembla.com/spaces/clojure/wiki/Enhanced_Primitive_Support
06:44lazybotAssembla is deprecated. Use http://dev.clojure.org
06:44clgvlazybot: botsnack
06:44lazybotclgv: Thanks! Om nom nom!!
06:44tristanStrangeclgv: thanks man... just getting started with this. I've got some reading to do!
06:46cYmentristanStrange: What do you use to run that?
06:46cYmenJust wondering because it has several top level forms...
06:46tristanStrangei'm using fireplace in vim - throwing stuff at a lein repl
06:47tristanStrangetop level forms?
06:47clgvtristanStrange: ah right for measuring performance you should add :jvm-opts ^:replace [] to project.clj
06:47cYmenI'm not sure that's the correct term. Basically I meant you don't have a main function just code in there. :)
06:48clgvcYmen: yeah he should definitely wrap the dotimes into a function
06:48tristanStrangeheh... I've not even worked out how to write a main function yet! :)
06:49cYmenI know the feeling I always get them from lein and then I feel compelled to use them. ^^
06:50clgvtristanStrange: add (:gen-class) to your ns-form of pictures.core and then specify :main pictures.core in your project.clj
06:50Pate_got it working!
06:50tristanStrangeok. ill give it a go. what will that do?
06:51Pate_have to include :host 0.0.0.0 when running the repl
06:51clgvtristanStrange: ah right. the main function you want to implement in pictures.core must eb named -main
06:51cYmenclgv: 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?
06:52clgvcYmen: "lein repl" should suffice if you want to try it on the repl - otherwise the equivalent repl restart in emacs
06:52tristanStrangeand now i can use lein run i guess?
06:52Pate_thx for input clgv.
06:52clgvtristanStrange: yes. or build an uberjar via "lein uberjar" which you can then run "java -jar ..."
06:53cYmentristanStrange: psychedelic ^^
06:57cYmentristanStrange: 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 :)
06:58tristanStrangei'm using fireplace in vim
06:58cYmenclgv: See, it is exactly these kinds of details that are totally opaque to me.
06:58cYmentristanStrange: I have used that but I have no idea how it works or what the differences to emacs behavior are. ;)
06:59tristanStrangeah ok. so is there an issue with having my functions at the top level?
07:00clgvcYmen: yeah well, I only learned them as soon as I needed them via a book, a blog article or docs ;)
07:00tristanStrangeshould I be embedding that code in some larger structure... apolagies chaps i only started clojuring yesterday
07:00clgvcYmen: it is the same convention as in java btw. ;)
07:00cYmentristanStrange: Most people use lein projects but I'm not even sure if that's a good way for getting started.
07:00tristanStrangeand how does that relate to performance?
07:01clgvtristanStrange: no, defns are supposed to be toplevel
07:01clgvcYmen: it is an awesome way, since there is no easier method to get your dependencies ;)
07:01clgvcYmen: you might use an ide which hides leiningen's command line usage from you for the beginning^^
07:02cYmenI don't really mind command lines...
07:02clgvmaybe lighttable or counterclockwise
07:02cYmenWhat 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. :)
07:02cYmenAt least that's how I feel. ^^
07:02clgvyeah 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
07:03cYmenAnyway, it just takes time to get to know stuff.
07:04clgvas usual :P
07:05cYmenAnnoyingly true. :)
07:05clgvI'd be supprised if you knew all the .NET library from day 3 on ;)
07:05clgvsimilar with java^^
07:05tristanStrangeso how do you chaps suggest I get started without lein?
07:05clgvor the C++ STL ;)
07:05cYmentristanStrange: Aren't you already started? :)
07:06clgvtristanStrange: 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
07:06tristanStrangejust about... but clojure/lisp is a very alien thing to me
07:06clgvtristanStrange: you got one of the most recent books?
07:07clgvtristanStrange: my usual recommendation: buy a recent book and then perform read and try cycles ;)
07:07tristanStrangei'm just hacking around and looking at this: http://www.creativeapplications.net/tutorials/introduction-to-clojure-part-1/
07:07tristanStrangeand the docs for the imagez library and preying really
07:08tristanStrangebut yes... i was hoping clojure would be a quick learn...
07:08tristanStrangeand i can see whats going on...
07:08tristanStrangei'm just a touch dissapointed by performance
07:09clgvtristanStrange: 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
07:10clgvtristanStrange: yeah well image manipulation is only fast if you use primitives to avoid boxing/unboxing and if you avoid reflection
07:10clgvtristanStrange: you choose the wrong topic to get started ;)
07:11cYmenIndeed, image manipulation is usually heavily optimized and tricky to make nice.
07:11tristanStrangetrust me to choose a tough one
07:11phaoANy easy way I can check the java decompiled code form the bytecode generated from compiling clojure?
07:11cYmenI 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. :)
07:11tristanStrangebut it's just a case of flagging an argument's vars type... i forgot to to do that
07:12tristanStrangewould any of you kind sirs mind tweaking my gist such that i can see how its done?
07:14tristanStrangetypes
07:14clgvtristanStrange: just go through the fibonacci example here https://www.assembla.com/spaces/clojure/wiki/Enhanced_Primitive_Support
07:14lazybotAssembla is deprecated. Use http://dev.clojure.org
07:15cYmenWell, is it or is it not deprecated?!
07:16clgvyeah but google still lists it above the page in dev.clojure.org
07:16clgvthe information is the same
07:17tristanStrangecoll thanks clgv
07:17clgvhttp://dev.clojure.org/display/design/Enhanced+Primitive+Support
07:17clgvbetter? ;)
07:17cYmenI don't know ask the damn bot! :D
07:18clgvwell it's colorfull so it's better ;)
07:18clgv:P
07:55Pate_Is there a simple "IDE" for Clojure that isn't Light Table or Emacs? I found Nightcode, and am downloading it now.
07:55xsynvim?
07:55clojurebotGesundheit!
07:55Pate_something that makes it easy to evaluate forms in an nREPL
07:56Pate_lol @ clojurebot
07:56xsynah, jammer, not sure
07:56Pate_xsyn: were you at any cpt user group meetups?
07:57Pate_also found Clooj: https://github.com/arthuredelstein/clooj
08:00clgvPate_: counterclockwise - pretty easy when you used it for java already ;)
08:10cYmenPate_: "cpt"?
08:11Pate_cape town :)
09:16xsynPate_: no, i'm in jhb
09:17Pate_xsyn, ah.
09:34Pate_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.
09:41clgvPate_: that one came around here several times already ;)
09:41Pate_clgv: glad to hear it :)
09:47clgvPate_: do you know that one? http://vimeo.com/71278954
09:48Pate_not yet, but can't wait to watch it
10:02cYmenhm...Bret Victor
10:02cYmenWell, I did like his point about getting the "parts bucket on the floor".
10:03cYmenKnowledge management should really get more focus.
10:16arav93Hi!
10:17tmcivergood morning!
10:33gfrederickshalloo
10:53Kneivahow do I get to use dissoc-in ?
10:57opqdonutKneiva: do you want an example or what?
10:58opqdonutoh, right, it's not in core
10:58Kneivawhat do I need to import?
11:01arav93Is anyone here familiar with what the main namespaces does?
11:01ambrosebsKneiva: I think it's in core.incubator
11:01ambrosebshttps://github.com/clojure/core.incubator/blob/master/src/main/clojure/clojure/core/incubator.clj#L62
11:11Kneivaambrosebs: thanks.
11:14clgvKneiva: (update-in m [:k1 :k2] dissoc :k3)
11:14martinklepschcemerick, 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:14clojurebotExcuse me?
11:14martinklepschhttps://groups.google.com/forum/#!topic/clojurescript/4Y8OWUl6u_Y
11:14martinklepschcemerick, any advise?
11:15cemerickmartinklepsch: you want the compiled .js in the jar?
11:15martinklepschcemerick, yes
11:16cemerickmartinklepsch: set :output-to to "target/classes"
11:16martinklepschcemerick, I can achieve that using leinigens resource path as well, right?
11:17martinklepschmaybe the problem is more that cljs does not get compiled when I run lein jar/uberhar
11:17martinklepschmaybe the problem is more that cljs does not get compiled when I run lein jar/uberjar
11:19martinklepschputting 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:21cemerickmartinklepsch: 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:21cemerickmartinklepsch: e.g. https://github.com/cemerick/pprng/blob/master/project.clj#L43
11:27martinklepschcemerick, ah, ok, will experiment a bit witht hat
11:29martinklepschcemerick, that seems to be a good way of doing it, thanks!
11:29martinklepschcemerick, 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:35steckerhalterso 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:37steckerhalterso counting the pool up there is magically fixing the bug
11:39steckerhalterbut just accessing it is not working... shit. I don't know, but that feels like a bug in the underlying thing
11:41steckerhalterI guess I could just get rid of atoms and use def
11:41steckerhalterthen it would probably work
12:36steckerhalterso it was the lazy-seq from `remove` that caused the problem
12:36steckerhalterman, now I have spent so many hours with this bug...
13:49martinklepschcemerick, I'm still trying to figure out a way to integrate cljs compilation into process of building the uberjar
13:51martinklepschcemerick, in the end I'd like to be able to deploy to heroku and uberjar triggering the cljsbuild
13:55martinklepschcemerick, 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:56martinklepschtechnomancy, maybe you have some other ideas how to integrate that?
14:24seangrovetechnomancy: Do you have an emacs macro to "pretty-indent" a nested clojure hashmap/vectors?
14:43cYmendid I accidentally ignore this technomancy everybody seems to be talking to?
14:46TimMccYmen: No, he hasn't been talking.
14:46cYmen:)
15:12yediif 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:12mdeboardyedi: Where does the initial data live?
15:12yedion the server
15:13yedii don't want to explicitly have to do another ajax request when my cljs app loads
15:13mdeboardyedi: Then you'd need to make a request to the server to get the data, like javascript
15:13yedii want to send the data to the client along with the hmtl and cljs gen js
15:13mdeboardIf you want to *send* the data then you'd have to establish an websocket connection on startup
15:14mdeboardservers don't just randomly send data out, they respond to requests
15:14yediright im aware of that
15:14yediI 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:14yediis there a way i can replicate that methodology with cljs? i feel like the closure compilation step makes that complicated
15:15mdeboardidk 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:17cYmenmdeboard: 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:17mdeboardAh
15:18mdeboardforgive me then I misunderstood
15:18TimMcyedi: 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:21mdeboardThe only time I've done something similar is with Python + Javascript
15:22mdeboardIt 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:22mdeboardit's gross
15:22yediit'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:22yediyea
15:22yedibut that's the only way i've seen it work
15:23yedii wonder if cljs can read js globals... gonna go test
15:25yediapparently i need something called externs
15:34katratxohi 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:43TimMcyedi: But it's complicated, because you need to do things like make sure the string "</script>" is not present in the data, etc.
15:43TimMcYou can't just dump it into JSON and HTML-encode it.
16:01dissipatewhat are the guidelines on using thread first and thread last macros? -> and ->>
16:01sdegutisNo guidelines, just make sure it's readable.
16:02sdegutisWhen you're doing collection stuff, you usually want ->>
16:03dissipatesdegutis, is it for more 'imperative' type situations? i want to do X and then Y and then Z
16:03sdegutisNo, you usually use 'doto' for that.
16:04dissipatesdegutis, that looks kind of similar
16:05sdegutisLook up some examples that use them.
16:06dissipatesdegutis, looking at examples
16:06sdegutisGreat.
16:07dissipatesdegutis, you wouldn't happen to know why (and) evaluates differently than (or) would you?
16:07dissipate,(and)
16:07clojurebottrue
16:07dissipate,(or)
16:07clojurebotnil
16:08sdegutisdissipate: I do.
16:08sdegutis,(doc and)
16:08clojurebot"([] [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:08sdegutis,(doc or)
16:08clojurebot"([] [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:09dissipatesdegutis, i see it is documented, but i don't understand the reasoning behind the difference
16:10dissipatesdegutis, it seems more consistent to me that they both evaluate to nil
16:10sdegutisdissipate: you mean specifically for the zero-arg call?
16:10dissipatesdegutis, yes
16:10sdegutisNo idea, but I've never used them that way or seen them used that way.
16:10pyrtsadissipate: (or x y ...) is generally used to pick the first truthy argument, not just a boolean.
16:10sdegutisSo I think it's an exercise in futility.
16:10pyrtsaThe same why (some ...) has no question mark but (every? ...) does.
16:11dissipatepyrtsa, that's strange
16:11dissipate,(def some? some)
16:11clojurebot#'sandbox/some?
16:12dissipatepyrtsa, fixed?
16:12sdegutis:)
16:12pyrtsaN.B. some does *not* return a Boolean in general.
16:12pyrtsaevery? *does* return a Boolean.
16:12dissipateN.B.?
16:12pyrtsaNota bene.
16:12dpritchett_morning
16:12dissipatenota bene? what so that?
16:12pyrtsa"Note that"
16:13dissipateer, what is that
16:13pyrtsaNevermind.
16:13dpritchett_latin for pay attention to this in particular
16:13pyrtsadpritchett_: Thanks.
16:13dissipate,(doc some)
16:13clojurebot"([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:13yediwhen rendering an html file with clabango, \" get escaped to &quot
16:13yediis there's a cljs reader fn for reading those escaped chars?
16:14dissipateah, that makes sense. it returns a 'truthy' value, not a boolean
16:14pyrtsadissipate: 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:15pyrtsaOf 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:15dissipatepyrtsa, 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:16pyrtsadissipate: some? will be implemented in Clojure 1.6 with the result of (not (nil? x)).
16:16sdegutisMeh, Clojure doesn't stand up to Haskell in terms of purity.
16:16sdegutisAnyone serious about PLT should use Haskell.
16:16sdegutisOr Clojure, depending on the project.
16:16dissipatesdegutis, PLT?
16:16sdegutisprogramming language theory
16:16dissipatesdegutis, are you referring to the fact that clojure has side effects?
16:17sdegutisNo sir, its type system.
16:18dissipatesdegutis, 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:19sdegutisYeah, good poi-- Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException
16:19pyrtsa:D
16:20tbaldridgeI think there will always be that battle between purity vs getting crap done.
16:20kaw_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:20pyrtsaFor one thing, I'm glad Clojure 1.6 is fixing some of the troubles of dealing with nil values.
16:20pyrtsatbaldridge: Agreed.
16:20tbaldridgeHence the reason I use Clojure, life is to short for me to learn Haskell's type system. </troll>
16:20whodidthisi heard clojure is all about "god enough"
16:21tbaldridgeWell Rich certainly is god enough for many people.
16:21dissipatesdegutis, 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:21tbaldridge:-P
16:21kaw_cljx is set up to generate .clj into target/generated/clj which is in my :source-paths
16:21sdegutisdissipate: right, which is why we should avoid (. this syntax) in clojure
16:22dissipatesdegutis, or rather, specifically they have guides steering developers away from certain language constructs in C++
16:22dissipatesdegutis, what syntax?
16:23pyrtsadissipate: Probably a good thing there's no Clojure or Haskell style guide in https://code.google.com/p/google-styleguide/ yet.
16:23sdegutisFriends, 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:24sdegutishttps://github.com/bbatsov/clojure-style-guide
16:24pyrtsa^ That's a good one.
16:24dissipatepyrtsa, there wouldn't be because clojure is not an official language at Google, but i'm sure it is used internally
16:25pyrtsaSure. 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:25pyrtsaWhich is a Good Thing.
16:26dissipatepyrtsa, ah, nevermind, i see they went beyond their official languages for that guide
16:26dissipatepyrtsa, well, the problem with that style guide is it doesn't have a 'lint' utility to go with it. :P
16:27sdegutisWell, back to fighting libffi.
16:30dissipatesdegutis, hmm, i see that haskell is not listed for libffi. strange
16:30sdegutisOr is it?
16:30pyrtsahttp://en.wikipedia.org/wiki/Libffi#Haskell
16:32dissipatesdegutis, i didn't see it listed here: http://sourceware.org/libffi/
16:33sdegutisOr is it?
16:36dissipatesdegutis, it is not
16:39kaw_Oops, never mind, my problem was user error with the full module name, CIDER/cljx works fine
16:40sdegutisOr is it?
16:40sdegutisOh yeah you're right it's not.
16:41dissipatesdegutis, to be fair, the list is not intended to be exhaustive
16:42sdegutisOr is it?
16:47murphy_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:47murphy_sorry, bad paste
16:47murphy_(= (- 10 (* 2 3)) 4) while I'm hovering on the 4
16:47murphy_or the 2
16:47murphy_what's the right function to evaluate with ?
16:52liflashmurphy_: I just joined and only see your last three posts, what's your question?
16:53murphy_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:53murphy_e.g. if I use C-x C-e, I need to be at the end of the line
16:53liflashuse C-c C-c from anywhere within the sexp
16:54murphy_that was easy
16:54murphy_thanks
16:54murphy_I wasn't sure how to ask the question to google
16:54liflash:) you're welcome
16:54liflashmaybe you can help me, too
16:55murphy_haha, *probably* not, but we'll see
16:55liflashare you familiar with macros?
16:55murphy_no, not at all
16:55murphy_:)
16:55liflash;) ok, nevermind
16:56liflashso maybe someone else: I'm calling a function within a macro. this function returns a list created by (map ...)
16:56liflashnow I get the error 'string cannot be cast to fn'
16:57liflashhow comes, that the list is evaluated, too?
16:57cYmenliflash: it seems to be trying to execute that map you need to quote it
16:58liflashyeah, 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:00amalloyliflash: code please. it's so much easier to say something specific than talk in generalities
17:01liflashur right, give me a second
17:01cYmenI was about to say something like "uh...just quote unquote?" but then that didn't seem very helpful.
17:04liflashok, here the simplest case reproducing it: (defn foo [] '("foo")), (defmacro bar [] (foo))
17:04liflashcalling (foo) gives the error
17:04amalloywell, calling (bar) does
17:04liflashoh, sorry, calling bar, I mean
17:04liflash;)
17:05aaronj1335hey 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:05isaacbw,(defn foo [] '("foo")) (defmacro bar [] (foo))
17:05clojurebot#'sandbox/foo
17:05isaacbw,(defn foo [] '("foo")) (defmacro bar [] (foo)) (bar)
17:05clojurebot#'sandbox/foo
17:05isaacbwhrm
17:05isaacbw,(defmacro bar [] (foo)) (bar)
17:06clojurebot#'sandbox/bar
17:06isaacbw,(bar)
17:06clojurebot#<ClassCastException java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn>
17:06isaacbwah, persistent scope is nice for an eval bot
17:06liflashah, that's cool... didn't know this is possible here :)
17:06cYmenliflash: Which output would you expect?
17:06pyrtsaliflash: The macro invocation (bar) gets replaced to ("foo") which tries to call the string as a function, which is an error.
17:07cYmenI mean bar contains a list of strings as code...?
17:07cYmen,(defmacro bar [] '(foo))
17:07clojurebot#'sandbox/bar
17:07cYmen,(bar)
17:07clojurebot("foo")
17:08liflashactually this list is contained in a map
17:08liflashaha, hmm... let me try that
17:08cYmenhm... I have no idea why it did what it did.
17:09cYmenWell, I guess the ' makes it create a list and foo is still a symbol...
17:09cYmenmacronfusion.
17:09liflashlol, nice you don't get into it, too ;)
17:09liflashbut thank you very much!!
17:10liflashthis totally does the trick
17:10liflashyou saved my evening
17:11liflashwas working on it for hours already and couldn't find anything on google
17:11liflashI definitely have to read more about macros...
17:11cYmenliflash: obligatory question: are you sure you need a macro? can't you use a function?
17:12liflashI'm working on a web app and use clojurescript.. this macro generates some templates I want to use on the client side
17:15cYmenliflash: What are you making? :)
17:16liflashcYmen: nothing of interest for the crowd ;) A small release planning tool
17:17liflashcYmen: It's just a playfield to get used to clojure/script
17:17cYmen:)
17:17cYmensounds good
17:17cYmenI'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:18liflashhehe
17:18liflashthat's why I decided to do something else than the book practices
17:18liflashIn the last year I read some stuff about lisp, clojure, web dev etc.
17:18liflashbut didn't implement anything
17:19liflashthan I thought it would be boring to go through all the excercises 'again'
17:19liflashwhich book are u reading?
17:20cYmencurrently web-development-with-clojure
17:20cYmenI'm about 2/3 through joy of clojure, too
17:21liflashnice
17:21cYmenI got annoyed by the java interop chapters :)
17:21liflashare they worth reading?
17:21liflashhehe
17:21liflashI don't like it, too... or at least I don't like java any more
17:21liflashbut I guess it's good thing to be able to use it sometimes
17:22cYmenprobably :)
17:24liflashwould you recommend the web-dev book?
17:25cYmenCan't really say because I don't know how much of it you can get in the form of free tutorials anyway.
17:25cYmenBut I like working through examples to get a feel for things and it's pleasant to read.
17:26liflashthat's already a good thing
17:26liflashand I think it's to really get a big picture out of (small) tutorials
17:27aaronj1335can anyone answer this question about rebinding? http://stackoverflow.com/questions/22429778/re-bind-a-random-number-generator-in-clojure
17:33dissipatewhat is the web dev book?
17:33cYmendissipate: we were talking about "web development with clojure"
17:34SegFaultAXdissipate: If you already know about Clojure's web development story, it's probably not that interesting.
17:35dissipatecYmen, i see. and is web development with clojure a joy?
17:35SegFaultAXIt's basically a couple of long tutorials for building trivial applications + some interesting appendices.
17:35cYmenhrhr
17:35cYmencan't tell yet
17:35dissipateSegFaultAX, i don't know the story, but i did hear that Pedastal is going through an overhaul
17:36SegFaultAXThen it might be useful for you.
17:36cYmenSegFaultAX: don't use words like trivial they are demeaning and ruin my motivation :p
17:36SegFaultAXAlthough that book uses liberator not pedestal.
17:37dissipateSegFaultAX, i'm still learning the basics though. today i finally figured out the difference between -> and ->>
17:37SegFaultAXcYmen: Trivial isn't a bad thing, but they can't be very complicated without making the book very long and probably boring.
17:38SegFaultAXdissipate: If you intend to build web apps in clojure, it might be a good starting point.
17:38cYmenI 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:38SegFaultAXPersonally I'd suggest reading Clojure Programming followed by JoC.
17:39cYmenI'm not such a big fan of JoC.
17:39SegFaultAXcYmen: If by a couple you mean like 15.
17:39dissipateSegFaultAX, what about 4clojure?
17:39cYmenIt doesn't really do the common book job of "explaining things well".
17:40dissipatei have a Clojure REPL on my android phone. it's great, especially for looking at docs on the go.
17:40SegFaultAXdissipate: 4clojure is awesome! But it requires at least some knowledge of the language to do anything above elementary.
17:40SegFaultAXdissipate: That's a fun REPL, yea.
17:41SegFaultAXcYmen: Well it's more intermediate to advanced. It's about the why of clojure, not the how.
17:41SegFaultAXThat's why I don't suggest reading it until after you've read cemerick's book.
17:41dissipateSegFaultAX, i thought it was about idiomatic clojure?
17:41jjttjjyeah clojure programming is great
17:42dissipatejjttjj, i bought the ebook version for my kindle paper white. good stuff. :D
17:43robinkIs jRTF still the best way to output RTF from Clojure w/o having to, y'know, *know* the RTF format.
17:43dissipateSegFaultAX, do you use clojure as CLI?
17:44SegFaultAXdissipate: For scripts and stuff? Definitely not.
17:44dissipateSegFaultAX, can't you do cljs with node.js?
17:44dissipatefor scripting
17:45SegFaultAXProbably, but I still don't/wouldn't.
17:45dissipateSegFaultAX, why not?
17:47SegFaultAXdissipate: 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:48dissipatei want a utility that imports all of my Bash commands as symbols in a clojure repl
17:49SegFaultAXdissipate: 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:50dissipate(ls '(l a r t))
17:50SegFaultAXBut I'm probably not remembering correctly.
17:51dissipateSegFaultAX, that would be good
17:51winkcd wonderland && ls
17:53dissipateSegFaultAX, clsh?
17:53SegFaultAXMaybe.
17:54dissipatewell, before that comes out, i'll stick with Python i suppose.
17:55dpritchett_I'm trying to implement a simple trie in clojure just as a learning exercise
17:55dpritchett_not making much headway so far though
17:56dpritchett_mostly due to clojure's style of recursion I guess
17:56SegFaultAXdpritchett_: What?
17:56SegFaultAXdpritchett_: What does that have to do with anything?
17:57dpritchett_i'm about to write one up in ruby so i can explain better
17:57amalloySegFaultAX: 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:57dpritchett_^
17:57winktrie harder :D
17:57SegFaultAXamalloy: Ok.
17:58whodidthishttps://github.com/alandipert/gherkin
17:59SegFaultAXwhodidthis: Yea I saw that when it hit HN a few weeks back. I thought it looked cool if impractical.
18:06dissipatewould the commands in bash be functions or macros in clojure?
18:08amalloydpritchett_: 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:08dpritchett_thanks amalloy, that's what i wanted to do but it works and isn't huge
18:09dpritchett_i'll read through it and see what i can make of it
18:09dissipatedpritchett_, perhaps you could do a red-black tree while you are at it?
18:09robinkCan (should?) I place non-Mavenized dependencies in projectroot/resource?
18:09robinks/resource/resources/
18:09dissipatedpritchett_, actually, you could take things even further and implement the clojure data structures in clojure (e.g. the map)
18:11dpritchett_not a bad idea dissipate
18:11dpritchett_just trying to practice using basic clojure to the point where i can get comfortable doing real work
18:12dpritchett_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:12dissipatedpritchett_, i'm in the same boat
18:14dissipatedpritchett_, 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:15amalloywell, and it's good to have rb trees available, and to use them when they are
18:15amalloyhaving 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:15dpritchett_i finished grad school nearly a decade ago, not sure i've built a datatype from the ground up since
18:15dpritchett_good fun
18:16dpritchett_err data structure
18:25martinklepschcan anyone explain me how reference equality checking works? (thats how it's called is it?)
18:26martinklepschis 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:41robinkAh, found the problem
18:42robinkWhat'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:44robinkOh, duh, into-array
18:45maleghastAnyone in here experimenting with Om / Clojurescript?
18:45rovaryes
18:45rovarprobably a couple dozen people
18:46maleghastI'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:46maleghastAnyone cracked that yet..?
18:48rovarhave you followed the beginner and intermediate om tutorials? I'm pretty sure that is covered in depth
18:51martinklepschmaleghast,also it might be best to ask in #clojurescript
18:51martinklepschmaleghast, 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:51maleghastrovar: Yep, but I may be doing something wrong...
18:52maleghastmartinklepsch: so I need to be using render-state instead of render?
18:52martinklepschif your render function depends on component state yes
18:54maleghastmartinklepsch: 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:57martinklepschmaleghast, you can do it differently but probably you'd want to use state
18:58martinklepschmaleghast, basically, onClick calls a function that calls set-state! and then in render-state you do something like (when (:expand state) (dom/p .... )))
19:00maleghastmartinklepsch: 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:00martinklepschmaleghast, can you pastebin the code somewhere?
19:01maleghastmartinklepsch: Yeah, one sec...
19:03maleghastmartinklepsch: Here you go... https://www.refheap.com/69f0c4a220aa0bc7a2fa0ed5f
19:03maleghastBasically the only bit that is not workign is that the onClick is not creating a new square in a random position.
19:06martinklepschmaleghast first of you want to use render-state instead of having get-state everywhere https://github.com/swannodette/om/wiki/Documentation#irenderstate
19:09martinklepschmaleghast, 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:10maleghastmartinklepsch: Thanks - I'll try that :-)
19:10martinklepschmaleghast, don't quite understand what lines 27-29 are supposed to do — isnt (go ...) a macro for core.async?
19:11maleghastmartinklepsch: Yes it is - I'm using it...
19:11maleghastmartinklepsch: That bit is working :_)
19:11maleghasts/:_)/:-)
19:12martinklepschok, maybe I'm just missing the context then :)
19:12martinklepschgood luck
19:12maleghastmartinklepsch: Thanks very much :-)
19:12martinklepschoh and there is #clojurescript on freenode as well btw
19:13maleghastmartinklepsch: I will go have a look - thanks :-)
19:37trap_exitIs there a simplification of (apply vector (concat ... )) ?
19:37trap_exitlike concatv
19:39michaniskin(vec (concat …)) is a little simpler?
19:39michaniskin,(vec (concat [1 2] [3 4]))
19:39clojurebot[1 2 3 4]
19:42amalloy(reduce into [] [...])
19:45michaniskinvec looks like it does some stuff lazily
19:46amalloyi don't think so. LazilyPersistentVector is just a confusing name
19:51amalloyyeah. vec creates a simple vector structure if the input collection is less than 32 items long, but so does the vector function
19:52amalloywhereas into [] never does the optimization, but does use transients
20:07gfredericksis there any good reason for clojure.core/set not to be #(into #{} %)?
20:07gfredericksit seems bizarre that we have this unoptimized way to create sets which looks more standard
20:09gfredericksI'm just gonna go create a ticket
20:12trap_exitfuck ... I need to insert a <mo> &sum; </mo>
20:12trap_exitbut when I try to insert it, I get a literal &
20:12trap_exitis there a way (in cljs) to generate the unicode char equiv to &sum; ?
20:13gfrederickstrap_exit: can you just use the unicode character directly?
20:14ToBeReplacedgfredericks: same with vec -- is it really slower than #(into #{} %)? (i know nothing about this)
20:14trap_exithttp://rypress.com/tutorials/mathml/symbol-reference.html
20:14trap_exitis the #x part of the unicode character?
20:15gfredericksToBeReplaced: I believe so
20:15gfredericksthere's an open ticket for zipmap
20:15trap_exitgredericks: ha! it worked! thanks!
20:16gfredericks,(let [long-list (range 1000000)] (time (count (vec long-list))))
20:16clojurebot#<OutOfMemoryError java.lang.OutOfMemoryError: Java heap space>
20:16gfredericks,(let [long-list (range 100000)] (time (count (vec long-list))))
20:16clojurebot"Elapsed time: 25.226604 msecs"\n100000
20:16gfredericks,(let [long-list (range 100000)] (time (count (into [] long-list))))
20:16clojurebot"Elapsed time: 19.888831 msecs"\n100000
20:17gfredericks,(let [long-list (range 100000)] (time (count (set long-list))))
20:17clojurebot"Elapsed time: 184.069027 msecs"\n100000
20:17gfredericks,(let [long-list (range 100000)] (time (count (into #{} long-list))))
20:17clojurebot"Elapsed time: 49.259436 msecs"\n100000
20:18gfredericksstarker for sets
20:20gfredericksah ha, vec already uses transients
20:20gfredericksso that is why
20:20gfredericksthat's good now I know what the patch should look like :)
20:20TimMcclojurebot: benchmarking?
20:20clojurebotbenchmarking is https://github.com/hugoduncan/criterium
20:20TimMc:-P
20:22TimMchah
20:28gfredericksI don't think I can write this java code without less than three typecasts O_O
20:29gfredericksPersistentHashSet is typed a bit differently from PersistentVector
20:39gfredericksha whoever was asking for rhickey's public email address the other day could have got it from the pom.xml
20:40trap_exitwhy do people need r hickey's emial?
20:41trap_exitI 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:42gfrederickswanted to ask about speaking
20:42trap_exit1) grow curly hair
20:43trap_exit2) spend 3 years thinking in a hammock
20:43trap_exit3) invent a famous language
20:43trap_exit4) speak :-)
20:43gfredericksno somebody with a conference
20:43gfrederickswanted him to speak at it
20:43trap_exitoh
20:44trap_exitI think the solution to that problem
20:44trap_exitis pay 10x regular speaking rates :-)
20:46gfredericksyeah he said he turns down at least twice as many as he accepts
20:47gfredericksI don't know of any keynote he's done since last year's clojure/west & variants thereof
21:00gfredericksdoes anybody know about NPE's in clj-stacktrace masking actual exceptions?
21:21charechannel dead
21:26amalloygfredericks: i know that it happens, so i don't use clj-stacktrace
21:31john2xoh, (:require (foo [bar.baz])) isn't allowed?
21:34amalloyjohn2x: no. most folks discourage using prefix lists at all these days
21:35john2xoh ok. I thought it was good practice..
21:37xeqionly person I know who does that is cemerick
21:38amalloyxeqi: ztellman
21:38ztellman?
21:38amalloyztellman: using you as an example of someone who uses prefix lists in :require
21:39amalloysorry for the unwarranted ping
21:39ztellmanhaha, no worries
21:39ztellmanwhere did I do that?
21:39ztellmanusually I'm verbose about it, I think
21:39amalloyyou do it like everywhere, IIRC
21:40ztellmanoh, in the bigger libraries, yeah
21:42amalloymaybe i'm thinking of the potemkin imports or something. i can't actually find any examples in lamina
21:43gfredericks(inc Raynes)
21:43lazybot⇒ 44
21:44gfredericksamalloy: I'm not intentionally using clj-stacktrace; this might be nrepl?
21:44gfrederickscider? dunno
21:44amalloygfredericks: probably. that's one reason i still use slime - i tried nrepl and got clj-stacktrace bugs once
21:47gfredericksamalloy: oh man you're some kind of double hipster
21:49amalloydouble?
21:50gfrederickswell I mean if we count clojure + emacs maybe triple
21:50gfredericksI can't defend the statement as particularly interesting
21:50amalloy*chuckle*
21:51Raynesgfredericks: What did I do?
21:52gfredericksRaynes: 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:52gfredericksthen guess what I did
21:52Raynes[me.raynes/irclj "someversionhere"[?
21:52gfrederickstotes magoats
21:52RaynesExcept with the proper closing brackets, of course.
21:56gfredericksRaynes: it is the most ridiculously undocumented library that I have ever had the easiest time using
21:56Raynesgfredericks: Yeah, it was left in a pretty transitory state.
21:56RaynesWhich is why there is no official release.
21:56RaynesI don't really release libraries without pretty thorough docs.
21:56RaynesBut the library should work fine.
21:57RaynesJust may be missing things here and there
21:57RaynesNothing prohibitive for most use cases.
21:57gfredericksI take it back, it would have been rather harder without the large comment at the top of core.clj
21:57Raynesamalloy 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:58ztellmanRaynes: haven't you heard? Lamina's old hat https://github.com/ztellman/manifold
21:58RaynesWhatever crazy shit you're working on lately
21:58RaynesThat's what irclj should use
21:58ztellman:)
21:58Raynes<3
21:59ztellmanRaynes: you coming to Clojure/West?
21:59RaynesNope
21:59Raynes:(
22:00Raynesamalloy will be the life of the party for me, I'm sure.
22:00gfredericksclojurebot: manifold is an abstraction layer for event-driven compatibility
22:00clojurebot'Sea, mhuise.
22:00gfredericksamalloy is going?
22:01amalloygfredericks: indeed
22:01ztellmanFactual's out in force
22:01RaynesScopely's holding down LA for you guys.
22:01gfredericksRaynes: is amalloy safe to talk to using faces?
22:01RaynesI do it quite often.
22:01amalloy:D
22:02RaynesBe careful. His wit is quite sharp.
22:02RaynesDon't want to get cut.
22:02Raynes;)
22:02amalloy:/
22:03gfredericksthis must be amalloy's first conference
22:03amalloyi went to the conj in...2011?
22:04xeqiam ma loi
22:05gfredericksAma El El Oh Why
22:06amalloyin person it's usually just easier to call me alan
22:09AmandaCWhatever you say “alan"
22:10Raynesgfredericks: He answered like the majority of my clojail talk's questions at the second conj :P
22:10gfredericksamalloy: I assume that's because my middle name is alan; so you can call me by your middle name
22:11gfredericksRaynes: that was the first of many conj's that I didn't attend
22:29dsrxsort of off-topic: does elisp have a reader macro equivalent or near-equivalent to #_ in clojure?
22:40hyPiRiondsrx: C-M-@ M-; ? It's not a reader macro, but comments out current sexp
22:44dsrxhmm