#clojure logs

2015-04-14

00:05justin_smithTEttinger: so I am learning how to install lein and light table on Windows for clojurebridge, because we can assume a bunch of people are going to show up with Windows machines and only one of us even had access to a Windows machine
00:05TEttingerjustin_smith, did you start with a jdk?
00:05justin_smithTEttinger: well, first off I am installing the VM image from MS
00:05justin_smithTEttinger: and likely that will be the first step, yeah
00:06justin_smithI may bring the JDKs on a removable disk to make it easy
00:06TEttingerright
00:06justin_smithinstead of waiting for everyone to download
00:06TEttingeryou should build openjdk 8 yourself, just to make things absurdly difficult
00:06justin_smithLOL
00:07justin_smithyeah, I am going to build openjdk on Windows, as someone who has never been a day to day Windows user...
00:07TEttinger(it is something I intend to do at some point. or did, but now Zulu is going to be offering a 32-bit openjdk)
00:07justin_smithwhy 32 bit?
00:07TEttingerthey already offer 64
00:07TEttingerbut not 32
00:07TEttingerthe thing is, openjdk is ideal for bundling as a JRE with an app
00:08TEttingerit isn't burdened by the same licensing as Oracle JDK
00:08TEttingerand it can be modified
00:08justin_smithright, and you want to support 32 bit systems
00:08TEttingerright
00:10TEttingerok, so justin_smith: a few things, you want to set up PATH. start > right click computer -> properties, advanced system settings in the left bar -> environment variables
00:10TEttingeryou have two options now
00:10TEttingerone is to delete all environment variables and spend the next 3 hours dec-ing TEttinger
00:11justin_smithTEttinger: these are the current instructions for win 7 https://github.com/ClojureBridge/curriculum/blob/master/outline/setup_win7.md
00:12justin_smithand for win 8 https://github.com/ClojureBridge/curriculum/blob/master/outline/setup_win8.md
00:12TEttingerthe recommended option is to add JAVA_HOME to be C:\Program Files\Java\jdk1.8.0_25 (updated for whatver version you're on, I dunno)
00:13TEttinger(that's different if they have 64-bit windows and installed 32-bit java, btw)
00:13TEttingeryou may also need to set LEIN_JAVA_CMD but I doubt that
00:13justin_smithTEttinger: my plan is to download everything they list there, put it all on a USB key, and follow the instructions on those pages
00:13TEttingercoo
00:14justin_smithsomehow there is no mention of "path" in that guide
00:14justin_smithamazing
00:15TEttingerit could be set up automagically
00:15TEttingerit often isn't
00:15TEttingerthat could be because I was updating not fresh-installing
00:15TEttinger(also I think java 8 handles path correctly, but earlier ones don't)
00:16TEttingeryou should try it on the vm without touching path
00:16justin_smithyeah, my plan is to try the literal instructions, then come back and pester you if things don't work
00:17justin_smithamazing that you can just download a full windows system from MS now
00:17justin_smith(a vm image, that is)
00:17TEttingerfor cash money?
00:18justin_smithno, multiple OS versions, all free
00:18justin_smiththat's the part that surprises me
00:18TEttingerjustin_smith, I should probably mention that I am the only known windows user running a lazybot
00:18justin_smiththe images are distributed explicitly for web devs who don't run windows to make sure they have IE support working
00:18TEttinger(there aren't many of us)
00:18justin_smithTEttinger: I recall you mentioning that
00:19TEttingerit's windows server 2008 R2, which is surprisingly... my current favorite windows
00:19TEttingerit has better startup time than windows 7 and it's been all kinds of reliable
00:19TEttinger(I got it for free from my college)
00:21justin_smithTEttinger: regarding my plan to share the files via a USB key - am I better off just serving it over the local network? Should I be concerned about USB storage viruses or is that not a big thing with recent windows versions?
00:21justin_smithshould I put on my hazard suit before coming near anything MS?
00:21justin_smithhaha
00:22justin_smith"If you receive errors while running Light Table about Java or JDK, these may be resolved by finishing the installation of Leiningen first. If not, see a TA to look at your environment variables."
00:22TEttingerusb storage... viruses?
00:22justin_smithTEttinger: like viruses that attach to usb storage sticks
00:22justin_smithI've heard this is a thing
00:22justin_smithmaybe it's super rare, I honestly have no idea
00:23TEttingerjustin_smith. stuxnet attacked by local wifi, which most people don't even know their computers have
00:23justin_smithfair enough
00:23TEttingerit may have also spread by bluetooth
00:23justin_smithTEttinger: stuxnet was fancy
00:23TEttingerthere are several variants on stuxnet too
00:23TEttingersome circulating now
00:24justin_smithTEttinger: I was super sad to discover that my smart phone acts as a wifi hotspot via an ad-hoc network, and my android tablet explicitly cannot do ad-hoc wifi
00:24justin_smith:P
00:24justin_smithI would have had super simple mobile data for my tablet if not for that
00:24TEttinger(presumably people have reverse engineered stuxnet all to hell, in order to vampirize its fanciness)
00:24justin_smithof course
00:25TEttingerbut yeah, the primary things you need to be afraid of for viruses are the ones that no one knows about yet COUGH HEARTBLEED COUGH
00:26justin_smiththis is also going to be my first time trying light table
00:26adueveryone knows about heartbleed
00:26TEttingerthat and every hard drive made in the last few years probably has an NSA rootkit somewhere on it
00:27TEttingerwhich is just waiting for some malicious third party to figure out how to access it...
00:28TEttingerso yeah my stance in regards to computer security is, you're probably screwed unless you're in a faraday cage
00:31TEttingerhttp://www.belfasttelegraph.co.uk/technology/google-engineers-on-nsa-and-gchq-surveillance-f-these-guys-29734200.html
00:32TEttingerif google can be surprised out of the blue by this stuff, I mean, nobody's immune
00:34TEttingerjustin_smith, the part you'll have the most trouble with on windows and that tutorial is git
00:35TEttingergit bash is different in subtle ways from the windows command line
00:35TEttingerI do recommend Github for Windows
00:35justin_smithhow? is it mostly about quoting and invoking other commands?
00:36TEttingerI'm not sure really how git bash is different, since cd and git work the sam
00:36TEttingere
00:36TEttingerbut it could be confusing if the user doesn't know which they're in
00:37TEttingergit for windows is pretty much a no-brainer, though you probably need to have a github account (openid works) first
00:37TEttinger*github for windows
00:37TEttingergit for windows is not so good
00:37justin_smithI'll keep that in mind if we get problems with the cli
00:37TEttingers/if/when/
00:37justin_smithhaha
00:38TEttingerthe git command tools are pretty weird especially if they haven't used git
00:39TEttingergit push, git pull, git remote add, but there's no git fork
00:39justin_smithgit fork isn't a command!
00:39TEttingerexactly
00:39justin_smithgit clone?
00:39TEttingerbut people talk about forking a repo all the time
00:39justin_smithahh, right
00:39justin_smithnow I see the line above it :)
00:39justin_smithgit spoon
00:40TEttingerhaha
00:40justin_smithgit some salt and pepper
00:40justin_smithgit eatin'
00:41TEttingerhttp://git-man-page-generator.lokaltog.net/#2cd5bc5d6475efcccd69cc5314dab78c
01:02fadingi like tortoisegit (and tortoiseHG and tortoisesvn)
01:05lexi-lambdaIs there any built-in function that would do something like this? (fn [value op] (and value (op value)))
01:05lexi-lambdaBasically just apply op to value if value is truthy, otherwise return the falsy value.
01:05justin_smithlexi-lambda: some-> (but only for nil)
01:05TEttinger(doc some->)
01:05justin_smithand some-> chains like -> does too (each time stopping if it hits a nil)
01:05clojurebot"([expr & forms]); When expr is not nil, threads it into the first form (via ->), and when that result is not nil, through the next etc"
01:05TEttinger(inc justin_smith)
01:05lazybot⇒ 239
01:06TEttinger,(some-> nil inc)
01:06clojurebotnil
01:06lexi-lambdaPerfect, that's exactly what I'm looking for. :)
01:06justin_smithawesome
01:06TEttinger,(some-> 1 inc print print)
01:06clojurebot2
01:06TEttingernice
01:07justin_smiththere's probably a monad that does that, I don't know its name though
01:18lexi-lambdajustin_smith: Well, in Haskell, that'd be the Maybe monad. :p
01:18justin_smithlexi-lambda: thanks, I am haskell impaired
01:18justin_smithlexi-lambda: that would have been my first guess, but it would have only been a guess
01:18lexi-lambdathat's alright, me too, I just happen to know that, haha
01:27justin_smithTEttinger: turns out this is a 90 day preview
01:27justin_smithbetter than nothing I guess
01:28TEttingerhehe
01:28TEttingerVS Community makes you register within 90 days
01:28TEttingerbut it keeps working after that 90 if you register
01:30justin_smithTEttinger: grabbed the wrong file by mistake (the 5gig OS image) and now the file browser isn't responding ;(
01:30TEttingerD:
01:30TEttingerin windows?
01:31justin_smithyeah - it was just being really slow about popping up the copy menu
01:31justin_smithI was able to cancel it
01:31justin_smithit was about to copy the disk image I was running, into the disk image I was running
01:31justin_smithescher would be proud
01:33justin_smithoh man this jvm is about to install a toolbar on my crap isn't it
01:33raspasov_justin_smith: wow yea I heard about that but have never seen it
01:33raspasov_that's crazy that Oracle would do that
01:34justin_smithraspasov_: luckily I was able to choose the right options to not make it happen - I'll need to be careful to ensure the clojurebridge participants don't get toolbar'd
01:35justin_smithraspasov_: in case you weren't following the conversation above, I am installing the clojurebridge setup on a windows vm so I'll be sure I can help the people that show up with windows machines
01:35raspasov_yea that's a sad state of affairs, I mean come on guys, do you really need that extra few million from this crap, some manager really got his incentives setup very wrong
01:35justin_smithit's an adventure!
01:36raspasov_yea I wasn't following :) good luck with it! always great to help new people
01:36justin_smithit'll be like what I try to do on irc, but harder because face to face
01:37justin_smithTEttinger: does leiningen for windows really need a jdk? shouldn't a jre suffice?
01:38justin_smithhaha, the installer has a click button for "custom location" but no menu to choose said location
01:38TEttingerit needs a jdk. it can't compile .class files otherwise
01:38justin_smithahh
01:38justin_smiththanks!
01:38TEttingeralso, the jdk doesn't install a toolbar (if you rush through and fail to uncheck a checkbox in the JRE installer)
01:39TEttinger(yeah, oracle is just... in a death spiral)
01:40justin_smithmy state is actually taking oracle to court for how they handled the state health insurance web site
01:40TEttingeroh wow
01:40TEttingerwhich state?
01:40justin_smithOR
01:40TEttingerI liek oregon
01:40TEttingervarry greeeeeen
01:40justin_smithhttp://techcrunch.com/2014/08/22/oregon-sues-oracle/
01:40justin_smithTEttinger: and we are having clojure/west here soon
01:42TEttingerI'll be at home, petting a cat
01:42justin_smith"malware detected"
01:42TEttingerhttps://dl.dropboxusercontent.com/u/11914692/Satchmo_Curious.jpg
01:43justin_smithoh haha
01:43TEttingersatchmo wants to know if you're doing bad things to that computer
01:44justin_smithTEttinger: it was a drive by that ended up on my Linux downloads folder, and I did a "mv *.exe ~/win-shared/" because I didn't expect it to exist
01:44justin_smithwindows dealt the thing a quick death blow though
01:47justin_smithyay, I got a repl
01:47justin_smithgo me
01:49justin_smithTEttinger: when I have a command prompt open, how do I make a new one?
01:52justin_smithTEttinger: btw all the paths got set up properly with no fiddling needed
01:53TEttingerjustin_smith: right click the command prompt in the bottom bar, click command prompt
01:54TEttingerI uh use conemu, which is better in every way
01:54justin_smithcool, thanks
01:54TEttingerit's a small dl tooo
01:54justin_smithalso good to know
01:54TEttingerhttp://conemu.github.io/
01:56justin_smithTEttinger: aha - this git they have us use installs something called "git bash" which is a shell that creates a more nixy env
01:56justin_smithso that things like find and sort are the nix version
01:57justin_smithahh, path problems with the git install...
01:57justin_smithoh, duh, I selected things that mean I need to use "git bash", of course :)
02:04justin_smithTEttinger: I accidentally clicked on "STORE" and I have no idea what is happening or how to exit and it wants me to buy crap
02:04justin_smithhelp
02:05TEttingerare you on windows 8?
02:05justin_smithyeah
02:05TEttingerthis is your first mistake
02:05justin_smithhaha
02:05justin_smithI am seeing this
02:05justin_smithit wants me to buy a game that has a cat dressed up like a bobby
02:06justin_smithbut I can't figure out how to leave this screen
02:06TEttingeresc
02:06TEttingerif that fails, ctrl-q
02:06TEttingerif THAT fails, alt-f4
02:06justin_smithesc, C-q, C-w, the goggles, each respectively do nothing
02:06TEttingerif THAT fails, ctrl-alt-del and kill the thing
02:06justin_smithalt-f4 did it
02:06justin_smiththat is such an evil feature!
02:06justin_smithwtf
02:07TEttingerit probably has a slidey touchy interface
02:07justin_smithof course
02:07TEttingerTinderOS
02:08TEttingera swipe with your middle finger insults the program
02:09justin_smithI made it through the installs, and didn't have to touch any weirdness, beyond the store I accidentally clicked on
02:09TEttingerhha
02:09TEttingerI'm glad you're trooping through this
02:09justin_smithTEttinger: oh, and even with the jdk I still had to click no on a "java blablah is ready to integrate with your browser"
02:09TEttingerah, because it has a JRE installer too
02:10TEttingerit bundles the JRE installer... I wonder hang on
02:10justin_smithTEttinger: me too, it will be helpful for the clojurebridge students. And it will mean I can help windows users in the future if need be.
02:10justin_smithor verify/ fix windows only bugs in clojure code in general
02:11TEttingerI'm wondering if http://www.azulsystems.com/products/zulu/downloads#Windows is going to be better for distribution
02:11TEttingerbut it might also be cleaner to install
02:11TEttingerit's meant for automated server stuff
02:11justin_smithmaybe after this 90 day trial runs out
02:11justin_smiththis is working for now though
02:12justin_smithoh wait, you mean these jdk / jre versions
02:12justin_smithnow I get it
02:12justin_smithI thought this was an alternate windows vm
02:13TEttingerit's a prebuilt openjdk 8
02:18justin_smithTEttinger: so if some student discovers that her paths are totally screwed and we need to fix it, do you have a good guide for that?
02:18TEttingeruhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
02:20TEttingerif they delete their path, the best solution is a system restore to the latest restore point from windows update
02:20TEttingerbut I've never needed that
02:20TEttinger(system restore shouldn't delete any of their files, it just changes installed programs)
02:22TEttingerpath absolutely needs to be separated with semicolon, since colon means drive letter stuff
02:22TEttingerC:\ etc.
02:23justin_smithcool
02:23TEttingerbut yeah there has to be an easier way!
02:24justin_smithTEttinger2: https://chocolatey.org/packages?q=clojure
02:25justin_smithTEttinger: maybe this would be a good submission as an improvement to the clojurebridge install guide?
02:25justin_smithhttps://chocolatey.org/packages?q=leiningen
02:25justin_smithlight table is on there too
02:25TEttingerhttps://chocolatey.org/packages/Lein is broken
02:25justin_smithin what way?
02:26justin_smithTEttinger: n/m just found the comment
02:27TEttingerthat would otherwise be a good solution. chocolatey basically runs through all the installers for you
02:28justin_smithOK, I'm turning in for the night, thanks for the help
02:28justin_smith(inc TEttinger)
02:28lazybot⇒ 50
02:28TEttingernight justin_smith
02:28TEttingerno prob
02:31sqdhi! intellij 14.1.1 complains that cursive 0.1.53 is incompatible with my current installation. any idea where i could start looking to solve this?
02:32sqdah found it in the cursive bug tracker, i needed to change my plugin repository
03:38mbacwhat's the minimum amount of RAM i want on a VPS to serve clojure?
03:39mbaci guess i could just run lein repl and look at the rss or something huh
03:39mbac500M to fire up [lein repl] and run (range 10)
03:40opqdonutyeah I was about to suggest at least 1G
03:40opqdonutdepends on everything of course
03:59sm0keis there a lein option for continuous compilation?
04:02hyPiRionThat's what you have a repl for, generally
04:02hyPiRionOtherwise CIDER and friends have compilation hooks I tend to use
04:03sm0keNo i know that, but i want the classes to be compiled to target/classes on change
04:05sm0kei guess i will mix watchtower and `compile`
04:41zottrying out emacs midje-mode for the first time, no love. any clue on this one? Symbol's value as variable is void: nrepl-buffer-ns — regrettably, i'm not even a fledgling w/ emacs lisp. i tried resetting the namespace in the cider repl, that had no impact. and i don't know how to track down where it's coming from…
04:42Empperihmm, can I write macros into cljc files and call those in clojurescript?
04:43Empperior do I still have to write those into clj -files?
04:44Empperianswering to myself: yes I can \o/
04:44Empperifuck yes
04:56borkdudeEmpperi nice :)
05:08anti-freezeHi everyone, I was wondering if anyone has any experience with the midje test framework?
05:24dstocktonanti-freeze: ask your question, no one will want to answer you unless they have an idea whats coming next
05:25anti-freezedstockton: Sorry. I don't think its a midje issue, I think I'm just an idiot. I get a NullPtrException when attempting to run tests during the namespace (:require [],,)
05:25dstocktonyou have :require [] ? you don't need to specify :require if there's nothing to require
05:26dstocktonor was that just shorthand
05:26anti-freezedstockton: That was just an example
05:26anti-freezedstockton: Do you think it could be related to the macros defined in another file?
05:26dstocktonok, maybe someone can help if you post a stacktrace and the code that fails
05:26anti-freezedstockton: Alright, give me a sec
05:28anti-freezedstockton: Stacktrace: https://www.refheap.com/99596 Code: https://www.refheap.com/99597
05:29dstocktonlooks like the problem is in art-thingy.routes.auth
05:29dstocktonart-thingy.routes.auth/handle-login (auth.clj:76)
05:30dstocktoncheck that line
05:31anti-freezeHow did you find that?
05:32anti-freezeAh, I see. Told you I was a moron :P
05:32anti-freezeSeems like the same issues I was having with the buddy encryption algorithms. If you pass nil, it shits itself
05:33dstocktonyou usually want to look as far down the stack trace as possible
05:33dstocktonto find where the error originates
05:33anti-freezedstockton: Alright. Thank you. On the road to learning clojure I suppose
05:34dstocktonstacktraces are something people frequently complain about, they do often contain a lot of noise
05:34anti-freezedstockton: I guess it comes with the seamless Java interop
05:35dstocktonyeah, you get used to filtering the noise, sometimes it can also come in handy
05:36dstocktonmight want to read https://aphyr.com/posts/319-clojure-from-the-ground-up-debugging
05:36anti-freezedstockton: I guess so. Still better than C++ template errors
05:36dstocktonit helped me
05:36anti-freezeOh, this is great, thanks
05:36anti-freezethe-kenny: What do you advise then. I haven't found it too great either
05:36the-kennyI just use clojure.test
05:37anti-freezethe-kenny: I don't know why I went with Midje. Clojure seems to have a pretty good testing suite from the get go
05:40anti-freezedstockton: Alright, I found the issue. Apparently destructuring like this [{:keys [credentials pass]}] rather than [{pass :pass credentials :credentials}] breaks everything
05:40dysfunthe-kenny: i quite like midje actually
05:40dysfuni find my test suite is considerably more concise with midje
05:41dysfuntoo much of clojure.test doesn't lend itself to code elimination
05:41dysfunmore than that, it feels like it gets out of my way, and it's a miracle for me to not hate writing tests
05:42borkdudewhen using clojurescript, I get feedback about unrecognized vars and such while programming. Is there such a thing for clojure, preferably in emacs? It would be cool if we could get the feedback inside the editor.
05:42dstocktonthe-kenny: do you auto run your tests after changes? and how?
05:42the-kennyborkdude: I just do C-c ,
05:42borkdudethe-kenny that will run a test namespace?
05:43dstocktonborkdude: maybe you can find a plugin for eastwood
05:43the-kennyYup
05:43dstocktonperhaps https://github.com/clojure-emacs/squiggly-clojure
05:44borkdudedstockton looks interesting, thanks
05:44dstocktoni use vim-eastwood, it works quite well for this kind of thing
05:51sm0kecan clojure aot compilation be made incremental?
05:51sm0kei see it just compiles everything on `lein compile`
06:01dysfunwhy on earth do you need AOT to be incremental? you'd only really want to use that for uberjar
06:01micryptHaving an issue with something that I'd figured would be straightforward … "clojure.lang.ExceptionInfo: :refer must be followed by a sequence of symbols in :require / :require-macros; offending spec: [pbxme.utils :refer :all]"
06:02dysfuni'm guessing clojurescript doesn't support :all
06:03micryptdysfun: Ah, fair enough. Cheers.
06:03dysfunyou can :as u as a near-enough
06:04sm0kedysfun: It could be useful in systems which send code to other machines
06:04dysfunheh
06:05dysfuni'll let you keep the pieces when it breaks :)
06:05sm0ke:P
06:06sm0keno its just for easy dev, on production system it would be running only once compiled code
06:06sm0kei mean at least there should have been a timestamp based approach
06:07sm0kerecompiling everything everytime is horribly slow
06:07dysfunyou might have better look experimenting with it on boot
06:07dysfunit has a generic watcher mechanism you can tap into
06:07dysfunluck*
06:07sm0kei have a small function which `compile` only changed files
06:08sm0kebut i fail to understand compile
06:08sm0keis it must to have a (:gen-class) for aot compile? i guess not! or how is lein compiling it
06:09dysfunyou'll need someone with more experience with aot stuff than me, sorry.
06:12sm0kethis is kind of funny https://github.com/technomancy/leiningen/blob/master/src/leiningen/compile.clj#L7
06:14sm0kethere is something surely fishy here , did anyone ever managed to reach this `if` condition?
06:14sm0kehttps://github.com/technomancy/leiningen/blob/master/src/leiningen/compile.clj#L144
06:14sm0keI have NEVER seen this!
06:20dysfunhang on, i'm digging
06:20sm0keme too
06:20sm0kecheck this `stale-namespaces` it looks weird
06:21dysfunokay, so it's been like this since pre-2.0 https://github.com/technomancy/leiningen/commit/10723b20434670942d94cf8612d607f7b582941e
06:22dysfunthe commit history was a bit tricky to follow, but it's clearly been there a while
06:22sm0kethat makes sense the if condition is not required
06:22sm0kebut it think that `stale-namespaces` surely is wrong
06:22sm0keit the reason why files are getting compiled everytime
06:23sm0keit didnt know you can use comprehensions that weridly before
06:23sm0keI*
06:24sm0keyou found it?
06:24dysfunno, i'm just disgusted at that function for being difficult to follow
06:25dysfuntry doing it in the repl and overriding that function
06:26sm0keI wish it had been possible to :eval-in-lein from a project repl somehow
06:26dysfunit's possible in boot :)
06:26sm0kewhat is it with you and boot
06:26dysfunit's quite neat
06:26sm0keugh
06:26dysfunneeds more plugins though. i've started writing two
06:27dysfun(marginalia and codox)
06:27dysfuni had to release a project with lein this morning because i haven't written either of them yet)
06:51sm0kethat function is correct
06:55slipsetachievement unlocked: comp and partial used in same form
06:55slipset,(->> (range 6 14) (map (comp (partial str "2015-04-") (partial format "%02d")))))
06:55clojurebot("2015-04-06" "2015-04-07" "2015-04-08" "2015-04-09" "2015-04-10" ...)
06:57slipsetmy brain would be happier with an rcomp which takes its argument in reverse order.
06:57hyPiRionIt's called -> and ->>
06:58slipsethyperion: not quite, I cannot pass -> as first argument to map, can I?
06:58hyPiRion,(->> (range 6 14) (map #(->> % (format "%02d") (str "2015-04-"))))
06:58clojurebot("2015-04-06" "2015-04-07" "2015-04-08" "2015-04-09" "2015-04-10" ...)
06:59slipsethyperion: you're cheating, your're creating an anon function.
06:59slipsetwhich I did as well, but with comp instead of #(..)
07:00hyPiRionI'm not sure I understand the rules
07:10slipsethyPiRion: there are no rules, I just try to end up writing map/filter/keep etc using partial instead of #(..)
07:13hyPiRionah
07:15hyPiRionWell, I'd just use (map #(format "2015-04-%02d" %) (range 6 14)), but that's because I find partial so long to write
07:16slipset:)
07:16slipsetSo I guess my achievement is disqualified since I didn't know how to use format :(
07:21hyPiRionWell, it may still be valuable if "2015-04-" was a variable that may include %-signs
09:09borkdudehow do I express something like this with clojure/jdbc ? "position = position + 1"
09:09borkdudeis that even possible?
09:10Empperi["position = position + 1"]
09:10Empperi:P
09:12borkdudeah :-)
09:23acron^gah
09:24acron^is there a way to use swap! to completely re-assign an atom?
09:24justin_smithacron^: reset!
09:24acron^<3
09:24acron^cheers mate
09:25dysfunalso constantly, but reset! is better. constantly is useful with higher order stuff more generally
09:39sveriHi...does anyone know about a library creating html structure based on data (json, edn, whatever). Doesn't have to be clojure, java would be fine too
09:41dstocktonsveri: hiccup?
09:43sveridstockton: yea, that might be one option. but I would like to generate html directly, like this I would have to transform twice: edn -> hiccup -> html
09:43justin_smithsveri: hiccup is edn
09:43dstockton^^
09:52sveri:P
09:52sveriof course
09:53sverijustin_smith: dstockton you are right. But my data definition would be an abstraction over hiccup, like: [:fooname [:varchar 40] :null false] which I would have to transform to valid hiccup then
09:54dstocktonthought you were more flexible in the format of the data (json, edn, whatever)
09:54dstocktonsounds like you want to transform your specific data representation into html?
09:55mpenetsveri: but no lib is going to auto-magically generate html for arbitrary edn data
09:55mpenetshould be easy to add a little layer to do the transformation
09:55justin_smithmpenet: I could make one that does, but nobody would like the output
09:55justin_smith(constantly "<html><body><h1>HELLO WORLD</h1></body></html>") ; done
10:01sveridstockton: right
10:02sverijustin_smith: ah, thats nice, but not very flexible I am afraid :D
10:02justin_smithhaha
10:03mavbozosveri, at least it maintains backward compatibilty by omitting DOCTYPE
10:03sveriit's also easy to understand
10:03sveribut it complects content with structure
10:04justin_smithsveri: but it handles all input uniformly
10:04sverihm, pros and cons :-)
10:05Glenjaminits very simple
10:06sveristill. generating hiccup from my edn is becoming more and more viable in my head, I don't have to handle all the html stuff then which sounds very nice
10:47sritchiedo cljc files go into the normal clojure source directory?
11:24dnolensritchie: yep
11:24dnolensritchie: it really doesn't matter, just needs to be on the classpath
11:24sritchiecool, thanks
11:30dysfunsveri: amusingly, i'm working on this already. i have a CMS-backed app for a microsite that stores all the content in a single edn file and i want to present it to the user
11:31dysfun(that is i'm building the library that generates forms for the given edn)
11:36timvisheri'm trying to write a shared library that will provide the canonical `(start|stop)-server!` behaviors to all of our services rather than having to write them all over and over again. i usually use a var reference (?) for my ring-handler to pass it to `run-jetty` like `(run-jetty #'app ...)` so that I can live edit the handler and have the changes pass through to jetty. i _think_ i'm running into an issue with this pattern wh
11:36timvishercan't be passed in to the library and still be resolved. is there a workaround for that?
11:38timvisherbah. doesn't look like it was the issue anyway... maybe
11:38timvisheri don't really understand what `#'var` does
11:41kolovI need help with cemerick/friend Trying to use it with the new google OpenIdConnect (works fine with the old). Nothing wrong with friend itself, but openid4java fails. I can't make it work with the demo at https://code.google.com/p/openid4java/
11:42kolovSomeone using friend (or OptnId4java) with google OpenIdConnect or linkedin?
11:44cemerickkolov: my understanding is that OpenIdConnect is an "identity layer" on top of oauth2
11:44cemerickso, openid4java (and thus friend's existing OpenId support) are irrelevant
11:45cemerickkolov: see https://github.com/cemerick/friend/issues/117
11:45kolovLet me see exactly what google said exactly. I constructed a url and passed it the same way I did wit 2.0
11:47kolovI am reading this page https://developers.google.com/identity/protocols/OpenID2Migration#openid-connect , Migrating to OpenID Connect (OAuth 2.0 for login)
11:49kolovI understand it is still Oauth 2.0 wit a new URL: Open Id Connect = OAuth 2.0 for Login (OpenID Connect).
11:51kolovit also fails with linked in ( I mean, both my program using friend and the openid4java demo, in the same way).
11:52kolovcemerick, if I pass the new URL (still oauth2) openid4java dies with a NPE
11:52cemerickkolov: OpenId != oauth2
11:53cemerick(That they called this new thing "OpenIdConnect" when it's actually an oauth 2 mechanism is obviously not helpful.)
11:53kolovoops :-)
11:53cemerickkolov: see the friend issue I linked above; that's the furthest anyone has gotten with friend + OpenIdConnect AFAIK
11:54kolovthank, I'll have a look
12:14timvishershould i be able to pass a ring handler var into another namespace and have ring-jetty-adapter/run-jetty work?
12:18mavbozotimvisher, you can :require :refer the var in another namespace
12:18timvishermavbozo: would that be different than passing it in?
12:19mavbozotimvisher, sorry, i dont quite get what you mean by 'pass' into another namespace
12:20timvishersorry, so the context is that i'm trying to create generic `(start|stop)-server!` functions to share among the services at my shop
12:20timvisherto do that, i need to pass in the handler so that `run-jetty` can wrap the right thing
12:21timvisheri think i might have figured it out though. and this would be the second time today that i was editing a local copy and not the thing on my vm...
12:21justin_smithtimvisher: do you mean like (web-ns/start-server! #'this-handler) -- that should totally work, and the server should see any live updates to the handler definition
12:21justin_smithhaha
12:22timvisherjustin_smith: exactly that
12:22justin_smithtimvisher: do you have that buffer naming feature where the file gets prefixed if it has the same name?
12:22timvisherjustin_smith: i do. i'm also fairly blind to it :)
12:22timvisheri do remember life before uniquify buffers though
12:22timvisherand it was no fun :)
12:23justin_smithand here I thought I might have a helpful suggestion
12:24timvisherjustin_smith: lol. you're always very helpful. :)
12:24timvisherthere's some ui principle that headsup help quickly becomes invisible to most users, right?
12:25justin_smithoh yeah, anything that is constantly present tends to become invisible
12:25mavbozolike y/n from rm
12:26mavbozooh wait, that's when people use rm -i alias
12:28timvishermavbozo: heh. i have `alias rm=rm -rf` :)
12:28timvisher_do._ _it._ _live._
12:35mavbozotimvisher, lol, for a few seconds there, i thought you are one of those who realize the impermanence of things
12:36timvishermavbozo: that almost sounds desirable :)
12:36timvisheris there a way to make in-ns safe from creating a new ns by accident?
12:36timvisheri thought `(in-ns (find-ns ...))` but in-ns takes a symbol not a namespace
12:37noncom(when (find-ns ..) (in-ns ..)) ?
12:37justin_smith,(#(when (find-ns %) (in-ns %)) 'foo)
12:37clojurebotnil
12:38timvisherthat's sort of sucky...
12:38timvisher:)
12:38timvisherany of the util libs out there have a wrapper for that?
12:39justin_smithtimvisher: I just gave you function that does it, I don't think you'll find anything simpler
12:39timvisherjustin_smith: yeah. just wondering if there was a switch-ns function out there. it's obviously incredibly easy to write
12:39timvisherthanks! :)
12:42gfrederickstcrawley: ping
12:43arrdem$seen andyf
12:43lazybotandyf was last seen quittingPing timeout: 246 seconds 2 days and 13 hours ago.
12:50gfredericksis there a library of utilities to nicen up clojure.test a bit? if not should one exist?
12:51justin_smith"I know you're code is perfect, but I'm sorry to say that I couldn't get the following tests to pass, maybe we misunderstood?"
12:52gfrederickseh?
12:52justin_smithbad joke
12:52gfredericksooh
12:52gfredericksI see it
12:53schmirgfredericks: humane-test-output
12:53timvishergfredericks: humane-test-output indeed is one, but what exactly are you nicening up?
12:55gfredericksah not the output
12:55gfredericksmore the API
12:55gfrederickse.g.
12:55gfredericksdocstrings for deftest; alternate docstring ordering for is
12:55gfredericksmaybe fixtures could be improved?
12:56gfredericksI can't remember if it's still difficult to run a single test with fixtures
12:56gfredericksthere could also be something for people who hate naming their tests with symbols
12:57gfredericksnot sure how that would go exactly though
13:11mpenetlike clojure.test/testing? I think symbols make sense in def* forms
13:11gfredericksyeah they're idiomatic but if you really like naming tests in english it can get redundant
13:11mpenetI find clojure.test pretty good already, it's true that fixture are a bit lacking tho
13:11justin_smithmpenet: yeah, I pretty much use clojure.test/testing as a replacement for doc-strings on deftest
13:12gfredericksso you might do (deftest some-name "and a docstring" ...) or (a-different-testing-macro "with only english here, no symbol" ...)
13:12gfredericksdepending on taste
13:13justin_smithwithout the symbol, reloads are a problem
13:13gfredericksdepending on what it does
13:13gfredericksone idea is hashing the string to generate a var name
13:14tcrawleygfredericks: what up, my man?
13:14gfrederickstcrawley: I was diagnosing a dependency conflict involving immutant (1.0.2, so maybe irrelevantly old) and core.cache; I was looking at the project.clj for immutant-cache and was totally confused
13:15gfredericksthere seems to be this dumb backwards compatibility issue between core.memoize 0.5.5 vs 0.5.6 and I keep running into it
13:15gfredericksI couldn't tell if newer versions of immutant had upgraded or not
13:16tcrawleywell, immutant 1.x is confusing. the stuff in namespaces/cache/project.clj will only be used if you load the cache dep *outside* of Immutant
13:16tcrawleymodules/cache/project.clj is what is used inside
13:16tcrawleyI think
13:16tcrawleyit's all fuzzy now
13:17tcrawleybut 1.1.2 (the last 1.x release) still depends on core.cache 0.5.5
13:17gfredericksI have a workaround for now; not sure if it's worth sorting out
13:17gfredericksoh okay; does 2.x upgrade?
13:18tcrawleywe've struggled with core.cache/core.memoize issues quite a bit with immutant 1.x
13:18tcrawleyimmutant 2 doesn't have a dep on either
13:18tcrawleyyou bring your own
13:18gfredericksoh cool; it gets more confusing because I don't think this application actually uses immutant O_O
13:19tcrawleysee http://immutant.org/documentation/current/apidoc/guide-caching.html#h5326
13:19tcrawleyheh
13:19gfredericksso it can probably be deleted
13:19gfredericksanyhow thanks for summarizing the deps story
13:19tcrawleyglad to help
13:19tcrawleyin some small way
13:19gfredericks:)
14:21yogthosFrozenlock: not that I know
14:21Frozenlockyogthos: Ok, thanks
14:21FrozenlockThat cross channel communication...
14:22mavbozoyogthos, thanks for wrapping yuicompressor in asset-minifier
14:22mavbozo(inc yogthos)
14:22lazybot⇒ 2
14:23yogthosw00t! :)
14:23mavbozoyogthos is underappreciated here
14:23justin_smith'tis true
14:23justin_smith(inc yogthos)
14:24lazybot⇒ 3
14:24yogthosd'aww thanks guys :)
14:25Frozenlockmavbozo: only if you associate appreciation with lazybot karma points ;-)
14:34nuwanda_has anyone had any trouble adding env variables in project.clj using environ? It's so simple, and I've done it before without an issue, but it's not working in a new project for some reason.
14:35sveri nuwanda_ actually I never got it working
14:35sveriespecially when passing them in from the "outside"
14:35mavbozonuwanda_, never been a problem
14:35arrdemusing it quite successfully in Grimoire... what's the issue?
14:36mavbozo(inc weavejester) ;; for environ
14:36lazybot⇒ 13
14:36arrdem(inc weavejester)
14:36lazybot⇒ 14
14:36expezIf I want to use the previously generated test.check value to generate another value. How do I nest this stuff? E.g. I might first generate a string, and then generate an int which is bounded by the length of said string.
14:36expezI tried just nesting gen/for-all but the inner thing would never run
14:37arrdemexpez: I think you want to write a composite generator returning a pair [int str] or some such
14:37reiddraperexpez: https://github.com/clojure/test.check/blob/master/doc/intro.md#bind
14:37nuwanda_well, environ is creating the env map just fine, I've checked in the repl, but it's not merging with the :env map I have in :profiles, :dev
14:37arrdem(doseq [lib libs author (authors lib)] (inc author))
14:37reiddraperexpez: or https://github.com/clojure/test.check/blob/master/doc/intro.md#fmap
14:38reiddraperexpez: your example could be done with fmap
14:38expezreiddraper: can I create the keyword-vector in a prop/for-all binding instead of as a toplevel def?
14:39reiddraperexpez: if i understand you correctly, no
14:39reiddraperexpez: but, maybe an example would help
14:42mgaarenuwanda_: do you have the lein-env plugin in your project file?
14:43expezreiddraper: https://gist.github.com/expez/93525e807028df691c35 this test passes
14:43reiddraperexpez: nested properties are not supported at the moment
14:44expezreiddraper: which surprised me, but I guess it somehow makes sense because it's wrong and the inner block never runs
14:44reiddraperi'd like to support them sooner than later, but, for now, you'll need to make a generator which returns your `s` and `sep` as a two-tuple
14:44expezaight
14:49timvisheris there a good way to retrieve the running version of a clojure application (i.e. the project.clj version string) that doesn't care whether you it was `lein run` or `java -jar` that started it?
14:51expezreiddraper: will you accept a pull request making such nonsense fail in the meanwhile? I thought all my tests were golden, but I was just lucky the implementation was correct :/
14:51the-kennytimvisher: system/getproperties seems to contain {"pepa.version" "0.1.0-SNAPSHOT"} for me. pepa is the project name.
14:52reiddraperexpez: pull request no, jira patch, yes
14:52reiddraperexpez: https://github.com/clojure/test.check/blob/master/CONTRIBUTING.md
14:52timvisherthe-kenny: is that also in your uberjar?
14:52the-kennynot sure, sorry
14:52timvishercool. i can test it
16:26lvhhey!
16:26lvhhow do I compile reagent-template down to a static website?
16:27lvhteh template seems very hell-bent on producing something heroku-y; I wanted to deploy to github pages
16:32dnolenlvh: might want to ask that question again in #clojurescript
16:33lvhdnolen: thanks!
17:06amalloytbaldridge: you mentioned in http://stackoverflow.com/a/29612902/625403 that fexprs are more powerful than macros. i can't figure out from the wikipedia page what makes fexprs more powerful - what fexpr can i write that has no equivalent macro definition?
17:14tbaldrid_amalloy: fexprs are run at run-time, not compiletime. So they execute every single time they are called. Macros run once, when they are compiled
17:15amalloythe advantage, i guess, being that you can use runtime data values to decide what code to produce/evaluate?
17:29gfredericksso to get something equivalent with macros you'd have to call eval I imagine
17:29gfredericksor something evallike
17:29puredangerthey're very fexpressive
17:29gfrederickshey now
17:30amalloygfredericks: well if you're calling eval you don't need a macro at all, just write a function
17:30gfredericksamalloy: need the macro to snag the &form
17:31amalloywow what i just said was super wrong
17:31tbaldrid_right, so if you had fexprs you could write when like this: https://gist.github.com/halgari/78d44aabc6adc3b6ff56
17:32tbaldrid_so it's less about code transforms, and more about deciding when to eval arguments (or not).
17:33gfredericksthat's a weird explanation since conditional evaluation is one of the ways people explain macro-power
17:33gfredericksor at least an example use case
17:34amalloyright, and when is an example of something that is just as easy to do with macros
17:34gfredericksas long as the set of forms you might want to eval is static you can do it with a macro
17:34gfredericks(static at compile-time I mean)
17:34amalloyactually i remember a SO question that might have a different answer if clojure had fexprs
17:35amalloyhttp://stackoverflow.com/q/9345056/625403
17:35amalloyyou could, i guess, use fexprs to inject the keyvals of the map's runtime value into a let-binding
17:35gfrederickslike for runtime-conditional shadowing?
17:40amalloyyeah
17:41amalloywhich as i remark in that answer sounds awful
17:41amalloybut would be more natural with fexprs i guess
17:47gfredericks~fexprs |are| a mechanism for doing awful things more naturally
17:47clojurebotc'est bon!
18:00tbaldrid_So I guess I see macros as a bit of a hack. In a classic meta-circular evaluator you have eval and apply, right. It seems that it's trivial in that case to mark some functions as being fexprs and hence skip the arg eval before the apply.
18:02tbaldrid_So in that way I've always seen fexprs as the cleaner approach. Macros requiring an extra compilation step. But I suppose you could just as easily put macros into such a interpreter by expanding macros on every invocation of the macro form.
18:36TimMcpuredanger: fexprethive
18:37TimMc*fexthprethive
18:38TimMcI have my next repo name.
19:45arrdemandyf_: ping
19:45andyf_arrdem: pung
19:45arrdemandyf_: can I pursuade you to CC0 the examples I pulled from Thalia for Grimoire? https://twitter.com/arrdem/status/587856428661997568
19:46andyf_Link to what CC0 means?
19:46arrdemhttps://creativecommons.org/publicdomain/zero/1.0/
19:47arrdemthis would just apply to the examples of yours already in Grim, not to the Thalia project.
19:49andyf_Understood. Any reason why you choose public domain, rather than something more MIT- or 2-clause-BSD-like?
19:49arrdemandyf_: to harmonize with the fact that zkim CC0'd the examples that I seeded Grimoire with originally and which constitute about 80% of my data.
19:50arrdemno real thought beyond that given to the question tho.
19:51andyf_Sounds reasonable. Best to send you an email acknowledging this?
19:51arrdemThat'd be awesome. Thanks Andy.
19:55gfredericksandyf_: clojure/west? clojure/west? clojure/west?
19:55andyf_gfredericks: I was strongly considering it, but decided I'd rather put the money towards training and/or tutoring in web development for me
19:56andyf_Something I've never really learned to do, but would like to get into as a serious hobby.
19:58gfredericksandyf_: I will refrain from mentioning my disappointment and instead wish you luck with your new endeavors
19:59gfredericksthe key concept in web development is that no matter what you do you're doing REST wrong
19:59andyf_I'll definitely get to another Clojure conference some time. Definitely if nearer to where I live, or definitely if my talk submissions are accepted :)
20:01gfredericksthe whole point of clojure/west is to be nearer to where andy fingerhut lives
20:02andyf_LOL. I guess I should add "and definitely when I'm no longer paying for college tuition for kids"
20:03amalloyandyf_: kick em to the curb. clojure is more important; they'll understand
20:04gfrederickscollege tuition: it's like paying for diapers, but if you wanted a whole lot of diapers
20:04andyf_Diapers for the mind
20:04andyf_Wow, that sounds even worse after typing it.
20:05tcrayford____gfredericks: bjeanes says hi btw
20:05gfrederickshi G. Beans
20:07gfredericks(inc andyf)
20:07lazybot⇒ 27
20:07tcrayford____(inc andyf)
20:07lazybot⇒ 28
20:07tcrayford____(inc (inc andyf))
20:07tcrayford____:/
20:07amalloytcrayford____: no math allowed!
20:08lasergoati'm curious about whether anyone's built something systematic for identifying points of pressure in core.async pipelines
20:09lasergoati have a complicated pipeline and it would be useful to know where things are starving because downstream consumers aren't doing pulling stuff through fast enough
20:10lasergoati'm sort of hacking something together but i figured i'd ask in case someone has already thought this through more carefully than me
20:29bobby_puredanger: Are there plans for a core.async build in the near future? Current (0.1.346.0-17112a-alpha) is getting a bit stale (i.e. impl doesn’t match doc w/r/t new features like poll! et. al., ClojureScript ioc_helpers.cljs doesn’t recognize (catch :default e), etc.)
20:29bobby_puredanger: also, hello!
20:30bobby_puredanger: and you and dnolen are doing a fabulous job with the language(s) and communities. It has ever been thus, but it’s been an experience seeing it from my new perspective.
20:32timvishercan i attach a docstring to a defonce?
20:34justin_smith,(defonce ^{:doc "a foo"} foo 1)
20:34clojurebot#'sandbox/foo
20:34justin_smith,(doc foo)
20:34clojurebot"; a foo"
20:35justin_smithit's clumsier than other things that create vars, to be sure
20:37timvisherjustin_smith: awesome
20:37timvisherthere's a apparently a long standing bug about this...
20:37timvisherhttp://dev.clojure.org/jira/browse/CLJ-1148
20:37justin_smitha bug or missing feature?
20:38timvisherwhy was a `;` attached to the output there?
20:38timvisher,(doc foo)
20:38clojurebot"; a foo"
20:38timvisher?
20:38justin_smithtimvisher: clojurebot is silly
20:38timvisherah :)
20:38justin_smithtimvisher: you'll see more normal output in a repl
20:38gfredericks,(-> foo var meta :doc)
20:39clojurebot"a foo"
20:39justin_smithfun fact, if we changed that hash-map to {:doc "a foo" :test true} it would also be a terrible unit test that would not run properly
20:40timvisherjustin_smith: why wouldn't it run properly?
20:40justin_smithtimvisher: 1 isn't a function
20:40justin_smithbut the metadata would tell clojure.test to run it
20:41justin_smithand then you get the predictable error
20:41timvisherhah
20:41timvisherah
20:41justin_smithsometimes the corners of clojure where things are made of string and chewing gum are amusing
20:50timvisheri have nrepl-server embedded in my service and the service is running on a vagrant vm
20:51timvisherthe nrepl port is forwarded (4006 in this instance) by vagrant
20:51timvisherthis is using cider-nrepl 0.8.2 and whatever version of tools.nrepl it depends on
20:52timvisherwhen i try to connect to it from the HOST, it connects and then immediately disconnects with a 'connection broken by remote peer' error
20:52justin_smithdoes vagrant treat your machine as a local or remote host?
20:53justin_smithbecause nrepl should not be visible to remote hosts (it would be a huge security hole)
20:53timvisheri believe it treats it as remote
20:53justin_smithyou may need to create a tunnel via ssh
20:53justin_smithssh -L
20:53timvisheryeah, that's what i was afraid of
20:53timvisheri _thought_ that vagrant forwards _were_ that
20:54timvisherand indeed they work when i don't have the nrepl server embedded (instead relying on either ring nrepl or cider-nrepl as a plugin)
20:54justin_smithor let nrepl broadcast to 0.0.0.0 if stuff forwarded from vagrant to you isn't forwarded from you to the wide world
20:54timvisheryeah, i'm going to try that just to rule it out
20:54timvisherwe've yet to decide on running nrepl in prod so we're still just talking dev
20:55justin_smithit's too bad unix domain sockets aren't portable to all the platforms clojure explicitly supports
20:55timvisherand of course things work swimmingly when i ssh -L the port
20:55justin_smithbecause they would be a much nicer model to work with security wise
20:55justin_smithof course :)
20:57timvisherjustin_smith: i don't know anything about unix domain sockets :)
20:57timvisherhah. 0.0.0.0 does the trick...
20:57justin_smithtimvisher: unlike network sockets you can use file permissions on them
20:57timvisherthat's a shame...
20:57timvisherjustin_smith: oh nice.
20:58justin_smithtimvisher: yeah, 0.0.0.0 would work too, but make sure nobody else can access it, it's a huge security hole
20:58timvisheri feel like so much of web security is a half-assed reproduction of the unix file permissions model
20:58justin_smithtimvisher: and unix was a half-assed reproduction of multics' security model
20:58timvisherjustin_smith: eh, we actualy have an html repl hooked up that anyone can use, no big deal ;)
20:58justin_smithhaha
20:59justin_smith I hope you have some kind of sandboxing at least? or is just just a machine you don't care about at all?
20:59timvisherjustin_smith: no we don't actually have that
20:59justin_smithOK
20:59timvisheri'm basically the first one in my org who is doing interactive development at all
20:59timvisherwhich is _crazy_ to me, but it's the situation
20:59justin_smithbecause I was gonna say they could also use that machine to attack the rest of your infrastructure
21:00timvisherso i'm taking care of setting up all the infrastructure, including the capacity to run nrepl in prod (which i _really_ badly want
21:00timvisher)
21:00elvis4526how do you use not(x) with garden ?
21:00timvisherbut in prod it _definitely_ should be binding to localhost so you can use ssh to access it but nothing else
21:01timvisherif our ssh security fails, then pretty much all bets are off, so i'm comofortable with that
21:01timvisherall the other secure transports make me nervous...
21:01justin_smithfor good reason
21:01timvishermainly because i don't understand their models as well as i understand ssh (which is actually not very well)
21:02timvisherso this is pretty easy, i can environ this bind address so in dev we're on 0.0.0.0 and all others would be default localhost
21:02timvisher:swoon:
21:02timvisheri love inventing all this stuff myself everytime i need it :)
21:02timvisherdidn't abedra give a talk about that or something :)
21:02timvisherwhere's he gone by the way? is he still at etsy?
21:03timvisherjustin_smith: heh. ;)
21:41puredangerbobby_: hey man, an updated async build is overdue for sure. it turns out the async-103 stuff in it is bad and needs to come out. all just sidelined by other things atm.
21:42bobby_puredanger: thanks for the update! I’m sure things are busy there with Clojure/west looming. If I were to chip in, would a patch for async-103 help, or are there other blockers to getting a build out?
21:44puredangerbobby_: it's easier to just revert the commit I think. if you could take care of all my prep for Clojure/West that would help a lot ;)
21:44bobby_puredanger: hehe! good luck with the conference, it looks like a good lineup!
21:45puredangerno guarantees but I'll see if we can take care of it sometime this week
21:46bobby_puredanger: that would be great, but don’t lose sleep over it! my code will survive until after C/w.
22:17timvisherare transient dependencies not placed on the classpath?
22:17timvisheri can `lein deps :tree` and see the dependency, but when i `lein run` the thing, it complains that it can't find it on the classpath...
22:18TEttingerI seem to recall a `lein classpath` command
22:19timvisherTEttinger: hmm...
22:20puredangerconsider whether the jar actually contains the thing you think it does
22:20puredangerby using "jar tf" on the jar in your maven repo
22:21puredangerthere is a failure mode of maven download that can write an html error page as a jar in your local repo
22:21puredangerwhich is really fun to track down
22:23TEttingerwow puredanger
22:23TEttinger(inc puredanger)
22:23lazybot⇒ 42
22:23puredangerSWEET
22:23puredangerno one can inc me anymore
22:23TEttinger(inc the trials and tribulations of puredanger)
22:23lazybot⇒ 1
22:24TEttinger(identity TEttinger)
22:24lazybotTEttinger has karma 50.
22:24TEttinger(identity amalloy)
22:24lazybotamalloy has karma 257.
22:24TEttingerwowza
22:27puredangerbut see amalloy cheats by being super-smart. that's not fair.
22:27puredangerwhere can I cash these karma points in anyways?
22:28timvisherpuredanger: at Fake Internet Bank of course...
22:28puredangerprobably equivalent to some bitcoins
22:28amalloysays the guy who convinced cognitect to release same-day videos, shamelessly cheating his way into dozens of karma points
22:29puredangerI think lynn had more to do with that :)
22:30puredangerbut I'm happy to take the credit in her absence
23:55brainproxy_,(let [x {}] (= x (vary-meta x assoc :a 'bc)))
23:55clojurebottrue
23:55brainproxy_,(let [x (fn [])] (= x (vary-meta x assoc :a 'bc)))
23:55clojurebotfalse
23:55brainproxy_^ is that just how things are?
23:58noidihuh
23:58noidilooks like a bug
23:59justin_smithbrainproxy_: {} has structural equality, fn has none
23:59justin_smithbrainproxy_: when you vary-meta, you create a new object
23:59justin_smithfn only has object identity