#clojure logs

2014-06-02

00:13amalloypcn: might as well link to a paste of the code that confuses you, or otherwise describe what's wrong with it somehow. nobody can help with "different code than i expected but it might be okay"
00:14pcnhttps://github.com/magomimmo/modern-cljs/issues/153
00:49pcnHmm... same seems to be happening with the rest of the tutorial. I guess this'll continue in the github issue.
03:17hellofunksheesh i lost internet connection after asking my question; just got it back
03:17anna_ok
03:33hellofunkcemerick or ddellacosta do you see anything about the openID workflow that would cause Ring to report a null ptr exception? compiles fine: https://www.refheap.com/86184
03:45xsynhey hey
03:51xsynDoes anybody have a picture that illustrates immutability
03:51xsyn?
03:58katratxoxsyn: perhaps the way to picture it, is showing structural sharing?
03:59xsynright now, I'm using a git tree
03:59katratxoxsyn: e.g. http://hypirion.com/musings/understanding-persistent-vector-pt-1
04:00xsynhmm, this might work
04:00xsynta
05:07hellofunkddellacosta looks like even Google is recommend OAuth over OpenID for mere authentication https://developers.google.com/accounts/docs/OpenID
05:09powrtocHey all, I'm looking at core.async and I'm wondering if there's a way to test if a channel will block before you put something on it?
05:22powrtocI'm thinking that if I wanted to do this, I'd have to keep a count in an atom and test if it was less than the buffer size
05:24Glenjaminpowrtoc: what would you do if it was going to block?
05:25powrtocGlenjamin: return some kind of service unavailable message to the user... or try again when we're less busy
05:26Glenjamini guess the idea is generally that a queue should separate those sorts of issues from the user
05:26powrtocGlenjamin: Except you can't without having an unbounded queue... basically I want to expose back-pressure to the users, rather than just drop their messages
05:45michaelr525hey
05:46hellofunkhey
05:46noncomheeeeey
05:46noncom,(println "huuwawa!")
05:46michaelr525Is there something for emacs which implements the C-TAB C-S-TAB behavior like it really is in Windows or Intellij and all the rest?
05:46clojurebothuuwawa!\n
05:50ddellaco_michaelr525: you mean, moving between buffers? It's not a clean analogy since usually one doesn't use emacs with a bunch of different windows
05:54michaelr525ddellacosta: yes, buffers
05:55ddellacostamichaelr525: well, there are a lot of different ways to move between buffers--you can do C-x b Ret to toggle between two active buffers
05:56ddellacostamichaelr525: C-x C-b will open up the buffer list in a new buffer, etc.
05:56ddellacostamichaelr525: and I glossed over it but C-x b and tabbing/typing will get you to a specific buffer. Lots of ways to do it.
05:57ddellacostamichaelr525: and if you don't like that, you can just change it. :-) http://www.emacswiki.org/emacs/SwitchingBuffers
05:58hellofunkddellacosta how do I get your oath2 tool to use somthign other than /login as the automatic redirect to the authentication page of the oauth provider?
05:58michaelr525ddellacosta: I'm aware of that and that's actually how I work with it today. I've tried already a few of the purposed solutions there but none of them so far works like I would like it to.
05:58michaelr525For example C-TAB switches from A -> B, the next C-TAB switches back B->A
06:00ddellacostamichaelr525: well, I can't help you further...it works well for me as is. I would suggest writing your own elisp extensions if you really need to go deep. I'm sure the folks in #emacs can give you better suggestions though.
06:00michaelr525ddellacosta: thanks
06:01ddellacostahellofunk: that's a friend setting if I recall correctly, try setting :login-uri (https://github.com/cemerick/friend/blob/master/src/cemerick/friend.clj#L233)
06:01ddellacostahellofunk: let me confirm that I'm not leading you astray though, one sec...
06:02hellofunkwell, I'd like to have multiple different logins on one page. The Friend Demo examples allow you to design login/ but as soon as I added the oauth2 workflow, it "took over" login/
06:02hellofunkddellacosta ^
06:05ddellacostahellofunk: friend is just going to try and log you in if you are not authenticated and you try to access something that requires authentication, and it should redirect you to the login uri, whatever that is set to be
06:06ddellacostahellofunk: I'm not sure why it would matter whether it is oauth2 or not; it all uses the same workflow mechanism
06:06hellofunkddellacosta: oh, i used the :openid-uri in the openid workflow, so that prevented login/ from being hijacked. can I use a specific "overriding" uri in oauth2/workflow as well?
06:07ddellacostahellofunk: still not understanding what you mean by "hijacked"
06:09hellofunkddellacosta i have a compojure route where i have my own content for login/. when i use openID in Friend, I specified the :openid-uri as something else, therefore login/ is not affected by Friend behavior. As soon as I also added the oauth2 workflow, my login/ route no longer uses my own content, and instead just goes right to the google auth login.
06:12ddellacostahellofunk: ...so you want it to go to a site-specific login page where the user will choose what authentication method to use, basically?
06:13hellofunkddellacosta, yes that is how my login/ page is setup currently. I supplemented the openID workflow with your oauth2 workflow, but it seems to take over the login/ page
06:14ddellacostahellofunk: hold on, let me look into this further
06:23hellofunkddellacosta i can do some renaming of my routes if I must use login/ for oauth2. it's not a huge issue. the other problem is I can't seem to get the user's email address after Google sends back to my site. the normal (friend/current-authentication) map with :email and :firstname etc doesn't seem to be there
06:24ddellacostahellofunk: as far as the latter, that's by design; it's not part of the OAuth2 spec. However, another user is working on an extension for Google.
06:25hellofunkddellacosta so how would i be able to know if the Google-authenticated user is also one I should authenticate?
06:25ddellacostahellofunk: why are you using an authorization protocol for authentication?
06:25ddellacostahellofunk: don't answer that. *sigh&*
06:25hellofunkbecause Google has deprecated OpenID
06:26hellofunkas of 2 weeks ago you can longer signup for OpenID with Google ddellacosta
06:26hellofunk*no longer
06:26hellofunkddellacosta Google now recommends OAuth2 for authentication: https://developers.google.com/accounts/docs/OpenID
06:27ddellacostahellofunk: I know all of this
06:27whodidthismaybe oauth has userid
06:27ddellacostahellofunk: and I am in fact resigned to it. But you should 1) read what I wrote in the README under #5 and 2) at last glance at the oauth2 rfc sometime so you know what you are getting into
06:29hellofunkddellacosta, I saw that, but it's not clear what these "tokens" are -- are they Google-created UUIDs or are they more general info that is useful?
06:29ddellacostahellofunk: and none of this means you can't query the api *after* you've authenticated
06:29ddellacostahellofunk: http://tools.ietf.org/html/rfc6749
06:30ddellacostahellofunk: the entire point of oauth2 is that you get an access token which you can *then* use to query the 3rd-party provider for resources
06:31hellofunkddellacosta ah, that's the piece I was missing from all this.
06:33ddellacostahellofunk: re: original issue, I think that's a greater problem--the oauth2 workflow is badly behaved and doesn't play well with others (other workflows, that is). I'm seeing if I can make a simple patch quickly now. I've never used it myself other than with a single workflow, I'm afraid.
06:34hellofunkddellacosta I am just moving some routes around so that login/ can be dedicated to your oath2 while a different uri is for openID, etc and a different page other than login/ with my various login options.
06:35ddellacostahellofunk: not sure that will help, but tell me if it does, in which case it works very differently than I'd thought
06:35hellofunki'll know in about 2 minutes after the heroku push
06:46hellofunkddellacosta perhaps part of the issue is that I am not relying on the friend/authorize in my routes, instead using the (if-let [auth (friend/current-authentication req)] style. maybe this doesn't play well with the oauth2
06:52hellofunkddellacosta: in any case looks like my problem is resolved by letting /login be dedicated to the oath2 workflow alone, and using other named routes for other things.
06:52ddellacostahellofunk: that's one solution
06:53ddellacostahellofunk: this needs more configurable options though. I'll have to think through it as it may take a little time, but if that works for you that's great.
06:53ddellacostahellofunk: thanks for bringing this to my attention!
06:53hellofunkddellacosta so I 've got OpenID and OAuth2 working in harmony now, I just need to learn how to get meaningful info form the OAuth token so I know who is actually hitting my site after the OAuth login.
06:54hellofunkdespite this minor /login issue I must thank you for the library, it and Friend are really saving me right now
06:55ddellacostahellofunk: until I've got some extensions integrated to allow for stuff like getting the rest of the google-provided data initially, you'll just have to do it the "old fashioned way:" https://developers.google.com/accounts/docs/OAuth2?hl=ja
06:57hellofunkddellacosta do you have an example that shows how to query this directly? I'm trying to look for it in your repo
06:57ddellacostahellofunk: no, I don't have any examples of this
06:57ddellacostabut the access token should be in the session
06:58hellofunkok i see the token in the request.
06:58ddellacostayou'll probably want to use a lib like https://www.google.co.jp/search?q=clj-http&oq=clj-http&aqs=chrome..69i57j0l5.1095j0j7&sourceid=chrome&es_sm=91&ie=UTF-8
06:58ddellacostad'oh
06:58ddellacostaI meant this
06:58ddellacostahttps://github.com/dakrone/clj-http
06:58ddellacostaformat your URL as described in the google doc I linked you to above, hitting the appropriate API, for example: https://developers.google.com/+/api/latest/people/get
07:00hellofunkok, looks like more reading and experimenting. i'll admit i'm a bit slow in figuring all this out.
07:00hellofunki appreciate the help though ddellacosta
07:00ddellacostahellofunk: no worries, but let me take the opportunity to nag you to read up further on the oauth2 protocol okay? ;-)
07:01ddellacostahellofunk: in the meantime I'll figure out how I can make oauth2 work more smoothly with other workflows
07:02ddellacostahellofunk: and if you have trouble with getting the data you need from the google api ping me
07:02hellofunkddellacosta agreed. and i also agree that it seems overkill to do all this authorization and querying when all i want is to piggyback on these guys for mere authentication
07:02ddellacostahellofunk: this is the basic problem with oauth2...it's really not meant to do what all the big guys are now suggesting you use it for
07:03ddellacostaoauth is kind of an old school web 2.0 relic, imo...back in the heady days when we were all going to be doing these mash-ups of different api's data to produce new fancy web apps
07:03hellofunki was tasked with making a Google login for our site; had I started this 3 weeks ago, I could have been among the last to signup for OpenID with Google and that would have bought me 1 year. ddellacosta.
07:03ddellacostahellofunk: d'oh
07:03ddellacostahellofunk: well, again, ping me if you have trouble
07:04ddellacostaemail is my username at gmail
07:04hellofunkappreciate it ddellacosta and thanks again for the library
07:04ddellacostahellofunk: np
07:09ddellacostahellofunk: more details but worth reading, even if you end up using oauth2 the way you're using it: http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html
07:10hellofunkddellacosta please send that article to Google's execs right away
07:10hellofunknevermind i'll do it
07:10ddellacostahellofunk: are you kidding?
07:10hellofunkddellacosta yes
07:11ddellacostahellofunk: ah, irony is hard to read sometimes. ;-)
07:11hellofunkddellacosta correct me if i'm wrong but this OAuth is now the *only* way for new sites to setup authentication with Google since the deprecation of their OpenID
07:12ddellacostahellofunk: well, again, if you are delegating authentication to google, then the answer is yes. It's fine if you just need to ensure that the user's resources you get *from google* are properly authenticated *by google*
07:13ddellacostahellofunk: but it is too bad since it's not really a valid replacement for openid
07:14hellofunkddellacosta a lot seems to come down to the simplicity of the API, getting an auth token back instead of a simple yes/no and an email address
07:14ddellacostahellofunk: sure
07:14ddellacostahellofunk: but again, authn != authz, apples to oranges, etc. etc.
07:16ddellacostahellofunk: to be fair, I guess this initiative seeks to solve some of these problems: http://openid.net/connect/
07:34prcHi. Say that I I have a function such as this: (defn an-example [& args] (str args)) Can someone tell me what the & means? I know what it's used for, but I am concerned with what it means/does... does it turn args into a list? a vector maybe? What's the logic behind it?
07:34agarmanit's variadic
07:34agarmanor varargs in java
07:34agarman[& args] means args will be an Object[]
07:35agarmanbut at the callsite you use individual values
07:36agarmanspecifically clojure wraps the individual values in clojure.lang.ArraySeq
07:37prcagarman: you have my thanks.
08:16clgvagarman: prc: actually it uses javas var args only for arities greater than 20
08:21phillordhow do protocols choice the method to invoke where there is multiple inheritance?
08:21phillordFor example, consider http://pastebin.com/FcRk7mmp
08:22phillordwhy does the CharSequence implementation get called?
08:31noncomphillord: just a guess: coz implementations get added to a list and the first element is taken on dispatch, which turns out to be CharSequence?
08:32noncomtry more implementations, see if this is correct..
08:34phillordmight well be
08:34phillordtesting
08:35phillordnope, not that...
08:36phillordTried, CharSequence, then Comparable, then Serializable -- comparable is called
08:36phillordnor is it left to right from interface definition -- that should be Serializable
08:37phillordnor is it alphabetically
08:37phillordconfusing
08:37ayiaHi, guys. What is the idiomatic way to populate hash-map on condition? I.e. given a default value of a hash-map, when condition is true, then assoc some key/value pairs to it... if not - leave default value...
08:38noncomphillord: umm.. maybe hash?
08:38mdrogalisayia: (let [x (if condition (assoc ...) old-map)] ..)
08:38ayiaI tried something like: (->> {:a 1} #(if condition (assoc % :b 2) %)), but it seems to not work...
08:38phillordnoncom: or something random in the JVM implementation
08:39mdrogalisayia: Probably a positioning problem with respect to ->>
08:39phillordnoncom: i guess, technically, hash is something random in the JVM implementation
08:39noncomphillord: does the choice persist if you restart the environment and try again?
08:39clgvayia: (cond-> {:a 1} (odd? 1) (assoc :a 5))
08:40clgvayia: ##(cond-> {:a 1} (odd? 1) (assoc :a 5))
08:40phillordjust testing that
08:40lazybotjava.lang.RuntimeException: Unable to resolve symbol: cond-> in this context
08:40clgv,(cond-> {:a 1} (odd? 1) (assoc :a 5))
08:40clojurebot{:a 5}
08:40phillordoh dear
08:40phillordno, it doesn't
08:40noncomahaha
08:40noncom:D
08:40phillordthat's rather poor
08:40noncomwell, i was never into clojure protocols
08:41noncomi think that this question should be raised when some more involved people are here
08:41phillordhttp://pastebin.com/HjqKwATJ
08:41noncommaybe they will recognize this as an error, or point to why is this good :)
08:41phillordcan you tests for me? put this into a clean REPL a couple of times
08:41noncomok, wait
08:43ayiaclgv: big thanks! it works:)
08:46noncomin process, pls wait :)
08:46phillord(extend-type Phil BeingPatient)
08:49noncomphillord: charseq
08:49phillordevery time?
08:49noncomoops, 2 times charseq, 3rd time - serializable
08:50noncom4, 5 - serializable
08:50phillordinteresting -- I am getting charseq everytime from lein repl -- but got different results in cider
08:50noncomi use eclipse ccw
08:50noncommake an automated test to run tis thing 100 times in a row :)
08:51noncommaybe statistics will sow...
08:51noncomshow
08:51noncomand you can test across different jvms
08:51noncomjust a game
08:51noncombut honestly, the people from above sould be asked about it i guess
08:51phillordautomation won't help
08:51phillordthe JVM needs restarting
08:51phillordwell, I guess I can automate that also
08:52noncomyeah, te kind of automation that restarts jvm :)
08:56clgvphillord: or you could just look it up in the Clojure source
08:56phillordsure I could
08:57phillordbut I have no idea how protocols work, the code they produce is baroque and it's not clear where it would be in the source
08:59clgvjust a hint so that you dont have to wait for the US folks to show up ;)
08:59phillordit probably should be in the documentation I think
09:00phillordI'm not in an urgent hurry -- just thinking about a reimplementation of something I already have working
09:02phillordit's different everytime on windows -- so, defn JVM dependent
09:06hhenkelHi all, I'm currently toying around with yaml and found the "clj-yaml". What confuses me is what version to use, there is a version 0.4.0 and I also found 0.5.0 with updated dependecies.
09:06hhenkelI also fail to use either of them as the snakeyaml lib is missing. Shouldn't that be in the dependecies?
09:07hhenkelI first use this: https://clojars.org/clj-yaml and later on that: https://clojars.org/nl.onlinetouch/clj-yaml/versions/0.5.0
09:08hhenkelRunning my application with "lein run" gives me: Exception in thread "main" java.lang.IllegalArgumentException: No matching method found: load for class org.yaml.snakeyaml.Yaml
09:11noncomhhenkel: so you add [nl.onlinetouch/clj-yaml "0.5.0"] into dependencies of your project.clj
09:11noncomand then run "lein deps"
09:11noncomand then "lein run"
09:11noncomand get the error?
09:26Hodapphmmm, this whole 'livecoding' thing is quite interesting
09:35hhenkelnoncom: Yes, exactely
09:36noncomHodapp: no doubt man! come in!
09:37hhenkelnoncom: Those are my dependencies: https://www.refheap.com/86204
09:37noncomhhenkel: try this? https://clojars.org/dsabanin/clj-yaml
09:38noncomlooks correct
09:39noncomthe toolbox http://www.clojure-toolbox.com/ suggests this as a parser
09:39noncomhttps://clojars.org/clj-yaml
09:40noncomso why does class org.yaml.snakeyaml.Yaml as no method "load()" ?
09:40noncomhhenkel: this is not really a deps problem as i see
09:40hhenkelnoncom: Tried the one you provided...looks okay from the downloaded stuff but still fails: https://www.refheap.com/86205
09:41noncomhhenkel: it just says it cannot find the right method
09:41noncomthe erroor might well be in your code
09:41noncomshow your code
09:41noncom(the part where you call for "load")
09:43noncomhhenkel: https://code.google.com/p/snakeyaml/source/browse/src/main/java/org/yaml/snakeyaml/Yaml.java#399
09:43hhenkelnoncom: I updated the redheap stuff.
09:43noncomhhenkel: see, the Yaml.load() method gets called
09:43noncomhhenkel: apparently none of the overloads match
09:44noncomhhenkel: check that out, the types
09:45hhenkelnoncom: Ah, okay this indicates that I'm returning the wrong type of data and therefore it fails...
09:46noncomhhenkel: you can check a type with (type ...)
09:46noncom,(doc type)
09:46clojurebot"([x]); Returns the :type metadata of x, or its Class if none"
09:46noncom,(doc class?)
09:46clojurebot"([x]); Returns true if x is an instance of Class"
09:47hhenkelnoncom: clojure.lang.LazySeq ...
09:48noncomhhenkel: surely that's not wat a usual java lib would want to see :)
09:48hhenkelnoncom: I guess I need to make a string out of it.
09:48noncomhhenkel: (apply str your-lazy-seq)
09:49hhenkelnoncom: Okay, that looks better (different error - but yaml format related I guess).
09:49hhenkelnoncom: Thank you very much!
09:50noncomcool!
09:57martinklepschthis is valid in a ns form, right? (:require [quil.core :refer :all])
09:58noncommartinklepsch: right
09:58Johannes`hi, how does clojure generally stack up to CL/Scheme/Python/Ruby.. in performance?
09:58segmondit stacks up nicely
09:59segmondpython and ruby are not in the same category
09:59noncombut them vms
09:59noncomcrossplatform too
09:59segmondwith that said, i highly doubt you have a performance problem, so stop worrying about performance
09:59noncomperformace is good and rising
09:59Johannes`i mean, where would you place it?
10:00noncomwell, lots of scheme implemntations are a fast c thing..
10:00noncomi can't say anything really, not enough expertise
10:01locksI'd place it in the "fast enough not to worry about it" region :P
10:01Johannes`basic expressions are a bit slow to evaluate here on my wii ^^;
10:01Johannes`but not in CL, python or ruby
10:01p_lcompilator overhead?
10:02Johannes`no idea
10:02locksyou have clojure in your Wii?
10:02Johannes`yeah
10:02lockscute
10:02locksI had it on my phone
10:04Johannes`loading clojure-1.6.0.jar takes about 22 seconds :V
10:04Johannes`python takes 0.5s
10:07hyPiRionJohannes`: loading Clojure is in general slow. Interpreting takes overhead as it has to be compiled before it can be run. But compiled code runs faster than Python and Ruby
10:08hyPiRionNot sure where CL and Scheme is on the list
10:08Johannes`aha
10:08hyPiRionbut then again, it's sort-of comparing apples to oranges
10:09Johannes`well, it seems development requires modern hardware, otherwise the REPL is too slow to load
10:10hyPiRionyeah, in which case Ruby/Python fares better
10:11noncomwhat about these plans? http://dev.clojure.org/display/design/Release.Next+Planning
10:11Johannes`oO(but maybe working around python's limitations is worse than waiting for clojure to load)
10:12noncomJohannes`: usually you wait the loading time just once
10:12Johannes`if you have it running in emacs, true
10:12noncomyou can start an instance on android and connet to it
10:13hyPiRionnoncom: yeah, there is some work going on making startup faster
10:13noncomalso, there were experiments wit stripping down clojure off unnecessary things which improved the situation really
10:14Johannes`like java? :)
10:14hyPiRionhaha
10:14noncomhyPiRion: i am going to go into clojure android development so i watch this space
10:14noncomdon't laugh on jvm
10:14noncomit is serious
10:17hyPiRionnoncom: so I presume you're watching alexyakushev's work then
10:17duck1123There's also a project that keeps a copy of java loaded up to make it easier to run functions quickly. Can't remember the name
10:17noncomhyPiRion: yes, and what sattvik does too. afaik he ports clojure
10:18iwohey, does anyone know the most appropriate way to create a function that does thing?
10:19iwoi'm thinking something like: (constantly nil)
10:19hyPiRionduck1123: drip?
10:19hyPiRionor perhaps grenchman?
10:20noncomiwo: looks noce
10:20noncom*nice
10:20iwobut is there an existing library function that does (constantly nil) ?
10:20duck1123hyPiRion: that may be it. I was under the impression that it started with a c, but I may be getting it mixed up with a similar ruby project
10:20noncomlike (constantly-nil) ?
10:21iwononcom: :)
10:21iwoi'm basically wondering if there's a more idiomatic way to create a noop function
10:22iwooh, just realised i have a typo above, I said "function that does thing?" when I meant "function that does nothing?"
10:22iwopretty important part of the question :)
10:22hyPiRionduck1123: there is a clojure-c somewhere. It's gotten really mature I think, saw an ANN from it not too long ago
10:22Johannes`why not (fn [])?
10:23hyPiRionbut it doesn't spin up a JVM, it's "just" compiling Clojure to C through chicken scheme I think
10:24hyPiRionduck1123: https://github.com/takeoutweight/clojure-scheme ? It was gambit scheme
10:25jjl`gambit's quite good at optimising things, so it should be quite fast
10:44no7hingto get this right: if i define a protocol in namespace a, create a record definition (not the instance of the record!) extending it in namespace b, i’ll have to require the protocol in all the namespaces that’ll use the record e.g. namespace c ?
10:47clgvno7hing: yeah but you only need to require namespace b when you want to create a record
10:48agarmananyone know of a way to remove the repetition when multiple functions use the same :or destructuring...e.g., https://www.refheap.com/86206
10:48no7hingclgv: i mean namespace a, when i’am actually calling the protocol function in e.g. nampespace c
10:50clgvno7hing: yes when you want to use the protocol you need to require its namespace. but that is not suprising since you have to require namespaces of functions you want to use as well
11:06myguidingstarwhy don't core.logic programs just follow Clojure naming convention for vars such as coll, x, m etc
11:07myguidingstarisn't it easier to catch up with than a, d... ?
11:09scriptormyguidingstar: as I understand it, they followed conventions previoulsy used by other logic libraries
11:11myguidingstarhmm, I find them quite annoying :)
11:13no7hingclgv: don’t know why i was expecting it differently ;)
11:16bridgethillyere
11:22michaniskinhi bridgethillyer
11:22bridgethillyerHi. That ‘e’ was colloquy stealing focus. Carry on. :)
11:24michaniskinbridgethillyer: just saying hi, e or no e
11:25bridgethillyermichaniskin: What’s new in Hoplon world?
11:27michaniskinbridgethillyer: haha some things, actually. been working on building a contrib library of jquery plugins and whatnot, and putting them in maven so they can be included in hoplon apps via maven deps
11:27michaniskinbridgethillyer: like this guy for example: https://github.com/tailrecursion/hoplon-demos/tree/master/jquery-date-picker
11:29bridgethillyerNice!
11:29michaniskinyou can now package css and other resources (like images) in your jars and they are dealt with automatically by hoplon in the application
11:30michaniskinlike the css for that date picker
11:30michaniskinor twitter bootstrap
11:30bridgethillyerI really like your packaging, deployment stories, etc.
11:31bridgethillyerY’all are clearly using this in production
11:31michaniskinthe people i work for are pretty cool with open source, so most of that stuff was written for production apps
11:32Hodappworking for people who are cool with open source can be kind of a godsend.
11:32bridgethillyerYES.
11:37cbp,1
11:37clojurebot1
11:37Shaunanyone know where I can find clojurescript's goog namespace?
11:37arrdem,(+ 2 2)
11:37clojurebot4
11:38cbp$google goog namespace
11:39lazybot[Finding Your Way around the Closure Library - Google Developers] https://developers.google.com/closure/library/docs/introduction
11:39cbpShaun: I don't know what you mean
11:40cbpShaun: can you be more specific
11:41Shaunhere's a code example: https://github.com/gf3/secretary#example-with-googhistory
11:42ShaunI can't find any api docs, or source code for the goog library, or at least clojurescript's wrapper around it
11:42whodidthishttp://docs.closure-library.googlecode.com/git/index.html
11:43cbpShaun: there is no wrapper around it. It is google's closure
11:43cbpShaun: http://docs.closure-library.googlecode.com/git/class_goog_History.html
11:43cbpthat's goog.History
11:44Shauninteresting, so :require works on JS libraries as well
11:44cbpWell clojurescript uses closure's module system so yes
11:45Shaunoh okay, that makes sense, thanks cbp!
11:45cbpnp
12:49sdegutisIf you use clojure.java.io/copy to download a URL (via clojure.java.io/input-stream) and save it to a file, would the whole file be stored in memory, or just the downloaded parts at a time?
12:49technomancysdegutis: io/copy buffers it
12:49arrdemimplementation defined behavior.
12:49tbaldrid_sdegutis: look at the source of io/copy :-P
12:50sdegutisThe source points to a private function called do-copy.
12:50sdegutisThanks.
12:50technomancy,(#'clojure.java.io/buffer-size nil)
12:50clojurebot1024
12:51arrdemtbaldridge: to what extent do you think I should be trying to emit compiler warnings that I'm doing constandard things like throwing away non-def top level forms?
12:52arrdemtbaldridge: warning that a banned class like Var is used as well..
12:53tbaldridgearrdem: well if it won't ever work, then throw an error. Like calling def inside an optimized function.
12:54tbaldridgeso perhaps, error if it is a problem for sure. And warning if it's probably a problem. Otherwise trust the user?
12:55tbaldridgeMaybe it would just be better to just mark all such cases with a generic call to a log function, then the warning/error levels can be changed at a future time
12:55tbaldridgeor even via a command line option
12:56arrdemtbaldridge: hum... I'm not sure about the nested def thing, depends on what Alex comes back with on the dev list. Alxeander Yakushev asked about nested defs and I chimed in as impacted.
12:58arrdemtbaldridge: I'll definitely wind up with a build profile config map that specifies what transforms or whatever the final compilation mode abstraction is.. logging warnings and being careful about emitting all warnings is probably the way to go.
12:59sdegutisarrdem: how's the clojure compiler coming?
13:00arrdemsdegutis: lambda and letfn lifting works and is in 0.0.4, working on tree shaking which could be done in the next hour, then it's on to building a custom emitter I think.
13:01sdegutisExciting!
13:03ambrosebsarrdem: nice
13:04noncomplease remind me what compiler are you talking about?
13:04arrdemambrosebs: I actually want to chat with you at some point about potentially using core.typed to create records implicitly
13:05arrdemambrosebs: what'd you think of typechecking t.a.jvm?
13:05arrdemnoncom: https://github.com/arrdem/oxcart
13:05ambrosebshttps://github.com/frenchy64/tools.analyzer.jvm/blob/typed/src/main/clojure/clojure/tools/analyzer/jvm/typed.clj
13:05arrdemnoncom: my GSoC project, one of two lean clojure projects
13:06noncomwow, cool!
13:08ambrosebsprobably doesn't work anymore, but that's what I think ;)
13:09arrdemambrosebs: :P
13:10koreth_arrdem: I was curious whether the two of you are attempting to coordinate your efforts at all. Or are your approaches so different that it wouldn't make any sense?
13:11arrdemkoreth_: we've talked, and the answer is that our approaches are different. Alexander Yakushev is working on tuning the existing JVM runtime.
13:11arrdemkoreth_: I'm trying to do whole program optimization that discards as much of the existing runtime as possible
13:11arrdemspecifically the var subsystem, but the extent to which I can actually get away with that is up in the air.
13:12koreth_Experimentation is good. Hopefully both of you will end up doing some stuff that not only stands on its own, but can be partially integrated into the main compiler to make things faster for everyone!
13:12arrdemI may try and get him to introduce a StaticVar which has a `static` rawRoot value rather than a `volatile` rawroot.
13:13arrdemkoreth_: for now my project is out in the 2.0.0 loony bin with the rest of tools.analyzer and tools.emitter, Alexander's work is 1.7/1.8 candidate material tho AFAIK.
13:13noncomdo you know how soon may we expect the lean functionality be included in clojure? i understand that it is not even half developed, but maybe there are some estimations...?
13:15arrdemnoncom: I'd say 1.7 TBH. Daniel Gomez and I were talking prior to my GSoC application and he mentioned that lean clojure GSoC work would likely be 1.7 material, hence my above comment.
13:15arrdemnoncom: but it also depends on what Rich comes out with for build profiles and some other stuff. Also Alexander and I kinda need to finish so... who knows.
13:15arrdem(dec so)
13:15lazybot⇒ -25
13:15hyPiRiondec so?
13:16noncomso is a valuable resource. arrdem just consumed one :)
13:16noncomseen this paper: http://dev.clojure.org/display/design/Release.Next+Planning
13:16arrdemso is some guy with a very unfortunate name who chooses to lurk #clojure and disrupt my ERC nick highlighting.
13:16noncomexciting stuff all in all
13:17hyPiRionI was about to ask
13:18arrdemI've been voting him down for a while... the real answer is probably that I figure out how to make erc-highlight-nics ignore him and a dictionary of other obvious english words.
13:18noncomwell, good luck with the work. hope to see some really cool things in 1.7 and also improve android-friendability
13:18noncom*friendliness :D
13:18noncom1.7 is next year?
13:19arrdemdo I look like Rich? :P
13:19hyPiRionnoncom: that is very hard to answer by anyone
13:19noncomahah :)
13:45mi6x3mhey, clojure, what is more idiomatic for a namespace name
13:46mi6x3mmy_lib_prefix/core
13:46mi6x3mor my.lib.prefix/core
13:46cbpprobably my-lib-prefix.core
13:46hyPiRionmi6x3m: usually com.my-domain.lib/core
13:46hyPiRionotherwise as cbp said
13:47mi6x3mwith "-" ?
13:47cbpsure
13:47cbpjust make sure the filename is underscored though
13:47arrdemreally? I'd say that your project should be "com.my-domain/lib" and then lib.clj is your entry file.
13:48hyPiRionarrdem: that's the project name, not the namespace name
13:48hyPiRionbut sure, I agree with you
13:48hyPiRion(perhaps that's what mi6x3m actually meant?)
13:48arrdemhyPiRion: sure, but I see including the project in the namespace path as redundant and verbose.
13:49mi6x3myeah I ment the namespace name, I understand _ are used for "-" in the file paths
13:49hyPiRionoh, right
13:49arrdemhyPiRion: I used to do it, but I'm fixing my old code to remove it when I see it again.
13:49mi6x3mthanks :)
13:49hyPiRionarrdem: Gotcha now. Removing .core namespaces and so forth
13:49arrdemhyPiRion: yarp.
13:49arrdemhyPiRion: for instance meajure is [me.arrdem/meajure "0.1.2"] (require 'meajure).
13:50cbpbut single-segment namespaces =(
13:50arrdemup from (require 'me.arrem.meajure)
13:51arrdemcbp: the rationale is that you don't really want my name all over your codebase in every require, even tho I wouldn't really mind.
13:51hyPiRionarrdem: right. I still do com.hypirion.libname for consistency, and in case someone uses the same name on a different project
13:52technomancyarrdem: single-segment namespaces end up in the default java package though
13:52irctcmy first time on an irc chat. if i'm doing anything incorrect please let me know. I have an error when clojure repl using cider-connect: Error: (error "Cannot decode message: ; CIDER 0.7.0alpha
13:52technomancyarrdem: it doesn't make sense to qualify your artifacts but not your namespaces
13:52irctcany help would be greatly appreciated
13:52arrdemirctc: known bug in cider, under investigation, just ignore it.
13:52arrdemirctc: it doesn't disable cider, it's just annoying.
13:52irctcok
13:52irctcthx
13:53technomancyirctc: the cider on marmalade should be unaffected
13:53irctcit just doesn't give me the an error message when i do something wrong in the repl or call something incorrectly
13:53gtrakarrdem: I've been wondering about a leiningen re-root plugin.
13:54arrdemgtrak: what for?
13:54arrdemgtrak: oh to rename an entire ns tree?
13:54gtrakto address like multiple versions of a clojure dep. yea
13:54irctcI will try the the marmalade repo
13:54irctcthx again everyone
13:54arrdemgtrak: I've been playing with that idea too... some future version of Oxcart may support dep de-aliasing by version number at compile time...
13:54technomancygtrak: have you seen metaverse?
13:54gtrakarrdem: about 2 years away on my mental queue :-)
13:54gtraktechnomancy: no
13:55arrdemgtrak: technomancy already built something like this.
13:55gtrakof course he did.
13:55technomancygtrak: poc https://github.com/technomancy/metaverse from a seajure hack night
13:55hyPiRionirctc: I presume that's a bug they're trying to fix in cider or find a good solution to it. Here's a pull request showing that they are aware of the issue at least: https://github.com/clojure-emacs/cider/pull/572
13:55technomancyspoiler alert: unless you can also re-root java classes, it's not a generally-applicable strategy
13:55gtrakawesome!
13:55gtraktechnomancy: yea.. well, just don't use libraries that use anything but the standard lib.
13:55gtrak:-)
13:56technomancyproblem solved
13:57arrdem it also means all your code will port trivially to cljx...
13:57arrdemif only we had a cljx standard
13:57gtraktechnomancy: I think it's a useful thing in the context of codeq and future 'env-as-a-value' efforts.
13:58technomancygtrak: yeah, I like the idea of namespaces becoming more of first-class values
13:59arrdemgtrak: did you see kiss's immutable namespaces?
13:59gtrakno!
13:59gtrakah yea, mikera loves that stuff
13:59arrdemhttps://github.com/mikera/kiss
13:59gtrakthat's the idea.
13:59irctchyPiRion: thank you
14:00gtrakI want like a distributed repl with something similar to git-merge :-)
14:00arrdemhttps://github.com/dogecoin/dogecoin/pull/547 best issue evar
14:00gtrakarrdem: also netkernel.
14:01gtrakbuilding on top of something like that would give our repls RESTful caching :-)
14:01technomancyarrdem: I have pondered whether replacing namespaces with actual values would involve changing clojure into something that's no longer clojure
14:01gtrakwhat *is* clojure?
14:02arrdemtechnomancy: I was just thinking about that as well and at an implementation level I think it'd make clojure a lot closer to javascript, but I like the idea of decoupling namespaces from our gigantic global var table.
14:02hyPiRionirctc: you're welcome. I hope there will be some fix available soon as well, as it's mildly annoying.
14:02arrdemgtrak: whatever rhicky says it is
14:02hyPiRiontechnomancy: I think the reason to not do that was for performance reasons
14:03arrdemhyPiRion: Oxcart will likely do exactly that internally for performance reasons :P
14:03technomancyhyPiRion: I feel like it's a compromise between performance and still supporting interactive development
14:04technomancyand to clarify I'd rather have retroactively-applied recompilation (which MLs lack) than immutable namespaces
14:04technomancyI just wonder if there's a way to get both
14:04arrdemtechnomancy: got a source on that? retroactive recompilation isn't something I'm familiar with or that google pulls up trivially.
14:05technomancyarrdem: well, imagine if you replaced ns-map with a regular phm that got swapped into an atom
14:05hyPiRiontechnomancy: I agree, but I'm not sure the people in control agrees with us
14:05hyPiRionor whether that would be a soft transition, for that matter
14:05technomancyarrdem: all consumers would point to the value of the fn at the time they were compiled, and if the fn got recompiled, they would call the old value
14:05technomancywhich is how ML works
14:06technomancyhyPiRion: it would be easy to experiment in userspace if we had egalitarian-ns
14:06arrdemtechnomancy: sure. if I get my StaticVars that's how clojure may work in future as well.
14:06technomancy(which is what I'm calling the ability to have fully-qualified :my.ns/clauses in ns)
14:07technomancyarrdem: iiuc this is basically the whole reason vars exist
14:07arrdemtechnomancy: right, because if we did compile time static binding vars wouldn't need to be dynamic and we could get rid of them entirely which is what Oxcart seeks to do.
14:08arrdemtechnomancy: the issue is that we _have_ dynamic binding with vars, and people seem to like it, so what we could do is just add StaticVars which can't be altered and which provide better performance due to not having a transient root value.
14:08technomancyarrdem: this doesn't really have anything to do with dynamic binding
14:09technomancyI'm talking strictly about reloading
14:10bhaumantechnomancy: I’ve been abusing clojurescripts reloading behavior where old defenitions are just balsted awy by new defenitions
14:10arrdemtechnomancy: this impacts reloading as well because if you "silently" rewrite a var at application runtime by a backdoor repl, all the code will re-resolve the var next time it's used and everything will (hopefully) transition correctly. what you're saying (and I would tend to agree) is that reloading code _shouldn't_ have this transition effect but I may misunderstand.
14:10technomancyarrdem: yeah, from an implementation perspective they're related
14:11gtrakarrdem: isn't there some internal JVM API that they were considering using for this?
14:11gtraki forget what that's called.
14:11gtrakjvm critical XXX something
14:12arrdemgtrak: look at me, now look the jira log, now look back at me now look at the core repo, do I look like I know what the core team is doing? I didn't think so.
14:12gtrakcrap, this is incredibly relevant :-)
14:13gtrakit has to do with the polymorphic inline cache.
14:13stuartsierraThe JVM has an internal feature called 'safepoints' but I don't think it's accessible.
14:13gtrakyea, that's what it is.
14:14gtrakarrdem: http://blog.fogus.me/2011/10/14/why-clojure-doesnt-need-invokedynamic-but-it-might-be-nice/
14:14sdegutisDoes Clojure have a shortcut for creating and deleting a temporary file, along the lines of (clojure.core/with-open) ?
14:15sdegutisRight now I have an extra let-block with my (java.io.File/createTempFile) call, and later I call (.delete %) on it. But I'd love to be able to put it in with my (with-open) call or something instead.
14:16arrdem(defmacro with-temp-file [] ..)
14:16gtraksdegutis: you could make a record and implement Closable.
14:16sdegutisThanks.
14:16gtrakwhat am I, a clojure factory?
14:17arrdemI think we're all λ coffee → irc → code
14:17kenrestivoarrdem, technomancy: wasn't there a presentation on this at cljwest, and isn't there a gsoc project to do this?
14:18arrdemkenrestivo: this undefined please clarify
14:18kenrestivoeliminate dynamic vars for performance, arrdem
14:20kenrestivohttp://m.youtube.com/watch?v=8NUI07y1SlQ
14:20tbaldridgekenrestivo: yes there are two such GSOC projects, arrdem is working on one
14:20kenrestivocool, thx
14:21tbaldridgekenrestivo: one uses the existing compiler to eek out a bit more performance, arrdem is working on a tools.analyzer "rewrite". And Rich is currently working on some surgical tweaks that should improve startup time: https://github.com/clojure/clojure/tree/fastload
14:23kenrestivonice, that's all coming together faster than i expected
14:23arrdem"faster" riiiiight
14:24tbaldridgethere's a ton of work to do, and none of these projects are very far along. More like three different approaches to a single problem.
14:24tbaldridgekindof, actually what Rich is working on is less about performance and more about startup time.
14:30arrdemLT 0.6.6 now live...
14:31gtraknode-webkit has some weird cross-platform issues with initialization.
14:31gtrakeg: certain things are available at different times, like node contexts.
14:32gtrakI'm still working through them.
14:32gtrakbut it's super-fun with CLJS and weasel-repl.
14:33gtrakI guess LT is proof that it can work :-)
14:33bhaumanarrdem: Do you what cljs version the new LT is using?
14:33arrdembhauman: neg
14:34gtrakI haven't had any surprises at all with CLJS itself there, though seems like node has setImmediate but core.async can't see it.
14:35gtrakI thought I could use that to fix an async issue, but it turned out to be something else.
14:39gtrakdoes anyone have a node-webkit test runner?
14:40daGrevisWhat can I call first on hashmap? if hashmap doesnt have an order, there are no first entry and it's pure random.
14:40gtrakdaGrevis: it does have an order, you just shouldn't rely on it.
14:41gtrakfor instance, keys and vals will return things in entry-order.
14:41daGrevisgtrak, easy way to shoot yourself in foot, imo
14:41arrdemdaGrevis: sure, but usually you use map or for or some other sequence comprehension over the whole map not first.
14:41gtrak,((juxt keys vals) {:a 1 :b 2 :c 3})
14:41clojurebot[(:c :b :a) (3 2 1)]
14:41stuartsierra`first`, like all sequence functions, implicitly calls `seq` on its argument. `seq` will give you a sequential view over any data structure, regardless of whether or not it is ordered.
14:43gtrak, (into {} (for [[k v] {:a 1 :b 2 :c 3}] [k (inc v)])) ;; here's where you might want to do that.
14:43clojurebot{:c 4, :b 3, :a 2}
14:44daGrevishmm
14:46lintomasjoin #list
14:46lintomas:D
14:46lintomassorry
14:46gtraklintomas: you have joined a lisp.
14:47daGrevishow lisp is clojure?
14:47gtraklisp isn't clojure, unless it's clojure.
14:48daGrevishmm, again
14:48technomancylisp stands for list processing
14:48technomancysince clojure supports data structures that aren't lists, it's obviously a bastard lisp. true lispers are happy to use nothing but lists.
14:49daGrevisha:D
14:49arrdemtechnomancy: and run their CPUs at memory speeds chasing cons cells..
14:50gtrakpssh reality.
14:50gtraklisp can mean 'lots of irritating silly parentheses', clojure has less of those.
14:51p_lit instead has extranerrous reader macros playing syntax ;)
14:51p_lthough I do find it funny that Lisp's "syntax" is such an accident of laziness and "meh, good enough"
14:51arrdemp_l: the datastructures you want and reader literals that make you want to use them...
14:52TimMcUgh reader literals.
14:52gtrakI rather enjoy the #js one.
14:53daGrevis<p_l> though I do find it funny that Lisp's "syntax" is such an accident of laziness and "meh, good enough"
14:53daGrevishaha nice
15:01gtrakClojure has made me so anti-syntax, I just snarl when I see something clever-looking.
15:02gtrakwhile at the same time making it easier to pick up new syntaxes.
15:03gtrakby virtue of considering how anything could've better been implemented in macro form.
15:07p_ldaGrevis: S-expressions are essentially "okay, we can input the programs in serialized AST, we will write the parser later"
15:09johncashhas anyone worked on a version control software backed by clojureesque data structures
15:10gtrakjohncash: seen codeq?
15:10gtrakit's kind of like that
15:11johncashthat uses git for version control though
15:11johncashim talking about using clojure datastructures as the version control
15:11gtrakit imports git data into clojure datastructures.
15:11arrdemthe difference being..?
15:11gtrakwhich means it could serve as a basis for something like that.
15:12gtrakit uses git like mercurial uses git when it says it's compatible with git.
15:12johncashah
15:12johncashcool, thanks
15:13johncash(inc gtrak)
15:13lazybot⇒ 12
15:13johncashKind of ironic that inc is side affecting here
15:14gtrak(swap! karma update-in [gtrak] inc)
15:14piranhayeah, should be kind of (swap! gtrack inc) :)
15:14piranhaoops, s/ck/k
15:15johncashCompilerException java.lang.RuntimeException: Unable to resolve symbol: gtrak in this context
15:15johncash;)
15:19johncashI am not a number, I am a man, a free man!
16:06kenrestivomaybe someone could rename inc to inc!
16:08Glenjamin(inc! kenrestivo)
16:14arrdemso er... tree shaking is lifting.
16:14arrdems/lifting/working/g
16:24akhudekApple’s new language has a LitghtTable like IDE. O.o
16:25stompyjyeah, it looks like what would happen if we threw dozens of devs @ lighttable for a year or so O_o
16:26jjl`they seem to have finally just gone and done all of the plumbing they should have done years ago
16:27jjl`quite an astonishing amount in a short time, unless they've been saving this up
16:34alpheusWhat do people use with Google's App Engine? appengine-magic has a lot of utility but it's using an old version of the sdk.
16:35Glenjaminhas anyone seen any notes about the closed/open-ness of swift?
16:36Glenjamingiven that they developed the whole thing in the dark i'm not expecting it to be very open
16:37technomancyGlenjamin: what, that new programming language created by the developers of Dylan and HyperTalk? I'm sure it'll be fine.
16:37technomancys/developers/creators/
16:38Glenjamini had to google those
16:38Glenjaminand from the results, i suspect sarcasm :)
16:38Glenjaminimagine if they'd spent this engineering effort on a language people already used =/
16:39arrubinGlenjamin: I suspect that he is referring to this: http://swift-lang.org/
16:39Glenjaminoh
16:39arrubinAlthough I do not know for sure.
16:39arrubinApple even links to it on their Swift page.
16:39Glenjaminthose other 2 languages were created by people at apple
16:40arrubinGlenjamin: I do not think that they are at Apple anymore.
16:40Glenjamin"even links to" -> "stole name of"
16:40arrubinI could be wrong.
16:40arrdemtechnomancy: have you heard anything about the build profiles system?
16:40technomancyarrdem: hm?
16:41arrdemtechnomancy: I'll take that as a no. Looking at http://dev.clojure.org/display/design/Build+Profiles wondering if there's a build configuration datastructure I can build off of.
16:45technomancyyeah, that's news to me
16:46arrdemI figured that whatever they come up with would likely turn into leiningen config and that you'd know as a result. apparently not.
16:47stompyjarrdem: L2SOYLENT
16:47stompyjjk
16:48technomancyheh
16:51Glenjamini was reading up on build-profiles earlier, seemed like they were looking to use build classifiers
16:57arrdemstompyj: but dead pigs are tastier than dead people...
17:02stompyjarrdem: well played
17:02stompyj(inc arrdem)
17:02lazybot⇒ 28
17:03noncom|2actually, they say that human meat is rather tasty
17:03sdegutis"Haskell rules, Clojure sucks, and anyone who disagrees is inhuman."
17:03sdegutisAm I doing it right?
17:03stompyjhahahaha
17:04stompyjits funny, for both clojurists and haskellians, theres much better languages to be taking pot shots at then each other
17:04sdegutisI like Haskell, it's pretty cool.
17:04sdegutisAlso Clojure is nice too.
17:05stompyjYeah, if I had to use clojure or haskell at work
17:05stompyjlife would be pretty sweet
17:05sdegutisWhile I don't like Perl, I'm not going to throw into question the intelligence of someone who does.
17:05technomancysdegutis: then you'll never make it as a high-level troll master
17:05stompyjASP.NET, BASIC, F#, PHP, there are plenty of languages I’ve had to use that were much more painful
17:06technomancyhesitation is seen as weakness
17:06stompyjCOLDFUSION
17:06stompyjtechnomancy: I’m not sure if you’re being serious, but you’re right
17:06arrdemtechnomancy speaks the truth, you must unquestioningly bash the intelligence and sanity of all who oppose you
17:06sdegutistechnomancy: those days are behind me.. these days I eat poptarts instead of trolling.. much tastier pasttime
17:06arrdemsdegutis: dude. tears are totally underrated
17:06technomancysdegutis: heresy; zebra cakes are the best snack
17:07systemfaultstompyj: I’ve heard nice things about F# (Didn’t try it though)
17:07technomancypoptarts are for quiche eaters
17:07stompyjsome of us cant’ eat gluten anymore
17:07stompyjand miss said zebra cakes
17:07stompyjheh
17:07arrdemzebra eh?
17:07technomancyarrdem: I have no idea
17:07sdegutistechnomancy: !!
17:08sdegutisstompyj: my son has a gluten allergy, we just found out.. :(
17:08stompyjsystemfault: I wasn’t a fan, but i had to use it under distressing circumstances, and that may have been the issue
17:08technomancysdegutis: I didn't grow up in this hemisphere
17:08sdegutistechnomancy: that's quite an exaggeration.. poptarts easily rival zebra cakes
17:09technomancystompyj: yeah F# really doesn't belong on a list with those other things
17:09stompyjsdegutis: I had “IBS and ‘anxiety’” issues for 13 years, spent probably a good 100k on tests (via insurance), etc. then one day my friend was like… stop eating gluten, and within 2 weeks I was right as rain
17:09sdegutiswooow
17:09technomancysdegutis: stroopwafels or gtfo
17:09stompyjsdegutis: sorry to hear it tho, it’s a hard adjustment, mostly because gluten free is trendy and costs $$$ now :/
17:10sdegutisstompyj: meh, rice is surprisingly delicious, esp with hot sauce or butter or other flavorings
17:10arrdemstompyj: which is funny because it has zero correlation with improved health..
17:10sdegutisand many meats dont have gluten in them
17:10technomancyyeah, actually that's a drag; sorry to hear it
17:10sdegutistechnomancy: now whos the one talking heresy sir
17:11systemfaultstompyj: Really? I’ve been suffering from IBS for about 15 years now, if I have to go outside for a long time, I always get 2 immodiums to help :(
17:11stompyjyeah, its weird, I used to throw up at the mere smell of raw flour, and no doctor ever knew why…. now in retrospect, it makes all the sense in the world
17:11sdegutistechnomancy: lets just agree that zebra cakes and brown-sugar and cinnamon poptarts are both the best food ever
17:11systemfaultstompyj: Perhaps I should try a gluten-free diet.
17:11stompyjsystemfault: I had the same issues, my wife lived in NYC and I was scared to go out where I wasn’t near a bathroom
17:12kenrestivoi'm fascinated by mefical/health trendiness. it's a lot like language trendiness. but then, these things do work for various people and situations, to varying degrees
17:12stompyjsystemfault: you should, among the list of things gluten affected: upset stomach, acne, daily migraines, short term memory loss, sore joints
17:12kenrestivoer, medical
17:12stompyjonce I stopped gluten for 2 weeks, it all went away
17:13stompyjsystemfault: I might be cynical, but I now think that “IBS” is a doctors way of saying “I dont know, but you wont’ like that answer"
17:13kenrestivoi went vegan and solved some health problems that way
17:13stompyjkenrestivo: yeah, I do a meatless day a week now
17:14sdegutishmm i do pizza rolls about once a day these days
17:14stompyjhahahahah
17:14stompyjJEALOUS
17:14stompyjtotinos
17:14sdegutisdont worry im probably taking 50 years off my life this way
17:14stompyjI love them
17:14stompyjlove(d)
17:14sdegutisat least you will live to like 125-ish
17:14systemfaultstompyj: Thanks for the info, I guess it’s worth trying for 2 weeks.
17:15stompyjsystemfault: yeah, it can’t hurt. I never liked gluten all that much, so it was easy to give up
17:15stompyjjust have some rice or potato chips around all the time
17:15sdegutisrice is super cheap and super tasty with butter
17:16stompyjbecuse if you cut gluten out you’ll cut your calories by like 75%
17:16sdegutisi could probably replace mac+cheese with rice+butter and be perfectly happy
17:16sdegutiswait hold on let me rethink that statement before i make it official
17:16stompyjyeah, get some good grass-fed butter, and it’s game on
17:16kenrestivosumac is nice on rice too. and oil is nice if butter isn't an option
17:16kenrestivo#clojure-cooking
17:18stompyjsystemfault: if you have any of those toher symptoms I laid out, definitely try and reduce gluten intake
17:18stompyjit made me a whole new person
17:19systemfaultstompyj: Yeah :)
17:19stompyjgluten sensitivity is very common in “germanic” people as well
17:19stompyjin case you are of germanic stock
17:19systemfaultI’m not but still good to know :P
17:21sdegutisBesides, vegetables are actually very filling if you eat the right amount of them.
17:22cbpsounds more like #clojure-microwaving
17:22sdegutisDid you ladies and gentlemen hear about the new Swift language, positioned to rival Clojure?
17:22sdegutis(at least on the iOS front)
17:23bhaumansdegutis: i have been working on a thin like swifts plaground for ClojrueScript
17:23arrdemiOS, which has no JVM, "rival", "clojure".
17:23sdegutisbhauman: fascinating, is it on GiThub?
17:23bhaumanyeah I was gonna release it today
17:24sdegutisbhauman: Excellent. Your ideas are intriguing and I wish to subscribe to your newsletter.
17:25bhaumansdegutis: thanks man
17:28stompyjbhauman: you’re the cat who did the real time flappy bird post
17:28stompyjawesome
17:28stompyjall our devs here loved that
17:28bhaumanstompyj: thanks man, you make me feel like I should learn sax
17:29stompyjoh! haha, becuase I called you a cat. I thought you knew I played jazz sax
17:29stompyj:)
17:29stompyjwell, if you ever decide you want to learn, I can teach you :)
17:29arrdemhahah
17:30bhaumanI play guitar
17:30bhaumanfolk guitar
17:30bhaumanI’m in Asheville NC after all
17:31bhaumanI didn’t know you played sax, whats up with Clojure and Jazz?
17:32stompyjHaha, two great tastes that taste great together :)
17:32bhaumanHaha
17:32stompyjMaybe its the mathematical underpinnings of both
17:32bhaumanthat works for me
17:32slpsysmercifully, not everyone in asheville is required to play folk: http://makenoisemusic.com/modules.html
17:33bhaumanyeah we have moog and moogfest
17:34slpsystrue! i almost went with some coworkers, but flights were expensive by the time we were talking about it
17:35bhaumanI missed it myself. I feel a little aged out of that stuff.
17:37stompyjmmmmmm, moog! the creamiest of synths
17:37arrubinAre the Ubuntu Clojure and Leiningen packages no longer maintained?
17:37technomancyarrubin: more or less
17:38arrdemjust like ArchLinux org-mode T_T
17:39Hodappstompyj: you don't prefer your synths to be very blocky-tasting, like the Yamaha DX7?
17:40stompyjHodapp: haha, man, I’ve never been able to program those synths! I wish I loved them!
17:40HodappI think I like the TR808 better...
17:41arrdemBronsa: ping
17:41technomancybabilen: ^ has there been any progress on the lein2 dependencies?
17:41Hodappbut, the DX7 or Casio's equivalents could do some interesting things. FM and phase modulation synthesis were interesting, but took a lot of work to get good results (i.e. not sounding like the 80's) from
17:42kenrestivothe dx7 electric piano sound was a scourge upon humanity
17:43stompyjHodapp: yeah, I’m really inspired by all the programming that’s gone into them, but when I get in front of one myself, all the creativity drains from my soul. it’s frustrating
17:44kenrestivoyou need a patch editor. i'm told that this guy rich hickey wrote a great one for the atari st
17:44Hodappwhaaaat?
17:44Hodappstompyj: you like the idea of them, you just don't like them? :P
17:45Hodappbut, I am trying to learn Overtone myself. I'm not too adept at the music side of things but I'm trying to learn
17:46stompyjHodapp: when I listen to patches people make, I’m in awe of them, but when I say “OK, I’m going to make a cool patch myself”, I end up doing nothing
17:46stompyjheh
17:47Hodappstompyj: I have never dealt with a real analog synth but I played around with a bunch of tools that did the same synthesis technique, and really rather liked working with those
17:47Hodappmost of them I suspect were just doing variants on what Moog created
17:49turbofaili have a similar problem, i have plenty of musical training but no idea how to make interesting synth sounds
17:50HodappI have been using Overtone more to integrate some graphics into the event system
17:50Hodappstarting with Quil, hoping to move to Shadertone
17:50Hodapptoo bad Quil only wants to work right on my Macbook. I get some wonky library error about something GL related if I try on my (much, much faster) Linux box
17:51nbeloglazovHodapp: which quil are you using and what is the error you get on linux?
17:51Hodappnbeloglazov: Can I let you know in a few hours when I'm home and can try it?
17:51Hodappactually, let me see if I stuck a log file someplace I can find...
17:51stompyjHodapp: yeah, I don’t use them as much as I wish I did.
17:52nbeloglazovSure. Could you file an issue on http://github.com/quil/quil?
17:53Hodappnbeloglazov: Sure, I'll try to do that tonight
17:53nbeloglazovHodapp: thanks!
17:53Hodappnbeloglazov: You a dev/maintainer/creator of Quil or something?
17:53nbeloglazovmaintainer
17:54Hodappnbeloglazov: alrighty, good to know :)
17:54HodappI love Processing, but want to stab Java in the face, and the Processing IDE at the same time.
17:56stompyjHodapp: re: Overtone and music, don’t worry about being adept at the music side, music is just emotion and expression, which all of us have. Studying just allows us to move faster. If you enjoy yourself, it will all work out.
17:59bbloomdnolen_: congrats on being a thought leader
17:59bbloomactually, rock on entire clojure community
17:59bbloom::big hug::
18:00tjgilliesis there a resource where this was called out or are you just being supportive in general?
18:00bbloomhttps://twitter.com/jckarter/status/473557476302802944
18:01ambrosebswow!
18:01arrdem.... dang
18:02tjgilliestoday I learned about Swift
18:02tjgillieshttp://swift-lang.org/
18:02tjgilliesis that what they were talking about ^ ?
18:02bbloomnot that one
18:02bbloomhttps://developer.apple.com/swift/
18:02bbloomannounced today
18:02arrdemno, today everone's day was ruined by the swiftpocalypse
18:02tjgilliesoh
18:02turbofaillol
18:02tjgilliesWWDC stuff
18:02turbofailpandemonium ensues
18:02arrdemthousands of programmers nerdsniped by the Apple hypetrain for a new lang
18:03tjgilliesdid not even notice
18:03gtrakyay walled gardens planted a new tree.
18:03bbloomoh c'mon now guys
18:03dnolen_bbloom: heh, yeah I was surprised by that
18:03stompyjswiftpocalypse, lol
18:03arrdemtjgillies: someone doesn't watch the hacker news frontpage closely enough..
18:03nbeloglazovSo now there are 2 Swift languages?
18:03dnolen_but I guess my explanation was simpler and sometimes easier to just see an imlpementation
18:04bbloomdnolen_: oh yeah, damn academics and their big words and fancy symbols.... just fucking show me the code!
18:04bbloom:-)
18:04gtrakI'm still waiting for my llvm compiled linux distro :-)
18:04bbloomarrdem: gtrak: it's a big deal to a lot of folks who do iOS development & the language is actually quite well done
18:04bbloomarrdem: gtrak: plus, it has a Bret Victor-ian playground repl thing, so it's going to raise the bar
18:05gtrakbbloom: sure :-)
18:05zerokarmalefthaha, @worrydream: "okay, I just got out of my meeting, why is everyone texting me"
18:05dnolen_Swift shipped with a REPL and a friendly dev environment on day one
18:05dnolen_that's pretty crazy for a lang intro
18:05gtrakthat just means they've been sitting on it for quite a while
18:05akhudekyeah, I was pretty shocked
18:06bbloomgtrak: sitting doesn't really describe what happens to get you to such a toolchain lol
18:06bbloomdnolen_: did you figure out how they are doing their time travel stuff?
18:06gtrakhow many iOS dev utils were wasted during that time on Objective-C, heh.
18:06bbloomdnolen_: library level hackery, or functionally pure evaluator?
18:07gtrakutils in the econ sense
18:07arrdemgtrak: probably just enough to transition, depending on how hard they're pushing this thing.
18:07bbloomarrdem: i think no pushing is needed. people will flee objc in a hurry
18:07arrdembbloom: no disputes of that here
18:08gtrakI'm sure it's a fine language, but will it let me write code and compile it on my iphone without a mac and a fee?
18:08bbloomswift also seems in the vein of coffeescript, clojure, elixir, etc... embrace the host
18:08gtrakI guess that's my fault for buying an iphone
18:08tjgilliesI like that swift is ECMA
18:08tjgilliesgiant-shoulder-standing is nice
18:10tjgilliesat least it says ECMA in wikipedia article, it also says citation needed
18:10tjgilliesI'm kinda jealous we don't have an android native non-java language now
18:10gtrakI was hoping go would do that (android)
18:11gtraklike years ago..
18:11nbeloglazovandroid native non-java language - c++? :)
18:11gtrakUI toolkit?
18:12Hodappewww.
18:12arrdemnative binaries are a poor idea on android generally... I'm a fan of using the JVM to smooth over hardware differences, but Dalvik can't be replaced too soon.
18:13gtrakarrdem: until the lawsuit you mean :-)
18:13nbeloglazovWell, dalvik is being replaced by art
18:13tjgillieseven a non java android-official JVM language would be nice
18:13arrdemgtrak: le sigh. yeah. if they could get that out of the way and get on with building art that'd be awesome.
18:13nbeloglazovThough I don't know exact differences between them
18:14gtrakI'd be really happy with clojurescript and good bindings there.
18:15tjgilliesclojurescript with swift as the host
18:15tjgilliesbirdscript?
18:16arrdemorg.clojure/avian
18:16gtrakclojurescryft
18:16cbpit has to be lame so clojureswift
18:17tjgillies(inc cbp)
18:17lazybot⇒ 8
18:22noncom|2clojurecrypt
18:28bhaumanIf swift lives up to its promises, this is a pretty big coup
18:28Bronsaarrdem: a bit late but pong
18:29arrdemBronsa: no worries. I seem to be able to kill cider with this...
18:29arrdemBronsa: (do (clojure.tools.emitter.jvm/load "clojure.core") (load <anything>))
18:29arrdemBronsa: after reloading the core with your toolset I get interesting errors in ns-refers.
18:30arrdemBronsa: this isn't blocking for me, just wanted to share.
18:30Bronsaarrdem: yeah I already know about that
18:30arrdemkk
18:31Bronsaarrdem: it has to do w/ how tej handles type hinting, related to TANAL-24
18:38noncom|2someone said that swift is ecma. why is this good? (i know what is ecma)
18:38turbofailin theory that means there's a standard against which to build alternative implementations
18:39turbofailthus not leaving you trapped on iDevices
18:39noncom|2interesting..
18:45justin_smithwhich will likely get about as much traction as gnustep and mono did
18:45p_ljustin_smith: mono actually got a lot of traction...
18:46p_l(that's what runs Unity)
18:46p_lthe game engine, that is :)
18:46noncom|2i program for unity on my work)
18:47justin_smithI was going to say, unity is not all that popular (the ubuntu replacement for gnome, which I would not be at all surprised to hear was done in mono)
18:47noncom|2nono
18:47noncom|2the unity game engine
18:47justin_smithright
18:48noncom|2oh i understand :)
18:48cbpIs it kosher to do (send *agent* whatever) ?
18:49cbpto uh send inside a send
18:49noncom|2hmmm.. what about a recursive send?
18:49cbpactually i don't need to, nevermind
18:50dbaschI wonder if this book is worth the $25 http://www.packtpub.com/clojure-for-machine-learning/book
18:50noncom|2but i think that would be fine.. unless you can refactor it to become unnecessary
18:50gtrakcbp: sure.
18:50gtrakthat's like continuation-passing.
18:51arrdemdbasch: http://www.amazon.com/dp/1783284358/?tag=packtpubli-20
18:51arrdemdbasch: I'd call it 50/50
18:52dbascharrdem: yeah, I read the reviews, figured it might do for some interesting bedtime reading
18:54arrdemdbasch: I'm gonna guess that it's probably got a two-three chapter Clojure introduction and the rest of it is a ML learning intro. Unless you're interested in the specific uses of Incanter etc. I'd probably go with a more general ML book, but that's just my 40Ɖ
18:54justin_smithdbasch: I got the packt press book on clojure performance optimization, it was a little rough around the edges in terms of the editing, and shorter page count than I expected, but it was a useful book with good content
18:54dbaschjustin_smith: yeah, I got a review copy of that one
18:54arrdemjustin_smith: would you suggest it?
18:55justin_smitharrdem: yeah, despite the high price/page it is good
18:55rplacadbasch: I was a tech reviewer of the Clojure for ML book
18:55dbaschjustin_smith: arrdem http://www.amazon.com/review/RER03X04ENOB4/ref=cm_cr_pr_perm?ie=UTF8&amp;ASIN=B00GTE1RVW
18:56rplacaWhether it's a good buy depends on what you already know
18:56arrdemaw man the crap the TACC folks would give me for that title :P
18:57arrdemdbasch: cheers, I'll check it out.
19:00rplacaarrdem: that's not what that book is about at all
19:00aphyrWhat's the right way to encode dynamic state that controls how a macro works?
19:00rplacait assumes you know Clojure from the get go - so it's a good reasonably mathematical intro to ML based in Clojure
19:01arrdemdbasch: oi rplaca reviewed the ML book.
19:01rplacawith a lot of dicussion of what resources are available
19:01rplaca*discussion
19:01justin_smithaphyr: dynamic compile time state?
19:01technomancyaphyr: for real?
19:01aphyre.g. I've got a macro that compiles in one of two ways depending on a flag, and I'd like to do something like (binding [*test-mode* true] (my-macro whatever)) and have my-macro see *test-mode* true at compile time
19:01rplacanot too much Incanter - more core.matrix and stuff
19:02technomancytwo macros?
19:02aphyrBut naturally that isn't going to work because the binding takes effect at runtime, not macroexpand time
19:02rplacaIt's not perfect, but I think it's a pretty good deal for $25
19:03aphyrbeen messing around with various permutations of eval/let but haven't figured it out yet
19:09turbofailaphyr: maybe bind test-mode when you require the namespace that uses said macro?
19:10turbofailkind of awkward but i don't know how else i'd do it
19:10turbofailother than technomancy's suggestion
19:10aphyrYeah I think there have to be two macros
19:10aphyrjust not sure how to get the state from one to the other
19:11technomancyimpure macros just sound like a recipe for confusion
19:11aphyrtechnomancy: It's for writing tests for impure operations in Riemann.
19:12aphyrIdeally you'd like to compile the tests clean out when you go to production mode
19:12aphyrSo *test-mode* says "Oh, just omit all the complicated locking/scheduling/IO code for this path"
19:13technomancyI would use namespace shadowing
19:13aphyr(or rather, "opt into all that code"; this is a test")
19:13technomancytest macro goes in test/ but overlapping dummy macro lives in src/
19:13aphyralso does suppression/capture of IO side effects, etc
19:14PigDudeany fireplace.vim users also using cljx? I don't care about testing cljs from vim, but I need to compile the cljx files down, and also jumps point to generated clj files and not cljx
19:14PigDudeor even using cljx successfully this way in emacs?
19:14aphyrtechnomancy: hmmmmmm, yeah, so I guess I could override the macro definition when running tests
19:14PigDudeit takes 20s to build right now so it really gets in the way
19:15technomancyaphyr: two macros, they just happen to have the same name and namespace
19:15bhaumantechnomancy: can you namespace shadow a required lib?
19:15bhaumantechnomancy: It looks like a profile merge is the best way to do that?
19:15aphyrtechnomancy: Ideally this would be thread-safe so I could test while prod code is compiling
19:16aphyrSo I guess I could def the macro itself as dynamic
19:16aphyrthen bind it and eval the code being tested
19:16aphyrhmm that sounds like we're back to square one
19:16technomancybhauman: sure
19:17bhaumantechnomancy: profile merge then?
19:17technomancybhauman: you get profile merges for free with the default lein invocations
19:18technomancybhauman: the only thing that's relevant here is that test/ is on the classpath during development but not during uberjarring
19:20bhaumantechnomancy: yeah I am thinking about writing a noop library to shadow out functionality that is in my source that I only want to work at dev time. But when others require the lib i don’t want the functionality to run.
19:20technomancysure; that would make sense
19:21bhauman:dependancies ^:replace [[lib1] [lib2]]
19:27pcnDoes anyone have a minute to test out modern-cljs tutorial-5 to see if I'm crazy or not?
19:28pcns/I'm/my computer/ I guess
20:54tomjackif I'm inside a WriteHandler, can I decide to cache the entire object I'm writing?
20:54tomjack(in fressian)
20:56tomjackseems like it's too late?
21:05arrdemhum... it seems that persistent! is not recursive much to my surprise.
21:07caternwoah! I did not know about clojure.repl/source, this is totally awesome
21:08amalloyarrdem: recursive?!?!?
21:09arrdemamalloy: if I have nested transients I'd expect to be able to persist the whole damn thing recursively with on call, but I guess the pointer semantics of that are dangerous.
21:09amalloyit's guaranteed to be like O(1); there's no way it should be traversing the whole data structure for any reason, let alone because you might be nesting transients
21:10arrdem,(doc persistent!)
21:10clojurebot"([coll]); Returns a new, persistent version of the transient collection, in constant time. The transient collection cannot be used after this call, any such use will throw an exception."
21:10arrdem"in constant time". meh.
21:11arrdemall I want is a memory shared single update AST....
21:11arrdemdon't really want to bust out my old CES code for this.
21:16tomjackwhat is even the point of writeAs?
21:16tomjackonly useful if the object's class lookups to a solo entry with a magic "any"?
21:17tomjackI guess the fact that it throws an error if the tag is wrong might be useful
21:39jumblemuddleI'm trying to get a play-clj project setup, and working in vim with vim-fireplace. Atm I'm able to run a repl in the 'desktop' project directory, then start vim in a separate tmux window. In order to run the project I got to the desktop_launcher.clj file, and run the 'cpp' hotkey on the (LwjglApplication...) line, but when I manually close the game, the repl crashes.
22:38eraserhd,(flatten {:foo :bar, :baz :quux})
22:38clojurebot()
22:39eraserhd^^ Intentional?
22:39aphyr,(sequential? {:foo :baz})
22:39clojurebotfalse
22:39dbascheraserhd: that’s not a sequence
22:39aphyrDocs do say it takes *sequential* things, so I'd expect a type error, not empty list.
22:39dbasch(doc flatten)
22:39clojurebot"([x]); Takes any nested combination of sequential things (lists, vectors, etc.) and returns their contents as a single, flat sequence. (flatten nil) returns an empty sequence."
22:40nullptr,(flatten (seq {:foo :bar, :baz :quux}))
22:40clojurebot(:baz :quux :foo :bar)
22:40eraserhdAh, not seqable.
22:40eraserhdWhich makes sense, actually. I mean, that it doesn't do seqables, not that it gives ().
22:41MagBo[MURT]hey beautiful people
22:42MagBo[MURT]I'm a complete clojure newb, planning to use it only for clojurescript
22:43MagBo[MURT]I've cloned React/OM tutorial (project.clj: https://github.com/jalehman/react-tutorial-om/blob/master/project.clj) and trying to run ``lein ring server``
22:43justin_smith~flatten also
22:43clojurebotexcusez-moi
22:44justin_smith~flatten
22:44clojurebotflatten is rarely the right answer. Suppose you need to use a list as your "base type", for example. Usually you only want to flatten a single level, and in that case you're better off with concat. Or, better still, use mapcat to produce a sequence that's shaped right to begin with.
22:44justin_smithalso
22:44MagBo[MURT]I get an X window spawned for some reason :D how do I make it run in console.
22:44MagBo[MURT]s/\./?
22:44justin_smithlein ring server-headless
22:45eraserhd,(apply concat {:foo :bar, :baz :quux})
22:45justin_smiththe X window is needed because it wants to use the X api to make your browser open the page it serves
22:45clojurebot(:baz :quux :foo :bar)
22:45MagBo[MURT]justin_smith: much love your way, sir.
22:45justin_smithserver-headless makes it not try to do that
22:50rs0i have a question about the Clojure 1.6.0 Java API
22:51rs0according to the release notes, the only Clojure classes that are not supposed to be considered implementation details are IFn and clojure.java.api.Clojure, which has #read and #var
22:51rs0i've got an open source project that does the equivalent of defmethod using pure Java code by directly invoking methods on the MultiFn class
22:52rs0i'd like to migrate to the official Java API, but I don't see a way to do that, since defmethod is basically a macro around a call directly into MultiFn.addMethod
22:58justin_smithwouldn't you be limited to sending strings to be interpreted as clojure code if IFN and clojure.java.api.Clojure are your only clean points of access?
22:58justin_smithperhaps you could write a clojure stub that would define the multimethods, and can be invoked easily from the java side?
23:05rs0justin_smith: currently this is a pure Java library. i could write a clojure stub of course, but that would add some complexity to the build process
23:06rs0justin_smith: but i can use Clojure#var to resolve arbitrary clojure functions and then invoke them. so i'm not limited to eval if that's what you're asking
23:06rs0justin_smith: this particular case is the *only* sticking point, actually. everything else i need to do, i can see how to do with Clojure and IFn
23:07rs0of course, macros are functions too... maybe i can just try invoking defmethod like anything else
23:09gastove....does lein merge profiles automatically?
23:09rs0gastove: what do you mean? lein includes five different profiles by default
23:10gastoveSay, if you've got .lein/profiles.clj with {:user foo} and a project_root/profiles.clj with {:user bar}, do you get a map with {:user foo bar}?
23:10gastoveOr do you need to tell lein to merge 'em?
23:11gastove(I suppose I mean {:user [foo bar]})
23:15trptcolinstraw poll: should it always be “syntax quote”? always “syntax-quote”? depends on part of speech (verb / noun)? depends on something else?
23:16justin_smithI think syntax-quote is the clearest
23:16gastoveI'd argue that a "syntax quote" is a quote in a syntax, whereas as a "syntax-quote" is easier to understand as its own noun.
23:18trptcolinsweet, sold, it was a blowout
23:19gastoveIs there a way to view the current project map within a lein repl?
23:20gastoveSee what's getting loaded in each profile?
23:25trptcolingastove: not that i know of from the repl, but lein-pprint can be useful for that sort of thing: https://github.com/technomancy/leiningen/tree/master/lein-pprint
23:26gastovetrptcolin: Hey thanks! Turns out there's also a cli tool -- `lein show-profiles`, with an optional argument of the profile you'd like to see vars for.
23:26gastove(I dunno why it took me so long to try `lein -h`.)
23:27trptcolinnice