#clojure logs

2012-02-07

00:00seancorfieldoh, and i added (:use [jayq.core :only [$ css inner]]) even tho' i'm not actually referencing any of those in my code yet :)
00:04seancorfieldah, just using jayq seems to be causing the compiler to munge my code...
00:10seancorfieldok, i swapped the order of the (:use) clauses and my code started working...
00:10seancorfieldbut the compiler seems to get pretty confused about the namespaces of symbols
00:11seancorfieldat least, if i have more than one (:use) in a .cljs file...
00:13seancorfieldi removed (:use [example.util :only [..]]) and tried to use the jayq stuff... now i get an error that $elem has no function innerHTML on it... i hate javascript :(
00:13dnolenseancorfield: innerHTML is not a property
00:13dnolenseancorfield: er I mean not a function, it *is* a property
00:14dnolen(.innerHTML $elem) now always means call a method in CLJS
00:14seancorfieldi didn't write that - it's something in ibdknox jayq library...
00:16seancorfieldjayq.core.inner is defined to call (.innerHTML $elem v) which is indeed what the compiled code does
00:16seancorfieldso the problem is $elem is not what i think it is i guess...
00:18dnolenseancorfield: $elem probably needs to be an element wrapped by jQuery
00:18dnolenyou can't pass in a raw element
00:18oakwiseseancorfield: possibly a bug from before the cljs property syntax change
00:20oakwisejQuery objects don't have an innerHTML method afaik
00:20dnolenoakwise: ah you're right, so a bug in jayq
00:20dnolenit should be (.html $elem v)
00:22cemerickibdknox: jayq looks nice :-)
00:22seancorfieldyeah, it looks great... i'd be happier if i could get it to work
00:23cemerickI've been maintaining sanity by keeping my cljs bits out of browsers. ;-)
00:23oakwiseseancorfield: are you using advanced compilation?
00:23seancorfieldthe docs say to call ($ :#foo) and then pass that into (inner .. "html") and that's where i hit the innerHTML call problem...
00:24seancorfieldoakwise: no, not until the basic code works first! i'm not daft :)
00:24oakwisetry another non-buggy function :)
00:24seancorfield:p
00:25seancorfieldbut, yup, you guys seem to be spot on - it should be (.html .. "stuff") instead
00:29seancorfieldok, happy dance... it works now :)
00:30seancorfieldi'll create an issue on jayq for ibdknox
00:32ibdknoxseancorfield: it's weird that that works for me
00:32ibdknoxlol
00:33seancorfieldah, there he is! :)
00:33seancorfieldwhich version of jquery are you using?
00:34ibdknox1.7
00:34seancorfieldi pulled in 1.7 too
00:34ibdknoxanyways, it *should* be html
00:36seancorfieldwhat's the /deps.js that it tries to pull in?
00:36ibdknoxhm?
00:36seancorfieldi ended up creating an empty file there to get rid of that warning
00:36ibdknoxwhat mode are you using?
00:36ibdknoxI always use simple
00:36ibdknoxit seems to be better that way
00:36ibdknoxjust pushed an update for the innerHTML thing
00:37ibdknoxcemerick: I think there's a lot more that can be done with it :) I've just added the things I've needed as I've gone
00:37seancorfieldi'm using :optimizations :whitespace
00:38ibdknoxtry :optimizations :simple
00:41ibdknoxthe other way seemed convoluted to me
00:49seancorfieldheh, ok, i'll try that too
00:53ibdknoxthe advantage is that if you do it that way you only need to include the final output file
00:53ibdknoxhere's what my options look like:
00:54ibdknoxhttps://refheap.com/paste/658
00:57seancorfieldi don't have output-dir (and i'm using cljsbuild btw)
00:57seancorfieldbut otherwise the sample
01:00seancorfieldlooks like :simple does more optimization than :whitespace (renaming variables) so that makes it a bit harder to debug
01:01seancorfieldibdknox: when will a new version be available on clojars?
01:02seancorfieldout of curiosity, having forked jayq, how would i actually build and install it locally to test?
01:08ibdknoxseancorfield: it's already up, but you'll need to remove your cached .m2 version of it
01:08ibdknoxand you can just add it to checkouts
01:09ibdknoxthat was also my params for cljsbuild
01:09ibdknoxfor the :compiler directive of it
01:14radsibdknox: do you plan to improve the jquery api with jayq, or is it just a thin wrapper? for example, it makes more sense to me to have separate attr and set-attr! functions like domina
01:15seancorfieldi'm getting jayq-0.1.0-20120207.003002-3.jar - is that the new version?
01:19seancorfieldi'm still seeing a call to .innerHTML
01:19ibdknoxrads: why is that better?
01:20radsI prefer the smaller functions and the separation between reading an attribute and mutating it
01:21radsnot to mention some functions like val conflict with clojure.core. the domina api feels more tailored to clojure than jquery's
01:23seancorfieldhmm, ok, verified the jar has the right code in it
01:23seancorfieldwonder whether the cached code in coming from?
01:25ibdknoxrads: sure, mostly I'm going for a thin wrapper that better things can be built on top of.
01:25ibdknoxseancorfield: make a change in one of your files to get it to recompile
01:25seancorfieldi did that... several times...
01:25seancorfieldi even deleted the .js file and forced a recompile
01:26radsibdknox: I see. does that mean the api will stay somewhat consistent with jquery?
01:28amroseancorfield: I had an issue once where part of a file wasn't being compiled because of a syntax error, the file just cut off after the namespace stuff. check the compiled .js for a clue
01:28seancorfieldthe .js file is complete and "works" except that the version of jayq.core.inner is the old version
01:29cemerickno xpath is enough to predispose me to jayq, if I were to get into the client-side stuff
01:30ibdknoxrads: not necessarily, when there's gains to be had I'll definitely take them :)
01:32seancorfieldi've deleted the .js file, i'm doing a lein clean, deps, run again and then i'll do lein cljsbuild once to see if that clears it... *sigh*
01:33oakwisedon't forget `git clean` for completeness :)
01:34ibdknoxseancorfield: I always have to save again once cljsbuild starts
01:34ibdknoxotherwise it doesn't seem to pick up the change
01:34ibdknoxfor what that's worth
01:35seancorfieldi deleted classes, lib and the .js and restarted everything and i'm still getting the old function even tho i double-checked the jayq jar and it has the fixed .cljs code
01:35seancorfieldis there anywhere else it could be caching stuff??
01:35lazybotseancorfield: Definitely not.
01:36seancorfieldlazybot: you're not helping!
01:37ibdknoxyour browser might have it cached
01:38seancorfieldnope
01:39seancorfieldi checked the generated source on disk
01:39seancorfieldi don't know whether something in cljsbuild has cached the old jayq.core or ...??
01:39lazybotseancorfield: What are you, crazy? Of course not!
01:42ibdknoxthat seems unlikely
01:43seancorfieldi'm going to upgrade lein-cljsbuild - i'm on 0.0.10 and 0.0.11 is out - maybe i'm running into a bug there
01:49seancorfieldok, i have _no_ idea why this isn't working... the jayq jar in lib definitely has the right inner fn defn
01:49seancorfieldi deleted everything i can think of locally and re-gen'd
01:50seancorfieldsomething, somewhere is either caching the .cljs or some pre-gen'd .js code
01:50seancorfieldi'll look at the source of cljsbuild
01:50ibdknoxthere should be some out directory somewhere
01:51ibdknoxthat has .js in it
01:53seancorfieldi looked in cljsbuild - it uses the parent folder of the output-to file as the output-dir folder and that was clean
01:54seancorfieldwhat about the closure compiler? could it be stashing things somewhere?
01:55ibdknoxI don't believe so
01:55ibdknoxis there an older version of jayq hanging around in lib?
01:56seancorfieldnope, i've deleted lib and re-run deps
01:56seancorfieldand then un-jar'd the jayq jar it puts there - that's how i know the fixed version of inner is in there!
01:56amalloyaw, seancorfield, you're so unkind to lazybot. sounds like he was right
01:57seancorfieldwanna slap too buddy? :)
01:58ibdknoxlol
01:58seancorfieldlooking at the cljsbuild source, you can specify output-dir in the compiler options... it's used for some things... didn't see what it does for a default
01:59ibdknoxtry using my settings
01:59ibdknoxhttps://refheap.com/paste/659
01:59ibdknoxminus those externs
02:00seancorfieldoh great, now i have a SEGv from java... *sigh*
02:00franksamalloy: if you got a minute, would you mind to take a look at "https://gist.github.com/1757862", which is an implementation of inheritable-thread-local, a modified version of your useful.utils/thread-local... (it's tricky stuff with all those macros and threads...)
02:04amalloylooks a bit rubbish, tbh. only works for values which are atoms, for starters. the evals all over the place absolutely must be wrong, too
02:04amalloyi think if you start with a clearly-defined goal of how you want these to behave there's a pretty clear/concise implementation to make it happen
02:05seancorfieldibdknox: somehow, it recompiled things properly this time!
02:05ibdknoxscore
02:06seancorfieldi added :output-dir so i'm wondering if the closure compiler had cached something in its default place?
02:06ibdknoxmaybe.. I'm not sure where that would be
02:06ibdknoxI've only ever run it with an output dir
02:06seancorfieldi shall make sure i keep it that way now :)
02:07ibdknoxsorry it ended up eating so much time :(
02:08seancorfieldnp, it's all bleeding edge tech
02:08seancorfieldthere's definitely a cache at play... when i added :output-dir the first compile spat out two warnings like this:
02:08seancorfieldWARNING: The form (. $elem remove) is no longer a property access. Maybe you meant (. $elem -remove) instead?
02:08seancorfield
02:09seancorfield(the other one was about -empty
02:09seancorfieldi hadn't seen those warnings since the first compile of jayq - even with the jar updates inbetween
02:09seancorfieldso g-closure had not been recompiling jayq
02:11seancorfieldyeah, now i have an :output-dir i can see all the cached files there...
02:11amalloyit occurs to me that the (. obj -member) form is a lot less convenient to generate from macros - you have to do nonsense like `(. ~obj ~(symbol (str "-" (name member))))
02:12seancorfieldtrue
02:12amalloywhich is about as inconvenient as trying to generate (.member obj)
02:13ibdknoxyeah it sucks
02:13ibdknoxluckily I haven't had a need to do that yet :p
02:14seancorfieldat least now i know i can just delete the :output-dir if things don't seem to be compiling right
02:16ibdknoxyeah
02:20franksamalloy: ok - i'll take another look
02:37ibdknoxhm
02:37seancorfieldibdknox: i switched to :advanced mode and things fail
02:37ibdknoxseancorfield: you'll need to add the extern for jquery
02:37seancorfieldah... how/where do i do that?
02:37ibdknoxtechnomancy: I ended up with lein 1.7 somehow and now anytime I try to run a lein command it eats all available cpu
02:37seancorfield(and why isn't that picked up automatically from the jayq jar)
02:38ibdknoxyou have to specify it in the compiler options
02:38seancorfieldoh, like you had in your options?
02:38ibdknoxyeah sort of, except mine is from a checkout
02:39ibdknoxit's supposed to work from resources with the latest cljs
02:39ibdknoxso I think it'd just be externs/jquery.js?
02:39ibdknoxI'm not sure
02:39seancorfield'k
02:39emezeskeseancorfield: Hey, I am back, reading the hilighted text :)
02:39ibdknoxworst comes to the worst, just download the file stick it in your project somewhere
02:40emezeskeseancorfield: Regarding the cached jayq stuff, I have been feeling that pain too
02:40ibdknoxas long as you use an output dir, I've not seen any issues
02:41emezeskeseancorfield: Since the resource is coming out of a jar, I don't think there's any good way for cljsbuild to see a timestamp that says it changed
02:41seancorfieldugh, i hope this sort of stuff gets cleaned up in cljs soon... it's a real drawback to actually trying to use it for anything real :)
02:41emezeskeseancorfield: The compiler does try to be smart with files in the :output-dir; as in it doesn't recompile things if they are up to date (supposedly)
02:42emezeskeseancorfield: That's why lein cljsbuild clean fixes it; it removes the :output-dir
02:42seancorfieldah, good to know... i was manually deleting that folder :)
02:43seancorfieldibdknox: externs/jquery.js doesn't work - it's looking for a physical folder in my project, not within the jar
02:43ibdknoxhm
02:43seancorfieldso i guess i have to pull it out of the jar and put it in my project... yuk :(
02:43ibdknox:(
02:43seancorfieldemezeske: is the 0.0.11 cljsbuild using the latest cljs compiler?
02:43ibdknoxI know some work was done at some point to make externs available from the classpath
02:44emezeskeseancorfield: yeah, as of a couple days ago
02:44emezesker971
02:44ibdknoxseancorfield: what if you just do jquery.js?
02:44seancorfieldok, lemme try that
02:45seancorfieldthis netbook's real slow so bear with me...
02:45seancorfieldnope, still looking for a physical file
02:46ibdknoxI'm afraid pulling it out is the solution for now then :(
02:49seancorfieldok, pulling out the externs does seem to work... just restarting everything with a clean set of directories to be sure...
02:50seancorfieldsuccess!
02:50seancorfieldthank you for your patience gentlemen
02:51seancorfieldat this point, i'm off to bed
02:52seancorfieldbut at least i can now use jquery with clojurescript and not have to bother with my slightly jerry-rigged utility script to manipulate the DOM (as shown in my blog post about clojurescript and fw/1)
02:55emezeskeseancorf`: wooo!
03:02emezeskeibdknox: BTW, thanks for all your cool cljs jars
03:03emezeskeibdknox: I'm almost done changing my project from a bunch of ad-hoc stuff to fetch, crate, and jayq, and a LOT of code has gone away
03:30madaI just fscked up and checked out code from RCS, overwriting my working copy.
03:30madamy last hope is that I can extract the code some way from the running clojure instance
03:30madais it possible?
03:31RaynesIs it git and was the code that you overwrote ever committed?
03:31madanow, it's not git... RCS. old stuff... :(
03:32RaynesOh, you mean actual RCS?
03:32madaI am so used to SVN and git and was just thinkinh I should commit...
03:32RaynesHoly crap, man.
03:32madayes :)
03:32RaynesI'm more interested in why you were using that than getting your code back now.
03:32Raynes:p
03:32madaIt's default in Emacs if you have no other VCS installed.
03:33madathat's why
03:33gf3good morning, all
03:33gf3I am writing some middleware for ring, is there a common way to search for resources on the classpath?
03:33madaso, I have a running clojure instance with the correct code, and an emacs buffer with the checked out older code
03:33amalloyemacs, you have betrayed us all
03:33raekgf3: yes, clojure.java.io/resource
03:33madaand emacs seems to record no undo history for operations like this
03:34madaso... should I just rewrite it all or is the code deep down in clojure?
03:34madathe clojure verson is a bit old as well so the source function does not seem to exist...
03:34raekthe clojure compiler does not store the original code
03:34amalloyif the files have been checked out, the running clojure instance doesn't have the code
03:35madaok
03:35raekmada: the source function just looks up the file and number, opens that file and extract the relevant lines
03:35madaah
03:36madaalso, I keep most of my code synced with Dropbox but this file happened to be in another place :)
03:36madaso no help from Dropbox either
03:38aperiodicman, that would be the worst disassembly task ever. bytecode -> decompiled java -> clojure?
03:39madaaperiodic: are u up for the challenge? ;-)
03:39aperiodicno way
03:39mada:)
03:39aperiodicnot at all
03:39madaI'm so angry with the C-x v v right now!
03:39madaHow can it just overwrite my file?!
03:40madaokay, I was careless, but...
03:40madagrr......
03:40amalloyactually going from decompiled java to clojure usually isn't that hard. it's mostly a bunch of "load constant (clojure.core$map), invokevirtual (invoke(Object, Object[]))"
03:41mduerksenmada: i don't know emacs very well, but couldn't there by some temporary backup/buffer files flying around somewhere?
03:41madamduerksen: it is a good question :)
03:41mduerksenby->be
03:42madatime to google a bit...
03:45amalloyit's hard to believe you wrote this much code without committing. like, the amount of time you've spent hoping there might be some magic seems like it must be less than the time it woudl take to re-do it
03:46madaamalloy: I have a copy from yesterday so it's not that much.
03:46madain an hour it will be back again, working approximately like now
03:56muhoofirefox10 has crashed one too many times. off with its head!
03:58Raynesmuhoo: Poppycock! Firefox never crashes. ever.
04:04tsdhmada: You might have luck and emacs kept some backups somewhere. If you didn't configure anything, there should be a backup file foo.clj~. If you configured version-control to t, then there are even more than one old version around (~1,~2,...). Maybe, they go into some central backup directory, depending on the value of backup-directory-alist.
04:05madatsdh: Thanks, there is a backup file in the directory, but it is not my working version. It looks like it is... I don't know. But I have accepted my fate now and am rewriting it.
04:06madaI have been bitten by this once before but it seems my memory it too short to learn from it...
04:06madaI think now is the time to do something about it.
04:06madaThe setting you mention above sounds promising.
04:06madaIf I would keep, say, three old versions, problems like this should be possible to solve.
04:33tsdhmada: Yeah, I also have (setq version-control t) (setq backup-directory-alist '("." "~/.backups")) (setq kept-new-versions 10).
04:45osa1what are points of :dynamic and :static metadata?
04:47raekosa1: :static does not exist anymore
04:47echo-areaIs :dynamic for dynamic binding?
04:50tsdhecho-area: Yes. Only vars declared as (def ^:dynamic *foo* ...) can be bound dynamically using `binding' from Clojure 1.3 on.
04:59echo-areatsdh: Okay, thanks
05:00echo-areaDidn't know the "Only" part before
05:07jaleycan anyone tell me what I *should* be doing to download a binary file with clojure.java.io? This produces a corrupt file; (io/copy (io/reader url) (File/createTemporaryFile "tmpzip" ".zip"))
05:07raekjaley: you should use binary streams, not text streams
05:08raek(io/copy (io/input-stream url) (File/createTemporaryFile "tmpzip" ".zip"))
05:09jaleyraek: that's a text stream? oh... didn't see anything in the docs. thanks, I'll try that.
05:10raekReaders work on chars, InputStreams work on bytes
05:10raekclojure uses the java primitives for file io
05:10raekjaley: also, you need to close the streams
05:10jaleyraek: got it, with-open?
05:11raek(with-open [in (io/input-stream url), out (io/output-stream (File/createTemporaryFile "tmpzip" ".zip"))] (io/copy in out))
05:11raekjaley: yes
05:13raekok, I now saw in the docs for copy that you don't need to manage the closing of the File (since copy would open it itself)
05:13jaleyraek: that works - thanks for the help!
05:13raek(with-open [in (io/input-stream url)] (io/copy in (File/createTemporaryFile "tmpzip" ".zip")))
05:13raekshould work too
05:14jaleyraek: that's fine, having two streams in with-open kinda feels symmetric :-)
05:14raekyes, I totally agree... :-)
05:48otfromanyone know how to reset a password on clojars.org?
07:54cran1988is there any book to teach you not to use recursions , but data stractures only ?
07:55cran1988i mean clojure has fabulous data stractures ... but my head can not work with them and my head gets confused with easy solutions such as recursions
08:12osa1is there a way to specify default values of slots in defrecords?
08:13llasramosa1: You can create own Clojure constructor/factory functions, but you can't change the generated class's JVM-level constructor
08:13osa1ok, thanks
08:24lnostdalouh, new version of lein? .. what's new? :)
08:34clgvlnostdal: https://github.com/technomancy/leiningen/blob/1.x/NEWS.md
08:36lnostdalah, nice .. tiered
10:55TimMcRaynes: You can tell BrowserID is evil because when I finally signed up, the paste number I got was... https://refheap.com/paste/666
11:01muhoowow, that's extremely useful: https://refheap.com/paste/666
11:01muhoobeats reading javadocs
11:02TimMcmuhoo: Hmm?
11:03muhoooh, this: ##(filter #(= (.getName %) "abs") (.getMethods Math))
11:03lazybotjava.lang.SecurityException: You tripped the alarm! package java.lang.reflect, Java Platform API Specification, version 1.6 is bad!
11:03muhoook whataver
11:03muhooalso, i find that function interesting because it's using ` and ~ but it's not a macro
11:03TimMcmuhoo: There used to be a utility that presented this info really nicely.
11:04TimMcmuhoo: It's part of a macro, actually. But yeah, some people use them all the time in regular functions *cough* amalloy *cough*
11:05TimMcand the macro is broken -- note the "# #" at the end.
11:16muhooTimMc: do you remember what the name of the utility is or how i could find it?
11:16muhoono need to reinvent the wheel if someone's already done it
11:16TimMcIt was called "show" and was in contrib.
11:16TimMcclojure.java.reflect or whatever just doesn't cut it.
11:17clgvmuhoo: clojure.contrib.repl-utils had the show
11:17TimMcA really good utility would grab local javadocs.
11:17muhoopast tense?
11:17clgvclojure.contrib is deprecated
11:17muhoo:-/
11:17muhoobut i thought all the stuff from contrib got broken out into separate packages?
11:17clgvbut you can safely use it with clojure 1.2 and try to do so with 1.3
11:18TimMcmuhoo: Monolithic conrib is deprecated, but you can actually use pieces of it just fine.
11:18clgvmuhoo: maybe it has. but you have to look where...
11:18muhoook
11:18clgvTimMc: yeah but namespaces in monolithic contrib are not necessarily available as standalon projects now...
11:22muhooi keep reading pom as porn
11:22muhooin helvetica/ariel
11:22clgvhaha
11:25lynaghkWatch your keming.
11:26muhoo,rimshot
11:26clojurebot#<CompilerException java.lang.RuntimeException: Unable to resolve symbol: rimshot in this context, compiling:(NO_SOURCE_PATH:0)>
11:26muhoo&rimshot
11:26lazybotjava.lang.RuntimeException: Unable to resolve symbol: rimshot in this context
11:26muhoodamn you
11:27Fossialmost as good XD
11:28mintsouphas anyone here used korma? do you like it better than using an orm? are there any alternatives to consider?
11:30muhoowhat?? why?? "Migrated to clojure.repl and clojure.java.javadoc, except: show, expression-info, run, run*"
11:30muhoowhy did show get kicked to the curb?
11:31TimMchaha, that's awful
11:35kcinvresg'day
11:35kcinvresany logic programmers in here?
11:36clgv~any
11:36clojurebotCool story bro.
11:36kcinvresI just watched Ambrose's talk on core.logic
11:37clgvkcinvres: cool some of the talks are available as videos... thx for that notice
11:38kcinvresit seems like you give the evaluator things that match the inputs and outputs and provides programs that solve for those
11:39kcinvresAnd he describes how the evaluator/program is actually traversing search trees to find each answer.
11:39kcinvresIf I understand correctly.
11:39clgvkcinvres: do you have prolog knowledge?
11:40kcinvreswhat I don't understand is what makes up that search space.
11:40kcinvresclgv: no
11:40clgvah, so you are completly new to logic programming
11:41kcinvresyes
11:42kcinvresLike, in the process of solving, does it say "okay, I'll try putting values in here and see if any of them return true"
11:43clgvas far as I remember the basic idea is that you describe your problem and the solver searches the tree of possibilities
11:43kcinvresbut does it have a predefined range of inputs it can use? like numbers, strings, and the types available at run-time?
11:43kcinvresas inputs to test for?
11:43clgvoft (if not always) you start by writing facts and then more advance rules that use those facts with variables where the solve can try to unify values
11:44clgv*often
11:44clgvthe range is usually defined by facts. but I dont know specifics from core.logic (yet) ;)
11:45kcinvresok
11:45muhoois there a way to add a jar to a clj project while it is running, without restarting the jvm?
11:46kcinvresadd-classpath... but it is deprecated
11:46clgvkcinvres: someone published a tutorial/guide on logic programming with core.logic. sadly I dont remember the URL
11:47clgvmuhoo: you can copy the add-classpath code. I did so for an experiment
11:47kcinvresmuhoo: but this attempts to be the non-deprecated solution: https://github.com/cemerick/pomegranate
11:47kcinvresclgv: reading it now :) https://github.com/frenchy64/Logic-Starter/wiki
11:49clgvkcinvres: I am not entirely sure whether this was the one I meant. but looks good as well
11:49muhookcinvres: thanks, that's great!
11:50kcinvresmuhoo: np
11:50kcinvresas an example...
11:50kcinvres(run* [q] (== q 1))
11:50kcinvres;=> (1)
11:51kcinvresSo, core.logic starts guessing at values of q, right?
11:51kcinvresand presumably it would guess some numbers
11:51kcinvresand presumably it would guess 1
11:52kcinvresbut does it start at 0 and work it's way up?
11:52clgvkcinvres: I believe it is not guessing but unification
11:52kcinvresdoes it start with ints, then longs, then doubles?
11:52kcinvreswell, what about: (run* [q] (== q "1"))
11:53kcinvresdoes it ispect the type of the "1"?
11:53kcinvresand say, okay, now let me start iterating over a range of strings?
11:54clgvkcinvres: I think the unfication inspects both sides sees one constant and one variable. hence the result is the substitution of the variable by the constant
11:54clgvkcinvres: if it's not explained in the tutorial you should read about unification in logic programming
11:54kcinvreswell, what about: (run* [q] (== q (str "1" "unlinkely")))
11:55kcinvrespresumably, q would be "1unlikely"
11:55clgvkcinvres: depends how core.logic and plain-clojure work together...
11:55kcinvreswell, however that might be written
11:56clgvmaybe plain clojure without logic variabls is just evaluated and handled as a constant.
11:56kcinvrescan you not use clojure functions?
11:56clgvdoesnt the tutorial explain it?
11:56kcinvresI think I know what you mean
11:56kcinvresclgv.. no in detail. I'm going to reread unifications
11:57kcinvresbut I think you're right.. I think the "(str " part of the form would need to be a predefined logic "relation"
11:57clgvwell you can write books about that topic although many are written already ;)
11:58kcinvresand then it could _derive_ "1unlikely" based on the relation
11:58kcinvresclgv: are you implying that I'm longwinded ;)
11:59clgvlol I am not implying anything. I just remembered that the professor I had in logic programming has written one ;)
12:00muhoowooww. aether is huge
12:01muhooi didn't realize that a little (i thought) library to allow me to add-classpath in a non-depreciated way would require so much heavy dependencies
12:02clgvkcinvres: no it does not guess
12:02clgvlol oops
12:02clgvscrolled back ;)
12:02clgvok gotta go home now^^
12:05kcinvresmuhoo: yea, it's pretty serious hardware
12:12muhoohmm, comp is a brainmelter. i so am using the wrong language for someone without a MSCS
12:13technomancyibdknox: wait what?
12:16TimMcmuhoo: Augh, I figured out the # in the macro expansion. I'm sucha dunce.
12:16dnolencomposition via delegation when using protocols seems like an interesting discussion ...
12:16muhooTimMc: what was it?
12:17TimMcmuhoo: I've set *print-depth* in my REPL. That's how it indicates a depth limit. >_<
12:17muhooah
12:17muhoooverloaded ascii characters
12:17TimMcfml
12:18muhooi'm staring at this like a phish phan at a water pipe: https://refheap.com/paste/670
12:18muhooand going, "whoooaaaaa..."
12:19TimMcHeh, point-free style.
12:21muhooi've decided to try to not be so terrified, and jump in writing shitty, inefficient, non-idiomatic clojure, and not worry about the fact that so much of it is over my non-cs-degree'ed head.
12:21muhoolike, if i wait to understand stuff like when to use comp, for instance, i'll never actually start writing anything.
12:23muhooactually i think i'm kind of grokking comp. it seems like -> to me a bit
12:24technomancyyou don't need comp or ->; they are just conveniences
12:24technomancyjust write code without them until it bothers you, then you'll be better-suited to understand the problems they address
12:24muhooexcellent, thanks.
12:25muhooyeah, that's what i'm kind of arriving at. there's no need for me to try to use or even understand these advanced features, until i've written enough stuff where i start thinking, "gawd, there has got to be an easier, cleaner way to do this"
12:26muhoothen of course, i'll write macros to do it. then i'll discover that the feature is already in clojure.core somewhere :-) so, 3 iterations really: one without the abstractions, one with my own crappy ad-hoc abstractions, and one finally doing it The Right Way.
12:28oakwisethat sounds like as good a plan as any
12:28TimMcafter you start using macros, you'll learn when not to use macros :-)
12:28muhoowell, maybe not macros, but functions/libraries of my own, before discovering someoen has already done it better
12:29muhooi am not a macro-fetishist. not yet, anyway.
12:42muhoohmm, what's this: FileNotFoundException Could not locate ring/middleware/content_type__init.class or ring/middleware/content_type.clj on classpath: clojure.lang.RT.load (RT.java:430)
12:43oakwisemuhoo: I've seen that when cleaning/changing libs and forgetting to restart my ring server
12:46muhoothis is what caused it to break: https://refheap.com/paste/671
12:47muhoothen, trying to load necessary-evil gives me this: CompilerException java.lang.IllegalStateException: Can't dynamically bind non-dynamic var: clojure.contrib.macro-utils/protected-symbols, compiling:(clojure/contrib/monads.clj:195)
12:47muhoothat's a real kick in the monads.
12:47oakwiselooks like it's using old 1.2 code
12:48muhoowhat is?
12:48muhoonecessary evil depends on clj 1.2?
12:49muhooah
12:49muhooyes.
12:49oakwisetry the latest snapshot
12:49muhooi need 2.0.0
12:49oakwiselooksl ike it's 1.3-friendly
12:51muhoosilly debian user i am, always going for the "stable" version of packages :-)
12:54kcinvresmuhoo: I barely ever use advanced functions like comp. And I've never written a macro.
12:54kcinvresbut I get stuff done in clojure regularly
12:55kcinvresMy sister has this telework job where she operates a web interface all day.
12:55kcinvresIn a day I wrote a script to automate a quarter of her job for her.
12:56kcinvresI used clj-webdriver (selenium) to automate some of the repetitive actions.
12:56kcinvresI've also written a few scripts for work.
12:57muhoocool!
12:57muhoohmm, i keep getting kicked in the monads: https://refheap.com/paste/672
13:01muhooworks now, not sure what that error was
13:01enrico1hello
13:02muhookcinvres: yep. i'm kind of through with being intimidated by the CS geniuses. there's lots of stuff i use other languages for, that i could use clj for instead, and enjoy it.
13:02muhooeven if i don't understand half the code i read, i can still write stuff that *i* understand.
13:03muhooyay, necessary evil is loaded. i'm now on my way to writing something useful and pedestrian :-)
13:04enrico1I almost finished reading "the joy of clojure", and willing to start my first clojure experiments
13:05enrico1however my head is going to explode around an issue I'm trying to solve about java interoperability
13:06kcinvresI pretty much brute-force all my projects. They say work smart not hard, but but if you can't work smart, clojure makes still makes it easier
13:06muhoocool. i'm about halfway through joy. if i can make it all the way through, it'll be a triumph.
13:07muhooyep, i've decided i'm a brute-force kind of guy too.
13:07enrico1for what I realized, it's idiomatic, in clojure, to implement "with" macros in order to use "closeable" resources
13:07kcinvresI think it may have something to do with the fact that I never fully indoctrinated into the object oriented mindset
13:07muhoomuch as i love and admire elegance.
13:07cran1988can I ask why set and vector have different value with partition-by ?
13:07muhooi *hate* OOP, or, as the french more accurately call it, POO
13:07kcinvresset is not ordered
13:07cran1988,(partition-by type [:a "foo" "bar" :b])
13:07clojurebot((:a) ("foo" "bar") (:b))
13:08cran1988,(partition-by type (set [:a "foo" "bar" :b]))
13:08clojurebot(("foo") (:a :b) ("bar"))
13:08cran1988weird!
13:08enrico1the problem I'm unable to solve is the following:
13:08TimMcmuhoo: And {:a 1 :b 2} isn't an object?
13:08muhooit's a map, no?
13:09kcinvresoh my bad
13:09enrico1imagine you have to implement a java class (with clojure) that have some "service"-like interface, with start() stop(), and, maybe a process() method
13:09kcinvresenrico: I'd use an agent
13:10TimMcmuhoo: It's an object!
13:10enrico1if in this class you have to access a resource at initialization and release it when the service is shut down, you stick the resource in the object state and open/close it in the start and stop methods, that's all.
13:10kcinvres,(set [:a "foo" "bar" :b])
13:10clojurebot#{"foo" :a :b "bar"}
13:11TimMcmuhoo: I'm being a brat -- I think "OOP" is a bad term. Should be "method-oriented programming". :-P
13:11dsabaninhey guys!
13:11muhooTimMc: i get your point, and i probably should be less doctrinaire, especially since i don't actually know WTF i'm doing yet anyway
13:11enrico1now, I was thinking about using a var to keep a thread-local value of the resource
13:12dsabanintotal clojure newbie here. Can I somehow override function defined in another namespace, so that other functions from that namespace will start using the updated version of it too?
13:12enrico1and the idea wat to (def *mystuff* nil) in the class module
13:12enrico1(oops ^:dynamic needed too)
13:12dsabaninbasically, I need to patch a function in a 3rd party library for which I have no access to source code
13:12muhooi have caveman-level opinions. "grog like beating on rocks with functions! grog no like beating on rocks with objects! grooooookggggn!"
13:13enrico1but then, to rebind its value, I have to "surround" it with a "binding" form
13:14enrico1the idea is to stick the resource in a var in the start method, use it in the process and close it in the stop()
13:15enrico1but it doesn't seem to cope well with the binding form or the "with" macros
13:15enrico1any clue?
13:16kcinvresdsabanin: maybe in-ns
13:16enrico1kcinvres: ?
13:18muhoodsabanin: i remember seeing several ways to do it, http://clojure.org/java_interop
13:18muhoodsabanin: "Clojure supports the dynamic creation of objects that implement one or more interfaces and/or extend a class with the proxy macro"
13:18enrico1kcinvres: with an agent I'd basically delegate the process() to another thread, and this is anynchronous isn't it? What if I need a return value?
13:18kcinvresenrico1: you want the starting, running, and stopping to all be called within a 'with' form?
13:18muhoohaven't actually tried it yet though, sorry :-(
13:19dsabaninkcinvres, thanks! looks like it doesn't work though, seems other functions from that namespace still use old version
13:19kcinvresenrico1: I think it is something like (let [a (agent ...)] (await a))
13:19dsabaninmuhoo, I don't actually have some object, it's a configuration setting that's being applied to random strings that are passed to the function
13:20enrico1kcinvres: I would't, but it seems the only option (if I exit the context, the resource is released)
13:20enrico1kcinvres: uhm… let me look at the docs about await :)
13:22kcinvresenrico1: I would think you would want to implement a function that closes over a ref type of some type and then have that function take arguments that affect the running resource in that ref
13:22kcinvreslike (service :start)
13:23kcinvres(service :stop)
13:24enrico1kcinvres: oh yes, and this closure could placed in the object's state, and adapted fia start() stop() process() to the class interface
13:25enrico1kcinvres: I'll try
13:25enrico1kcinvres: thanks
13:25kcinvres(defn service [k] (let [a (make-service (atom ...))] (cond (= key :start) (swap! a #(srv-start %)))))
13:26kcinvresor something like that
13:26enrico1kcinvres: yup
13:26kcinvreswait
13:28kcinvresmore like (defn make-service [a] (fn [k] (cond (= k :start) (swap! a #(srv-start %))))
13:29kcinvresand then (def myservice (make-service (atom asdf)))
13:29kcinvresand then (myservice :start)
13:29kcinvresetc
13:30enrico1kcinvres: yes, I'll try this path. closing over a ref seems the way to go, thanks for the hint
13:31kcinvresnp
13:32kcinvresdsabanin: this is a third party clojure namespace that you don't have access to?
13:33enrico1kcinvres: I've been puzzled because, for example, in wabbitmq (a rabbitmq client library) there's no way to directly access a resource: you implicitly use it via "with" macros. however in interoperability scenarios like the ones above (think about implementing an amqp logget for log4j or something like that it seems to me you can't
13:33kcinvresdsabanin: http://clojuredocs.org/clojure_contrib/clojure.contrib.with-ns/with-ns
13:34enrico1kcinvres: here's an example https://github.com/mefesto/wabbitmq/blob/master/src/com/mefesto/wabbitmq.clj
13:34kcinvres"with" is an implementation detail, usually, I believe
13:34enrico1kcinvres: no way to access *connection* or *channel* from the outside
13:35kcinvresenrico1: that's probably how the others intended
13:35kcinvress/others/authors
13:36enrico1kcinvres: but this sounds strange, you don't cover many use cases...
13:36kcinvresusing "with" allows you to have implicit things going on
13:36enrico1kcinvres: yup, it's actually very handy
13:36kcinvresso it saves some typing and boilerplate, in some cases
13:39enrico1kcinvres: I'm leaving, thanks for chatting
13:39enrico1kcinvres: bye
13:40kcinvres too bad. This would have answered all his questions: http://cemerick.com/2011/10/17/a-la-carte-configuration-in-clojure-apis/
13:42muhookcinvres: that is awesome, thanks
14:02dEPyHomesomeone can help me with setting up emacs for clojure? :)
14:02dEPyHomeI've installed the packages: clojure-mode, slime, slime-repl, swank-clojure, paredit
14:04dEPyHomeNow I have no idea how to tell the path to my clojure.jar
14:04jsabeaudrydEPyHome, have you installed leiningen?
14:04dEPyHomeif I try to run slime and tell it to download clojure it fails
14:04jkkramerdEPyHome: using leiningen is the way to go. see http://dev.clojure.org/display/doc/Getting+Started+with+Emacs
14:04dEPyHomehave lein.. but not sure if I have paths set up
14:05jsabeaudrydEPyHome, echo $PATH will tell you
14:05dEPyHomewindows <- unfortunatelly :P
14:05dEPyHomesec.. let me check paths
14:06technomancyswank-clojure.el and M-x slime are deprecated; definitely use the wiki directions
14:06dEPyHomeam.. is that why I try to do M-x slime the command is not found?
14:07technomancyyeah, that only works for common lisp; you want M-x clojure-jack-in
14:08dEPyHomeso I dont need all of those packages? :)
14:09ibdknoxtechnomancy: it's either during clean or deps, but it will use unbounded CPU the first few times I work with a fresh project
14:09technomancydEPyHome: no, you must have found some documentation that was badly out of date
14:10dEPyHometechnomancy: I'm pretty good at that.. :)
14:10technomancyibdknox: ouch. is this a mac thing then?
14:10kcinvresI thought of a neat use for core.logic, if I understood the presentation correctly, where they were automatically generating programs that satisfied input and output parameters.
14:10dEPyHomeSo basically I just need to instal swank-clojure plugin in lein and in emacs?
14:10ibdknoxtechnomancy: possibly, I *am* on a mac
14:11kcinvresmaybe a profiler could be built in and it could return you the most efficient implmentations of programs.
14:12technomancyibdknox: can't repro here; not sure what's up. can you try moving ~/.lein out of the way?
14:20ibdknoxtechnomancy: it seems like that made it better
14:21technomancycan you gist ~/.lein/init.clj and a listing of ~/.lein/plugins?
14:24ibdknoxtechnomancy: no init.clj, here's plugins https://refheap.com/paste/674
14:25ibdknoxanytime I do deps it spikes the CPU
14:26technomancyibdknox: you have swank installed‽
14:26ibdknoxI installed emacs a while back
14:26ibdknoxgot annoyed being at 10% efficiency (just because I didn't know it) and went back to vim
14:27technomancyso I guess my next advice would be to bisect that list of plugins
14:27ibdknoxI bet it's swank! ;)
14:27technomancywhich is kind of annoying, but I'm not sure how else to isolate the problem
14:27technomancydude. it's always swank.
14:27technomancyyeah, just rm all the ones you're not using
14:27ibdknoxwell, if no one else has reported such a thing, I'll assume it some weird combination of the plugins I have
14:28ibdknoxyeah
14:28technomancywell... I haven't even announced lein 1.7 yet
14:28technomancyso it's no surprise nobody's reported anything
14:29technomancyanyway well-behaved plugins don't even activate when you do lein deps
14:41clowshi… when I use ring… am I seeing this correctly… when using the params middleware since it slurps the request body to parse the params… the body will then be empty?
14:48tmciverclows: I believe the params middleware pulls the params out of the url; the body should be empty unless the request was a PUT or POST.
14:49dEPyHomestrange..
14:50dEPyHomegetting:" clojure-eval-bootstrap-region: Non-hex digit used for Unicode escape " when i try to clojure-jack-in
14:50dEPyHomeany idea?
14:50clows@tmciver in my case it's a post and … i'm fairly sure it's empty… and the content-length is > 0
14:51hiredmandEPyHome: there was a bug sometime ago, upgrade
14:51ibdknoxhm is there a way to write the following without eval? https://refheap.com/paste/676 unfortunately all the routing stuff in compojure is macros so I can't just call a function :(
14:51dEPyHomebug in what? emacs, swank, .. ?
14:52clowshttps://github.com/mmcgrana/ring/blob/master/ring-core/src/ring/middleware/params.clj line 50 does slurp the body
14:52tmciverclows: Yes, I was just looking at: http://clojuredocs.org/ring/ring.middleware.params/wrap-params
14:52ibdknoxI guess I could try to resolve the symbol
14:52hiredmandEPyHome: it might have been in swank-clojure, but I don't recall
14:52tmciverLooks like the body of the post gets put into :form-params
14:53clowsmakes sense i guess
14:53clowsin my case i just need to get rid of the params wrapper i guess …
14:54tmciverclows: I wouldn't. You should just be able to pull the data you want out of :form-params
14:54tmciverclows: otherwise, you'll have to parse them out of the body yourself... but that's what the wrap-params middleware does for you.
14:55clowsi don't have a form sent to the server but a url called from a different system that sends some json as a post request
14:55clowsi just have the wrap-params enabled because noir adds it by default …
14:55alexykwhat's the ternary comparison function? -1/0/+1
14:56alexykcompare
14:57tmciveralexyk: ##(< -1 0 1)
14:57lazybot⇒ true
14:57alexykhuh
14:57alexyk&(1 0 -1)
14:57lazybotjava.lang.ClassCastException: java.lang.Long cannot be cast to clojure.lang.IFn
14:57alexyk&(< 1 0 -1)
14:57lazybot⇒ false
14:58tmciverclows: hmm, if it's supposed to be json in the body the...I don't know. I wouldn't expect wrap-params to be doing anything with that.
14:58tmcivers/the/then
14:58clowsso was I …
14:58ibdknoxclows: sorry wasn't paying attention, what's going on?
14:59ibdknoxif it sends the information as the body with a content-type of url-form-encoded
14:59ibdknoxwrap-params will pick it up
14:59ibdknoxif it doesn't, which I think is your case, it will be the body itself
15:00ibdknoxin which case, use noir.request/ring-request, get the body, and parse it as json
15:00ibdknoxand the equivalent would be true in ring/compojure/whatever
15:00ibdknoxclows: ^
15:00clowsyeah i thought so … but (:body ring-request) is "" …
15:01clowsmaybe the client sends the wrong content-type …
15:01ibdknoxdump the request and take a look :)
15:01ibdknoxif you gist it
15:01ibdknoxI can help
15:03ibdknoxbtw :body should be a stream of some kinda that you'll need to slurp
15:03clowsyep… something jettysomething.input…
15:05ibdknox80.55
15:05ibdknoxwhoops
15:05franksamalloy: I gave it another shot for that inheritable-thread-local - see https://refheap.com/paste/673
15:05clows@ibdknox: https://gist.github.com/1761662
15:06amalloymuch nicer, franks
15:06clows:content-type "application/x-www-form-urlencoded" .. seems… wrong
15:06amalloythough it looks like you got the argument order wrong in your (def counter ...) example
15:06franksamalloy: if I understand it well, you can maintain references to var/atom/ref/? but you cannot come up with a "generic" copy function for all - is that correct?
15:07amalloyyeah, probably true
15:09ibdknoxclows: looks correct, but the body is empty? that means they're not sending you anything
15:09franksamalloy: arguments of inheritable-thread-local* and inheritable-thread-local seem mixed up - let me fix that
15:10ibdknoxslurping the body results in an empty string?
15:10raf_Hi all, I have a simple question. I can't figure out how to use the contrib library in 1.3. I want to use strint which was contrib.strint
15:10ibdknox~contrib
15:10clojurebotMonolithic clojure.contrib has been split up in favor of smaller, actually-maintained libs. Transition notes here: http://dev.clojure.org/display/design/Where+Did+Clojure.Contrib+Go
15:11clowsibdknox: yes
15:11dEPyHomehallelujah
15:11dEPyHomeI made lein swank and emacs work
15:11clowsibdknox: shouldn't the content-length be 0 then? or is the header included?
15:11raf_oh perfect, thanks ibdknox
15:12franksamalloy: just a bit confused about how you would use a var as thread-local - could you give an example?
15:12amalloyme? when did i say you should do that?
15:13ibdknoxclows: no, you're right. it should be 0 if it's truly empty
15:13dEPyHomeSo, clojure-jack-in connects to localhost? What if I wanted to connect to remote swank?
15:13amalloyit seems pretty nuts to use a var as a thread-local - just use a plain old var and bindings/set!
15:14ibdknoxdo you know exactly what the other service is sending?
15:14clowsI'll try ring/compojure without any wrappers and check the body… just to make sure they don't send a crappy message …
15:14clowsnope :)
15:15franksamalloy: i had the feeling that you could use thread-local in those cases where you cannot easily wrap yourself in a binding
15:15clowsibdknox: i can't just disable the middleware for a particular route in noir can I?
15:15ibdknoxno
15:15clowskk
15:16ibdknoxThough, noir doesn't really mess with anything at that level, so I'd be a little surprised if it was screwing this up.
15:16ibdknoxtry it with just straight compojure and let me know what what you see
15:16clowsi don't think it's noirs fault … but it's easy to just use a dummy with ring only to test what i get sent
15:16clowsdid
15:16clowsidd
15:17ibdknoxyep yep :)
15:17amalloyperhaps you can. but that isn't really how i use thread-local myself
15:17franksamalloy: for example, if the thread you are in was started elsewhere, and you wanted to use the same vars as thread-local - wouldn't that be a use case? or are there better ways to do that?
15:18amalloyi don't really understand the question. but it seems like you know as much about thread-local as i do at this point, so you can answer it yourself
15:18franks(still learning...)
15:20raekfranks: 'binding' will stack away any previous value of the var and restore it later, so you can always wrap _your_ code in binding and use the var as a thread local
15:21raek(if I understood your statement correctly)
15:23franksamalloy: real example: i'm trying to turn the repl-prompt on/off depending on the session i have, where session is really identified with the threadID - but I do not have access to the original binding call when the respl-session was started - how can I change prompt-funtion var for only one session/thread?
15:23alexykhow do we flip two args again?
15:24frankscouldn't figure out how to do that with binding... ended up maintaining a map of threadId-prompt-fun...
15:26franksraek: would my example be applicable to the use of binding?
15:27raekideally, you'd want to be able to insert code at the place where the binding form needs to be
15:28raekin that case you can use clojure.main/with-binding
15:28raek*with-bindings
15:30franksraek: ... but in the repl, I cannot easily wrap any future read-eval interaction in a binding if I'm already inside of that session... unless I miss something...
15:32franksthis "inheritable-thread-local" would give me what i need with atoms... but those feel like overkill as it feels like i could use vars - just not sure how ;-)
15:33clowsibdknox: i sent a few bytes with curl now … the content-length matches the characters i sent … but the :body is empty
15:35ibdknoxclows: yeah, the body will get parsed as url-form-encoded. are you sending it encoded correctly?
15:36franksbtw - i'm getting a flood of "Activating Flood Protection"/"Deactivating Flood Protection" messages in my IRC-client - which started a day ago or so - did anything change on the irc-server? or more important how do I get rid of those?
15:37ibdknoxclows: although looking at this: https://github.com/mmcgrana/ring/blob/master/ring-core/src/ring/middleware/params.clj, it doesn't seem to be destroying the body, so I'm not sure why it would end up empty
15:37Raynesfranks: What IRC client?
15:37clowsibdknox: must be me messing something up…
15:37franksRaynes: Linkinus
15:37RaynesI've had that before.
15:38RaynesSeems like it just stopped happening eventually. Perhaps there is a setting.
15:38ibdknoxclows: it was messed up at the ring level too?
15:39franksRaynes: there is a setting but I'm pretty sure I didn't change anything on the client...
15:39dEPyHomewhere the f*** shoul I put init.el on windows
15:40RaynesOn a Linux partition.
15:40Raynes~rimshot
15:40clojurebotBadum, *tish*
15:41gtrakdEPyHome: like Users/Me/AppData/Roaming/.emacs.d or something, emacs creates it on startup
15:43benares_98lol
15:49clowsibdknox: yes with only ring it's empty as well … which is a good indicator that I'm doing something wrong
15:52TimMcThe hell... how am I managing to segfault the JVM?
15:53ibdknoxTimMc: skill.
15:54aphyrTimMc: https://refheap.com/paste/677
15:54aphyrI hit that sometimes when I've *just* written a file.
15:56TimMcI should probably do a RAM check on this machine, actually.
15:57amalloyTimMc: issue could be you're using a mac? i know when lion came out some people were finding the 64-bit jvm segfaulted
15:57TimMcnah, Thiunkpad
15:58TimMc*<whichever spelling makes you happier>
15:58amalloythankpod
15:59TimMcI got a freeze in Linux, a brief bluescreen in Windows, and several anomalous Firefox crashes, all today
15:59amalloyTimMc: stay away from hospitals today
16:00amalloyand datacenters
16:00TimMcI try to stay away from hospitals in general. :-)
16:26ibdknox~contrib
16:26clojurebotMonolithic clojure.contrib has been split up in favor of smaller, actually-maintained libs. Transition notes here: http://dev.clojure.org/display/design/Where+Did+Clojure.Contrib+Go
16:29clowsibdknox: https://gist.github.com/1762137 so when send anything to this one… shouldn't the body contain something?
16:29technomancyibdknox: any progress on hunting down the responsible plugin?
16:30clowsibdknox: i tried curl with various different Content-Types … like: curl --data-binary @project.clj localhost:8081
16:30ibdknoxtechnomancy: no idea, I removed most of them, it still seems to spike when I do deps. I'll continue my hunt later
16:31hiredmanclows: that is all wrong
16:31hiredman(the gist)
16:32clowsgood
16:32hiredmanI would read the docs and look out how other people use it
16:32ibdknoxcurl -d "bar" --header "Content-Type: text/text" http://localhost:8080/foo
16:32technomancyibdknox: sure; let me know if you find anything
16:32arohneris there a way to get around the 1.3 ^:dynamic thing in testing, without declaring the var dynamic?
16:32ibdknoxtechnomancy: we'll do
16:32ibdknoxwill*
16:32ibdknoxlol
16:32arohnerI seem to remember discussion about this a year ago
16:33amalloyarohner: with-redefs
16:33alexykI have a vector which I want to turn into a map. I restructure it with named elements and I want the same names as keys. Any magic to not repeat myself? E.g. (fn [[a b]] {:a a :b b})
16:33ibdknox{:keys [a b]}
16:33ibdknoxoh sorry
16:34ibdknoxmisread
16:34raekalexyk: (fn [coll] (zipmap [:a :b] coll))
16:35arohneramalloy: thanks
16:35ibdknoxclows: actually that thread might be useful: https://groups.google.com/forum/#!searchin/clj-noir/backbone/clj-noir/INqvBo6oXIA/cHUbSnfJRtAJ
16:36amalloyalexyk: http://stackoverflow.com/questions/8999794/map-restructuring
16:36alexykraek: cool!
16:37alexykamalloy: thx!
16:43clowsibdknox: thanks… that does help
16:47dEPyHomeany way to enable rainbow parens in clojure?
16:47dEPyHomeemacs
16:48dEPyHomeah rainbow-delimiters-mode probably ye? :)
16:50clowsis it possible that org.mortbay.jetty.HttpParser$Input is not valid once the response has been sent?
16:51clowsbecause i tried to access it through an atom from the repl and it would always be empty … which would explain why i failed so miserably (apart from me doing it all wrong ofc)
16:51ibdknoxthat's entirely possible
16:52ibdknoxjust print it out within the handler
16:52clowsyeah thats what i do now and now it works
16:58clowsibdknox: works fine in noir as well ofc … as expected … thanks for your help :)
17:06dEPyHomeah
17:07dEPyHomehad .elc file there
17:07dEPyHomeups wrong window
17:46ihavequestionshey all, would anybody be able to help a newb with a project setup related issue?
17:48amalloy~anyone
17:48clojurebotJust a heads up, you're more likely to get some help if you ask the question you really want the answer to, instead of "does anyone ..."
17:49ihavequestionswell, I'm trying to get the lwjgl library setup, but I'm running into an issue where it's not finding classes in the lib
17:50ihavequestionswhat's odd is that lein seems to have downloaded everything, including the native dependencies
18:09samaaronhow do I access a java field when there also exists a no-arg method of the same name?
18:09hiredmansamaaron: reflection
18:09yoklovouch
18:10amalloysurely that's not the only option. (. obj field) probably works, and if it doesn't then wasn't the (. obj -field) syntax ported from cljs?
18:10ibdknoxin 1.4-beta the property syntax would work
18:10ibdknoxamalloy: yes
18:11hiredmancome to think of it, (. obj :field) might work too
18:11samaaroni'll give them both a go :-)
18:13ihavequestionsso, is there a better channel to direct questions regarding setting up a project so classes in libraries are found, or is this pretty much it?
18:14ibdknoxihavequestions: this or #leiningen would be it, but your main barrier here is that I'd be surprised if many people have even heard of the library you referenced
18:15ihavequestionsah, ok, I guess I didn't realize it was so rarely used. thank you
18:16oakwiseihavequestions: afaik there isn't a lot of active/open gl development in clojure right now. You might want to take a look at penumbra, which wraps LWJGL, but is not longer actively maintained. I have no idea of the project files there will help or not.
18:17samaaronhiredman: (. obj :field) seems to work :-)
18:18hiredmansamaaron: right, but I don't think that will work in 1.4
18:18ihavequestionsI don't want to actually use penumbra given it's no longer really being maintained, but I guess I could see if I can glean anything from their setup
18:20konrshould I use any specific format for docs? is "foo\n does this" preferable to "foo: does this"?
18:20amalloyihavequestions: you also haven't given enough information for anyone to be able to help yet. "some classes can't be found" isn't actionable; you could, for example, make your project into a git repo and put it on github so someone can see what's going wrong
18:20konrI mean, to document the arguments of functions
18:21ihavequestionsthat's a good idea, I'll check that out
18:22ihavequestionsI'll be back later on with some stuff on git, thanks everyone
18:24weavejesterDoes anyone know if mocking functions is possible in a post-:dynamic world?
18:24ibdknoxweavejester: with-redefs
18:25weavejesteribdknox: Perfect. Thanks!
18:25ibdknoxweavejester: actually, I have a question for you. Would you consider having non-macro versions of GET/POST/etc in Compojure?
18:26weavejesteribdknox: For what reason?
18:26ibdknoxI was trying to create some routes dynamically and it required a very convoluted solution as it was macros inside of macros
18:28weavejesteribdknox: I guess I'd have to see the use-case, but you don't need macros to create routes dynamically.
18:28weavejesteribdknox: The GET/POST/etc macros are essentially just specialized forms of fn
18:28ibdknoxI'm translating (some-macro [:post "/somdomf"] ...) into a route
18:31weavejesterHmm... I guess it might be an idea to factor out some of the macro code into functions
18:31ibdknoxweavejester: here's what I ended up having to do: https://github.com/ibdknox/noir/blob/1.3/src/noir/core.clj#L207
18:31ibdknoxweavejester: I might be missing something obvious though
18:32ibdknoxI would've called the functions you were directly, but they're private
18:34ibdknoxthe use-case is a little REST api generator that handles versioning things and such
18:34ibdknoxand generates most of the parts of the route dynamically
18:36weavejesteribdknox: Hm, it kinda looks like you want the compile-route function to be public?
18:36ibdknoxbasically
18:36ibdknox:)
18:36weavejesterOr, wait, something more fundamental than that...
18:37weavejesterIt might be an idea to factor out some of the routing logic into public functions.
18:38mebaran151I'm using seesaw, and just wondered if anybody knew the best way to update the contents of a listbox
18:39weavejesteribdknox: Let me think about it a little...
18:40weavejesteribdknox: It might take a little while to come up with a good design though
18:40ibdknoxweavejester: no worries. I got it working, but eval makes me sad :(
18:41weavejesteribdknox: Yeah. It's not ideal.
18:41ibdknoxweavejester: I'm also happy to help however I can
18:41weavejesteribdknox: Well, I'm kinda running out of names for things :)
18:42weavejesterClout has routes, which are strings that match URIs
18:42weavejesterBut Compojure also has its routing macros
18:42weavejesterI'm kinda stuck what to call the different parts :P
18:43weavejesterMaybe I need something like: (request-matches? [:get "/foo"] request)
18:44weavejesterOr... (make-route :get "/foo" func)
18:45weavejesterI could also use (route :get "/foo" (fn [req] ...))
18:45weavejesterBut that's too similar to "routes"
18:45weavejester(->route :get "/foo" (fn [req] ...)) ?
18:45weavejesterTo borrow from the record syntax, but that could be misleading...
18:47weavejestermake-route is probably sufficient, I guess, and it goes with compile-route.
18:47amalloyibdknox: i had an issue yesterday that i just realized is related to the .-foo member syntax being ported to clj. seems like the sort of thing you might be interested in: http://dev.clojure.org/jira/browse/CLJ-929
18:52seancorfieldi just added swank-clojure 1.4.0 to my project and it seems to have highjacked C-c C-z to be something to do with ClojureScript?
18:53seancorfieldhmm, no, now it's run-lisp ... i swear a minute ago i got a minibuf warning about CLOJURESCRIPT_HOME not being set
18:53seancorfieldC-c C-z used to switch to the slime repl - which is what the swank-clojure docs say it should do
18:56amalloyseancorfield: C-c C-z is generally bound buffer-locally. so in a .clj file it should switch, but what it does in a .cljs (or non-clojure) file i wouldn't expect to be the same
18:58ibdknoxweavejester: make-route seems reasonable to me
18:59ibdknoxamalloy: I see
18:59ibdknoxamalloy: I was surprised when they said that it wouldn't affect anything
19:00amalloywell, i confess i was taken in - i didn't consider the case of members starting with - or _
19:00seancorfieldamalloy: yeah, i was in a .clj file - i was just surprised the binding had changed
19:00seancorfieldif i knew what it used to be bound to, i could set it back! :)
19:00hiredmanI still think prefixing field names with - is the ugliest thing they could have done
19:01seancorfieldi may just restart emacs - i think i've had the same instance running for a couple of weeks now...
19:01ibdknoxhiredman: I tried :(
19:01hiredmanand to force it back on to clojure on the jvm :(
19:02ibdknoxwoah, alex payne just followed me on twitter lol
19:02ibdknoxI wonder if they're using Clojure
19:02hiredman(. foo -bar) from the guy who upvoted json literals in clojure
19:02amalloyhaha
19:03gfredericksis there anything needed to make JSON literals valid clojure beyond counting ":" as whitespace?
19:04gfredericksoh and null
19:04hiredmangfredericks: a strong stomache
19:04gfredericks:)
19:04hiredmanI don't think I could do it, the vomit would interfere with my typing
19:04gfrederickshiredman: that's a hardware limitation
19:07amalloycounting : as whitespace is an idea that isn't internally-consistent
19:07gfredericksit's used for something else?
19:08hiredman,:foo
19:08clojurebot:foo
19:08gfrederickspfha
19:08gfredericksstrange the things I'm blind to
19:09seancorfieldodd, a restart of emacs seems to have fixed my C-c C-z woes... for now, at least...
19:10adiabaticI wonder how easy it is for emacs instances to get up to 8 or 80 GB of RAM usage now.
19:12seancorfieldemacs never seems to consume much memory on my mac... even after being open for days...
19:12ibdknoxnot like browsers :D
19:12ibdknoxwhich are the most memory efficient pieces of software ever created
19:12seancorfieldnot like leaky ol' rockmelt, certainly :)
19:20dnolenhmm seems CLJ/CLJS protocols support delegation and component oriented design pretty well
19:24stevelewi've watched a few of the recent videos coming out of clojure/conj
19:59timvisherhey all
20:00samaaroncan anyone tell my why this throws an error: (.remove (proxy [java.util.concurrent.ConcurrentHashMap] [] (remove [a b] (println "hiya" this))) "foo" "bar")
20:00timvisheri'm trying to write a templating system that uses clojure.walk/prewalk-replace iteratively on a heterogenous template vector that can include calls to functions
20:01timvisherThe substitution map is a basic map with keywords as keys
20:01hiredmansamaaron: what exception does it throw?
20:01timvisherthe problem is that the functions are being evaluated during the walk
20:01timvisheror at least that's what it appears to be doing
20:02timvisherany way that I can walk the entire tree without triggering the evaluation?
20:02ibdknoxtimvisher: sounds like you're not using a macro
20:02timvishertrying to not use macros :)
20:02samaaronhiredman: a null pointer
20:02ibdknoxtimvisher: you'll have to if you want the args unevaluated
20:03timvisheri suppose i could quote the whole thing and then unquote when I need to use it?
20:03samaaronhiredman: user.proxy$java.util.concurrent.ConcurrentHashMap$0.remove(Unknown Source)
20:03hiredmanthat is a method, not an exception
20:04hiredmana npe, huh
20:04samaaronhiredman: yeah, that's the top of the stacktrace
20:05timvisheri feel like this is exposing a hole in my understanding of lazy evaluation...
20:06hiredmansamaaron: seems to go away if I put a true after the println
20:06samaaronhiredman: I'm trying to figure out how to override a no-arg version of a method only, and leave the other overloaded fns intact
20:07dgrnbrgIs a map different than a vector indexed by the value's hash with a small cache?
20:07hiredmanor if I wrap the body in a (boolean ...)
20:07dgrnbrgtimvisher
20:07hiredmansamaaron: you have to overload them all and forward other calls on via proxy-super
20:07dgrnbrgI just wrote this library, but using clojure zippers and building a lazy-evaluation dsl
20:07samaaronhiredman: oh really?
20:07samaaronthat's a pain
20:08timvisherdgrnbrg: meaning the library i'm building right now?
20:08dgrnbrgapproximately, yes
20:08timvisherlol
20:08timvisherlove to hear that
20:08dgrnbrgi'm writing a compiler in clojure, so I needed it
20:08timvisherpublished it at all?
20:08hiredmansamaaron: what version of clojure are you using?
20:08samaaronhiredman: 1.3
20:08dgrnbrgbut it's got a lot of extra features you won't need
20:08dgrnbrgthe zippers give the ultimate in flexibility
20:08hiredmanI'd try that proxy line on 1.2, it seems like a regression in proxy
20:08timvisherit'd be interesting to see at least
20:09dgrnbrgalthough I haven't tested editing extensively
20:09hiredman(not matching up return values from methods properly)
20:09dgrnbrghttps://github.com/dgrnbrg/piplin/blob/master/src/piplin/modules.clj#L180
20:09samaaronhiredman: that line isn't anything i want to work though - it was just an example
20:09dgrnbrgstarting there and going down I develop a zipper that works on maps
20:09dgrnbrgand write comprehensions on trees
20:10dgrnbrghttps://github.com/dgrnbrg/piplin/blob/master/src/piplin/types.clj#L49 -- these 3 macros do various kinds of lazy/deferred evaluation
20:10timvishervery cool
20:10dgrnbrgAnd I have been working on a monadic interface
20:10dgrnbrgI think it's superior to the macro system I have
20:11timvisheri've still managed to never implement a macro so they still scare me. ^_^
20:11dgrnbrgIt's a function that gets a piece of code in
20:11dgrnbrgand returns a new piece of code to get pasted in instead
20:11timvisherOh I get them
20:11timvisherit's a little like recursion
20:11dgrnbrgwith some syntactic sugar :)
20:12dgrnbrgit's not really like recursion
20:12dgrnbrgalthough macros can be recursively expanded
20:12timvisheri'm not the sharpest guy in the world, and it took me a long time before i was able to see cases where recursion would be an elegant solution
20:12dgrnbrghave you ever used C+
20:12dgrnbrg?
20:12timvisheri don't mean technically, i mean perceptively
20:12dgrnbrgwith #define macros?
20:12timvisheri get what macros are technically
20:12timvishertheir application still is something that hasn't clicked for me yet
20:12timvisheri don't yet see a problem and go 'ah! macros would help here'
20:12timvisherknow what i mean?
20:13dgrnbrgThink of it like this: they reduce boilerplate
20:13timvisheri'm slow like that. :)
20:13dgrnbrgif you just try to think of it like "if only I could add this repeated pattern to these codes, it'd be much cleaner looking"
20:14timvisheryep
20:14dgrnbrgdo you want to get the entire tree through the call graph, or just the code that's immediately visible?
20:14timvisherthe tricky part here is that i wouldn't be avoiding boilerplate, i'd simply be forcing things not to be evaluated
20:14timvisherwhich a mocro would do, but again, it's not the first thing i thought of
20:15timvisheryou mean in my templating system?
20:15dgrnbrgyes
20:15dgrnbrgis it as simple as quoting the contents?
20:15timvisheri basically want to be able to pass something like `[:foo-part :bar-part]` into my `expand-template` function and have it recursively expand out
20:15timvisherevery part that gets dropped into place can also have more expansions inside of it
20:15dgrnbrgyou don't need macros
20:15timvisherthe code iterates over that recursively looking for more things to expand
20:16dgrnbrgjust funtions
20:16dgrnbrgI see
20:16timvisheruntil finally it says that the expanded version is the same as the non-expanded version and quits
20:16dgrnbrgI'm not sure I'd use walk
20:16timvisherthat all works
20:16timvisheruntil I throw in function calls
20:16timvisherand now i'm here. :)
20:16timvisherwhat would you use?
20:16dgrnbrgI think I might use a plain recursive function
20:17dgrnbrgsuppose all the templates are in a map with {:name '(the-part)} pairs
20:17timvisherThe code as i have it implemented is actually extremely concise
20:17timvisherhttps://gist.github.com/1764009
20:17timvisherwhich they are
20:18dgrnbrghow is expand-template implemented?
20:18timvisherah
20:18timvisherlol
20:18timvisherwrong part
20:18timvishersorry
20:18timvisherhttps://gist.github.com/1764014
20:18timvisherthere ya go!
20:19timvisherso you see i can extend my expansions at call time by simply passing a map
20:19timvisherthere are all sorts of potential gotchas but i've been at this for all of an hour or two at this point so i figure robustness can come later
20:20timvisherfirst make it work, then make it right and all
20:20dgrnbrgI think you can avoid the loop/recur
20:20dgrnbrgusing iterate
20:21dgrnbrgthat repeats a function
20:21timvishergood point
20:21timvisherhadn't thought of that
20:22timvisherI guess i would take until = next current ?
20:22dgrnbrghang on, let me come up w/ something clever
20:22timvisherlol
20:23amalloyhttps://github.com/AlexBaranosky/Utilize/blob/master/src/utilize/fn.clj#L114
20:23amalloy(timvisher, dgrnbrg)
20:24amalloyi don't really like his implementation, but you get the idea
20:24timvisherah the inimitable amalloy :)
20:24timvisheramalloy: his = mine?
20:25amalloyhis. that's alex baranosky's fork of useful
20:25timvishergotcha
20:25amalloyi suggested he add the general steady-state instead of a special-case version for macroexpand, but it's a lot nicer with lazy seqs instead of a vector
20:26dgrnbrgI made this one: https://gist.github.com/1764040
20:26dgrnbrgI tried to be clever ;)
20:27dgrnbrgit seems like there should be a fixed-point function in core
20:27TimMcamalloy: The JVM segfaults I had earlier? Bad RAM.
20:27TimMcProbably the best possible thing to go wrong.
20:28TimMcUnlike other components, I don't need all of it, and unlike software, it can be fixed. :-P
20:28TimMc(or replaced)
20:28amalloy(for [[x y] (partition 2 (iterate f x)) :while (not= x y)] x), dgrnbrg
20:28dgrnbrgah
20:29dgrnbrgI never use for
20:29amalloyuuuuse it. it's the best
20:29TimMc(juxt for fnil)
20:29TimMchrm
20:29amalloy(let [nuts fnil] (nuts for juxt))
20:30TimMcha!
20:30dgrnbrgI don't get it.
20:30dgrnbrgI think it's a joke?
20:31TimMcThere's not much to get.
20:31TimMcexcept that Raynes says that amalloy is nuts for juxt
20:31dgrnbrgand fnil is like for in its utility?
20:31amalloyand fnil, for, and juxt are pretty good
20:31TimMcIt wouldn't even run; 'for is a macro.
20:31dgrnbrgthat's what I thought
20:31amalloyi don't think fnil is anywhere near as useful but it's more overlooked
20:31dgrnbrgI didn't know about these functions
20:31dgrnbrghow useful
20:32TimMcfnil really shines when you're using update-in
20:32dgrnbrgmy code will become simpler now :)
20:32dgrnbrgalthough it has a dreadful abomination of a double macro that expands another macro beneath it
20:32dgrnbrgI don't understand what it does, and it's got terrible bugs due to when names get resolved
20:32dgrnbrg~'~x lol
20:32clojurebotExcuse me?
20:32TimMcdgrnbrg: ~'
20:33dgrnbrghttps://github.com/dgrnbrg/piplin/blob/master/src/piplin/types.clj#L87
20:33dgrnbrgthat is confusing
20:33dgrnbrgto me
20:33dgrnbrgI find it unclear what I did
20:33TimMcI believe you, but I can't open a browser right now.
20:33dgrnbrg`(defmacro ~name [& ~param-sym]
20:33dgrnbrg `(apply (fn [~@'~params] ~@'~body)
20:33dgrnbrg (join-errors
20:33dgrnbrg ~@~param-sym)))))
20:33TimMcheh
20:34dgrnbrgI think param-sym is a gensym, params is a list, and body is a list
20:34TimMcI was just dealing with one of those. Luckily, I was converting it *away* from producing macros.
20:34dgrnbrgI want to remove it
20:34dgrnbrgI'm trying to figure out a monad to do it
20:34dgrnbrgalong with a simple lazy-eval macro
20:35dgrnbrgthat piece of code has given me a lot of problems
20:37timvisherdgrnbrg: so as clever as that is it still doesn't seem to allow me to have unquoted functions in my templates
20:37timvisherfor that i guess i'm doomed to the world of macros?
20:37dgrnbrgThink of it like this
20:37dgrnbrgif you want the argument to be quoted, then put a ' in front of it
20:37dgrnbrgbut maybe that's ugly as sin
20:37ibdknoxtimvisher: macros aren't evil
20:38timvisheribdknox: i know they're not evil. they just scare me. ;)
20:38dgrnbrgso instead, use a syntax-quotes and write a doit-impl function to go with the doit macro
20:45timvisherwhat's the function equivalent of `~`?
20:48TimMctimvisher: Do you mean (syntax-quote (unquote (syntax-quote ...))) ?
20:48timvisherTimMc: something like that
20:48timvishera la elisp (quote
20:48timvishermay not exist here
20:48timvisherfigured it would as ' is just reader syntax
20:49timvisherat least irrc
20:49amalloy`~` is just `
20:49hiredmanhttps://github.com/hiredman/syntax-quote
20:50samaaronhow do i turn off auto-ns-qualification for a given symbol within a ` quote?
20:51timvisherany way to cancel an evaluation at the slime repl?
20:51timvisherother than killing the whole buffer?
20:51TimMcsamaaron: ~'
20:51samaaronTimMc: awesome, thanks
20:51TimMc&`[a ~'b c]
20:51lazybot⇒ [clojure.core/a b clojure.core/c]
20:51samaaronI knew it was something fiddly :-)
20:52TimMcYou unquote from the syntax-quote's scope and then return a literal symbol.
20:52timvisherAh. `C-c C-c`
20:52TimMcTotally didn't make sense to me for at least 3 months after seeing it the first time.
20:55dgrnbrgI recently grokked nested syntax-quotes
20:55dgrnbrgthe unquotes match outwards in to which level of syntax quoting
20:58beffbernardHi, is it possible to have clojure/tools.logging log when evaluating in slime or inferior-lisp?
20:59timvisherbeffbernard: what behavior are you seeing?
21:00timvisherif you call log then they should write out
21:00timvisherpossible that you're not looking in the right buffer or file?
21:01beffbernardtimvisher: it just returns nil
21:01beffbernardI have something like this
21:01beffbernard(defn -main [] (info "Hello, World!"))
21:01beffbernardit works if I lein run
21:01timvisherhow are you connecting to swank?
21:01timvisherclojure-jack-in?
21:01beffbernardyup
21:04beffbernarddoes it make a difference if I have org.slf4j/slf4j-api as the dependency and slf4j-simple as the dev-dependency?
21:05timvisherwell, i've duplicated your results over here. :)
21:05timvisherthough that doesn't really get us any closer to a solution
21:05timvisheri'm not sure where slime redirects standard out to
21:05timvisherit shouldn't
21:05beffbernardif I println it goes to stdout
21:12timvisherbeffbernard: sorry, i've got nothing. :(
21:12beffbernardWell I appreciate your help
21:26echo-areaHas clojure.contrib been deprecated? And why?
21:27technomancyclojurebot: what happened to contrib?
21:27clojurebotWell... it's a long story: http://dev.clojure.org/display/design/Where+Did+Clojure.Contrib+Go
21:27echo-areaOh, thank you technomancy
21:27technomancyoh, don't thank me, thank clojurebot =)
21:31beffbernardtechnomancy: I noticed you're on the contributors list for tools.logging. Do you mind if I ask you a question regarding it?
21:40technomancyI am?
21:40technomancyI guess I contributed to a few threads about it on the mailing list.
21:40technomancyanyway, never hurts to ask
21:42beffbernardtechnomancy: Opps.. You are thanked in the README
21:43beffbernardI'm unable to get tools.logging to log to stdout in slime
21:43beffbernardalthough it works in inferior-lisp
21:43beffbernardand lein run
21:43technomancyhm; IIRC *out* gets rebound by swank, but System/out might not
21:43technomancyhave you checked the *swank* buffer?
21:44beffbernard:O nope
21:44beffbernardone sec
21:45beffbernardtechnomancy: no dice
21:46technomancyhm; that should be hooked up to standard out
21:47beffbernardIs there anyway to see what's in the classpath?
21:47technomancysure; "lein classpath"
21:48beffbernardI mean what's in process
21:48technomancyshould be the same
21:48technomancybut you can check (System/getProperties)
21:54technomancyhttp://p.hagelb.org/lein-classpath.html <- why is my shell being a smartass?
21:54technomancylatter works, former doesn't
21:55beffbernardWell the appropriate jars are loaded
21:58beffbernardtechnomancy: so how do I use that info? You said the latter works? Where do I put that?
21:59technomancybeffbernard: I meant of the two expressions in the link I pasted, the second one works
21:59technomancyit has nothing to do with logging; this is a problem with leiningen's shell script
22:00beffbernardI got that but I don't know where to put it
22:00beffbernardAlso, thanks for the help. It's much appreciated
22:00technomancysure... gotta jet now though
22:00technomancy...literally
22:01beffbernardok, safe travels
22:18TimMctechnomancy: I find myself wanting to run `lein trampoline multi test` o.O
22:20TimMcI believe I'm getting insufficient isolation in my multi-deps.
22:31murm.