#clojure logs

2014-04-01

00:03tmciverchare: if I understand you, you may be looking for (use :reload . . .)
00:03tmciverchare: or (require :reload . . .)
00:03arrdemtmciver: chare is the resident troll. fair warning.
00:04arrdemclojurebot: chare |is| the resident troll. please do not feed.
00:04amalloyhe's been pretty reasonable today
00:04arrdemI can't tell :P
00:04arrdemnow that erc and irssi are actually persisting my ignore lists...
00:05tmciverpoor chare . . .
00:07chareI am not a troll
00:19xperaI've been waiting quite a long time to report a big limitation in Leiningen: https://github.com/technomancy/leiningen/issues/1484
00:19bob2troll or child, hard to tell
00:20xperabob2: I'm 17 minutes late
00:20bob2oh, not you
00:28arrdemxpera: I'm actually pretty opposed to PC-CLOJURE, just because 16 bit processors and OSs need to die
00:29arrdemxpera: there's a reason that MS-DOS is now open... it's a worthless platform
00:29charewe need to make windows die
00:29charelinux only
00:33aedonAnyone use lighttable? I'm looking for some clever way to have a 'scratch area' for interactive evaluation at the end of a file that doesn't normally get evaluated? Comments won't work, because lighttable will evaluate the comment. Any ideas?
00:35xperaarrdem: but PC-CLOJURE needs all the help it can get
00:36arrdemxpera: PC-* is dead. let it moulder with nonpaged computers
00:36arrdemoh. 4/1
00:36arrdem,(apply head #'desk)
00:36clojurebot#<CompilerException java.lang.RuntimeException: Unable to resolve symbol: head in this context, compiling:(NO_SOURCE_PATH:0:0)>
00:37xperaarrdem: I'm shamefully trying to get some votes at https://news.ycombinator.com/newest
00:37arrdemdamnit... I was gonna post actual content today...
00:38xperathe noise to signal is high today
00:40arrdemI wonder how long it'd take to build urbit-clojure...
00:40arrdemand whether I could finish if I all night and ditch this morning's test...
01:03noprompt_WebSocket connection to 'ws://localhost:3000/ws' failed: One or more reserved bits are on: reserved1 = 1, reserved2 = 0, reserved3 = 0
01:03noprompt_fuck you
01:23bellkevI have a quick question regarding vars: Does anybody know exactly why they are callable, but you need to dereference them to do other things with them?
01:24bellkevThis occurred to me when trying to understand the syntax for (run-jetty #'my-app ...) to enable wrap-reload to work with compojure routes...
01:24bob2is anyone using lein's repository auth stuff? it looks a lot to me like it's not sending auth headers and I can't figure out why.
01:25akhudekbellkev: usually it just gets the value of the var
01:25akhudekbellkev: but in the case of things that want dynamic rebinding you want the symbol instead, I think
01:25akhudekbellkev: so that when you change whta the var references, the code can pick that up
01:28bellkevakhudek: I get that you only need to use the var in the case of jetty-run to get the dynamic reloading behavior, but after you do that, the app handler you pass it gets called as a function. I'm wondering why it was decided that you can just call a var (i.e. that implements IFn), instead of having to dereference it first, e.g. with var-get
01:28akhudekbellkev: ah, I do not know
02:19noprompt_Raynes: conch so awesome.
02:55tsdhWhat's the right predicate for testing if something is a composite form, e.g., a funcall? list? isn't it because it says true for '(foo 1 2) but false for `(foo 1 2). So I probably want seq?, right?
04:07xsynHow do I cons a java.util.regex.Pattern?
04:07xsyninto a seq
04:08pyrtsa,(let [xs ()] (cons #"foo" xs)) ;; why would you do that?
04:08clojurebot(#"foo")
04:14broquainttsdh: Yeah seq? probably does what you want (although I'm not entirely sure what that is).
04:14AeroNotix,(list #"foo")
04:14clojurebot(#"foo")
04:14xsynI got confused
04:14xsynI put a cons and a join in the wrong order
04:15tsdhbroquaint: Ok, thanks.
04:42clgvI want to get emacs 24 running with SBCL - is there any recent good guide to set up slime, paredit etc?
04:42clgvmy old init.el from last year fails with strange errors
04:51cmpitgclgv: Perhaps it's better to ask in #emacs?
04:52cmpitgclgv: What errors did you encounter?
04:53clgvcmpitg: slime.elc:Error: Don't know how to compile nil
04:54clgvyeah maybe, I just know that here are usually a lot of helpful people knowing emacs ;)
04:54cmpitgTry removing all *.elc files?
04:55clgvcmpitg: *.elc are compiled files?
04:55cmpitgYeah
04:55cmpitgfind ~/.emacs.d/ -regex ".*\.elc$" -delete
04:56cmpitgelc files are byte-compiled from el
04:56clgvcmpitg: no that did not help
04:56clgvslime.el:Error: Don't know how to compile nil
04:56cmpitgRestarting Emacs doesn't work?
04:56clgvI installed slime.el:Error: Don't know how to compile nil
04:57clgvemacs startsup with that error message in the buffer
04:57cmpitgWhat's your Slime config?
04:58cmpitgAnd how did you install Slime?
04:58clgvversion is slime-20100404.1
04:58clgvvia the package-list-packages
04:58clgvcurrently just that https://www.refheap.com/70125
05:00cmpitgStrange, the version you have is too old
05:01cmpitgI'm using 20140320.1021 from Melpa
05:01cmpitgTry getting latest version then?
05:01clgvhumm maybe it's the one provided with ubuntu
05:01cmpitg(add-to-list 'package-archives
05:01cmpitg '("melpa" . "http://melpa.milkbox.net/packages/&quot;))
05:01cmpitg(package-refresh-contents)
05:01cmpitgThen install
05:02clgvdo I need to require anything before your add-to-list? since I get: "Debugger entered--Lisp error: (void-variable package-archives)"
05:03cmpitgAh, it should be require'd by default if you're using 24. How about (require 'package) then add-to-list?
05:04clgvyeah added (require 'package) now
05:06cmpitgDoes it work?
05:09clgvyes, thanks!
05:09clgvnow lets see if I get all the features back^^
05:11luxbockhi, I don't completely understand how inline funcitons work (so I probably shouldn't be using them), but I have function that defines an anonymous function from a matrix, and then that anonymous function does lookups from the matrix based on the indices many times in a loop
05:11clgvcmpitg: is there a way to add all packages of a directory to the load-path?
05:11clgvluxbock: and the question is?
05:11luxbockI was wondering if I could expect a performance improvement by adding the :inline meta-data into the anonymous function definition?
05:11cmpitgclgv: Yes, gimme a moment
05:13clgvmy emacs foo is weak ;) I just need it once a year for the SBCL course...
05:13cmpitgclgv: Something like this https://gist.github.com/cmpitg/f2c1b76329f7ff2a60d9
05:14clgvah ok programatically. thanks!
05:14cmpitgGladly :-)
05:14luxbockit would essentially be (fn [a b] {:inline (fn [a b] `(mget m ~a ~b)) } (mget m a b))
05:15clgvcmpitg: yes, my old init.el works now! thanks a lot!
05:16clgvluxbock: lambda functions (= anonymous functions) can not be inline
05:16luxbockalright, so my question doesn't make much sense then, good to know :)
05:17cmpitgclgv: :-)
05:17clgvcmpitg: damn one remaining problem. swank seems to be too old as well. I get a warning when I fire up slime
05:18cmpitgDo you use quicklisp?
05:18clgvcmpitg: not yet. but I could change that
05:19cmpitgclgv: It's highly recommended. Awesome package manager for CL :-)
05:19cmpitgLatest Slime from Melpa and Swank from Quicklisp work quite well
05:22clgvcmpitg: did try (ql:quickload "swank") but emacs still uses the old swank. would it work if I install it via quicklisp as root?
05:23cmpitgAh, Emacs' Swank should come with Slime
05:23cmpitgJust restart your Emacs, ignore if it complains, and enjoy
05:55dokyi want to ask: do i have to have installed clojure if i run my app as standole.jar which i built with leiningen uberjar ?
05:55dokywhen i run in java -jar standolone.jar it fails with Exception in thread "main" java.lang.NoClassDefFoundError: clojure/lang/IFn
05:56dokyor what is the purpose that it fails im using lein2
06:13broquaintdoky: Yeah clojure should be bundled in with your uberjar AIUI.
06:14dokyin jar it already is
06:19clgvdoky: you only need a Java Runtime Environment for standalone jars build with leiningen
06:20dokyin jar file ? because i can run any jar for example i created by java etc
06:21dokyclgv: in jar file ? because i can run any jar for example i created by java etc
06:22clgvdoky: yeah "lein uberjar" leads to my-project-standalone.jar which you can simply run per java -jar my-project-standalone.jar on any machine with a compatible java version
06:23dokyclgv: but when i run it it fails with java.lang.NoClassDefFoundError: clojure/lang/IFn i have (:gen-class) only in file with main but in jar are all files i need
06:23dokyclgv: and also in jar file there is clojure and manifest is correct with Main-class
06:24clgvdoky: sounds about right
06:27clgvdoky: do you have a pure clojure project or some complex interop a la java uses clojure
06:27dokyclgv: no only clojure, and i am using http-kit, it is a webapp with clojurescript
06:28clgvdoky: it is not publically available on github?
06:28dokyno :/
06:29clgvdoky: just to eliminate weird cases did you try "lein do clean, uberjar" already?
06:29dokyno i build it only with lein2 uberjar
06:29dokyclgv: i will try clean it
06:34dokyclgv: it still fails with same error
06:39clgvdoky: can you post a complete stacktrace on refheap.com?
06:42dokyclgv: here it is: https://www.refheap.com/70132
06:45dokyclgv: oh in jar under clojure directory there is no lang folder ... only core, data, java, tools
06:45clgvdoky: well that's a problem then. did you add jar/uberjar exlucsions to your project.clj?
06:46dokyclgv: no i haven't but i even dont know how to add it there ... :/
06:46clgvdoky: can you post your project.clj?
06:46oskarthWhat'
06:47oskarthWhat's a more idiomatic way to do this: {"email" (:email m) "address[line1]" (:address m) "address[city]" (:city m) "address[postal_code]" (:postalCode m)}?
06:47dokyclgv: https://www.refheap.com/70133
06:48clgvoskarth: probably something using `reduce-kv` on the map and `name` to get the string from the keyword
06:50clgvdoky: I dont see any reason in the project.clj which could cause that error.
06:55dokyclgv: so how do i can get lang there ?
07:03clgvdoky: if you try an empty project that just prints hello world in its main and build an uberjar from that you'll see that all of clojure ends up in the uberjar.
07:03clgvdoky: I have no idea why it does not in your project...
07:04dokyclgv: ok i will try it
08:03noncomhi, anyone working with CCW here?
08:05Frozenlo`I hate April 1st. The Internet is unusable.
08:05CookedGryphonyeah, feel it has jumped the shark a bit this year
08:06CookedGryphonthough I did contribute to the noise a bit myself (using clojurescript and core.async) - http://www.swiftkey.net/en/blog/untap-your-potential-with-swiftkey-flow-hard/
08:07CookedGryphoncore.async made throttling the prediction updates to the server really trivial, would have been a nightmare otherwise
08:16wunkiIn my ring handler I'm using the `:params` to fetch the id from the URI. But with ring-mock the `:params` key is not populated. Any tips how to test a handler like this?
08:40AeroNotixweird question-- is there something which acts like (str) but will convert nil to "nil" ?
08:40AeroNotix,(str nil)
08:40clojurebot""
08:41CookedGryphon,(pr-str nil)
08:41clojurebot"nil"
08:41AeroNotixCookedGryphon: cheers!
09:02mskoudtrying to convert a list to a map, but would like to have a list for each record in the map. (into {} (map (fn [x] [(x :id) x]) [{:id 1 :data 2} {:id 2 :data 3} {:id 1 :data 4}])) ditch (as expected) :data 4 , but i would like to keep it...
09:02mskoud'(into {} (map (fn [x] [(x :id) x]) [{:id 1 :data 2} {:id 2 :data 3} {:id 1 :data 4}]))
09:05mskoud(group-by #(% :id) [{:id 1 :data 2} {:id 2 :data 3} {:id 1 :data 4}]) seems to work :-)
09:12gfredericks(group-by :id [...]) would likely do the same thing
09:12brunovmskoud: I think you can drop the #(% :id) and just use :id
09:13brunovgfredericks: you beat me to it by a millisecond :)
09:29fro-does anybody used orientdb with clojure? How it was, any pitfalls? Seems that native driver has'nt updated for 2 years..
10:40Guest5277is anyone having issues connecting to a lighttable project? When using the latest clojurescript 2197 it doesn't work. 2173 works fine.
10:53gfrederickshaving a library define print-dup for a 3rd-party type isn't as egregious as print-method...yeah?
10:56cemericknice: stackoverflow in the CLJS compiler. This is going to be fun. :-P
11:28germanmushroomwhy does (defn grab-content [url]) (slurp url) return nil when called? Its a just slurp wrapper, calling slurp directly does grab the correct content
11:29joegalloif that's a 100% literal copy paste, then it's because you have a misplaced paren
11:29germanmushroomoh shit...
11:30joegallo;)
11:30germanmushroomthat didn't happen!
11:30germanmushroom:p
11:33cemerickWow: a CLJS codebase that compiled fine with 2173 was failing with a stackoverflow under 2197. Experimentation revealed that the -XX:TieredStopAtLevel=1 arg that Leiningen adds by default was the root cause; removing it yielded a clean compile.
11:34cemerickInterestingly, leaving the tiered compilation args in as Leiningen defaults, but bumping up the thread stack size (doubling in my case, -Xss2m) also yields a clean compile.
11:34cemerickdnolen_, technomancy ^^
11:35cemerickI'm now inclined to always set _some_ :jvm-opts in lein-cljsbuild, so that lein's tiered compilation default args aren't added.
11:51puredangercould also ^:replace [] ? also, weird.
11:52AmandaCWhat exactly is the -> function thing? I’ve seen it crop up here and there, but I’m at a loss as to what it is
11:53cbpAmandaC: http://blog.fogus.me/2009/09/04/understanding-the-clojure-macro/
11:54AmandaCoooo, shiny
11:54AmandaCthanks, cbp
11:55cemerickpuredanger: That's the effect of defining any :jvm-opts in project.clj. The defaults are omitted entirely in that case (e.g. :jvm-opts [])
11:56puredangerIs that true? I thought :jvm-opts was additive if you did not ^:replace ? (in which case empty opts has no effect)
11:56cemerickpuredanger: but, yes. Makes a *little* sense, insofar as the tiered compilation stuff probably has more thread allocation overhead for cljsbuild's relatively short process lifetime (since it's interpreting for longer, rather than aggressively JIT'ing).
11:57cemerickpuredanger: Nope, empty [] replaces; verified via `lein pprint` and jvisualvm.
11:57cemerickAlso, my build working (or not) ;-)
11:57puredangercool, that must have changed at some point
11:58cemerickI'm writing this up in a stable spot in a lein-cljsbuild issue, so people can gawk at it.
11:58puredanger<gawk>
11:59puredangerif we just used sbt we wouldn't have these problems.
11:59puredangersorry, too much april foolery today
12:03cemerickpuredanger: you need to be more subtle, that's too obvious :-P
12:18rootexwhat's stopping cljs from reaching version 0.1? ;)
12:24devnheh
12:25devncljs feels like it's at 1.6 to me
12:26devnerr 1.3-1.5, something in there
12:27devnit'd be kind of nice if stable versions matched clojure releases
12:28devnin other news, currently spinning at 800% CPU. Emacs is hung. Is it possible to `lein repl :connect` to save my session from dying? This task has been running for 4 hours and it might go for another 4, but I would like my emacs back.
12:28devnIt would be a bummer to kill it now, but I'm thinking I might have to
12:28technomancy~tias
12:28clojurebottias is try it and see
12:29devntechnomancy: heh, i dont want to lose my session, so if you have a guess, that'd be helpful
12:29devni worry a bit that force quitting emacs will cause the server to die either way
12:30technomancyoh sure, if you jacked in then your session won't survive emacs quitting
12:30technomancyI thought you were asking whether you could get it out of this hung state, which is harder to say
12:31devntechnomancy: /me hands you a code of conduct and a lemonade
12:31technomancyyou definitely should be able to connect to the process through a cli repl
12:31devnwell, i /can/, but it hasn't shown me a prompt yet
12:31justin_smithsometimes you can rescue a program and turn a hang into a small error by connecting via gdb, stopping, popping up some number of stack frames, and resuming
12:32devni assume because my there is a crazy amount of GC going on
12:32justin_smiththough usually killing and starting over is sufficient and easier
12:32devns/my//
12:33devnI may start over either way just to try and figure out how to partition this work. I think I need some clojure perf action
12:33devnno.disassemble time? maybe.
12:33devnjustin_smith: also, im going to keep bugging you until you get back to me about stopping out in portland :)
12:34devncemerick knows how persistent i can be. i think it's been 2.5 years and im still asking for him to hook me up with some source he promised.
12:40clgvdevn: for higher level try "luyten" or "jd-gui"
12:44gfredericksoh man java.util.Random is not very random
12:45gfredericksseeds 0=>4095 will give a number between 0.5 and 1.0 when you call nextDouble
12:46gfredericksI guess the seed has to be pretty random too O_O
12:51ToxicFroggfredericks: Java, per the spec, uses a very simple LCG. It's kind of shit.
12:52devngfredericks: mersenne twister
12:53gfredericksdoes this mean that test.check's habit of using currentTimeMillis for the seed is a bad idea?
12:54gfredericksand (.nextLong (java.util.Random. (System/currentTimeMillis))) would be a better seed?
12:55bbloomgfredericks: http://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html
12:55amalloygfredericks: actually i'm surprised Random doesn't let you ask what seed you would need to use to get a Random like this one
12:56amalloythere's no way test.check needs cryptographically secure randomness
12:57gfredericksamalloy: oh surely not
12:57reiddrapergfredericks: not sure i follow, currentTimeMillis returns something like 1396371284007, not 0-4095
12:57gfredericksreiddraper: right, I just didn't know if there would be other ranges of seeds that give constant output for certain operations
12:58reiddraperah, quite possibly
12:58reiddraperadmitedly its not something i've looked into much
12:58gfredericksgen/boolean gives true for 0->4096; what if it also gives true for some month-long range of currentTimeMillis?
12:58amalloyprobably there are, but i doubt it makes much difference to test.check
12:58gfredericksI guess that only affects the first round of tests
12:59amalloymaybe the first coin you flip always comes up heads, for a period of several minutes. even if that's true, the coins after that in each run will be different
12:59gfredericksamalloy: righto; good points all; test.check is teh best
12:59amalloyand a single run of test.check flips a lot of coins, i bet
12:59gfredericksI made a for-gen macro
12:59gfredericksor gen-for; or whatever a good name is
12:59amalloygfredericks: so it's like bind, with :when/:while/:let, or what?
12:59gfredericksit can replace bind, fmap, and such-that
13:00gfredericksamalloy: yeah, but I don't think :while makes sense?
13:00amalloyprobably not
13:00gfredericksI think I wrote this like a year ago and can't remember if reiddraper thought it would fit in test.check
13:00gfrederickss/year/6-months/
13:00amalloygfredericks: well, bind can already replace fmap and such-that, so you're really just replacing bind, right
13:01reiddrapergfredericks: likely, yes. i still intend to get nested-property support in sometime soon, now that things have picked up steam a bit
13:01gfredericksclojurebot: amalloy is right again
13:01clojurebotIk begrijp
13:02gfredericksapril 1st is a good day to experiment with being wrong
13:02amalloyoh man
13:02amalloyi could just give terrible advice in #clojure all day
13:02amalloy"why don't you try type-hinting that"
13:03amalloy"just use defstruct"
13:03gfredericksI know a 5yo who just learned about april fools and thinks it's just saying arbitrary false things followed by "April fools! <uproarious laughter>"
13:03llasramThat's adorable
13:04amalloyawww
13:04gfredericksRICH HICKEY INVENTED SCALA
13:04gfredericksAPRIL FOOLS
13:04technomancygfredericks: that sounds like how my kids do knock-knock jokes
13:05amalloyevery year i toy with the idea of an april fools joke on 4clojure, and i always decide i shouldn't spend much effort on confusing newcomers
13:05gfrederickstechnomancy: how is line 3 constructed?
13:06technomancygfredericks: haven't been able to discern much of a pattern so far
13:06gfredericksare line 3 and 5 related?
13:07technomancyyeah, 3 is just a truncation of 5, which is a random phrase
13:07gfredericksoh nice
13:07gfredericksknock knock
13:07llasramWho's there?
13:07gfredericksrich hickey
13:07llasramRich Hickey who?
13:07gfredericksrich hickey invented scala! april fools!
13:08llasramAdorable!
13:08technomancyunrelated http://achewood.com/index.php?date=01072002
13:08technomancywell, tenuously related
13:08AmandaCo.o
13:09llasramAwww. As an immortal child, Philippe does not himself comprehend death
13:13gfredericksreiddraper: should we just call it for?
13:14reiddrapergfredericks: seems reasonable to me
13:14reiddraperor maybe 'let'
13:14reiddraperdepends on the shape of it, i suppose
13:16gfredericksI figured it could include :let and :when the same way clojure.core/for does
13:17reiddrapergfredericks: you have a couple of example uses of it?
13:18gfredericksI could drum one up
13:22gfredericksreiddraper: https://gist.github.com/fredericksgary/9918722
13:23gfredericksapparently :when is harder to write than I thought
13:24reiddrapergfredericks: thanks, i'll take a look during lunch, shortly
13:25seangrove ,(let [a (atom [])] (swap! a conj a))
13:25clojurebot[#<Atom@efd40d: [#<Atom@efd40d: [#<Atom@efd40d: [#<Atom@efd40d: [#<Atom@efd40d: #>]>]>]>]>]
13:26amalloyseangrove: you get a stacktrace in your repl, but during printing, not during the swap!
13:27seangroveamalloy: Ah, I thought it was interesting since it just came up on the ml
13:27amalloyi don't really read the ML anymore
13:28SegFaultAXamalloy: You don't see the ML anymore? Just functor... monoid... monad...
13:33seangroveamalloy: Why's that?
13:33seangroveIt's been kind of nice for seeing what people are working on. Not mission-critical though.
13:34amalloya few reasons. the first was just that the rss feed stopped working for me, and i realized i didn't really mind
13:35amalloybut it's just so much slower than irc, and i only have so much time. if someone's in here, they have a question that they *can't* surround with five paragraphs of context that they think will be useful but really just obscures the problem
13:35amalloyand i can answer in a sentence without seeming rude for not writing a couple paragraphs
13:37gfredericksIRC: Like ML but for busy professionals.
13:37rasmusto~ML
13:37clojurebotCool story bro.
13:37hiredmanthe mailing list lacks the darwinian forces that are at work on irc
13:38amalloyhah
13:38technomancyken wesson and cedric greevy wouldn't last a day on freenode
13:39hiredmanI saw an email on the list that recent began with "I am a post technical pm"
13:39seangroveamalloy: Interesting points
13:39hiredmanrecently
13:39seangrovehiredman: It's a pretty good filter, someone has to at least find it. Perhaps better pre google-groups
13:41gfrederickshiredman: that just means "I quit programming"?
13:41hiredmangfredericks: yeah, I had to ask around to see if anyone knew what that meant
13:41justin_smith"I got promoted from writing code to making people who write code meet deadlines"
13:44locksI was a post rock bassist once
13:44locksam I qualified for a post technical position?
13:53moquistWe're trying to switch our otherwise open source project from datomic-free to datomic-pro, and running into the [aparently] usual questions about depending on it. I put a :repositories entry in my ~/.lein/profiles.clj to add my.datomic.com so we aren't putting it in our project.clj in github. lein is, of course, telling me to "See https://github.com/technomancy/leiningen/wiki/Repeatability&quot;.
13:53moquistIs there a better way? Google has not told me the answer so far.
13:55technomancymoquist: ignoring the question of whether it makes sense to have open source that can't run without proprietary software, you should put the repositories you need into the project.clj file and configure credentials for this file to read from the environment or from credentials.clj.gpg
13:58moquisttechnomancy: Yes, I'm [somewhat] ignoring that question for now, too. I'm inclined to switch the dep to datomic-free and keep datomic-pro in a production profile.
13:59justin_smithwill using nginx in front of http-kit with websockets be a total pain in the ass?
14:00justin_smith(I have used nginx in front of http-kit, and websockets in http-kit, but not both together)
14:01amalloyjustin_smith: i think i used iptables instead of nginx for my websocket stuff. my understanding is that ngnix doesn't like to have lots of long-lived connections (which is one of the main use cases for websockets)
14:01justin_smithcool, thanks
14:01moquisttechnomancy: thx, BTW
14:02technomancymoquist: sure. I'm inclined to agree that private repos are more trouble than they're worth fwiw.
14:03devnaw man, sad face, "connection broken by remote peer"
14:10marcuscreoexit
14:10marcuscreo\exit
14:14seangrove~exit
14:14clojurebotexit is There is no exit
14:14rasmusto~^D
14:14clojurebotExcuse me?
14:16justin_smith~
14:16clojurebotI don't understand.
14:16justin_smithit is cool that you can send an EOF to IRC
14:18dokycan anybody help with this issue ? https://www.refheap.com/70323 im using enfocus for templating
14:19dnolen_doky: more context is needed, what does your client side code look like?
14:22dokyon the client side is enfocus and i'm trying to implement - user-list with users already in chatroom and so count of users varies and so i appending (even though not sorted) works but if i want to remove user who left the room its a problem
14:23dokydnolen_: so this is it
14:23dnolen_doky: i mean like a gist or refheap
14:27dbaschhas anyone figured out the “com.google.common.io.ByteStreams.limit(Ljava/io/InputStream;J)Ljava/io/InputStream;” exception when building clojurescript with optimizations?
14:28dokydnolen_: https://www.refheap.com/70326
14:29dokydnolen_: any idea ?
14:30dnolen_dbasch: never heard of that issue
14:31amalloydbasch: sounds like a version mismatch
14:31amalloybut a real stacktrace would help, as always
14:31dbaschusing cljsbuild 1.0.2, clojurescript 2173
14:31dbaschstacktrace coming
14:31dnolen_doky: huh no idea, I don't know enfocus, ask on the ClojureScript ML
14:32dokyok i will try, thanks
14:33dbaschamalloy: full stacktrace http://pastebin.com/P78EJ8J3
14:34amalloydefinitely a version mismatch
14:34dbaschgoogle hints at a problem with the closure compiler and guava
14:34amalloybetween what, i'm not sure. google.commons.io and closure, maybe?
14:35dbaschamalloy: ok, but I don’t know where to start looking
14:41dnolen_ClojureScript 0.0-2199 going out, just fixes annoying incorrect Google Closure warnings
14:44dbaschdnolen_: the problem I see has to do with a Guava method that doesn’t seem to be there
14:45dnolen_dbasch: sounds like a deps issues like amalloy said then
14:45dnolen_dbasch: I would check your deps tree to see what's up
14:47dbaschdnolen_: any ideas as to how to find out what’s bringing in an incorrect / old version of guava?
14:47dnolen_lein deps :tree
14:48amalloyalso lein-pedantic should warn you of version mismatches, i think
14:48amalloythat might even be in lein itself now
14:48dnolen_amalloy: I think `lein deps :tree` does this for you
14:48dnolen_well it definitely does here on my machine anyway
14:50seangrovednolen_: You've mentioned it before, but what're the remaining issues for a 1.0 cljs release? I'm not especially worried about it, just curious
14:50dbasch[secretary "1.1.0"] -> [org.clojure/clojurescript "0.0-2156"] -> [com.google.javascript/closure-compiler "v20131014"] -> [com.google.guava/guava "15.0"]
14:52dbaschactually, I found the problem
14:52dbasch[com.google/bitcoinj "0.11.1"] -> [com.google.guava/guava "13.0.1"]
14:52dbasch overrides
14:52dbasch[org.clojure/clojurescript "0.0-2173"] -> [com.google.javascript/closure-compiler "v20131014"] -> [com.google.guava/guava "15.0"]
14:53dnolen_seangrove: various compiler things need fixing (tools.analyzer integration, main namespace), various perf things (multimethods)
14:55dnolen_speaking of which I'm thinking 0.0-2199 should probably be the last release of ClojureScript that doesn't require 1.6.0 - I'd like to move to the new hashing stuff, and macros etc.
14:55dbaschthanks dnolen_ and amalloy
14:57dbaschof course, I need that library for my clojure build. Any elegant way to separate the dependencies other than commenting it out when I’m building clojurescript?
14:58dnolen_dbasch: doesn't it suggest exclusions?
15:01justin_smithhttp://lispm.dyndns.org/sbcl it looks like sbcl's april fool joke is clojure
15:06bbloomjustin_smith: i know it's a joke, but i can't tell which part is the joke....
15:06justin_smithheh, I don't think we are the target audience
15:06bbloomjustin_smith: is "haha clojure" a joke among CL people?
15:06justin_smithI wouldn't be surprised if it were
15:07dnolen_bbloom: I don't think so, only some CL people
15:07bbloomeither way, i laughed harder at https://github.com/tpope/timl until i saw "763 commits"
15:07technomancythe best jokes are the ones that actually work
15:07justin_smithwow
15:07tpopebingo
15:08bbloomtpope: *clap*clap*
15:08bbloomtechnomancy: hahah, is it just mvn?
15:08TravisDpoor tpope :(
15:09dnolen_bbloom: I thought the Haskell April Fool's joke was funnier https://groups.google.com/forum/#!topic/haskell-cafe/iMkWf7dlP8g
15:09technomancybbloom: no, it's an alternate defproject syntax
15:09bbloomtechnomancy: looking at src now, hilarious. nicely done
15:09technomancythanks
15:10justin_smithlol
15:10justin_smith(inc technomancy)
15:10lazybot⇒ 104
15:10technomancyit sits on the auto-activated middleware stuff
15:10AmandaCbbloom: I hear you’re obsessed with trees? :p
15:10bbloomAmandaC: true story.
15:10AmandaCI found your talk rather amusing. :P
15:11bbloomtpope: i enjoy the file extension
15:11tpopeturns me on tbqh
15:11bbloomAmandaC: i'm glad you enjoyed it!
15:11bbloomtpope: is the the first lisp you've implemented? it's certainly a rite of passage, but you, my friend, are an insane person
15:11tpopeyes it is
15:12bbloomtpope: did you get a warm fuzzy euphoria feeling?
15:12bbloomor did viml preclude that?
15:12tpopenah it was a constant high to see shit work
15:12dbaschdnolen_: I was excluding com.google/guava, and it was com.google.guava/guava. That fixed it
15:13dbaschthanks again
15:13bbloomtpope: awesome. congrats on a truly mad man success
15:13tpopeI mean I reeeeeeaally understand syntax quoting after implementing it 4 or 5 times
15:13tpopeone of them the right way, even
15:13bbloomhaha that's entirely why i wrote backtick
15:13AeroNotixDoes anyone know of any interesting discussions which happened about custom runtimes for Clojure?
15:13dnolen_tpope: can't believe you bothered with stuff like chunked seqs :)
15:14ambrosebstpope: wow!
15:14tpopednolen_ I had dreams of it being a viable language, man
15:14tpopethat was a huge performance boost
15:14amalloydnolen_: performance is even more important if you're compiling to viml, of course
15:14bbloomi am seriously grinning ear-to-ear
15:15tpopeI mean I haven't completely given up that dream
15:15tpopebut it's dubious enough that I haven't been able to get excited about working through the tedious stuff like documentation
15:16bbloom... does your repl have a debugger...?
15:17tpopeyeah but I think it's broken
15:17bbloomprops for even attempting it
15:17tpopewouldn't be *that* hard to get working again
15:18tpopewell by debugger I mean "start a repl within lexical scope", not a *real* debugger
15:19bbloomclose enough
15:37brainkimHey peeps!
15:37brainkimWhat's the closest thing Clojure has to Haskell's `IVars` (i.e. a thread-local (I need it in clojurescript) reference type that can only be written to once (or twice if you ignore the initialization) and will drop all future writes))?
15:38ztellmana promise, if you ignore the thread-local bit
15:39bbloomcould also use a core.async channel with a dropping buffer
15:40bbloombrainkim: maybe step back a bit and tell us what you're trying to do & we can tell you the idiomatic solution
15:40brainkimbbloom: I like that solution! I've been pretty much replacing most reference types with channels of some sort.
15:41brainkimI'm doing websocket stuff, need to set client id on the first message, but don't want it to ever change.
15:41brainkimI dunno.
15:41brainkimThanks for the suggestions bbloom ztellman
15:42bbloombrainkim: sounds like both promises and channels would be overkill... why not simply (when (nil? channel-id) (swap! something assoc :channel-id 123
15:42bbloom... etc
15:42brainkimYeah I guess I should just use an atom
15:43brainkimThe thing is I don't want the client to send any messages until it knows its canonical id
15:44brainkimwell, i guess i could just deref the atom and check if it's still nil
15:44brainkimhmmm
15:46brainkimWhat I basically want is a singleton core.async channel which will park a goroutine while it's empty and will emit the same value whenever it's `<!`ed
16:03babilenban evasion
16:04babilen(ECHAN - don't do that!)
16:04babilenheh
16:09coventrybrainkim: How about (async/onto-chan c (cycle ['v]))?
16:11brainkimDoes to-chan/onto-chan play nicely with infinite seqs?
16:11brainkimthat's cool!
16:17seangroveIn the interest of balanced discussion, I'd like to see what non-top analyst predict in regards to the topic
16:18rasmustonumbers will decrease
16:19technomancynumbers will converge on pi
16:19seangroveThere's also the possibility that it's linked to quantum-levels of randomness
16:20seangroveHow come none of these possibilities are covered? Why do the corporate overlords of #clojure insist on censoring free speech? WHAT ARE THEY AFRAID OF?
16:20bbloomnumbers will converge on e, but then oscillate back and forth and ultimately diverge
16:20technomancyclojurebot: wake up sheeple
16:20clojurebotCool story bro.
16:20coventryClojure will shortly be abandoned after the love child of Rich Hickey and Rasmus Lerdorf publically unveils serious misgivings about its upbringing.
16:21zerokarmaleftI have serious misgivings just about those words together in a sentence
16:25ambrosebstpope: how do I lookup a deftype field in timl?
16:26ambrosebstpope: sorry just finding the docs
16:26tpopewhat do you mean "look up"?
16:26tpopedeftype was right around where I started to trail off but you can see an example in timl.buffer
16:27ambrosebstpope: I meant (deftype Abc [a]) (. (Abc 1) a)
16:27tpopeoh right, that's it
16:27ambrosebsIs (. (Abc 1) -a) supposed to work?
16:28tpopeno, I tried to emulate clojure not cljs in this regard
16:29ambrosebscool, fwiw it works in clojure too
16:29tpopeoh, does it work both ways in clojure?
16:30tpopeI thought clojure was (. x attr) or (. x (method args))
16:30ambrosebstpope: I think it disambiguates between a zero argument method and a field?
16:30tpopeI copied that but left out (.foo x) because until I made a more definitive decision
16:31tpopein clojurescript it does
16:31tpopeI thought in java you could only have one or the other, so it was moot
16:31ambrosebsok, the syntax is implemented in clojure, it apparently doesn't do much
16:32tpopegood to know. I intentionally left out (.foo x) to delay making a decision on that
16:32rasmustotpope: what does Tim stand for?
16:33justin_smithI would have guessed Timothy
16:33tpopetiml stands for tpope viml
16:33tpopeOBVIOUSLY
16:33bbloomi vote for TIMproved Meta Language
16:33ambrosebs:)
16:33rasmustoTIMproved sounds good
16:34seangroveclojurebot timl is unresolvable
16:34ordnungswidrig1where is clojure for elisp bytecode?
16:34seangroveclojurebot: timl is unresolvable
16:34clojurebotRoger.
16:34technomancyordnungswidrig1: I came really close to starting that project
16:34technomancyordnungswidrig1: but the fact that the emacs platform doesn't have immutable strings or lists made me hesitant
16:34seangrovetechnomancy: Did you get distracted with OCaml for elisp bytecode?
16:34technomancyhehe
16:34ordnungswidrigtechnomancy: when you do, then please no intermediate elisp. direct to the metal.
16:35technomancy"the metal" haha
16:35bbloomtechnomancy: amusingly, a text editor is probably one of the few places where mutable string constructs have an appropriate use case
16:35technomancy(I'm currently hacking forth, which makes me amused at every reference to "the metal" that still runs inside an operating system)
16:35Bronsatpope: ambrosebs actually you can have fields/no-arg-method in java too
16:35ordnungswidrigbbloom: not at all, you want to have structural sharing for undo-trees!
16:35technomancybbloom: actually you'd think so but that's really not true
16:35Bronsatpope: ambrosebs http://sprunge.us/HGAV?clj
16:36technomancybbloom: all the mutation already happens in elisp's buffer type
16:36seangroveReminds me of e-texteditor, crazy authors
16:36ordnungswidrigtechnomancy: forth ist the only higher language that is authorized to talk about the metal.
16:36ambrosebsBronsa: thanks
16:36technomancybbloom: seeing strings that are bashed in place is actually super rare, and emacs's maintainers have expressed openness to making them immutable in a future release
16:36tpopeBronsa: oh weird, that's what I get for assuming
16:36bbloomtechnomancy: nevermind, i stand corrected. that's awesome
16:37ordnungswidrigthe emacs maintainer. what are these? alle men with beards? long beards?
16:37coventryI had so much fun with forth on my trs-80 cc.
16:37Bronsatpope: I only know this because I got bitten by a bug that assumed that that wasn't possible, so you're in good company :)
16:37ordnungswidrigforth is so low level that is becames powerful
16:38technomancybbloom: OTOH it just makes it more frustrating that there are no guarantees =)
16:38technomancyyou write all your code assuming strings never change, but one day someone comes along and ruins your party
16:38llasram"I'm here for the immutable string party. This is it?"
16:39llasramThen -- out comes the nine-bladed mutator
16:39bbloomtechnomancy: i've seen so many bugged ruby programs that mutate strings that are used as keys in hashes
16:39bbloomtechnomancy: sends shivers up my spine
16:40seangroveAre stings mutable in ruby?
16:40technomancythat's one thing JS got right, probably by accident
16:40bbloomseangrove: yes, keywords are not
16:40technomancy*undoubtedly by accident
16:40bbloomheh
16:40seangroveJesus
16:40bodie_does anyone know whether Typed Clojure (i.e. Core.Typed) is a good thing?
16:41ToxicFrogI've used it with some success, although I want different names for some of its API functions because I think they look ugly.
16:41ToxicFrogI've never used it on anything really large, though.
16:43seangroveWow http://stackoverflow.com/a/14779648
16:44rasmusto~sugar
16:44clojurebotHuh?
16:44amalloytpope, Bronsa: before the (.-foo x) syntax was introduced, on the jvm (. x foo) used to default to the field, and you could use (. x (foo)) to get the method instead. i didn't realize that had changed, but either way it's an interesting historical note
16:45bbloomit's an interesting case study on the complexities of host-agnostic host-interop :-P:
16:46tpopeyeah my (apparently incomplete) understanding of that informed my decision to make (. x (foo)) the method invocation interface
16:47bbloomi didn't even realize vim had a concept of methods...
16:48tpopeit supports a primitive form of prototype based inheritance, but the core language doesn't really use it
16:48tpopehence why I didn't have a problem hiding it behind that ugly ass syntax
16:49ordnungswidrigtechnomancy: are you still happy with your portable keyboard (I just built my ergodox)
16:49hiredmanneeds an april fools project to embed v8 in vim and switch to javascript for vim scripting
16:49ordnungswidrighiredman: I hope you mean clojurescript *g*
16:49hiredmancommit message "fixing vim's prototype based inheritence"
16:50brehautwhen vim and emacs finally converge where will all the unspent nerd rage go?
16:50technomancyordnungswidrig: yeah, I just made a few changes to the layout that have made it quite a bit nicer. I still prefer the ergodox for when I'm at home though.
16:50tpopehiredman: actually if that neovim project has its way you'll be able to target luajit
16:50ordnungswidrigtechnomancy: because of the split form factor?
16:51justin_smithbrehaut: slashdot comment threads?
16:51brehautwait wait wait, slashdot is still a thing?
16:51ordnungswidrigbrehaut: bashing atom / sublime / ?
16:51technomancyordnungswidrig: that and also because of less reliance on the fn layer
16:51technomancy(more the latter)
16:52technomancyordnungswidrig: 42 is just a really small number of keys =)
16:52hiredmantpope: should have gone crazier and went with an embeddable common lisp
16:52ordnungswidrigwell, thank god you do no APL programming
16:52technomancyordnungswidrig: it's actually great for forth! so little punctuation.
16:52ordnungswidrig*g*
16:53technomancyparens on the home row is pretty great too though
16:55ordnungswidrigyes, I used the third layer of the neo keyboard layout for a while. has layer 3 on caps/# (which is qwerty '/") with parens, brackets and so on paired on the home row.
16:55ordnungswidrigand a fourth layer for nav keys.
16:56jgmize /buffer codesy
16:56technomancyordnungswidrig: using it as an external board attached to my laptop means I haven't bothered yet with f-keys or arrows; I just hit those on the internal board
16:56technomancybut it's nice to have the option
16:56ordnungswidrigwell, never thought about that option.
16:57ordnungswidrigthere's still ctrl-f/b/p/n
16:57technomancyyeah, it's not like I use the arrows in regular usage anyway
16:58technomancyI actually physically removed the tab keycap from my ergodox in order to train myself to use C-i instead
16:58ordnungswidrigrip them out! and ESC as well! I remember using CTRL-3 because the terminal had no escape key!
16:58ordnungswidrigphysically? you mean in the firmware or the keycap?
16:59technomancyyeah, the actual plastic keycap
16:59ordnungswidrigreplace it with nail :-)
16:59technomancyhardcore
16:59Bronsaamalloy: oh didn't know that. the change makes sense though.
16:59ordnungswidrigCTRL-I is actually easy to remeber: I is for indent!
16:59amalloyor just set it to launch an app you despise
17:00Bronsawhat to me doesn't make any sense at all is ##(java.lang.Integer/MAX_VALUE)
17:00lazybot⇒ 2147483647
17:00ordnungswidrigamalloy: yes, launch VI and remove the escape key first.
17:00amalloyBronsa: meh. statics are known at compile time to be either methods or fields. i agree it's silly that it's allowed, but it's not really hurting anyone
17:01rasmustoC-[, c'mon
17:01stuartsierraBronsa: It's a historical artifact. (Integer/MAX_VALUE) worked before Integer/MAX_VALUE did.
17:01ordnungswidrigrasmusto: rather difficult on german keyboards.
17:02bbloomamalloy: it hurt me, when i was implementing an interpreter
17:02bbloomamalloy: i was like "wtf?"
17:03bbloomit hurt my brain
17:03Bronsaamalloy: java allows for static fields and static no-arg methods to have the same name, I'm not sure there's a way to disambiguate in that case
17:03rasmustoStrg-Shft-8 :s
17:03amalloyyou have a very resilient brain, bbloom. i'm sure you'll be fine
17:03ordnungswidrigrasmusto: no way on osx
17:03amalloyBronsa: i would be unsurprised to find that Foo/BAR mapped to the field, and (Foo/Bar) the method
17:04bbloomamalloy: i'm confused by that comment, i'm not sure if my brain will ever recover from the cognitive dissonance you have caused me
17:04rasmustoordnungswidrig: in ordnung
17:04ordnungswidrigrasmusto: verboten!
17:04ordnungswidrig*g*
17:06ordnungswidrigwhat was actually the reason there is no project yet to port emacs (the good parts) to clojure?
17:06technomancyordnungswidrig: you mean deuce?
17:06ordnungswidrigdeuce?
17:06technomancyhttps://github.com/hraberg/deuce
17:07technomancyhe's actually going for source-compatibility tohugh
17:07ordnungswidrighmm
17:07technomancyso not sure if that counts as "the good parts"
17:07ordnungswidrigthat's the part I would give up. as long there's still org-mode
17:07Bronsaamalloy: I just tested -- you're right.
17:08ordnungswidrigtechnomancy: he's exploring browser-first-js no legacy :)
17:08technomancyI'd be surprised if he gets org working
17:08ordnungswidrig*g*
17:08technomancyorg is probably the craziest piece of elisp in existence
17:09technomancyiirc it's the largest .el file in emacs by an order of magnitude
17:09ordnungswidrigsurprisingly it's not yet collapsed under all that features
17:09ambrosebstpope: what does this mean? https://gist.github.com/frenchy64/9923233
17:09ambrosebs& seems to work with other functions
17:09lazybotjava.lang.RuntimeException: Unable to resolve symbol: seems in this context
17:10Bronsastuartsierra: I didn't know that
17:10amalloyBronsa: the .-field syntax didn't add any capabilities to clojure or clojurescript that weren't already possible with the old syntax, it just made it easier to do things that were already possible, by changing the default of (.foo bar) to be what you "usually" mean, and adding (.-foo bar) to get back the less common meaning
17:11tpopeambrosebs: check (qf) to see where the error originated
17:11tpopeI can look closer in a few
17:11ambrosebsholy crap! :)
17:11ambrosebsthis is awesome
17:12bbloomwhere else but #clojure could you have a type-system guy evaluating stuff in a lisp interpreter written in vimL?
17:12stuartsierraOrg-mode version 8 is massively refactored into ~100 files.
17:12bbloomnowhere. that's where.
17:13ambrosebsI want to write my vim plugins in clojure! :)
17:13stuartsierraamalloy, Bronsa: actually, it did. (.foo bar) couldn't distinguish between a field lookup and a method call in ClojureScript.
17:14stuartsierraIn Java there's no ambiguity because a public field and a public method can't have the same name.
17:14amalloystuartsierra: that second part isn't true
17:15amalloystuartsierra: as for the first: you could have made it act like "that's always a field", by expanding it to (. bar foo), and writing (. bar (foo)) when you want it to be a method
17:15Bronsastuartsierra: http://sprunge.us/HGAV?clj
17:15Bronsaamalloy: I guess nobody wants to use the . op directly
17:15bbloomBronsa: the brevity of that compared to the corresponding java is amusing
17:16amalloyBronsa: right, and so the .- syntax was introduced to make it more convenient. but it wasn't a *necessary* addition; the existing notation in java was sufficient, except that it made you write annoying crap to be specific
17:16stuartsierraOK. I recall something, like in Clojure (JVM) the (. bar foo) form would always be interpreted as a zero-argument method call.
17:17tpopeambrosebs: error is wrong but looks like the problem is you're trying to recur to a different arity. that doesn't work in clojure either afaik
17:17ambrosebstpope: the recur is correct, plus I copied it from clojure.core
17:18tpopeyeah just figured that out
17:18ambrosebstpope: the rest argument is 1 extra argument to recur
17:18tpopeso apparently it's just timl that doesn't support that
17:18stuartsierraYes, Bronsa, in your example, (. (x. 0) f) returns 1
17:19stuartsierraI think early ClojureScript maybe reverted to an older definition of `.` which used parens to distinguish between fields and methods.
17:19amalloyi was under the impression that, before the .- change, Bronsa's first snippet would have returned 0 on clojure-jvm, but i just tried it and apparently that's not true
17:20Bronsaoh well, that (. (x. 0) f) returns 1 surprisese me
17:20Bronsasurprises*
17:20stuartsierraYes, THAT was added as a "convenience" before (.method object) existed!
17:20amalloyBronsa: (.f (x. 0)) just macroexpands to the former
17:20amalloyso if one surprises you they both should :P
17:20Rosnechey
17:21stuartsierraLesson learned: syntax is evil. Write all your programs in pure untyped lambda calculus.
17:21Bronsaamalloy: right, it just *feels* wrong
17:21amalloyclojurebot: syntax is evil: write all your programs in pure untyped lambda calculus.
17:21clojurebotRoger.
17:21tpopeambrosebs: fixed the literal error but didn't check that it works as expected
17:21stuartsierra:)
17:21ambrosebswill check
17:21tpopeactually unlikely that I did
17:22Rosnecis there something like future which ensures things are done in-order?
17:22justin_smithRosnec: maybe an agent?
17:22RosnecI want to do some output to a file, but I want it done in the background
17:23Rosnecjustin_smith: agents preserve order?
17:23amalloyRosnec: send N actions to a single agent; it queues them up and executes them one at a time
17:24Rosnecamalloy: I see
17:24justin_smithRosnec: yeah, I am double checking, but it should execute first come first evaluated
17:24Bronsawhile we're at it, (.someNonExistentMethod ^SomeClass (foo)) doesn't fail but simply produces a reflection warning, does anybody know why that would be desiderable behaviour?
17:24amalloyBronsa: that typehint almost certainly gets discarded during macroexpansion
17:25Bronsa(I just fixed a typo in raynes/fs two days ago .toUrl => .toURL that would have been avoided if this wasn't true)
17:25Bronsaamalloy: no it doesn't
17:25Bronsaamalloy: (fn [^String x] (.foo x)) compiles fine
17:25amalloyno, i guess you're right
17:26amalloyseeing a typehint on a list made me think of http://dev.clojure.org/jira/browse/CLJ-865 immediately, but that's not the problem here
17:27Bronsaamalloy: yeah sorry, was assuming (foo) to be a function call
17:27amalloyBronsa: well, you can imagine it being useful for non-final classes: (fn [^IFoo x] (.foo x) (.bar x)) ;; x needs to implement two interfaces
17:27amalloyobviously it's better to typehint x in both places; i'm just saying you can imagine wanting to call methods that aren't in the interface you've tagged as
17:28chareso in using clojure for web stuff how am i suppose to deal with csrf
17:29brunovchare: https://github.com/weavejester/ring-anti-forgery
17:29ambrosebstpope: should this call the disj method? (. #{1 2} (disj 1))
17:29Bronsaamalloy: that makes some sense, thanks
17:30tpopeambrosebs: yeah but timl doesn't provide a disj method, just a function
17:30Bronsaambrosebs: I don't know if it's more funny that timl exists or that you're seriously trying it out
17:30amalloyambrosebs: disj isn't a method (on the jvm, anyway) - maybe you mean disjoin?
17:30charebrunov so why doesn't this web development with clojure book mention that?
17:30ambrosebsBronsa: at 5.30am
17:31Bronsaambrosebs: that might explain it
17:31ambrosebstpope: how do I call it from timl?
17:31brunovchare: because the author was scarred by a bad romantic relationship with a girl named CSRF
17:32ambrosebsBronsa: it's pretty amazing
17:33tpopeambrosebs: err uh you pull again first
17:34charebrunov you saying the book sucks?
17:34brunovchare: no
17:34ambrosebsnice
17:35ambrosebstpope: before I port it, clojure.set isn't hardcoded somewhere right?
17:35ambrosebs:)
17:35tpopeambrosebs: nope, have at it
17:36tpopeI've implemented most of the core collection interfaces but that's about it
17:36Foxborontpope: love the readme, love timl. Awesome work!
17:36tpope:)
17:40ambrosebswell that was easy. seems to just work :O
17:41tpopewhat, all of clojure.set?
17:41ambrosebsyes
17:41tpopeholy shit
17:41ambrosebsdefined about 4 clojure.core functions
17:43ambrosebshttps://gist.github.com/frenchy64/9923722
17:44ambrosebsactually that's half of clojure.set
17:44ambrosebstry my luck..
17:45bbloomi expect to see benchmarks.
17:45bbloomif it's not faster than C, TimL will never take off
17:46ambrosebswell the rest compile, update the gist
17:46tpopeI didn't even know about max-key
17:47bbloomit's funny how much stuff is "hiding" in core
17:47brehautbbloom: it doesnt have to be faster than C, just elisp
17:47tpopealso your select-keys calls clojure.lang.RT, that won't work
17:47tpopealthough I think just a plain find will
17:47bbloomi've contributed to cljs, the compiler proper, clojure.core itself. studied the various tools analyzers/emitters, etc. implemetned an interpreter... and STILL i find new shit in core regularly
17:47ambrosebsah cool. Looking for unit tests..
17:47amalloybbloom: ##(doc when-first)
17:47lazybot⇒ "Macro ([bindings & body]); bindings => x xs Same as (when (seq xs) (let [x (first xs)] body))"
17:48amalloymore shit nobody knew was in core
17:48bbloomamalloy: yup, you told me about that one like last week. blew my mind
17:48amalloyyeah, i couldn't remember if you were in that discussion, but i figured the channel would like to hear about it anyway
17:48ambrosebswhen-first!
17:50TravisDIs there a more idiomatic way to map over a map than this? (defn map-map [m f] (into {} (for [[k,v] m] [k (f v)]))?
17:51amalloythe weird thing is you can't actually use when-first efficiently, because it makes you call seq again anyway, in order to get the rest/next
17:51bbloomamalloy: you know, now that you say that, i feel like i discovered when-first long ago and then wrote it off for that reason
17:51clojurebotCool story bro.
17:52bbloom:-( stupid clojurebot
17:52amalloyand in fact the only place in clojure.core where when-first is used is in the expansion of (for)
17:52Foxboronbest response
17:52rasmusto,(into {} (map (fn [[k v]] [k (inc v)]) {:a 1 :b 2}))
17:52clojurebot{:b 3, :a 2}
17:52rasmustoTravisD: ^ ?
17:52amalloyrasmusto: isn't that exactly what he showed, and asked if there's something better?
17:53rasmustonot quite, he has a list comp
17:53amalloyoh
17:53amalloyhis is better
17:53FoxboronI was wondering, currently trying to write an AI for a competition, and its the first time trying Clojure for this. Anybody know for any path-finding algorithms examples in Clojure? Found a few A* algos from a few years back.
17:53rasmustooh :)
17:53TravisDamalloy: Ah, what makes it better?
17:54brainkimFoxboron: Which competition?
17:54amalloyTravisD: my style preference is to usually use for, using map mostly if i'm using a named function; if i have to create a lambda for map, for usually reads better
17:55Foxboronbrainkim: Norwegian one for a LAN party in 2 weeks time. Bomberman.
17:55rasmustoamalloy: is there a performance difference?
17:55TravisDyeah, that makes sense. I wasn't sure if there was a non-stylistic reason to prefer one over the other
17:56brainkimFoxboron: Sounds cool, I've had similar luck re finding A* implementations, shouldn't be too hard to implement yourself though right?
17:56amalloyrasmusto: i doubt if; if there is one you wouldn't notice it. (for [x xs] (f x)) macroexpands into something very close to the definition of map
17:56rasmustoamalloy: ok, thanks.
17:57Foxboronbrainkim: well, new paradigm, new challenges, and i don't really know the algorithms to well to make some completely from scratch. Let alone Clojure itself
17:57Randy__Hey guys, I'm a student and I was wondering if there is a more efficient way to implement something like membero from core.logic? I'm trying to code a sudoku relation for a valid board
17:59hiredmanwin 15
18:00gtrakanyone played with session yet? wondering how long it might take to ramp up from nothing and embed something like a log viewer component.
18:01gtrakis it worth trying if I've only got a couple days, basically? :-)
18:01devntpope: holy shit dude. nicely done.
18:01gfrederickstechnomancy: system-slash-exit works pretty well I think
18:01gtraktpope: wanted to ask you, does vim's bencode support handle nested data?
18:01gfrederickstechnomancy: oh whoops that was in reply to a really old thing
18:02gtraktpope: I might want to transmit the arglists as data instead of strings, for example.
18:02gtrakI'm going to be reworking some of that shortly.
18:03tpopegtrak: it should handle all valid bencode data
18:03gfredericksimplementing a clojure is the new implementing a lisp
18:03tpopethe parser is recursive, if that's what you're asking
18:03Rosnecis there a complete list of options for clojure.java.io/IOFactory?
18:03gtraktpope: turns out the elisp impl was broken for some non-trivial cases :-). just asking if that scenario's too much trouble for vim, if I should try to keep the data flat more than I am.
18:04ambrosebstpope: incredible, implement meta for HashMap and HashSet and I'm pretty sure you're done https://gist.github.com/frenchy64/9923722
18:04devnambrosebs: now hurry up and get to work on typed.timl ;)
18:05ambrosebsdevn: :)
18:05rasmustothis is the best apr1 ever
18:06tpopeyeah meta for those was super annoying just cuz it has to survive passing through the reader
18:08devni wonder if something like core.async would be possible on top of timl
18:08devntpope: any thought on that?
18:08bbloomdevn: https://github.com/tpope/vim-dispatch
18:09devnbahaha
18:09bbloomdevn: asynchronous fun times :-/
18:09tpopeI haven't dug into core.async enough to know
18:09tpopepresumably since it works with single threaded javascript, we could do it too
18:09devnthat's what i was thinking
18:11devncore.async uses a fit bit of deftype/defprotocol on the cljs side
18:12tpopea fitbit?
18:13devns/fit/fair
18:13devnbut presumably that could be done with your version of defmethod?
18:14devneither way, tpope: well done man. I knew you were toying around with a lisp in VimL post-clojure/conj and gherkin, but i didn't expect to see a full macro system, persistent colls, lazy seqs, etc.
18:14devnso cool
18:14tpopeyeah I'm of the opinion that defprotocol may be a great optimization for the jvm but it buys you verrrry little over duck typing, if namespaced properly
18:15tpopeimagine every protocol was one method. if you've ready clojurescript's source that's not much of a stretch
18:16jeremyheilertpope: i've actually been thinking about that myself, protocols are jsut single methods.
18:16bbloomtpope: yeah, defprotocol is a bit of a perf hack, but it helps cljs too
18:16bbloomthere are use cases for having a single thing that represents a collection of generic methods, but defprotocol doesn't capitalize on them
18:16bbloomeg delegation
18:17jeremyheileryeah
18:17tpopeyeah I guess I could see that
18:17bbloomhttp://docs.factorcode.org/content/article-delegate.html
18:17jeremyheilerim not sure how much taht matters in clojure, though. protocls by definition can depend on other protocols, etc.
18:17tpopethe only other argument for grouping methods together like that is requiring you to implement all of them. but clojure doesn't require you to implement all of them
18:18bbloomanother thing is "tagging" of types
18:18bbloomie marker protocols
18:18bbloomfor use with satisfies?, even if you have no methods
18:19tpopeI found that tagging with a single method satisfied that a loooot more than I expected
18:19kovasbgtrak: hopefully not too hard
18:19kovasbgtrak: are you familiar with om?
18:19tpopelooking for a set? check for disj. looking for a map? check for dissoc
18:20gtrakkovasb: I've been trying to learn om, but haven't gotten off the ground yet, I think I finally understand cursors though.
18:20kovasbgtrak: definitely recommend working through the tutorial
18:21gtrakkovasb: session looks great though, I want to try to extend/embed it in general.
18:21kovasbgtrak: its also possible to skip defining your own component, and just use the builtins to do the layout
18:21kovasbgtrak: awesome. feel free to post on the mailing list if u have detailed questions
18:21gtraksweet, thanks!
18:22Rosnecis there a way to open a file for writing in append mode, but delete whatever was originally in the file?
18:22gtrakRosnec: delete the file first? then re-open it?
18:23Rosnecgtrak: that's what I figured
18:23Rosnecthat assumes nothing else creates and writes to the file in the meantime
18:23Rosnecalthough I'm not really worried about that
18:24gtrakdoes the OS even prevent that? I thought it was just windows.
18:24Rosnecisn't there a lock on the file when you're writing to it?
18:25technomancyisn't deleting the current contents basically the same as writing in not-append mode?
18:26amalloyyeah, exactly, what technomancy said
18:27ivanappend mode changes seek behavior as well
18:28ivanwrites automatically seek to the end first
18:29dokyhello is it possible to handle multiple login sessions on one computer ?
18:30ivandoky: is that a Clojure question?
18:31dokysure, im using compojure and ring.middleware
18:31amalloyi like the idea that it's impossible, that facebook and google have one server per user
18:32dokyivan: sure, im using compojure and ring.middleware, and when i login with one user and then with the other .. there is only one session
18:33dokyamalloy: i only want to know how it works and why in session i have only one user if on one pc i login with 2 accounts
18:33gtrakdoky: try two browsers?
18:33dokyno only one
18:33justin_smithdoky: the session should be bound per request to that user's session
18:34gtraka cookie would be shared across each tab in a single browser.
18:34justin_smithso each request should only see that user's session
18:34bodie_let's say I want something to be somewhat precisely timed (down to say 16ms precision) -- is there any way to achieve this? perhaps via threading jobs out and killing ones that aren't finished within the time window?
18:34gtrakbodie_: yup
18:34gtrakhttps://github.com/gtrak/quilltest/blob/master/src/quilltest/core.clj#L11
18:34gtrakbodie_: scheduleAtFixedRate will give you a reliable tick
18:34justin_smithbodie_: also consider traversing flat collections of unboxed data if latencies must be precise
18:35dokyyes i have there there set timeintervals
18:35bodie_awesome
18:35justin_smith(less garbage created, better cache performance, etc.)
18:35bodie_yeah
18:35gtrakbodie_: got it from this: http://stackoverflow.com/questions/5274619/investigation-of-optimal-sleep-time-calculation-in-game-loop
18:35bodie_:D
18:35bodie_you guys rule!
18:35cbpdoesnt youtube basically have to do that because of python anyway? One server per request :-P
18:36justin_smithcbp: you can use a front like nginx and a group of python processes in a pool
18:36bodie_( justin_smith, as opposed to normal collections which are linked lists, right?)
18:37justin_smithbodie_: not neccissarily - like a vector is not a linked list, but it is not cache friendly because each item is just a pointer to the jvm heap
18:37justin_smiththat's what I mean by flat / unboxed
18:37justin_smiththis is important for things like audio where small timing errors turn into erroneous signals, for things like video your timings will be more forgiving and you may not need to optimize the architecture that much
18:39gunsambrosebs: I see you are trying TimL; does the K lookup command work for you?
18:39bodie_yeah, i took this train of thought because i've been playing around with emacs live a tiny bit
18:39bodie_i.e. overtone and quil
18:40ambrosebsguns: I don't think there are docstrings
18:40justin_smithyeah, overtone solves it by farming it all out to another program entirely
18:40bodie_heh
18:40justin_smith(scsynth is standalone)
18:40gunsambrosebs: But do you get an error or just nothing?
18:40justin_smithjava doesn't even touch audio data anywhere in overtone
18:40gunsambrosebs: cp{motion} works for instance
18:40bodie_right, it's more like an interface wrapper
18:40justin_smithand of course in scsynth all the audio signals are flat unboxed arrays
18:40ambrosebsI get invalid express, blah cursor_keyword()
18:41bodie_hm
18:41gunsambrosebs: thanks
18:41justin_smithbodie_: even better, it is a network protocol client
18:41justin_smithscsynth is controlled over UDP using the OSC protocol
18:41ambrosebsthe rest of the fireplace bindings seem to work better than in fireplace
18:41bodie_:)
18:41gunsI updated vim-sexp for timl (a tweak) and it works great
18:41ambrosebswell, they're good
18:41justin_smithyou could do the same thing overtone does with bash+curl
18:42bodie_just realized I just followed you on twitter :P
18:42bodie_that's neat
18:42justin_smithprobably a different justin smith
18:42justin_smiththere are thousands of us, literally
18:43bodie_only a few bodies, haha. I'm probably getting the names mixed up anyhow
18:43bodie_anyway, thanks much for the pointers
18:43justin_smithnp
18:43seangroveIn fact, justin_smith isn't Just Smith, it's just one of the most anonymous names he could pick
18:43ambrosebsguns: I like how functions get highlighted in green as soon as you eval them
18:43bodie_one thing I think is way cool about this community is that most of you actually seem to know what you're doing
18:43gunsambrosebs: that actually breaks rainbow_parentheses
18:44gunsambrosebs: And vim-clojure-highlight will do the same at least if you reload the file
18:44ambrosebshmm rainbow_parentheses seems fine, what breaks?
18:45gunsDoesn't the eval re-define the paren syntax statements?
18:47ambrosebsguns: I don't think so
18:47ambrosebsguns: I use cp% to eval
18:48gunsambrosebs: Must be local to me
18:50dokyso i will try do describe my problem more detailed: i run rest api, now i gettig info about user - if is logged by asking /current-user when i am logged in one tab it works, but when i login with other user in other tab, the /current-user returns last logged user ... haw can i handle this ?
18:51justin_smithdoky: I think the cookies are not per tab but per site/browser
18:51dokyif nobody is logged it returns {}
18:51justin_smithtry using a second browser or second browser profile
18:52dokyjustin_smith: and is there any other way ?
18:52justin_smithnot that I know of, browsers are expected to share cookies across tabs
18:52dokyok, thank you :)
18:52justin_smithunless you wanna pull some janky magic like google does to allow multiple simultaneous gmail logins
18:53hiredmandoing a disservice to magicians everywhere
18:53bodie_but not janky magicians
18:53dokythat is what i was asking for first ...
18:53amalloyhiredman: i dunno, isn't he implicitly suggesting that most magic isn't janky?
18:54dokyjustin_smith: thanks
18:54justin_smithnp
18:54hiredmanamalloy: he is still associating magic with google's ridiculous multi account stuff
18:55amalloyi dunno, i like the multi-account stuff
18:55amalloyor maybe i like something else but believe it to be the multi-account stuff
18:55justin_smithI was only intending to suggest it was failure prone (in my experience) and definitely not simple to implement
18:56lemonodorgoogle’s approach is ugly but i’m not sure if there’s really a better way at the moment. i’m up to like /u/4 now.
18:57lemonodor(well, the other way is to have a browser per account)
18:57justin_smithprofiles are underutilized (and definitely not as easy as they should be)
19:00bjeanestpope: holy cripe man ... (re: timl)
19:11Frozenlock"Please take a moment to tell us what you think about this guide on Twitter." There's probably something wrong with email that I've yet to understand.
19:12Frozenlock(considering I don't have Facebook/Twitter/whatever account, I find this annoying.)
19:12michaniskin1social media: it's a thing
19:12coventryThe problem is that your friends don't get to see your communication with the marketers if you use email.
19:14cbpIt could be interpreted as "this 140 character guide"
19:20rasmustotpope: :TLscratch is amazing
19:25tpopeforgot about that. I had been entertaining it as a potential addition to fireplace
19:26rasmustotpope: I wasn't able to get my own foo.tim file to eval and connect to a repl, so I found this
19:27rasmustotpope: it has something to do with my namespace name and directory hierarchy as far as I can tell
19:27tpopeyou should be able to :source % in it regardless
19:28tpopebut you need the right directory hierarchy to (require) it
19:28rasmustoim getting an error, let me paste it, sec
19:30ambrosebstpope: +1 for fireplace
19:31technomancyaddition to fireplace?
19:31technomancyyou mean you're not just porting fireplace to it?
19:31technomancy=D
19:31tpopethat was my plan!
19:32tpopebut I don't know, I'm increasingly skeptical of timl
19:32bbloomtpope: you mean you haven't already started porting ALL of your existing plugins?
19:32tpopewhich is why I salvaged it into a big old april fools' joke
19:32technomancytpope: sounds vaguely remniscient of mirah
19:32tpopeI remember mirah
19:33technomancystarted out as "this is a cool runtime; I wish there were better languages I could use in it to work on my primary projects"
19:33technomancybut I don't think that actually panned out
19:33kencauseyI'm trying to use https://github.com/boechat107/cloxls but it has lots of reflection warnings. To what extent is this a problem beyond the noise level and what is the right way to fix it?
19:33rasmustotpope: https://gist.github.com/rasmusto/9925149 error when trying to :TLsource a simple file
19:33tpopethere's a lot of interop friction in the dumbest places I didn't even think about
19:34hiredmankencausey: depends, do you care if it is using reflection?
19:34kencauseyhiredman: uhm, I don't know enough to know whether or not I should care.
19:34tpopee.g. I made 0 true (because duh) but 0 is the canonical false value in viml
19:34hiredmankencausey: then you don't :)
19:35kencauseyI'm confused that boechat has explicitly enabled warn-on-reflection and yet has not addressed the warnings.
19:35tpoperasmusto: ew, not sure what that is but it doesn't look like a path issue
19:35technomancytpope: do you have true/false as symbols or something?
19:35hiredmankencausey: that seems odd
19:35hiredmankencausey: I just wouldn't use the library
19:35rasmustotpope: maybe cwd should be at the project root?
19:35kencauseyMaybe the project is delayed in an in between state
19:35tpopeviml doesn't. I made true/false singletons for timl
19:36kencauseyThere seems to be no other choice other than to use poi directly myself
19:36kencauseyI expected I was going to have to expand cloxls anyway as it is far from complete
19:36tpoperasmusto: nah I tried with /tmp/test.tim and it worked fine for me
19:36hiredmankencausey: it seems unlikely to add much value plus it does add the uncertainty
19:36hiredmanso skip it
19:36kencauseySo I guess what I'm really wondering, should I just disable warn-on-reflection?
19:37hiredmankencausey: it isn't even the top hit if you google clojure excel
19:37kencauseyI guess I have a little hesitancy when it comes to java interop.
19:37tpoperasmusto: I suspect some sort of weird load issue. chunked-seq? is looking for chunk-first and can't find it
19:38kencauseyOK, then I guess my mistake then is relying on the data in clojars
19:38hiredmankencausey: have you looked at clj-excel?
19:38kencauseyNot until now
19:39hiredmanI dunno, I never use the clojars website for anything, but others must, I guess
19:39kencauseyI guess I stopped with I found a result for xls
19:39kencauseys/with/when/
19:39kencauseyThanks
19:39kencauseyI was surprised to get a result and pretty much assumed that it was all I was going to find, with no good reason.
19:39rasmustotpope: hm, works if I vim the file from ~ as dir/ras/test.tim, but not if I'm in ~/dir and load ras/test.tim
19:40hiredmanthe idea that clojars search is going to be better than googles is kind of laughable :) on the other hand just because google finds a library that doesn't mean it is going to be in a maven repo, but it generally is
19:41rasmustotpope: ah, same thing happens if I `cd tmp` and `vim test.tim`
19:41xeqiclojars search is just lucene search on {name,description,etc} + some weighting based on downloads
19:41tpoperasmusto: check :echo has_key(g:timl#core, 'chunk_first') in both contexts
19:41holohi
19:41kencauseyhiredman: This is is the sort of thing that trips up noobs like myself
19:41rasmustotpope: 0 for the failing case, 1 otherwise
19:42tpopemy guess is whatever you're doing immediately after starting vim is triggering some botched load
19:42rasmustotpope: k, let me clean up some vimrc stuff
19:42holowhere can I find some nthrest equivalent for clojurescript?
19:42amalloy&(doc drop)
19:42lazybot⇒ "([n coll]); Returns a lazy sequence of all but the first n items in coll."
19:43tpopeI had tons of different circular dependency issues when developing timl
19:43tpopeI think they're ironed out, but I'm guessing you found another
19:45holoamalloy, okay, I guess I can use that one instead :)
19:45holo(inc amalloy)
19:45lazybot⇒ 93
19:45amalloyi've never used nthrest in my life. nthnext is occasionally useful, but most of the time drop is fine
19:47cbpI had no idea those 2 functions existe
19:48tpopeother than argument order is there a substantial difference between nthnext and drop?
19:50holotpope, drop is lazy, nthrest isn't. also it appears the latter is not available in cljs, whereas drop is
19:51tpopeoh duh thanks
19:51amalloytpope: drop returns a lazy seq, nthnext is eager and returns nil instead of (). i dunno about nthrest, but i assume it's a version of nthrest that for some crazy reason returns ()
19:51amalloyer, of nthnext
19:51tpopeya exactly, that adds up with your dismissal of nthrest
19:51amalloy&(doc nthrest)
19:51lazybot⇒ "([coll n]); Returns the nth rest of coll, coll when n is 0."
19:52tpopeoh I looked at the source, the lazy-seq just didn't register
19:54holoamalloy, did you mean: *i dunno about drop, but..
19:55amalloyholo: no, i know all about drop. i don't know about nthrest because i've never used it
19:56amalloythen i said what i assume it must do (i was right), and said i can't imagine why you'd want it
19:57amalloyin clojure.core, nthrest is used in partition and partition-all, and nowhere else
19:57holo,(drop 0 nil)
19:57clojurebot()
19:57holo,(nthrest nil 0)
19:57clojurebotnil
19:57bbloom,(drop 0 [])
19:57clojurebot()
19:57rasmustotpope: disabling my other bundles fixed this, I'll pinpoint which one breaks things at some point
19:57rootex,(rest [])
19:57clojurebot()
19:57rootex,(next [])
19:57clojurebotnil
19:58tpoperasmusto: cool let me know. timl could still be to blame
19:58tpopeit jacks into autoloading
19:59holoamalloy, this old code where I use nthrest is an argument for some->>, so I guess I wanted to short circuit on nil
20:04holono, that wasn't the reason. anyway, not a good idea for portable code
20:08holoamalloy, oh i get it:
20:08holo,(nthrest "bla" 0)
20:08clojurebot"bla"
20:09rasmustotpope: I think it's pathogen. I have .vim/bundle/... and .vim/timl/... (identical), and "execute pathogen#infect()" and "execute pathogen#infect('bundle/{}')" fail, while "execute pathogen#infect('timl/{}') succeeds
20:09holo,(drop 0 "bla")
20:09clojurebot(\b \l \a)
20:09holothis was the reason
20:09amalloyholo: that only matters for specifically 0. after that, you're seqing
20:09tpoperasmusto: oh timl/{} will add all *subdirectories* of timl, not what you want
20:10tpoperasmusto: try pathogen#incubate('timl') for a more accurate comparison
20:10rasmustotpope: sorry, that was a bad choice of directory name, should have been timl-bundle-test-directory
20:10gozalacemerick: ping
20:10rasmustotiml/timl was a thing.
20:10holoamalloy, true :) thanks
20:10gozalacemerick: I’m having trouble with async tests was wondering if you could help
20:11tpoperasmusto: so is there other stuff in there? sounds to me like you disabled all your other bundles and it works
20:11tpopebtw as author and #1 user of pathogen it seems like an unlikely culprit by itself
20:12rasmustotpope: both vim/bundle and vim/timl are identical. I reenabled everything and when I infected using timl/{} it all works.
20:12tpoperasmusto: oh maybe something is fucked in your cache
20:13tpopeexport TIML_EXPIRE_CACHE=1 while testing all this
20:14rasmustotpope: that did it. Maybe I should have kept the old cache around to pinpoint the bug...
20:15tpopeuh yeah haha
20:15tpopeoh well
20:15rasmustowhere's the cache end up?
20:15tpopealso maybe absolute/relative path was being cached separately somehow? it shouldn't be...
20:16tpope~/.cache/vim/timl
20:16clojurebotCool story bro.
20:16tpopeyeah I see relative paths in there, fuck me
20:16tpopeshut up clojurebot
20:18tpopeoh those are verrrrry old files, dating back to when I first implemented caching
20:18tpopekeep an eye out for that but nothing conclusive
20:18rasmustotpope: ok, will do
20:19rasmustooo, these are compiled .tim files
20:19tpopeyup
20:19gozalacemerick: anyway if you’ll have a chance to to look at it, this is an issue I’m having https://github.com/cemerick/clojurescript.test/issues/56
20:20rasmustonext up: VimL minifier
20:20rasmustotpope: anyways, thanks for the help. This is a damn cool project
20:49jeregrineso whats everyone using for html templating?
20:50milindahi all, is it possible to reify abstract class
20:52amalloyno
20:52mpblairno
20:52milindaamalloy: is proxy the solution for my problem?
20:53amalloyi couldn't possibly say. so far all i know of your problem is that you thought reifying an abstract class might be a solution
20:56milindalooks like proxy may be the only solution for the current mechanism I used. I need to rethink my solution in the next iteration.
20:58seangrovexeqi: The weighting based on downloads is pretty cool
21:00arrdemseangrove: what are you reading?
21:01seangrovearrdem: <xeqi> clojars search is just lucene search on {name,description,etc} + some weighting based on downloads
21:01arrdemat 18:34. ah.
21:23Frozenlockmichaniskin: Playing around with validateur. Any reason why the validation functions all take a message-fn, by not the `validate-with-predicate'?
21:26Frozenlock*but
21:31rasmusto(do (prn "foo") (execute "normal cpp")) ; don't know why this cracked me up so much
22:07bodie_anyone familiar enough with quil to help me understand what's wrong with this sample code? https://github.com/gtrak/quilltest/blob/master/src/quilltest/core.clj#L11
22:07bodie_I think quil.dynamic was removed.
22:10bodie_so, everything up to line 32 works. I guess that would be replaced with "setup" now.