2012-12-05
| 00:02 | TheBusby | ^^^ would make a great T-shirt |
| 00:18 | tomoj | Knor: may his merciful shadow fall upon you |
| 00:24 | Raynes | Don't encourage him. |
| 00:38 | nightfly_ | Is Knor/Lajjla a bot? |
| 00:39 | muhoo | oh gawd no, not lexx |
| 00:44 | Knor | tomoj, indeed, I worship His Shadow. |
| 00:45 | muhoo | nightfly_: no, he's a spaceship made out of insects and human organ tissue. :-/ |
| 00:45 | Knor | As you command, muhoo. |
| 00:45 | Knor | Quite the phallic spaceship, I might add |
| 02:06 | nsun | I'm looking for an html template engine. Do you guys has any suggestions ? |
| 02:19 | alex_baranosky | is it normal for a tag completion table to take 30+ minutes (and counting) in Emacs if indexing your entire ~/.m2 folder? I'm trying to get seamless meta-.ing in Clojure as well as JAva. Any suggestions? |
| 02:22 | amalloy | i've never succeeded using M-. without a running slime session |
| 02:22 | amalloy | but i haven't tried terribly hard |
| 02:23 | alex_baranosky | I miss being able to click-through into Java |
| 02:23 | alex_baranosky | it was one of the few good things about Intellij with Clojure, hehe |
| 02:36 | ambrosebs | How can I turn [1 2 nil] into "1 2 nil". I want to splice a vector into a string while still preserving nil. |
| 02:36 | ambrosebs | ,(apply str [1 2 nil]) |
| 02:37 | clojurebot | "12" |
| 02:37 | pepijndevos | &(apply str (map pr [1 2 nil])) |
| 02:37 | lazybot | ⇒ 12nil"" |
| 02:38 | pepijndevos | hm |
| 02:38 | pepijndevos | what happened to the quotes htere... |
| 02:39 | ambrosebs | ,(apply str (interpose " " (map pr-str [1 2 nil]))) |
| 02:39 | clojurebot | "1 2 nil" |
| 02:39 | amalloy | &(apply pr-str [1 2 nil]) |
| 02:39 | lazybot | ⇒ "1 2 nil" |
| 02:39 | ambrosebs | :) |
| 02:39 | ambrosebs | cheers. |
| 02:39 | pepijndevos | hah |
| 02:50 | ambrosebs | How about turning [[1 2 nil] [3 4 nil]] into "1 2 nil\n3 4 nil". Flattening each vector and putting a newline between each one. |
| 02:51 | amalloy | (join "\n" (map (partial apply pr-str) vecs))? |
| 02:52 | ambrosebs | what is join? |
| 02:52 | Raynes | ... |
| 02:52 | amalloy | &(clojure.string/join ", " [1 2 3]) |
| 02:52 | lazybot | ⇒ "1, 2, 3" |
| 02:52 | Raynes | And you call yourself a Clojure programmer, ambrosebs. |
| 02:53 | amalloy | well, it's hardly a clojure invention |
| 02:53 | Raynes | Don't think I implied that |
| 02:53 | ambrosebs | Raynes: I will sacrifice my integrity for better Typed Clojure error msgs. |
| 02:55 | Raynes | Sounds good |
| 02:59 | josteink | https://github.com/josteink/lein-drip |
| 03:00 | Raynes | I'm not sure what this is for. |
| 03:01 | josteink | its just supposed to be a very simple way to install drip and set it up for use with leiningen |
| 03:01 | josteink | https://github.com/flatland/drip |
| 03:01 | josteink | "Fast JVM launching without the hassle of persistent JVMs." |
| 03:01 | Raynes | I know, I'm a flatlander. ;) |
| 03:02 | Raynes | I'm just curious what was difficult with the original installation. |
| 03:03 | josteink | oh nothing |
| 03:03 | josteink | just that adding one plugin to leiningen is simpler than doing things manually |
| 03:03 | josteink | handy when constantly setting up new environments ;) |
| 03:03 | Raynes | josteink: So the main thing this does is set LEIN_JAVA_CMD for you? |
| 03:04 | josteink | Raynes: it auto-dls drips, self-bootstraps drip, and registers it. yes |
| 03:04 | Raynes | That's the only second step besides wget <insert-drip-link-here> |
| 03:04 | josteink | yup |
| 03:04 | Raynes | I'm just wondering how much work you save by time you've edited profiles.clj to add the plugin |
| 03:04 | josteink | it was a means as much as anything else |
| 03:05 | josteink | it involves quite a bit of different subsystems (disk io, shell, network) |
| 03:05 | josteink | so I was forced to learn :) |
| 03:06 | Raynes | Well, if you found it useful it probably is. |
| 03:06 | josteink | me? I probably lost immense amounts of time :) |
| 03:06 | josteink | just that Ive found (for noobs in particular) that being told "just add this plugin to leiningen" lowers the barriers to entry significantly |
| 03:07 | josteink | so I considered it might make a good public service as well |
| 03:07 | Raynes | If you learned things, it's totally worth it. |
| 03:07 | josteink | doing this also involved, git, github, gpg and deploying to clojars |
| 03:07 | Raynes | josteink: https://github.com/josteink/lein-drip/blob/master/src/leiningen/drip.clj#L22 You don't need the 'do' around these single 'else' println calls. only if there are multiple ones. |
| 03:07 | josteink | all things Im certain will be useful :) |
| 03:08 | tomoj | I tried to install drip the other day and hadn't noticed that I apparently failed |
| 03:08 | josteink | Raynes: I know. I just did it for structural and visual consitenct |
| 03:08 | josteink | consistency |
| 03:09 | Raynes | Gotcha |
| 03:10 | josteink | tomoj: heh |
| 03:10 | tomoj | LEIN_JAVA_CMD=drip lein help |
| 03:10 | josteink | :) |
| 03:10 | tomoj | after that, shouldn't I see a standby jvm hanging around? |
| 03:10 | tomoj | oh |
| 03:11 | tomoj | "Drip doesn't work with Leiningen-2.0.0-preview10" |
| 03:11 | tomoj | ok |
| 03:12 | ambrosebs | amalloy, Raynes: functional application errors now have line number, macroexpanded "original" form, expected domain and actual domain. thanks :) (see end) https://gist.github.com/4213669 |
| 03:13 | Raynes | You should use refheap. |
| 03:13 | josteink | tomoj: works fine here. |
| 03:13 | josteink | tomoj: but I use my superb plugin :P |
| 03:13 | Raynes | ambrosebs: Check this out. I rewrote my old ruby refh command-line refheap client in Haskell: https://github.com/Raynes/refh |
| 03:13 | josteink | but I only have "LEIN_JAVA_CMD=drip" |
| 03:13 | Raynes | If using Haskell to paste Clojure to a pastebin written in Clojure doesn't get you going, nothing ever will. |
| 03:16 | josteink | Raynes: replace "pastebin written in clojure" with "pastebin written in PHP" and it's a pretty hilarious joke ;) |
| 03:16 | josteink | or it least sounds like it |
| 03:32 | Raynes | ambrosebs: So how do you type heterogenous maps? I think you explained this in your talk, but I missed it while I wasn't paying attention. :P |
| 03:38 | ambrosebs | Raynes: Hmaps only support keyword keys. {:a 1} is of type '{:a Number}. They record the presence of keys, but not their absence. |
| 03:38 | ambrosebs | `get` and `assoc` both work well with this type of hmap. |
| 03:39 | ambrosebs | I've got some ideas of how to support things like `merge`. |
| 03:40 | Raynes | ambrosebs: Okay, so on to the more important issue. What manner of payment must I provide in order to make you use refheap for pasting awesome things like the above. |
| 03:41 | ambrosebs | Raynes: I shall give it a shot :) |
| 03:42 | xificurC | hello, could someone explain why (read-string "012") returns 10? |
| 03:43 | Iceland_jack | xificurC: because it reads is as being octal? |
| 03:43 | xificurC | :( |
| 03:44 | Iceland_jack | *reads it |
| 03:44 | xificurC | Iceland_jack: is there a way to force decimal read? |
| 03:44 | Iceland_jack | I'm not very familiar with Clojure but I'd imagine that's not possible using read-string |
| 03:45 | Iceland_jack | since that's used for parsing general forms |
| 03:45 | Raynes | Iceland_jack: ##(Long. "012") |
| 03:45 | lazybot | ⇒ 12 |
| 03:45 | Iceland_jack | I didn't ask the question |
| 03:45 | Raynes | Ugh |
| 03:45 | Raynes | Other person |
| 03:46 | Raynes | xificurC: ^ |
| 03:46 | Raynes | Iceland_jack: Well, now you know too damn it. |
| 03:46 | Iceland_jack | And I feel all the better because of it |
| 03:46 | xificurC | Raynes: thanks |
| 03:46 | xificurC | is that a Java call? |
| 03:46 | Raynes | Yes. |
| 03:46 | Raynes | If you actually want decimal, you can do that too. |
| 03:46 | Raynes | er, double |
| 03:47 | Raynes | &(Double. "012") |
| 03:47 | lazybot | ⇒ 12.0 |
| 03:47 | xificurC | thanks Raynes |
| 03:50 | wingy | how do i apply a middleware for just a specific route in my compojure/ring server? |
| 03:51 | wingy | eg. i have some routes I wanna password protect and need to check the basic auth header. if they are valid i respond with the secured page, if not i respond with invalid password |
| 03:51 | Knor | Raynes, what is your opinion of that "0" is falsy in php. |
| 03:51 | Knor | As in the string containing the one character '0' |
| 03:51 | Raynes | That it is evil and Satanic, I think. |
| 03:57 | thorwil | wingy: wrap the route handler |
| 03:58 | wingy | thorwil: i found this http://vedang.me/techlog/2012/02/23/composability-and-compojure/ |
| 05:51 | borkdude | any favorites on linux server distro? I hear good things about arch - good choice? |
| 05:53 | nightfly_ | I wouldn't recommend Arch for a server unless you're very brave |
| 05:53 | ucb | +1 |
| 05:53 | ucb | it really depends on how many headaches you want |
| 05:54 | ucb | and whether you want to spend time compiling the internet |
| 05:54 | noidi | arch is a hobby, not a product :) |
| 05:54 | borkdude | nightfly_ what would you recommend |
| 05:54 | pyr | yes, avoid arch in production |
| 05:55 | daimrod | borkdude: debian? |
| 05:55 | pyr | borkdude: i tend to stick to distributions that are very well supported by CMFs for production machines |
| 05:55 | pyr | in the linux world that's centos and ubuntu. i choose ubuntu |
| 05:56 | squidz | debian for server arch for personal pc |
| 05:56 | squidz | how would I combine these functions (+ 1) (* -1) then apply them to 5? |
| 05:57 | pyr | ,((comp (partial + 1) (partial * 1)) 5) |
| 05:57 | clojurebot | 6 |
| 05:58 | squidz | thanks |
| 05:58 | pyr | squidz: i switch 1 and -1 but you get the picture |
| 05:58 | ucb | pyr: (+ 1) is inc |
| 05:58 | ucb | and (* 1) is just * I think |
| 05:58 | ucb | ,(* 5) |
| 05:58 | clojurebot | 5 |
| 05:59 | squidz | ucb: yes I just wanted a simple example |
| 05:59 | ucb | oh, -1, didn't see that |
| 05:59 | ucb | squidz: so what's the real code you want to compose? |
| 05:59 | ucb | gah |
| 05:59 | squidz | I actually have something like (n-row -1 table) and (n-col -1 table) |
| 05:59 | ucb | nickname confusion, apologies |
| 06:00 | squidz | https://www.refheap.com/paste/7309 line 6 |
| 06:01 | ucb | squidz: that looks ok to me |
| 06:01 | borkdude | does find-fn still work in here? |
| 06:03 | Knor | Raynes, so, would you be against the idea that say in Clojure empty data collections are falsy? |
| 06:03 | Knor | But surely not 0 or "0" naturally. |
| 06:03 | Raynes | Knor: I'd be against empty data structures being falsey. |
| 06:04 | Knor | Raynes, motivate |
| 06:04 | Raynes | Because it's insane? |
| 06:04 | Raynes | It doesn't make sense for an empty data structure to be a false value. It is a thing. |
| 06:04 | ro_st | Raynes: when will noir 1.3.0 go final? |
| 06:04 | Raynes | ro_st: This coming weekend. |
| 06:04 | Knor | Raynes, I find (if (empty x) ...) to be a very common idiom in recursion,. |
| 06:05 | ro_st | oh, nice! |
| 06:05 | Knor | Raynes, well, so is False and Nil |
| 06:05 | Knor | they are things as well. |
| 06:05 | ro_st | Knor: yes, false things. |
| 06:05 | ro_st | empty things are empty, not false |
| 06:05 | Knor | That argument is more circular than an American living near McDonalds. |
| 06:05 | borkdude | (if (next x) …) is the recommended idiom right? |
| 06:06 | lucian | s/everything but false is truthy/everything but true is falsy/ |
| 06:06 | lucian | got that wrong |
| 06:06 | Raynes | Sure, let's make every recursive base-case value be falsey. We can eliminate like 3 characters of code that way! |
| 06:06 | ro_st | Knor: look at equality in javascript. it's lots of fun. they decided to make things other than null and false falsey |
| 06:06 | borkdude | Raynes what's the syntax for find-fn in here again? |
| 06:06 | lucian | ro_st: that's not even the problem with js |
| 06:06 | Raynes | $findfn 2 1 1 |
| 06:06 | ro_st | oh, agreed. but it's one of the bigger ones |
| 06:06 | Knor | ro_st, indeed, and the only place I find myself having problems with it is 0 and 0.0 |
| 06:06 | lucian | python considers [] and 0 to be falsy, and it's only midly annoying. js commits bigger sins |
| 06:07 | lazybot | [clojure.core/max-key clojure.core/cond clojure.core/dosync clojure.core/sync clojure.core/char-escape-string clojure.core/-' clojure.core/*data-readers* clojure.core/- clojure.core/default-data-readers clojure.core/unchecked-subtract clojure.core/*clojure-versi... https://www.refheap.com/paste/7310 |
| 06:07 | borkdude | $findfn 1 -1 |
| 06:07 | lazybot | [clojure.core/-' clojure.core/unchecked-negate clojure.core/- clojure.core/unchecked-negate-int] |
| 06:07 | Raynes | borkdude: findfn [out] [& in args] |
| 06:07 | Knor | I never find that "" or empty arrays or empty lists being falsy to be a problem leading to bugs, that 0 is falsy however does lead to _a lot_ of bugs and hassle. |
| 06:07 | Knor | Or "0" (that's madness) |
| 06:09 | borkdude | Raynes tnx |
| 06:09 | Raynes | &(next []) |
| 06:09 | lazybot | ⇒ nil |
| 06:10 | Knor | However, I'm still waiting for a use case where it shows that "" being falsy is a bad idea that can lead to bugs or coding hassle. |
| 06:10 | borkdude | $findfn [] false |
| 06:10 | borkdude | $findfn [] nil |
| 06:10 | lazybot | [clojure.core/keyword? clojure.core/chunked-seq? clojure.core/fn? clojure.core/not= clojure.core/nil? clojure.core/string? clojure.core/sorted? clojure.core/false? clojure.core/true? clojure.core/symbol? clojure.core/number? clojure.core/integer? clojure.core/se... https://www.refheap.com/paste/7311 |
| 06:11 | lazybot | [clojure.core/list* clojure.core/dorun clojure.core/doseq clojure.core/second clojure.core/letfn clojure.core/keys clojure.core/with-open clojure.core/sync clojure.core/char-escape-string clojure.core/let clojure.core/extend clojure.core/-reset-methods clojure.c... https://www.refheap.com/paste/7312 |
| 06:11 | Raynes | I'm waiting for a use case where it'd be useful. |
| 06:12 | Knor | you've already gotten one, you just said that sparing a couple of characters wasn't useful. |
| 06:13 | Raynes | What was that? |
| 06:13 | foodoo | borkdude: (if (empty? x) …) seems like a better approach. You clearly state your intentions with (empty?) |
| 06:13 | Knor | If you don't find that useful _enough_ then that's your own opinion, however that it has some use is a fact. |
| 06:13 | Knor | Raynes, like I said (if (next x) or (empty x) is extremely common in recursion |
| 06:13 | Raynes | Just use 'next' instead of 'rest' in your recursion. |
| 06:13 | borkdude | (empty x) returns an empty collection of the same type of x |
| 06:13 | Knor | In CL code it is considered idiomatic to just use (if list ...) where it is understood that the else arm is used on an empty list. |
| 06:14 | Knor | Ehh, empty? |
| 06:14 | Knor | You get what I mean. |
| 06:14 | Raynes | (if foo-list (recur (next foo-list))) |
| 06:14 | Raynes | Also, I'm pretty sure that your 'fact' is also an opinion. |
| 06:15 | Knor | No, that it has some use is an objective fact, if you consider it useful enough to warrant whatever downsides it has is an opinion. |
| 06:15 | Raynes | That is simply wrong. |
| 06:16 | Knor | so you would deny that having to type less is a use/ |
| 06:16 | Raynes | Yes, because in pretty much every case you don't save anything. |
| 06:16 | Raynes | But by all means, post your proposal on the mailing list. |
| 06:16 | Knor | You save typing in every one of such cases. |
| 06:16 | Raynes | Whatever. |
| 06:17 | Knor | I have no proposal. |
| 06:17 | Raynes | If I stop talking to doorknobs I also save characters. |
| 06:17 | Knor | Besides, that's not something you can change this far in. |
| 06:17 | clgv | Is there a tutorial on how to use repl-y in your own application? |
| 06:17 | Knor | Raynes, you don't have to be so angry you know pumpkin. |
| 06:17 | Knor | We're all friends. |
| 06:17 | Knor | Besides, His Divine Shadow doesn't like it. |
| 06:17 | foodoo | Regarding empty lists and falsehood: You should also keep in mind, that destructuring is very helpful here: |
| 06:18 | foodoo | ,(loop [[fst & rst] [1 2 3]] (if rst (recur rst) fst)) |
| 06:18 | clojurebot | 3 |
| 06:18 | foodoo | as an example on how to implement (last) |
| 06:19 | Knor | Well, in that case you would just use (if (empty? rst) and stuff. |
| 06:20 | foodoo | Knor: No. In the example above rst is either a list or nil |
| 06:20 | foodoo | and therefore you don't need empty? |
| 06:20 | Knor | But I stand by that what is 'idiomatic' and what isn't largely depends on the culture of the language, using the empty list as false is considered very common and idiomatic in clojure. Short circuit evaluation is very idiomatic in Ruby. |
| 06:20 | Knor | Well, if you give it [1] |
| 06:20 | Knor | rest gets to hold [] right? |
| 06:20 | Knor | Or nil/ |
| 06:20 | borkdude | ,(let [[a & b] [1]] a b) |
| 06:20 | clojurebot | nil |
| 06:20 | Knor | Oh |
| 06:21 | borkdude | ,(let [[a & b] [1]] [a b]) |
| 06:21 | clojurebot | [1 nil] |
| 06:21 | Knor | Well, that's pretty silly then honestly. |
| 06:21 | Knor | ,(let [[x & xs] '(1)] xs) |
| 06:21 | clojurebot | nil |
| 06:22 | Knor | I do believe that the rest of a singleton list is generally considered to be the empty list. |
| 06:22 | noidi | Knor, empty lists are not falsy in clojure |
| 06:22 | Knor | Yeah, I know. |
| 06:22 | foodoo | There is (rest) and there is (next). The first produces empty lists and the second nil |
| 06:22 | Knor | I'm just saying that to say the rest of a singleton list being nil and not () is unusual amongst programming langauges. |
| 06:23 | Knor | Ah, okay, that makes sense then. |
| 06:23 | Knor | So destructuring uses next? |
| 06:23 | borkdude | I think nth even |
| 06:23 | foodoo | I don't know |
| 06:23 | Knor | So (next singleton-sequence) ===> falsy value? |
| 06:23 | noidi | Knor, yeah, next returns a seq (truthy) or nil (falsy) |
| 06:24 | foodoo | ,(doc next) |
| 06:24 | clojurebot | "([coll]); Returns a seq of the items after the first. Calls seq on its argument. If there are no more items, returns nil." |
| 06:24 | noidi | so next is slightly lazier than rest |
| 06:24 | Knor | Yeah, well, like I said, I've never encountered a case where empty collections as falsy leads to bugs or complicated behaviour unlike making 0 falsy which very often leads to bugs. |
| 06:24 | noidi | http://stackoverflow.com/questions/4288476/clojure-rest-vs-next |
| 06:24 | borkdude | http://clojure.org/special_forms#Special%20Forms--Binding%20Forms%20(Destructuring) <- nth |
| 06:24 | Knor | If you know a case where it does, feel free to share. |
| 06:24 | noidi | oops, I rest is lazier than next, that is |
| 06:25 | noidi | -I |
| 06:25 | Knor | CL does not even differentiate between false and empty list and it works fine there to not be able to do that, though I do feel a difference should be there. |
| 06:25 | borkdude | nth and nthnext |
| 06:31 | clgv | Knor: well you have the empty check with "seq" pretty easily and explicit |
| 06:31 | clgv | Knor: I fou write your loop initialization with `seq` and use `next` in the recur you can use (if mylist ...) |
| 06:32 | clgv | s/I fou/If you/ |
| 06:32 | Knor | True, but it does basically 'use an extra function to get behaviour which you could normally have', the ubiquitousness of it shows that it's behaviour people want, I don't see a particular case where saying that empty collections are falsy on their own would lead to bugs unlike with 0 where it often leads to bugs. |
| 06:32 | Knor | NaN should be falsy though. |
| 06:32 | Knor | the 'empty number' isn't 0, it's NaN. |
| 06:34 | clgv | I like it that en empty colelction is not falsy - helps a lot when filtering |
| 06:34 | Knor | clgv, can you give an example/ |
| 06:37 | clgv | Knor: well, I know I have encountered some in my projects - searching through these would violate my time constraints right now ;) |
| 06:37 | Knor | =( |
| 06:37 | Knor | Well, the reason I'm asking this is because I'm implementing a pet lisp and this is one of the issues that has plagued me since forever which of both paths I should take. |
| 06:38 | clgv | but on a semantic level it's a difference if you have nothing or something empty. this will always matter when you have to interpret some input |
| 06:38 | foodoo | I guess Rich choose only nil and false to be false values for simplicity. If you don't have to keep many potential false values in your head, it makes understanding code much easier |
| 06:39 | foodoo | especially in a dynamically typed language |
| 06:39 | clgv | foodoo: I think there was some explanation either in a talk of him or in one of the books I read |
| 06:39 | Knor | clgv, well, nil is generally consideered the empty tuple though. |
| 06:40 | foodoo | Knor: not in Lua |
| 06:40 | Knor | I don't see Lua's type system being based on years and years of theoretical research. |
| 06:43 | thorwil | Knor: this might be of interest to you: https://groups.google.com/forum/?fromgroups=#!msg/clojure/JfZvqvLZjB0/C6rSn-Zg1s4J |
| 06:44 | thorwil | particularly from "Clojure may be like Scheme" on |
| 06:48 | Knor | thorwil, I honestly agree with him there on if you want to basically have 'everything' be true but one value. But Clojure has true and false and CL has T |
| 06:48 | Knor | Though T supposedly is 'everything' |
| 06:49 | foodoo | Java has null and false. This may also have played a role |
| 06:50 | Knor | Yap, but predicates in clojure tend to return true or false. |
| 06:51 | Knor | I also disagree that nil is more nothing than "", "" is a string? that is nothing, nil is a null? that is nothing, it just happens to be by nature the only null? that exists. |
| 06:51 | Knor | It's basically a type of collection which by its very nature is always empty. |
| 06:52 | Knor | Which is why nil is considered the bottom type in CL. It's a collection containing types which is empty. |
| 06:52 | Knor | Whereas T is a collection containing values which is full of it basically. |
| 06:53 | foodoo | (first T) would return what? |
| 06:53 | Knor | types aren't ordered. |
| 06:53 | ambrosebs | Raynes: I like it https://www.refheap.com/paste/7313 |
| 06:53 | Knor | Not every collection needs to be ordered of course. |
| 06:55 | thorwil | Knor: of course do predicates return true or false, as they are for formulating questions that can be answered with yes or no. whereas nil stands in for saying nothing |
| 06:56 | clgv | ambrosebs: inline type declaraions for typed clojure? |
| 06:59 | ambrosebs | clgv: (+ "string" 1) gets inlined by the time Typed Clojure gets to it unfortunately |
| 07:00 | ambrosebs | clgv: is that what you meant? |
| 07:00 | clgv | ambrosebs: no I tried to interprete the surrounding forms ;) |
| 07:01 | ambrosebs | Oh right, `cf` just kicks of static type checking for a form. |
| 07:01 | Knor | thorwil, indeed, but that's not the story he told on that google group |
| 07:01 | Knor | Where he basically didn't want T vs F, he wanted nil vs everything. |
| 07:01 | Knor | As in CL style. |
| 07:17 | Raynes | ambrosebs: Awesome! If you use it and find yourself wanting any features, let me know and/or open issues on Github. Trying to make it the best. |
| 07:19 | ambrosebs | Raynes: noted |
| 07:19 | ambrosebs | Raynes: syntax highlighting seems really nice. |
| 07:22 | clocKwize | Hi |
| 07:56 | Sgeo|web | ,((fn [s] (list s (list (quote quote) s))) (quote (fn [s] (list s (list (quote quote) s))))) |
| 07:56 | clojurebot | ((fn [s] (list s (list (quote quote) s))) (quote (fn [s] (list s (list (quote quote) s))))) |
| 07:56 | Sgeo|web | Yay |
| 07:56 | ro_st | quine? |
| 07:57 | Sgeo|web | Yeah. Although I'm sure I've seen a Clojure quine before, I was able to work this one out :D |
| 07:57 | ro_st | (defn foo [] (source foo)) |
| 07:57 | ro_st | ;-) |
| 07:59 | josteink | Sgeo|web: whee |
| 08:30 | clgv | `proxy` can override a protected emthod and expose it as public, right? |
| 08:33 | cshell | clgv: I'm not sure, but I saw this post |
| 08:33 | cshell | http://bit.ly/11TmbYy |
| 08:33 | Sgeo|web | http://ideone.com/nVs6D4 |
| 08:33 | Sgeo|web | (off-topic) |
| 08:33 | clgv | cshell: as far as I tried it works. but I am not sure |
| 08:39 | clgv | Sgeo|web: it's even more interesting if you capture the value in that context as well ;) |
| 08:40 | Sgeo|web | clgv: ok |
| 08:40 | Sgeo|web | I just wish there was a nice way to map a function onto values of keys |
| 08:40 | Sgeo|web | Or.. hm |
| 08:41 | foodoo | Sgeo|web: Can you use metadata for your functions? |
| 08:43 | Sgeo|web | foodoo, hmm, not sure what that's relevant to? |
| 08:45 | Sgeo|web | clgv: am I allowed to use prior code that I've written? |
| 08:45 | clgv | Sgeo|web: erm what? |
| 08:47 | josteink | going back to languages without destructuring (like javascript) hurts |
| 08:47 | josteink | things just feel needlessly verbose |
| 08:48 | ro_st | so, it's easy to do scoped 'global' state with Ring, as you can use binding to bind atoms to declared vars in the context of a request |
| 08:48 | ro_st | how can one do the same thing for long running processes, such as worker processes? |
| 08:49 | ro_st | https://github.com/noir-clojure/noir/blob/master/src/noir/request.clj |
| 08:49 | cshell | ro_st: Can you use the binding form? |
| 08:49 | weavejester | ro_st: It depends where your worker processes are... |
| 08:49 | Sgeo|web | clgv, I've written the "capture the value in that context as well" part before |
| 08:49 | cshell | ro_st: and bind when the thread starts? |
| 08:49 | Sgeo|web | clgv: Sum total of everything: http://ideone.com/o7gVx6 |
| 08:49 | ro_st | this sort of thing. i guess i can wrap the worker itself with a binding |
| 08:49 | Sgeo|web | Although the result it gives is really ugly :( |
| 08:49 | ro_st | we're using quartzite to schedule workers |
| 08:50 | clgv | Sgeo|web: oh I see ;) |
| 08:50 | ro_st | http://clojurequartz.info/ |
| 08:50 | ro_st | hmm. needs more hammock. |
| 08:51 | Sgeo|web | Although actually, this data structure as is is more useful if you're writing an env-aware macroexpand-1 function |
| 08:51 | ro_st | workers are generally system-wide where as requests are implicitly user-wide |
| 08:53 | Sgeo|web | Is there such a thing as a truly anonymous macro? |
| 08:53 | clgv | how do you call a parameter that represents a number until some event happens briefly? |
| 08:53 | Sgeo|web | I know clojure.tools.macro has a macrolet, but does that just make a gensym in the namespace, or how does that work? |
| 08:53 | clgv | Sgeo|web: yeah, there was contrib lib that offered that |
| 08:53 | clgv | thats the one I think^^ |
| 08:54 | ro_st | i'm doing readme driven development : https://github.com/Cognician/fusebox/blob/master/README.md |
| 08:54 | Sgeo|web | I'm just trying to think, to see how I'd write a macroexpand-1 that takes an evn |
| 08:54 | Sgeo|web | env |
| 08:54 | ro_st | no actual code or jars yet |
| 08:55 | clgv | Sgeo|web: you want that bindings in the env are inserted into the form? |
| 09:02 | Sgeo|web | clgv: I'm thinking that for a macroexpand-with-env, I could just call the underlying function for the form, but I need to know whether it's been shadowed by something, and in order to do that, I need to see all bindings (can do), and know whether or not it's a macro |
| 09:03 | clgv | Sgeo|web: macros usually have metadata {:macro true} |
| 09:04 | Sgeo|web | I'm skimming over clojure.tools.macro |
| 09:04 | Sgeo|web | It looks broken, although I'm not certain. |
| 09:04 | Sgeo|web | I have a feeling it will break if you use macros that rely on &env |
| 09:05 | Sgeo|web | Problem with macroexpanders: Expanding a macro can cause side-effects |
| 09:06 | Sgeo|web | I was scared of the possibility of running a macro several times, but considering that fundamental issue, maybe I shouldn't be |
| 09:06 | ucb | is it me or is ritz sloooooow? |
| 09:06 | Sgeo|web | Hmm, my idea doesn't work anyway though |
| 09:21 | gfredericks | are side-effecting macros avoidable? |
| 09:22 | TimMc | I don't even know of any examples... |
| 09:22 | TimMc | Wait, perhaps defonce? |
| 09:23 | TimMc | nope, no side-effects from expansion |
| 09:23 | gfredericks | ,(macroexpand '(defonce TimMc 42)) |
| 09:23 | clojurebot | #<Exception java.lang.Exception: SANBOX DENIED> |
| 09:24 | gfredericks | ha I've never seen def in a let like that before :) |
| 09:24 | TimMc | I have. amalloy_ is fond of letted defs. |
| 09:24 | gfredericks | no I mean (let [v (def ...)] ...) |
| 09:25 | gfredericks | if amalloy_ is fond of those then I'm never talking to him again. |
| 09:25 | TimMc | Oh! That's... weird. |
| 09:26 | gfredericks | I guess more to the point is I've never seen the return value of def used |
| 09:29 | TimMc | So... (def foo) ensures that #'foo exists, but doesn't change the root value. |
| 09:30 | gfredericks | that does look to be the case |
| 09:36 | squidz | using lazy-cat prevents further 'normal' use of collections because it's no longer pure right? |
| 09:42 | ro_st | is it possible to put a docstring on a keyword? |
| 09:42 | Sgeo|web | Well, the get-env macro I wrote is side-effecting. Not really a compelling case for the widespread existence of side-effecting macros though |
| 09:42 | Sgeo|web | What about Noir? |
| 09:42 | Sgeo|web | Do Noir macros do side-effects, or just the code they expand into? |
| 09:44 | TimMc | &(instance? clojure.lang.IMeta :foo) ;; ro_st |
| 09:44 | lazybot | ⇒ false |
| 09:44 | Chousuke | ro_st: I don't think you can attach metadata on keywords, since keywords are singletons. |
| 09:46 | ro_st | cool, tx |
| 10:04 | djanatyn | hmm |
| 10:04 | djanatyn | I'm using a java library, and I need to call an update method periodically to show the results on the screen |
| 10:04 | mdeboard | &(instance? clojure.lang.IObj :foo) |
| 10:04 | lazybot | ⇒ false |
| 10:04 | djanatyn | I'd like to create a new thread that continues to do this automatically. right now I'm doing it like this: |
| 10:05 | djanatyn | (defn update [world] (.. world show) (send *agent* update)) |
| 10:05 | djanatyn | (send (agent (ActorWorld.)) update) |
| 10:05 | djanatyn | I should probably add a (Thread/sleep) in that update method. is there a cleaner way to do this? |
| 10:16 | ohpauleez | whooops |
| 10:16 | ohpauleez | wrong channel |
| 10:32 | googya1 | you can not do this (conj (1 2 3 ) 5), but in function, you can do so (fn foo [x] (when (> x 0) (conj (foo (dec x)) x))) . why? |
| 10:32 | mdeboard | &(conj '(1 2 3) 5) |
| 10:32 | lazybot | ⇒ (5 1 2 3) |
| 10:32 | mdeboard | ? |
| 10:34 | mdeboard | @ googya1 |
| 10:35 | devn | gfredericks: 'defs letted' is my nerdy def leppard cover band. |
| 10:35 | googya1 | there is magic in function? |
| 10:38 | matthavener | googya1: when you do (1 2 3) clojure thinks '1' is a function |
| 10:39 | matthavener | googya1: so you have to do (conj '(1 2 3) 5) to avoid the evaluation of (1 2 3) as a function |
| 10:39 | matthavener | googya1: thats what mdeboard was showing you with &(conj '(1 2 3) 5) |
| 10:39 | googya1 | why is correct in function definition? |
| 10:39 | mdeboard | googya1: because `foo' is a function |
| 10:39 | matthavener | googya1: in your function, foo is returning a list |
| 10:40 | googya1 | oh yes i see, thank you @matthavener |
| 10:40 | matthavener | googya1: alternatively (iirc), you can do (list 1 2 3) instead of '(1 2 3) |
| 10:41 | mdeboard | in '(1 2 3), the apostrophe is escaping the `()' literal |
| 10:41 | mdeboard | or something |
| 10:41 | mdeboard | quoting, not escaping |
| 10:41 | matthavener | it prevents evaluation |
| 10:41 | matthavener | another gotcha (that has gotten me), is that '(1 2 (function 3)) will not evaluate (function 3) |
| 10:41 | mdeboard | quoting |
| 10:41 | matthavener | but (list 1 2 (function 3)) *will* |
| 10:41 | mdeboard | '(1 2 ~(function 3)) :) |
| 10:42 | mdeboard | maybe |
| 10:42 | matthavener | mdeboard: ah, today i learned something new :) |
| 10:42 | mdeboard | unquote splicing iirc |
| 10:43 | matthavener | doesn't look like it |
| 10:43 | matthavener | &(let [f (fn [] 3)] '(1 2 ~(f))) |
| 10:43 | lazybot | ⇒ (1 2 (clojure.core/unquote (f))) |
| 10:43 | matthavener | &(let [f (fn [] 3)] (list 1 2 (f))) |
| 10:43 | lazybot | ⇒ (1 2 3) |
| 10:44 | mdeboard | &(let [f (fn [] 3)] `(1 2 ~(f))) |
| 10:44 | lazybot | ⇒ (1 2 3) |
| 10:44 | mdeboard | There we go |
| 10:44 | mdeboard | only with the backtick, sorry |
| 10:44 | mdeboard | ,`(1 2) |
| 10:44 | clojurebot | (1 2) |
| 10:46 | matthavener | interesting |
| 10:51 | hcumberd` | Hi ;) |
| 10:55 | mdeboard | ,(let [x 15] `x) |
| 10:55 | clojurebot | sandbox/x |
| 10:58 | mdeboard | matthavener: iirc ` returns the fully namespace-qualified symbol, while ' is the unqualified symbol |
| 10:58 | mdeboard | I didn't bring my book to work today |
| 10:58 | mdeboard | and good luck googling ` |
| 10:58 | mdeboard | (let [x 15] (quote x)) |
| 10:58 | mdeboard | ,(let [x 15] (quote x)) |
| 10:58 | clojurebot | x |
| 10:59 | vijaykiran | mdeboard: you can always use symbolhound.com |
| 10:59 | hcumberd` | ,google hans wurst |
| 10:59 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: google in this context, compiling:(NO_SOURCE_PATH:0)> |
| 11:00 | vijaykiran | for ` = http://stackoverflow.com/questions/4571042/can-someone-explain-clojures-unquote-splice-in-simple-terms |
| 11:06 | mdeboard | vijaykiran: cool, thanks |
| 11:11 | mdeboard | oh good I'm glad I was in multiple channels so they could see my quit message. |
| 11:11 | mdeboard | :( Sorry, it was a poor joke from another channel. |
| 11:26 | squidz | if I have arrays in a list how can i put them into another array instead? |
| 11:28 | squidz | nvm I just use (into [] ... |
| 11:28 | Kowboy | that would be a vector |
| 11:28 | Kowboy | is that what you want? |
| 11:29 | Kowboy | or do you want a native Java array? |
| 11:29 | squidz | yes |
| 11:29 | squidz | i meant vector sorry sometimes I mix them up |
| 11:29 | Kowboy | that's ok |
| 11:30 | squidz | but im still a little confused by my code. At one point my function returns a vector, then at another point it returns an array |
| 11:30 | Kowboy | no need to apologize, we are happy you are learning clojure |
| 11:31 | Kowboy | well they can both be treated generically as sequences, it's just that vectors are "safer", while arrays may be faster depending on your use case |
| 11:33 | Kowboy | how long have you been using clojure? |
| 11:33 | squidz | https://www.refheap.com/paste/7314 here, (n-col) returns an array, but when ran inside line 20 its returning aa list |
| 11:33 | squidz | ive been coding now for 2/3 days |
| 11:34 | Kowboy | map always returns a sequence |
| 11:34 | Kowboy | which looks just like a list when printed out |
| 11:34 | Kowboy | same thing with reduce |
| 11:34 | llasram | squidz: The vocab you want is 'vector' vs. 'seq'. In your `if`, when the expression is true, the `reduce` yields a vector. Whe false, as Kowboy is saying, the `map` yields a `seq` |
| 11:35 | Kowboy | sorry, what am I saying |
| 11:35 | Kowboy | reduce can return anything |
| 11:35 | squidz | ah right, its switching according to the if, thank you |
| 11:36 | Kowboy | if you want the same thing, you can wrap it with (seq your-vector-here) |
| 11:36 | squidz | so map always returns a seq |
| 11:36 | squidz | i actually want it as a vector |
| 11:36 | Kowboy | prefer seqs over specific implementations whenever possible |
| 11:36 | squidz | if i'm running these functions a lot, would vectors perform better than sequences? |
| 11:36 | Kowboy | do you need random access? |
| 11:37 | squidz | yes |
| 11:37 | Kowboy | it's the same concept as programming to interfaces in Java |
| 11:37 | Kowboy | should you pass around a List or ArrayList? |
| 11:37 | Kowboy | ok, if you need random access, that's a different story |
| 11:37 | squidz | so using a seq, clojure can handle all structures implementing seq |
| 11:37 | Kowboy | right |
| 11:38 | Kowboy | and most sequence methods will return a seq anyway |
| 11:38 | squidz | well in line 11 and line 5 of my paste i use nth |
| 11:38 | Kowboy | plus, with seqs, you often get laziness for free |
| 11:38 | llasram | If you really need random access, you can use the Clojure 1.4 `mapv` to perform a map which directly and efficiently yields a vector |
| 11:38 | Kowboy | you can still use nth with a sew |
| 11:38 | Kowboy | *seq |
| 11:38 | Kowboy | it's just an O(n) operation |
| 11:38 | squidz | okay so that is not random access? |
| 11:39 | Kowboy | I think so, someone correct me if I am wrong |
| 11:39 | squidz | okay |
| 11:39 | Kowboy | yeah, the map will create a lazy-seq |
| 11:39 | llasram | Yeah -- nth is O(n) for seqs, O(1) for vectors |
| 11:39 | squidz | so I will refactor my code to use sequences instead of vectors |
| 11:39 | Kowboy | even if the seq is backed by a vector? |
| 11:39 | squidz | okay so just a little slower |
| 11:40 | squidz | but it shouldnt be a big problem |
| 11:40 | squidz | it is just to transform some data of mine |
| 11:40 | squidz | so it's a one time thing |
| 11:40 | Kowboy | oh wait, it is not backed by a vector here, nm |
| 11:40 | Kowboy | yeah, prefer seqs until you have a performance problem |
| 11:40 | squidz | what do you mean not backed by a vector? |
| 11:40 | Kowboy | in most cases seqs will outperform anyway because of laziness |
| 11:41 | Kowboy | I saw the conj in your map function |
| 11:41 | Kowboy | conj tries to preserve the underlying type |
| 11:41 | Kowboy | so it returns a vector in this case |
| 11:42 | Kowboy | but that is for an *item* in the seq that map is returning |
| 11:42 | clojurebot | You don't have to tell me twice. |
| 11:42 | squidz | okay, i think i've been aproaching it the wrong way. I was always trying to use vectors, then having problems between mismatching vectors and sequences. When actually I can keep it simple and more general using sequences |
| 11:42 | Kowboy | exactly |
| 11:42 | llasram | Kowboy: Interesting question (seq backed by vector). It seems not -- `seq` on a vector returns an vector-specific seq implementation, but that implementation does not also implement Indexed, so `nth` does the O(n) operation |
| 11:42 | llasram | Man, it is bugging me that someone on this channel is using the name "so" |
| 11:43 | Kowboy | if and when you need to speed up random access (like if you are doing nth a bunch of times), then convert the seq to a vector |
| 11:44 | squidz | Kowboy: thanks for the help. You've helped me get a step farther with clojure |
| 11:47 | Kowboy | pass on what you have learned ;-) |
| 11:54 | squidz | but there is no sequence alternative for (subvec .. ? |
| 11:56 | scriptor | that sounds about right |
| 11:56 | scriptor | er, nvm |
| 12:00 | gfredericks | is there any standardized method for app configuration yet? |
| 12:03 | llasram | gfredericks: Does any language have such? :-) |
| 12:10 | zodiak | gfredericks, urm.. jst use clojure for it :) |
| 12:10 | zodiak | homoiconicity ftw |
| 12:11 | zodiak | gfredericks, (def conf (with-open [rdr (io/reader "props.clj")] (read (java.io.PushbackReader. rdr)))) |
| 12:11 | technomancy | inc |
| 12:12 | technomancy | gfredericks: though for fancy merging logic and defaults https://github.com/sonian/carica does a nice job |
| 12:14 | joegallo | I've used that library a few times, it's nice. |
| 12:14 | technomancy | disclaimer: I guess I wrote the first revision of that; not sure if any of my code still survived =D |
| 12:23 | tmarble | technomancy: I'm using lein2 for a search of clj-webdriver (w/ clojars-classic in project.clj) but I don't see 0.6.0-beta2 in the results? |
| 12:25 | borkdude | I have a question, probably related to noir. this website renders as html in my browser: http://michielborkent.nl:8080/ |
| 12:25 | mpenet | gfredericks: or for the lazy typist: (comp slurp read-string) |
| 12:25 | mpenet | err |
| 12:25 | borkdude | but when I make a virtual host (using Apache) http://twitter.michielborkent.nl/ - the site gets served as txt |
| 12:25 | mpenet | gfredericks: (comp read-string slurp) |
| 12:26 | borkdude | so, I assume noir doesn't add the content type correctly? |
| 12:26 | technomancy | tmarble: it's there, but it's on page 3 |
| 12:26 | technomancy | tmarble: oh, depending on your page size |
| 12:27 | technomancy | should probably boost the default given how long it takes to start lein to hit the next page |
| 12:27 | borkdude | this is noir 1.2.0 btw |
| 12:27 | technomancy | tmarble: definitely have some issues around sorting unfortunately |
| 12:27 | tmarble | technomancy: i'm in *shell* -- can I just not do pagination? |
| 12:27 | technomancy | tmarble: yeah, hang on |
| 12:27 | technomancy | :search-page-size 100000000 in the user profile |
| 12:32 | tmarble | technomancy: awesome sauce! |
| 12:37 | technomancy | 50 is probably a better defoult |
| 12:37 | technomancy | default |
| 12:47 | ucb | again, does anybody feel/have a setup where ritz-nrepl is slooooow? i.e. it takes about 20min to jack in? |
| 12:50 | joegallo | technomancy: i'm having a problem with lein2 search https://gist.github.com/499c4156050de2148ab6 |
| 12:51 | technomancy | joegallo: geez |
| 12:51 | technomancy | can you clear out ~/.lein/indices? |
| 12:51 | joegallo | i tried to rm -rf .lein/indices, but the problem remains |
| 12:51 | joegallo | beat ya! |
| 12:51 | technomancy | wat |
| 12:51 | hcumberd` | eeeek |
| 12:51 | technomancy | joegallo: we don't even control that part of the search implementation, we just call out to the nexus indexer =( |
| 12:59 | hugod | ucb: if you're reading the log - 20min is not normal for jack in |
| 13:06 | oskarth | lynaghk: hey, using reflex - is there anyway to have a CO depend on two or more other (derefed) COs? |
| 13:08 | borkdude | wtf … http://stackoverflow.com/questions/2428563/how-can-i-prevent-apache2-from-setting-the-content-type-header |
| 13:12 | lynaghk | oskarth: yeah, a watcher will be added to anything deref'd in the body of the computed-observable macro |
| 13:19 | borkdude | the page http://www.webnoir.org/ doesn't have a content type either |
| 13:20 | borkdude | but of course I don't know if it was build with noir… ;0 |
| 13:22 | ucb | hugod: hiya, I am reading now, I've tried ritz twice already and both times it's been very very slow. Is there a way I can trace what's it up to? Last time it was stuck caching JVM classes for ~15min |
| 13:22 | ucb | I actually had to kill emacs |
| 13:22 | ucb | mind you, perhaps it's nothing to do with ritz, but plain nrepl works a charm |
| 13:23 | hugod | ucb: does lein ritz-nrepl from a shell, and M-x nrepl to connect it, work any better? |
| 13:24 | hugod | you can add --log-level trace to get very verbose output |
| 13:24 | ucb | let me try that |
| 13:25 | ucb | just kicked off lein ritz-nrepl |
| 13:25 | ucb | for the record, I'm not running on an XT PC or anything :) |
| 13:25 | ucb | ooh |
| 13:26 | ucb | hugod: first thing that happened on M-x nrepl: https://friendpaste.com/2KfwQCQ8kFhqY3ni1hzasf |
| 13:26 | hugod | trampoline with LEIN_FAST_TRAMPOLINE=1 should help lein ritz-nrepl startup time |
| 13:26 | ucb | it was fast enough with lein ritz-nrepl |
| 13:27 | hugod | looks like you don't have nrepl-ritz.el loaded |
| 13:27 | ucb | strange |
| 13:27 | ucb | I installed it from marmalade/elpa |
| 13:27 | ucb | thought that'd take care of things? |
| 13:28 | hugod | or you could add the clojure-complete dependency to your dev :dependencies |
| 13:28 | hugod | maybe it's not requiring it automatically |
| 13:28 | hugod | try M-: (require 'nrepl-ritz) |
| 13:28 | ucb | hum, I don't have clojure-complete listed in my lein profile |
| 13:29 | ucb | the require worked just fine |
| 13:29 | ucb | right, now I do have ritz-* available |
| 13:30 | hugod | if you reconnect, you shouldn't see an error now |
| 13:31 | ucb | same deal with locating complete/* :/ |
| 13:32 | ucb | yup, now typing stuff in the repl complains about clojure-complete, but at least the repl is up in under 1min :) |
| 13:33 | hugod | nrepl-ritz should be overriding nrepl.el's use of clojure-complete. You can always add clojure-complete to your dev dependencies as a workaround. |
| 13:33 | ucb | you mean M-x nrepl-ritz? |
| 13:33 | borkdude | adding the content type with the content-type functon worked, http://twitter.michielborkent.nl/ - woohoo, but do I really have to do this for every defpage? |
| 13:34 | technomancy | borkdude: you could do it with middleware in compojure |
| 13:34 | technomancy | maybe there's a way to hack that into noir somehow |
| 13:34 | borkdude | technomancy yes, but not everything served might be an html file right? |
| 13:34 | technomancy | borkdude: right, but your routes are composable; you can add middleware to a subset of them really easily |
| 13:35 | hugod | ucb: no, just require'ing nrepl-ritz should have forced it to use nrepl middleware for completion |
| 13:35 | technomancy | borkdude: in compojure anyway |
| 13:35 | ucb | hugod: oh, I see |
| 13:35 | technomancy | but this is basically a textbook example of what's wrong with the way noir does things |
| 13:36 | borkdude | technomancy maybe I'll write my own defpage function (def-html5-page) which wraps defpage? |
| 13:36 | ucb | I just restarted my emacs just in case, same thing |
| 13:36 | ucb | hugod: this is my lein profiles: https://friendpaste.com/2KfwQCQ8kFhqY3ni1hi0cl (copied from the github for ritz-nrepl) |
| 13:52 | Norgelys | holis |
| 13:52 | Norgelys | hola no hay nadien |
| 13:56 | Norgelys | holaaaaaaaaaaaaaa |
| 13:59 | Norgelys | holaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| 13:59 | mattmoss | &(repeat 12 \a) |
| 13:59 | lazybot | ⇒ (\a \a \a \a \a \a \a \a \a \a \a \a) |
| 14:00 | mdeboard | &(apply str (repeat 12 \a)) |
| 14:00 | lazybot | ⇒ "aaaaaaaaaaaa" |
| 14:00 | Norgelys | holaaaaaaaaaaaaa |
| 14:00 | mattmoss | &(apply str (reverse "loh") (repeat 12 \a)) |
| 14:00 | lazybot | ⇒ "holaaaaaaaaaaaa" |
| 14:05 | al80 | can you explain why this line print only "a" and "c"? (do(println "a") (map print [1 2 3]) (println "c")) |
| 14:05 | nDuff | al80: map is lazy |
| 14:05 | Norgelys | 10:03:05) al80: can you explain why this line print only "a" and "c"? (do(println "a") (map print [1 2 3]) (println "c")) |
| 14:06 | nDuff | al80: consider wrapping that in doall |
| 14:06 | al80 | ok, if it is at the end of the do form, it is expanded. Why? |
| 14:06 | scriptor | what do you mean expanded? |
| 14:07 | hcumberd` | It's hard to understand expansion |
| 14:07 | AimHere | It'll be expanded because the repl wants to return the value of the last thing in the do form |
| 14:07 | nDuff | al80: the thing at the end of the do is returned |
| 14:07 | borkdude | hmm, I think I did smth wrong myself |
| 14:07 | AimHere | Insofar as 'expanded' just means evaluated |
| 14:07 | nDuff | al80: ...and the repl prints the returned values |
| 14:07 | nDuff | al80: ...and, it the process of trying to print them, it evaluates them. |
| 14:07 | al80 | ok thank you |
| 14:08 | borkdude | https://www.refheap.com/paste/7319 <- when I leave out the (html …) wrapped around (welcome-page) I get content type text/plain |
| 14:08 | AimHere | Well it's trying to evaluate them; printing them is the side effect |
| 14:08 | borkdude | but the page already has a doctype and everything so why would I use the html functino? |
| 14:08 | nDuff | AimHere: ...well, the point of evaluating is to get to the printing |
| 14:08 | hcumberd` | borkdude: headers! |
| 14:08 | nDuff | AimHere: if it weren't doing any printing, lazy things wouldn't be evaluated. |
| 14:09 | AimHere | nDuff, wrong way round; the problem here is that the function isn't being printed because it's not being evaluated |
| 14:09 | AimHere | s/printing/being printed/ |
| 14:10 | nDuff | AimHere: That's true, of course, but if something were trying to print it, it'd be getting evaluated in the process. :) |
| 14:10 | nDuff | AimHere: ...if something were trying to print the result of the map, that is. |
| 14:10 | borkdude | hcumberd` the html function only renders a string? |
| 14:11 | nDuff | AimHere: The reason the map isn't getting to evaluating (print) is that it isn't being evaluated, yes, but the reason it's only evaluated when it's in the last position is that only the thing that's returned gets printed. :) |
| 14:11 | hcumberd` | borkdude: hiccup/html or ring/html? |
| 14:12 | AimHere | Yeah, but what you're talking about 'printing' there is just the 'nil' that's the eval result |
| 14:12 | borkdude | hcumberd` I think it is hiccup's html here |
| 14:12 | nDuff | AimHere: Just so! |
| 14:12 | AimHere | Not the contents of the print statement |
| 14:12 | nDuff | AimHere: Yes, you're right -- that *is* what I'm talking about printing. |
| 14:13 | hcumberd` | borkdude: tried it at the repl? |
| 14:13 | hcumberd` | what kind of html is returned? |
| 14:14 | borkdude | hcumberd` going to do it now… I'll paste the static html for you |
| 14:14 | borkdude | hcumberd` https://www.refheap.com/paste/7322 |
| 14:17 | borkdude | hcumberd` hmm, (welcome-page) returns a list of two strings, one with the doctype and the other with the rest of the page |
| 14:18 | hcumberd` | borkdude: a list? |
| 14:18 | hcumberd` | not a map? |
| 14:18 | borkdude | hcumberd` a lazyseq |
| 14:20 | hcumberd` | borkdude: you are using noir? |
| 14:20 | borkdude | hcumberd` |
| 14:20 | borkdude | hcumberd` yes |
| 14:20 | hcumberd` | ahhh maybe your enclosing html elements are missing and defpage is sensitive to that |
| 14:21 | hcumberd` | I do not use noir,... |
| 14:21 | sshack | Anyone here do sqlkorma? I'm trying to see if it can access table/column annotations (comments in postgres). |
| 14:24 | hcumberd` | borkdude: what are you writing in noir? |
| 14:25 | borkdude | ah, found something.. (defpage "/" [] (list "foo" "bar")) results in page with "foobar" as content and no content-type, where-as (defpage "/" [] "foobar") results in the same page WITH content-type text/html |
| 14:25 | hcumberd` | borkdude: really in a list? |
| 14:25 | borkdude | hcumberd` just some toy, nothing special |
| 14:25 | borkdude | hcumberd` yes |
| 14:26 | hcumberd` | It should be more kind of a map, ring uses maps ... |
| 14:26 | hcumberd` | I thought noir->compojure->ring routes whould be the result |
| 14:27 | borkdude | hcumberd` defpage just expects a string, but I have no idea what it's behavior is when fed a seq, which I was doing |
| 14:27 | borkdude | its |
| 14:27 | technomancy | ring accepts seqs of strings simply so that they can be lazy; they should be treated the same way as strings |
| 14:27 | weavejester | Compojure assumes text/html for string types if no other content type is specified. |
| 14:28 | weavejester | It seemed a sensible default at the time |
| 14:28 | borkdude | weavejester it calls str on the thing and adds no content-type, something like that? |
| 14:28 | hcumberd` | technomancy: then the behaviour seems like a bug? |
| 14:28 | technomancy | hcumberd`: the fact that the same behaviour doesn't apply to seqs you mean? |
| 14:28 | technomancy | it does feel like an oversight |
| 14:28 | weavejester | Compojure has a protocol for rendering different types |
| 14:28 | weavejester | https://github.com/weavejester/compojure/blob/master/src/compojure/response.clj |
| 14:28 | weavejester | Oh, actually... |
| 14:29 | weavejester | Huh, Compojure does treat ISeqs of strings the same way |
| 14:29 | weavejester | Guess it's not my fault after all :) |
| 14:29 | hcumberd` | technomancy: that the content type is missed out if you are providing a seq |
| 14:29 | technomancy | heh; nice =) |
| 14:29 | technomancy | hcumberd`: yeah, according to that link it's not compojure's fault |
| 14:30 | hcumberd` | a problem of defpage ? |
| 14:30 | technomancy | weavejester: why is content-type a function vs just using assoc directly? |
| 14:30 | weavejester | Unless an older version of Compojure is being used. |
| 14:30 | technomancy | weavejester: oh, probably because of case insensitivity? |
| 14:30 | borkdude | weavejester in what version of compojure was this added? |
| 14:30 | technomancy | that's a really annoying quirk of http |
| 14:30 | borkdude | weavejester I'm probably using too old stuff then (noir 1.2.0...) |
| 14:31 | weavejester | technomancy: Well, it's more that it's just a common thing to want to do |
| 14:31 | weavejester | technomancy: And (content-type "text/plain") is slightly more readable than (assoc-in [:headers "Content-Type"] "text/plain") |
| 14:32 | technomancy | oh right; I was thinking it would be a plain assoc for some reason |
| 14:32 | clojure-newb | yo guys, I found (reduce #(update-in %1 [{:employer (:employer %2)}] conj %2) {} [jay mike john]) indexing a collection for me nicely (from a blog post), I'd like to modify it to count the items against each index instead of listing them… any ideas ? |
| 14:32 | technomancy | weavejester: does compojure handle headers case-insensitively? |
| 14:32 | weavejester | technomancy: Request headers are lower-cased by Ring in order to provide consistent keys |
| 14:33 | weavejester | technomancy: Response headers are sent as-is, but HTTP header names are case insensitive |
| 14:33 | technomancy | gotcha. best to have that handled at the lowest level possible I guess. |
| 14:33 | weavejester | technomancy: So it doesn't matter if you output "content-type: text/plain" or "Content-Type: text/plain" |
| 14:34 | borkdude | noir 1.2.0 depends on compojure 0.6.5 |
| 14:34 | weavejester | The only problem is middleware that updates headers set by the handler or other middleware |
| 14:34 | technomancy | weavejester: will that interfere with the auto-text/htmlizing if the case mismatches? |
| 14:34 | weavejester | borkdude: Oh, that's old. |
| 14:35 | borkdude | hmm, 1.2.1 does too |
| 14:35 | weavejester | technomancy: I see your point… hm… actually, I told a lie. If a string is returned, the content type is set to text/html regardless. |
| 14:36 | weavejester | technomancy: However, if you return a map, then it passes straight through |
| 14:36 | borkdude | but anyway, problem solved - I should have noted that an enlive deftemplate returns a lazyseq of strings |
| 14:37 | weavejester | So (GET "/" [] "Hello") will have a content type of "text/html" |
| 14:37 | technomancy | oh of course; if you care about your content type you won't hit that path anyway |
| 14:37 | hcumberd` | weavejester: I think header case sensibility for headers leads to different behaviour in some browsers |
| 14:37 | weavejester | But (GET "/" [] (-> (response "Hello") (content-type "text/plain"))) |
| 14:38 | weavejester | hcumberd`: I'd be interested in knowing which browsers have that bug. If you recall a link, let me know. |
| 14:38 | borkdude | probably I shouldn't have used enlive to serve a complete static html file in the first place, but consistency with the other pages made me do it |
| 14:39 | holo | is the use of clojure.lang.MapEntry. to create MapEntry still unadvised? |
| 14:40 | technomancy | holo: almost certainly |
| 14:40 | technomancy | just use a vector |
| 14:40 | holo | thanks |
| 14:41 | Norgelys | holoa |
| 14:44 | hcumberd` | weavejester: okay! RFC2616 says header field names are case-insensitive |
| 14:45 | seangrove | Is there a way to comp dotforms? |
| 14:49 | cemerick | seangrove: you mean .foo? |
| 14:49 | seangrove | Yeah |
| 14:49 | seangrove | (comp .foo .bar) |
| 14:50 | cemerick | well, those are sugar for the . special form. comp only works with functions. So, (comp #(.foo %) #(.bar %)) |
| 14:50 | seangrove | As a shorthand version of (comp (fn [x] (.foo x)) (fn [x] (.bar x))) |
| 14:50 | seangrove | yeah |
| 14:50 | seangrove | Just wondering |
| 14:50 | cemerick | yeah, that's the shortest option |
| 14:51 | cemerick | a macro could do it more concisely, but would be your own little thing, and have various limitations |
| 14:51 | seangrove | Heh, was just curious, it's not such a big deal |
| 14:52 | cemerick | :-) |
| 14:52 | cemerick | Generally, the answer to "Is there a way to bar foo?" is 'yes'. |
| 14:52 | cemerick | Just a matter of whether you care enough or not. |
| 14:52 | seangrove | Ah, should have qualified, "Is there a built-in, standard way to bar foo?" |
| 14:52 | technomancy | there is memfn |
| 14:54 | cemerick | heh, haven't used memfn in… |
| 14:54 | cemerick | well, ever, probably |
| 14:54 | mdeboard | huh. |
| 14:54 | mdeboard | memfn |
| 14:55 | llasram | Isn't it deprecated? |
| 14:55 | cemerick | No |
| 14:55 | technomancy | llasram: I think rich hates it but hasn't deprecated it? |
| 14:55 | technomancy | not sure |
| 14:55 | llasram | Ok |
| 14:55 | cemerick | Certainly fell out of use once the #() literal came around |
| 14:56 | hcumberd` | cemerick: how can memfn and #() can be compared I'm a bit confused |
| 14:56 | technomancy | I'd personally take one alpha token over two punctuation tokens usually |
| 14:57 | Chousuke | technomancy: do you ever program in haskell? :P |
| 14:57 | cemerick | hcumberd`: both can produce a function that invokes a Java method |
| 14:57 | mdeboard | `#(into #{} '(x ~(+ 2 1))) |
| 14:57 | cemerick | 'course, that's the only thing memfn can do, and not particularly well |
| 14:57 | technomancy | ,(macroexpand-1 '(memfn hello)) |
| 14:57 | clojurebot | (clojure.core/fn [target__2740__auto__] (. target__2740__auto__ (hello))) |
| 14:58 | technomancy | Chousuke: just a touch of ocaml |
| 14:58 | technomancy | hcumberd`: ^ |
| 14:58 | Chousuke | Heh. I don't know about ocaml but haskell people seem to love defining new operators. |
| 14:59 | Chousuke | usually with punctuation |
| 14:59 | nDuff | Heh. |
| 14:59 | Kowboy | ugggg, Java is so cumbersome to work with |
| 14:59 | Chousuke | then again, some of them are pretty neat. |
| 14:59 | nDuff | Recently had someone coming from Haskell over in #python complaining about not being able to do that |
| 14:59 | technomancy | Chousuke: can't be worse than scala: http://www.flotsam.nl/dispatch-periodic-table.html |
| 14:59 | nDuff | (creating new operators) |
| 15:00 | Chousuke | technomancy: I think the most popular lens library defines half a dozen or so operators |
| 15:00 | Chousuke | or a couple dozen. I haven't counted |
| 15:00 | hcumberd` | Scala is a mutant language for mutants |
| 15:00 | cemerick | technomancy, Chousuke: of course: http://glyphic.s3.amazonaws.com/ozone/mark/periodic/Periodic%20Table%20of%20the%20Operators%20A4%20300dpi.jpg |
| 15:01 | technomancy | cemerick: oh dear |
| 15:01 | oskarth | lynaghk: hmm, doesn't seem to work for me: https://gist.github.com/4218942 |
| 15:01 | technomancy | cemerick: still, an entire book on an HTTP client? |
| 15:01 | cemerick | I give perl a pass though, because any community that can produce a gorgeous "Periodic Table of Operators" like that is just doing just fine IMO. |
| 15:02 | cemerick | technomancy: book? |
| 15:02 | lynaghk | oskarth: what's the bit that isn't working? |
| 15:02 | technomancy | cemerick: the link at the bottom of the dispatch operator table |
| 15:02 | Chousuke | technomancy: check out eg. this page http://hackage.haskell.org/packages/archive/data-lens/2.10.2/doc/html/Data-Lens-Common.html :P |
| 15:02 | oskarth | lynaghk: the d CO that's depending on the two COs b and c |
| 15:03 | oskarth | am I calling it wrong somehow? |
| 15:03 | lynaghk | oskarth: so not working meaning that if you change b or c the value of d is not updated when you later deref it? |
| 15:03 | Chousuke | when your operator is "^!+=" you're taking it too far |
| 15:03 | clojure-newb | if I have an indexed map how do I process it to keep the key of each item, and get the count of the value of each item (which is a collection) ? |
| 15:03 | technomancy | Chousuke: ouch |
| 15:03 | hcumberd` | technomancy: which OS do you use? |
| 15:03 | technomancy | hcumberd`: debian |
| 15:03 | Chousuke | then again, none of those are strictly speaking necessary so I suppose it's fine |
| 15:03 | cemerick | technomancy: well, it's only $3 and 23 pages. I'll bet lein's doc could easily fill that space, even if it weren't prettied up for publication. ;-) |
| 15:03 | lynaghk | oskarth: also note that there is a bug in the ClojureScript compiler that breaks reflex somehow; it's fixed in master, but broken after whatever version lein cljsbuild 0.2.7 references |
| 15:03 | Chousuke | lenses themselves are pretty awesome |
| 15:03 | oskarth | lynaghk: it's compiling but breaks in the browser |
| 15:04 | lynaghk | oskarth: so see if you still have the problem when compiling with lein cljsbuild 0.2.7. |
| 15:04 | Chousuke | they remind me of common lisp generalized references but are even more general, purely functional, and all around pretty neat :P |
| 15:04 | oskarth | lynaghk: oh I see, could that be it? will try that, thanks |
| 15:04 | lynaghk | oskarth: yeah. give that a shot. If it's still broken, please put the stacktrace or unexpeceted results on the gist. |
| 15:04 | `fogus | Any language that allows me to embed a BASIC DSL right in the middle is fine by me: https://github.com/fogus/baysick and http://hackage.haskell.org/packages/archive/BASIC/0.1.5.0/doc/html/Language-BASIC.html |
| 15:05 | technomancy | cemerick: oh ok; not so bad then |
| 15:07 | AimHere | Does that mean BASIC is okay by you? |
| 15:07 | cemerick | BASIC is definitionally okay |
| 15:09 | `fogus | BASIC is BACK! |
| 15:09 | `fogus | BASIC is BAD (in the good way) |
| 15:09 | cemerick | I want line numbers in Clojure. |
| 15:09 | cemerick | I'll settle for form numbers. |
| 15:09 | unic0rn | O.O |
| 15:09 | llasram | cemerick: (recur-to 12) ? |
| 15:10 | `fogus | I think chouser was playing with something like that at one point |
| 15:10 | cemerick | absolutely |
| 15:10 | hcumberd` | chat party at tv primetime ;) |
| 15:10 | cemerick | `fogus: of course he was :-P |
| 15:12 | unic0rn | i guess line numbers were useful when 8bit machines had line editors, so you couldn't really edit the line without its number |
| 15:12 | unic0rn | clojure with line numbers... |
| 15:12 | unic0rn | abomination |
| 15:12 | cemerick | abomination?! |
| 15:12 | unic0rn | yes! :P |
| 15:13 | unic0rn | rotflmaoshtccomnaiweda |
| 15:13 | mdeboard | what |
| 15:13 | unic0rn | |
| 15:13 | cemerick | goodness |
| 15:13 | mdeboard | ,(google) |
| 15:13 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: google in this context, compiling:(NO_SOURCE_PATH:0)> |
| 15:15 | amalloy | cemerick: surely #(apply % %&) is a better gosub? |
| 15:16 | holo | a too-much-time-at-hands-question: which one is more idiomatic? (#' namespace/var) or (#'namespace/var) ? |
| 15:16 | cemerick | amalloy: waitaminute, I don't need a straight-man |
| 15:17 | hcumberd` | ,(google "bot supports google) |
| 15:17 | clojurebot | #<ExecutionException java.util.concurrent.ExecutionException: java.lang.RuntimeException: EOF while reading string> |
| 15:17 | hcumberd` | ,(google "google") |
| 15:17 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: google in this context, compiling:(NO_SOURCE_PATH:0)> |
| 15:17 | hcumberd` | ;( |
| 15:17 | cemerick | holo: the last one in here that put spaces after quotes is still on the island to which he was banished |
| 15:18 | cemerick | $google rotflmaoshtccomnaiweda |
| 15:18 | lazybot | [Grand Lake Links ACRONYMs] http://www.grandlakelinks.com/AlphabetSoup.shtml |
| 15:18 | hcumberd` | ahh thx cemerick |
| 15:18 | oskarth | lynaghk: cljsbuild 0.2.7 didnt help, stacktrace here: https://gist.github.com/4218942 [using clojurescript 0.0-1450] |
| 15:18 | cemerick | Bizarre, that's not the first result |
| 15:18 | hcumberd` | What is %& ? |
| 15:18 | hcumberd` | Is there a reference to the crazy clojure operators such as %2 ,... |
| 15:19 | lynaghk | oskarth: ah, I see what's going on |
| 15:20 | lynaghk | oskarth: the library is totally naive, and you have a diamond in the dependency graph. |
| 15:20 | lynaghk | d depends on c and b, and both c and b depend on a. |
| 15:20 | holo | cemerick, do you mean i'm just lucky i also didn't get banished to an island? |
| 15:20 | cemerick | holo: Nah, I'm just trying to fulfill a dare to be as unfunny as possible in channel. |
| 15:21 | oskarth | lynaghk: what's wrong with that? |
| 15:21 | oskarth | if a is changed somewhere I would expect b,c to be +1,-1 and d to be [a+1, a-1] |
| 15:21 | lynaghk | oskarth: some craziness is going on where the system is getting into a loop |
| 15:21 | oskarth | ah |
| 15:21 | lynaghk | oskarth: semantically, nothing is wrong with what you're trying to do. The problem is with my implementation (which was, and always will be, a total hack) |
| 15:22 | holo | cemerick, thanks for the info (i mean about the spaces) |
| 15:22 | oskarth | lynaghk: do you have any ideas for how to solve this type of problem? we could take a crack at a patch |
| 15:23 | lynaghk | oskarth: well, actually, it's not clear what is going wrong here because no values are actually getting updated. |
| 15:23 | `fogus | I'm disappointed at the poor showing for the word "hammock" --> http://plwords.herokuapp.com/languages/clojure |
| 15:23 | lynaghk | let me take a quick look |
| 15:26 | holo | `fogus, i notice some apps hosted on heroku (probably clojure apps) use that menu bar on the top. is it popular? is it a template with a name for which i can download? |
| 15:28 | llasram | holo: I assume the ubiquitous http://twitter.github.com/bootstrap/ |
| 15:28 | lynaghk | oskarth: okay, I fooled myself. The problem is not with both COs depending on the same atom, it's with dereferencing two COs within another CO, which is apparently something we've never run into before |
| 15:29 | `fogus | holo: Looks like a Github pages template to me. |
| 15:29 | lynaghk | oskarth: I don't have time to look into this today, but if you want to open up an issue on reflex I'll take a stab. Or, if you're feeling lucky you can dive into the implementation yourself---it's not terribly complex. |
| 15:29 | oskarth | lynaghk: yeah I see, do you have any ideas why is a problem? we took a short dive into the source code but couldn't find any immediate reasons to why it wouldn't work |
| 15:30 | oskarth | will take a stab at it regardless, but any pointers you might have would be great :) we are me and cpetzold btw |
| 15:30 | holo | `fogus, this is cool. thanks |
| 15:30 | lynaghk | oskarth: unfortunately, no. that's why this library (and callbacks in general) are terrible---they work until they don't and then it's a nightmare to debug. |
| 15:40 | hcumberd` | why is the clojure community growing so fast? |
| 15:43 | Raynes | hcumberd`: Steroids. |
| 15:43 | nDuff | hcumberd`: ...compared to what? But to throw in my own $.02 -- there are a lot of people who like LISPs for their aesthetics and flexibility, but Clojure is the most practical one for getting useful things done in the real world to have come along for a while. |
| 15:43 | Raynes | I like my non-buzzwordy answer better. |
| 15:44 | ivan | based on current trends, all of freenode will be in #clojure in a month |
| 15:45 | Raynes | Even the 1000 people in #haskell !?!?! |
| 15:47 | holo | the clojure community is the most friendly |
| 15:47 | hcumberd` | #C++ was so full it wasn't possible to join for a few days |
| 15:48 | hcumberd` | nDuff: compared to for example groovy, grails, vertx, jruby and all the other JVM languages. It is even more in focus than Google Go |
| 15:54 | oskarth | lynaghk: cloning reflex and running the tests I get 'error: no protocol method ISeqable.-seq defined for type number: 1' - is there something else I need to do to get the tests to run? |
| 15:56 | holo | google go supports plan 9 ^^" |
| 15:56 | hcumberd` | what is plan 9? |
| 15:57 | scriptor | hcumberd`: http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs |
| 15:58 | holo | i just read it on wikipedia. plan 9 is the next unix, or something. everything is files concept, distributed, name inspired from some bad rated movie |
| 16:00 | holo | i think nowadays, if someone invents a language, the first thing i want to read is |
| 16:00 | holo | answer to "why????" |
| 16:03 | hcumberd` | Does Plan9 have impact? |
| 16:03 | hcumberd` | I never heard of it before |
| 16:03 | hcumberd` | Wikipedia does not clearify all aspects |
| 16:03 | hcumberd` | microkernel? |
| 16:03 | hcumberd` | What's about google go? |
| 16:04 | scriptor | plan 9 never was used much outside of research |
| 16:05 | holo | hcumberd`, if you are interested in distributed operating systems and unix, you will definitely like the ideas behind plan9 |
| 16:06 | hcumberd` | holo: srsly plans to support FAT, work to extend plan9 with a google go compiler, last release 2002 |
| 16:06 | hcumberd` | "Last stable release 10 years ago" |
| 16:07 | mthvedt | a new meaning to the words stable release |
| 16:08 | holo | hcumberd`, if you want to use a sort of plan9 in your browser, you can use inferno. i don't know the developments since many years ago |
| 16:08 | nDuff | hcumberd`: Plan 9 has plenty of historical impact, yes -- if nothing else as a well-attended proof-of-concept re: modularity. |
| 16:08 | hcumberd` | In a perfect world GNU hurd has been released two days ago. Minix supports all file systems and is as usable as linux. |
| 16:08 | hcumberd` | + Clojure will not depend on the JVM anymore |
| 16:09 | holo | minix is as usable as linux? who said it? |
| 16:09 | scriptor | "in a perfect world" |
| 16:09 | hcumberd` | 'In a perfect world', sure we are not there yet |
| 16:09 | cemerick | Hardly anyone would use Clojure if it weren't a hosted language |
| 16:10 | hcumberd` | Do you know what GNU means? |
| 16:10 | hcumberd` | Gnu is Not Usable,... I think |
| 16:10 | nDuff | *plonk* |
| 16:10 | hcumberd` | cemerick: what is your definition of a 'hosted language' ? |
| 16:11 | holo | ">.> is this becoming philosophical? |
| 16:11 | cemerick | perhaps |
| 16:12 | cemerick | hcumberd`: One that targets an existing, mature runtime |
| 16:13 | Raynes | cemerick: I just realized that when I move to LA we'll be a country apart from one another. I'm not sure I can live with the distance. |
| 16:13 | cemerick | Raynes: I wonder if that means our schedules will make more or less sense to each other? |
| 16:13 | hcumberd` | Raynes & cemerick working for the same company? |
| 16:14 | Raynes | No. |
| 16:14 | cemerick | Clojure, Inc. :-P |
| 16:14 | hcumberd` | ;) |
| 16:14 | amalloy | i think it means Raynes will be going to bed when cemerick gets up |
| 16:14 | cemerick | That happens already |
| 16:14 | Raynes | cemerick: About the same, I think. I currently go to bed at 6AM. In LA, I'll go to bed at like 1-2AM. |
| 16:14 | Raynes | It comes out to about the same. |
| 16:14 | Raynes | amalloy: I already do, pal. |
| 16:15 | cemerick | ah, so you're staying constant w.r.t. the east coast |
| 16:15 | amalloy | yeah but it'll just be coincidence, not based on peeking in his window |
| 16:15 | hcumberd` | cemerick: you do not expect linux/bsd/... to be mature, existing runtimes? |
| 16:15 | Raynes | cemerick: I *think* it'll just work out that way. Not really doing it on purpose, it'll likely just be the natural rhythm I will fall into given the time I have to get into work and stuff. |
| 16:15 | cemerick | hcumberd`: Intel microcode is a runtime, too? #silly |
| 16:16 | Raynes | When I was in LA for that week working at the office I went to bed between 1-3AM and it all worked out fine. |
| 16:16 | cemerick | Has LA gotten better since 1996? That was my last (poor, unfortunately) impression of it. |
| 16:17 | Raynes | I think it depends on where you're looking. |
| 16:17 | Raynes | I was looking at the ocean, the history, and the hills. |
| 16:17 | holo | by the way, i released a fork of korma fixing an ssl lack of support for postgres. this affected heroku users (like me) https://github.com/ccfontes/korma . i posted an answer on stackoverflow, but no one gave me attention :( |
| 16:17 | cemerick | Oh, actually, 2001. |
| 16:17 | cemerick | Perhaps I've never seen the nicer parts of LA. |
| 16:18 | Raynes | lancepantz worked really hard to make me excited and happy about the move and he succeeded. |
| 16:18 | cemerick | My experience of CA has largely been defined by Santa Barbara, which, in general, doesn't have any bad parts. |
| 16:18 | holo | anyway, if someone needs it urgently, it's available on clojars |
| 16:18 | cemerick | Raynes: Yeah, don't let me blunt that. Having locals point you in the right direction is a huge deal. |
| 16:18 | Raynes | He showed me thinks I had quite literally never seen before, such as an Ocean, or a lighted cityscape at dusk. |
| 16:18 | Raynes | things* |
| 16:18 | Raynes | It was all pretty amazing to me. |
| 16:18 | amalloy | hah. isla vista is a pretty amazing bad part, cemerick, at least on friday nights |
| 16:20 | Raynes | I tried to get amalloy to let me room with him but he wasn't have none of it. He is afraid my sexy will tempt him to make bad decisions. |
| 16:20 | Raynes | having* |
| 16:20 | Raynes | I suck today. |
| 16:21 | hcumberd` | Is the JVM really a better platform than the OS? |
| 16:21 | cemerick | amalloy: maybe I missed it. What's so hot around UCSB? |
| 16:21 | hcumberd` | Years ago it was really hard to find somebody hosting a jvm for you. |
| 16:22 | hcumberd` | The most people sticked to php and mysql because it was available everywhere |
| 16:23 | holo | hcumberd`, i heard that making stable, reliable, mature, efficient compilers takes alot of effort and time, so nowadays, some designers host their languages in some existing runtime for practical reasons |
| 16:23 | amalloy | i'm not sure i understood the question. just that a college town for a famously party-heavy school is a disaster unless you are such a student. i was exaggerating, i suppose, based on being annoyed by them when i was a quiet sort living on campus |
| 16:23 | cemerick | ah-ha |
| 16:25 | hcumberd` | holo: clojure->jvm bytecode !! You have to write a compiler, regardless of the underlying parts |
| 16:25 | cemerick | I never spent much time up there. My uncle had a place in Goleta for years, which was very nice, and my grandparents used to live on State St. ~3 miles north of downtown. |
| 16:25 | cemerick | Fun times. |
| 16:25 | gfredericks | technomancy: regarding my config question from hours ago, thanks :) |
| 16:26 | gfredericks | I know folk around here tend toward the "slurp a config file!" route, but that still seems like a lot of boilerplate every time I do it |
| 16:26 | Raynes | amalloy: You're so quiet. ,3 |
| 16:26 | Raynes | <3 |
| 16:26 | cemerick | hcumberd`: re: holo's comment, you can include things like JIT, GC, library ecosystems, etc. |
| 16:26 | amalloy | cemerick: santa monica reminds me a lot of santa barbara. so at the very least there are good parts of LA |
| 16:27 | nDuff | amalloy: pardon? I was a non-partier at a non-party school, and didn't find such to be troublesome... but then, I'm not sure what the context of that question was. (Perhaps it was a response to something said by someone I have on /ignore?) |
| 16:27 | technomancy | amalloy: as the t-shirt says, there is no life east of PCH |
| 16:27 | technomancy | there's a narrow strip of habitable territory |
| 16:27 | nDuff | err, at a party school |
| 16:28 | cemerick | amalloy: oh, I'm sure. I've just never had the pleasure. :-) |
| 16:28 | holo | hcumberd`: yes, "library ecosystems": so why your question: Is the JVM really a better platform than the OS? i think you know the answer before you make the question |
| 16:28 | hcumberd` | JIT, GC,... are also existing and are reusable if you work with C |
| 16:28 | technomancy | C calling conventions are not suitable for a language with GC |
| 16:29 | technomancy | any time you cross the boundary between a managed (pleasant to code in) runtime and C, it's a nightmare |
| 16:29 | hcumberd` | holo: not to use existing libraries seems to be a bad idea so the JVM has impact |
| 16:29 | cemerick | hcumberd`: I think you just went off the reservation :-) |
| 16:29 | hcumberd` | But when you have a look at the average java lib quality you might think about it |
| 16:30 | hcumberd` | Is LISP an alternative to Clojure+JVM? |
| 16:30 | hcumberd` | The library ecosystem seems to be death |
| 16:33 | gfredericks | my ERC freenode buffer has a bunch of messages from -yuros- from earlier today claiming that everything I said was bullshit? |
| 16:34 | amalloy | gfredericks: maybe that's bullshit too |
| 16:34 | gfredericks | I can't handle that much meta |
| 16:34 | hiredman | it is irc |
| 16:35 | gfredericks | hiredman: I'm not familiar with what it takes to make something appear in the freenode buffer |
| 16:35 | gfredericks | unless you were just joking that everything in irc is always bullshit |
| 16:35 | hiredman | ^- |
| 16:36 | cemerick | A good null hypothesis. |
| 16:40 | aphyr | cemerick: Is there an easy way to change the default namespace of nrepl.server/start-server? |
| 16:40 | cemerick | aphyr: default namespace? |
| 16:40 | solussd | b |
| 16:40 | aphyr | I'm embedding an nrepl server in an application and would like to give users immediate access to some utility fns |
| 16:41 | aphyr | Be cool if I could drop them in a special namespace instead of 'user |
| 16:41 | aphyr | Digging through the code, haven't really figured out how that works yet. |
| 16:41 | amalloy | pretty sure if you want to give *users* immediate access to functions when in a repl, that's what the user ns is for |
| 16:42 | cemerick | What amalloy said. Refer whatever you want into 'user, and you're done. |
| 16:42 | aphyr | Righto. |
| 16:42 | aphyr | Wow, lesson learned: do *not* type (ns) at a repl client, haha |
| 16:43 | cemerick | aphyr: FWIW, the 'user default is established for sessions here: https://github.com/clojure/tools.nrepl/blob/master/src/main/clojure/clojure/tools/nrepl/middleware/session.clj#L96 |
| 16:44 | aphyr | amalloy: managed to hard-lock the whole client, had to background and kill it |
| 16:44 | cemerick | aphyr: (ns) just tosses an exception |
| 16:44 | amalloy | wat |
| 16:44 | cemerick | really |
| 16:44 | cemerick | what client? |
| 16:44 | aphyr | lein repl :connect localhost:1234 |
| 16:44 | cemerick | wahoo |
| 16:44 | aphyr | Is there a better way? I've also got reply sitting around but it took some classpath munging to start |
| 16:47 | cemerick | aphyr: I can't reproduce. (ns) always "works", even when I connect to an existing endpoint with lein repl :connect |
| 16:48 | aphyr | user=> (ns) |
| 16:48 | aphyr | ^CException in thread "SIGINT handler" java.net.SocketException: Broken pipe |
| 16:48 | aphyr | ... and now I can't reproduce. Yay state! |
| 16:48 | cemerick | SIGINT? |
| 16:48 | cemerick | Sounds like maybe a bit of reply wackiness |
| 16:48 | aphyr | Yeah, from my attempt to ctrl-c after it hung |
| 16:48 | cemerick | oh |
| 16:49 | aphyr | Immediately prior, I hit a CancellationException when it tried to print a cancelled future |
| 16:49 | aphyr | Wonder if that had to do with it... |
| 16:49 | pyr | fun fact, a (defprotocol) member with the docstring in the wrong place will silently be discarded from the compiled class |
| 16:50 | pyr | (defprotocol Foo (some-fn "i shouldn't be here" [this])) |
| 16:50 | aphyr | pyr: Have you discovered fun with multiple-arities yet? |
| 16:51 | pyr | aphyr: i.e ? |
| 16:52 | aphyr | That defprotocol, defn, and defrecord have different ways of defining multiple-arity functions, and the docstrings go in different orders |
| 16:52 | pyr | yup |
| 16:52 | pyr | i always mix where the docstrings go, which is how i discovered the silent discarding |
| 16:56 | llasram | aphyr: The different multi-arity methods kind of make sense when you think about which ones are defining Java methods (thus different arity == different method) vs storing a single multi-arity fn |
| 16:56 | llasram | aphyr: I'm not saying its good, but at least you can puzzle it out |
| 16:59 | technomancy | huh: https://mobile.twitter.com/missingfaktor/status/276423303923654656?p=v scala's .net variant is no longer officially maintained |
| 16:59 | hcumberd` | wow |
| 16:59 | cemerick | The ML thread is amusing. |
| 16:59 | cemerick | I hadn't really started to think of .NET as "legacy" yet. |
| 17:00 | technomancy | I actually couldn't get to the thread |
| 17:00 | technomancy | yay google groups |
| 17:00 | brehaut | wait, MS have given up on .net? |
| 17:00 | bbloom | evn Microsoft is starting to think of .NET is legacy…. |
| 17:00 | bbloom | even* |
| 17:00 | bbloom | it's not going anywhere anytime soon, but C++ and JavaScript seem to be the preferred platforms for win8 |
| 17:01 | hcumberd` | C++ is nice ;) |
| 17:01 | brehaut | that has got to be almost hte stupidest choice ever |
| 17:01 | hcumberd` | JavaScript too |
| 17:01 | bbloom | it's a shame really |
| 17:01 | cemerick | I haven't read anything about it, but it seems absolutely unthinkable on the face. |
| 17:01 | brehaut | bbloom: im surprised im saying this, but hurrah mono i guess |
| 17:01 | bbloom | back in the disasterous pre-vista days when longhorn was the codename, devdiv warned windows "don't use .net, it's not ready yet" |
| 17:01 | bbloom | but they built a whole OS on .net before it was ready. it was slow and crappy and didn't work at all, burned windows something fierce |
| 17:02 | technomancy | haha: "Can I do the actual excision. Pleeeeeeeeeeease." |
| 17:02 | bbloom | bigger issue was the hilarious overengineering occuring there |
| 17:02 | bbloom | but windows decided to ban .net as a matter of political spite |
| 17:02 | bbloom | so when javascript started becoming such a big thing, win8 decided to pick up javascript as sort of the window org's managed language |
| 17:02 | hcumberd` | bbloom: .net banned from windows? |
| 17:02 | bbloom | not really banned |
| 17:03 | hcumberd` | damn bad news for all c# people |
| 17:03 | bbloom | this is a hilarious oversimplification |
| 17:03 | bbloom | this was YEARS ago |
| 17:03 | technomancy | on the bright side google groups seems to have fixed the "you followed a link to a page using the new UI; that must mean you want your default changed" bug |
| 17:03 | cemerick | right, typescript. |
| 17:03 | bbloom | yeah, so typescript is dev div & microsoft research's play to be able to offer the same c# level of IDE integration/features to javascript |
| 17:03 | brehaut | typescript is actually pretty interesting i think |
| 17:03 | cemerick | gah |
| 17:03 | bbloom | brehaut: yeah, it's actually quite interesting |
| 17:04 | hcumberd` | is typescript the new c# ? ;) |
| 17:04 | hcumberd` | typescript ~ javascript ? |
| 17:04 | bbloom | hcumberd`: not really. javascript is window's c# :-P |
| 17:04 | brehaut | typescript is a superset of javascript but with structural static typing |
| 17:04 | cemerick | hcumberd`: coffeescript + engineering? |
| 17:04 | bbloom | c# (and vb.net) are still great for business apps |
| 17:04 | bbloom | c# is a fantastic language, especially compared to java |
| 17:05 | bbloom | anyway, typescript is definitely interesting |
| 17:05 | aphyr | cemerick: you know what ClassCastException clojure.lang.Symbol cannot be cast to clojure.lang.Namespace indicates, in tab-completion at the repl? |
| 17:05 | hcumberd` | .net is wired ... all the different languanges there VB.net C#.net |
| 17:05 | cemerick | except they never got the CLR optimized the way the JVM has been |
| 17:05 | bbloom | the google closure compiler, which clojurescript targets, has a type system that is embedded in /** comments */ |
| 17:05 | bbloom | cemerick: true |
| 17:05 | cemerick | aphyr: sounds like an issue with reply and/or clojure-complete |
| 17:05 | hcumberd` | But all c# programmers can move over to java |
| 17:06 | hcumberd` | the difference is only a little |
| 17:06 | hcumberd` | and W8 should support a JVM |
| 17:06 | bbloom | hcumberd`: not really, the difference is huge when you consider lambdas, expression trees, linq, etc |
| 17:06 | hiredman | hcumberd`: in the surface syntax |
| 17:06 | aphyr | Also seeing NoClassDefFoundError Could not initialize class riemann.bin, when trying to tabcomplete (riemann.bin/ |
| 17:06 | hiredman | but libraries are different, build systems are different, tooling is different |
| 17:06 | brehaut | hcumberd`: C# and Java are staggeringly different |
| 17:06 | bbloom | anyway, typescript's compiler is pretty young. it only really provides the type checking. google closure compiler is much richer as a compiler, with dead code removal, inlining, constant folding, closure lifting, etc |
| 17:07 | hiredman | the clr and the jvm are very different |
| 17:07 | hcumberd` | I remembered the C# / .net hype,... gah |
| 17:07 | cemerick | bbloom: just a matter of time. I'd welcome some JS optimizing compiler competition, really. |
| 17:07 | bbloom | anyone compiling to javascript should study both GClosure and TypeScript |
| 17:07 | bbloom | cemerick: agreed |
| 17:08 | bbloom | I've been thinking about this a bit because we want to eventaully make CLJS self hosting |
| 17:08 | technomancy | the great thing about JS-to-JS compilers is that you don't have to pick just one =D |
| 17:08 | bbloom | and if that means no JVM, it means no GClosure |
| 17:08 | bbloom | so it would be nice to see alternative type systems for JS |
| 17:08 | cemerick | technomancy: if you ping-pong 'em, all apps eventually compress to 3kb of high-value unicode |
| 17:08 | technomancy | I wonder how many JS compilers you could chain together before you went insane... |
| 17:08 | bbloom | and compare and contrast them |
| 17:09 | bbloom | technomancy: the answer is pretty much ONE, unfortunately…. CLJS->JS is sane and debuggable. JS->Advanced Optimized JS is a nightmare to debug |
| 17:09 | hcumberd` | Now sharepoint is everywhere,... C# is not used to build modules for it, it's javascript right? |
| 17:09 | bbloom | leads to some awkward repl sessions, let me tell you |
| 17:09 | bbloom | hcumberd`: C# isn't going away anytime soon |
| 17:10 | bbloom | hcumberd`: it still has a huge user base for web services and desktop apps in businesses. C# moves copies of Visual Studio |
| 17:10 | technomancy | cemerick: once you hit emojis as identifiers you know it's time to take a break |
| 17:10 | brehaut | cemerick: thats fine if you dont want to run on node.js which apparently uses UCS2 |
| 17:10 | cemerick | brehaut: heh, yeah, saw that one go by :-) |
| 17:11 | brehaut | i guess that wont matter for clojurescript |
| 17:11 | technomancy | it's really a shame how many of the non-tolkien fictional languages are just for unimaginative transliterations: http://www.omniglot.com/writing/fictional.php |
| 17:11 | technomancy | exactly 26 letters, etc |
| 17:12 | AimHere | Klingon is pretty decent in that respect |
| 17:12 | AimHere | Base 10 numbers though, but I suppose Klingons have an unimaginative 10 digits |
| 17:14 | bbloom | from the TypeScript site: "Read the specification in doc or pdf" |
| 17:14 | bbloom | entertains me that they even bother with the doc |
| 17:14 | bbloom | heh |
| 17:14 | brehaut | bbloom: at my last .net job, i wrote tests for 6 months. in doc |
| 17:15 | devinus | AimHere: is there a better base than 10 for the universe? |
| 17:15 | bbloom | brehaut: like unit tests? or like use case tests? |
| 17:15 | brehaut | bbloom: all the tests |
| 17:15 | technomancy | AimHere: yeah, it looks like they did their homework on that one |
| 17:15 | technomancy | nobody comes close to Tolkien though |
| 17:15 | brehaut | going all alan turing and running them on a farm of humans |
| 17:15 | amalloy | 10 is the only reasonable base |
| 17:16 | bbloom | devinus: I think we should invent 6 more digit characters and transition everybody over to hex… but i'll settle for america adopting the kilometer |
| 17:16 | brehaut | technomancy: being an actual linguist pays of ehh |
| 17:16 | technomancy | brehaut: a linguist with lots of free time =) |
| 17:16 | cemerick | brehaut: that's pretty awesome |
| 17:16 | brehaut | technomancy: ah, a professor of linguistics |
| 17:16 | llasram | technomancy: Being a linguist (well, I think still philologist, but anyway) definitely appears to increase the quality of the constructed languages you invent |
| 17:17 | bbloom | brehaut: *cringe* |
| 17:17 | brehaut | cemerick: it would have been more awesome if the farm of humans was not just me |
| 17:17 | cemerick | The last job I had had a QA person that ran through two binders of printed tests before each release. |
| 17:17 | hcumberd` | if you create interfaces (html/css/js) how do you do the layout? |
| 17:18 | brehaut | hcumberd`: in a pool of tears |
| 17:18 | hcumberd` | What components do you use in general? I've seen the JQuery UI things |
| 17:18 | hcumberd` | brehaut: ;) |
| 17:18 | AimHere | llasram > How do you explain Perl then? |
| 17:19 | hcumberd` | brehaut: table layout + I <3 java.util.Calendar |
| 17:19 | brehaut | cemerick: i think i know what the stockholm syndrome feels like |
| 17:19 | technomancy | this one looks legit too: http://www.omniglot.com/writing/dni.htm |
| 17:19 | hcumberd` | Remembering tshirts ;) |
| 17:19 | cemerick | brehaut: it's particularly pernicious when you're getting paid by 'em |
| 17:19 | llasram | AimHere: Huh. I did not know that. Well. That explains... something? |
| 17:20 | bbloom | one other interesting bit about TypeScript: It exposes "services" for IDEs. C#, VB, and F# are getting comparable services too. these are like clojurescript's analyzer in that you can use them as libraries to understand and manipulate source code. interestingly, however, these are "live" services in that they do stuff like incremental compilation and error recovery so they can provide IDE features while you're working like red squiggly underlines. the |
| 17:20 | bbloom | architecture is probably worth studying |
| 17:21 | bbloom | and, gloriously, the project uses git: https://git01.codeplex.com/typescript |
| 17:22 | brehaut | hcumberd`: table layouts are also known as "Im too lazy to actually learn how this technology works, so im going to hack it and then 6 months later when i have an unmamagable pile of excrement, i'm going to go onto twitter and bitch about how bad CSS is" |
| 17:23 | hcumberd` | brehaut: you made my day |
| 17:24 | bbloom | brehaut: CSS is bad… at application layout use cases |
| 17:24 | bbloom | hence the various proposals to fix that |
| 17:24 | brehaut | bbloom: oh yeah, dont get me wrong. CSS can be an utter nightmare, but i do get sick of people who never bothered to learn it bitching about it |
| 17:24 | hcumberd` | bbloom: render .png images with the whole page |
| 17:24 | hcumberd` | fixes all layout errors |
| 17:24 | hcumberd` | looks the same in all browsers |
| 17:25 | bbloom | hcumberd`: and it's a perfectly reasonable strategy for a very large number of use cases! |
| 17:25 | hcumberd` | that's the future, I'm sure. Just like windows 2000 |
| 17:25 | cemerick | s/png/svg |
| 17:25 | cemerick | fixed that for you |
| 17:25 | bbloom | as long as you have copy pastable text over it :-P |
| 17:25 | Kowboy | my WYSYWIG editor is Photoshop |
| 17:25 | brehaut | my wysiwyg editor is nano; i serve all my pages as text |
| 17:26 | hcumberd` | I'll just write XML directly to the browser 4 better user experience |
| 17:26 | hcumberd` | my wysiwyg editor is emacs |
| 17:27 | brehaut | hcumberd`: the long version re:layout is that theres no one solution anyone can recommend because it depends hugely on the application. its a case of whackamoling the suck of JS libs to find one that suits |
| 17:27 | hcumberd` | I'm happy with emacs as operating system |
| 17:28 | holo | how can i highlight the exceptions thrown from forms implemented inside the project root? |
| 17:28 | holo | i mean highlight with a color e.g. |
| 17:30 | nDuff | Anyone know offhand if squarepeg supports left recursion? |
| 17:38 | mthvedt | nduff: skimming the source, doesn't look like it |
| 17:38 | nDuff | Hrm. |
| 17:39 | bbloom | nDuff: I looked around for a OMeta-inspired parser for clojure and wasn't too happy with what i found |
| 17:39 | mthvedt | i don't trust this library… the author thinks pegs are a superset of CFGs |
| 17:39 | bbloom | lots of decidedly un-clojury libraries |
| 17:40 | mthvedt | i'm working on what i hope is a clojurey CFG library |
| 17:40 | jballanc | someone should just port Ian Piumarta's peg/leg to clojure |
| 17:40 | mthvedt | i wouldn't recommend it for anything important in its current state however |
| 17:41 | bbloom | mthvedt: publish a gist or refheap or something and maybe some folks will give you some feedback on the API |
| 17:41 | bbloom | i was looking for something where the grammar is *just data* maybe with a nice macro on top for the common use cases, but everything seemed extremely applicative style |
| 17:42 | mthvedt | bbloom: https://github.com/mthvedt/clearley#example |
| 17:42 | bbloom | mthvedt: looks interesting |
| 17:43 | bbloom | why does each line of the rule have an extra set of () ? |
| 17:43 | hcumberd` | How to render nice charts in clojure? Or better in Javascript? |
| 17:43 | bbloom | hcumberd`: lynaghk is working on some stuff |
| 17:44 | bbloom | hcumberd`: he's the clj visualization pro. try his http://keminglabs.com/c2/ project or talk to him about c2po |
| 17:44 | hcumberd` | already available on github? |
| 17:45 | hcumberd` | wow, that's nice |
| 17:45 | hcumberd` | Does clojurescript work well with JQuery/JQueryUI/JQueryMobile ? |
| 17:45 | mthvedt | bbloom: those are parse action bodies |
| 17:45 | mthvedt | oh |
| 17:45 | mthvedt | i see what you mean |
| 17:45 | AimHere | For javascript, there's d3.js, which I think lynaghk originally tried to clojurify |
| 17:45 | bbloom | mthvedt: yea, but they seem to always be pairs |
| 17:46 | mthvedt | bbloom: i think i wanted something similar to clojure defn for multiple arities |
| 17:47 | bbloom | '{sum [[sum \+ term] (+ sum term), [sum \- term] (- sum term), [term] term]} |
| 17:47 | bbloom | where the commas are new lines |
| 17:47 | bbloom | similar to let bindings |
| 17:47 | bbloom | and defrule could just be syntactical sugar |
| 17:48 | technomancy | huh; I didn't realize the Elm guy works at google |
| 17:48 | mthvedt | that's more or less what the grammar data structure looks like under the hood |
| 17:48 | bbloom | mthvedt: expose the data structure :-) |
| 17:49 | bbloom | mthvedt: pegs enable composable grammars! |
| 17:49 | mthvedt | hope to do that when i'm done :P |
| 17:49 | bbloom | i want to be able to (apply merge grammars) |
| 17:49 | bbloom | :-) |
| 17:49 | mthvedt | bbloom: pegs are not composable in the sense that if you have grammar g1 describing language l1, and g2 describing l2 |
| 17:50 | mthvedt | that g1 * g2 describes l1 * l2 |
| 17:50 | bbloom | mthvedt: i know, i was (sorta) kidding |
| 17:50 | bbloom | but if the production names are symbols with namespaces, then you COULD merge them |
| 17:50 | bbloom | but you still need to insert rules to allow embedding the grammars |
| 17:51 | brehaut | pltgames.com looks like it could be fun over the holiday period |
| 17:51 | bbloom | so after (apply merge grammars) you could (insert-rule grammar 'lang-a/foo … 'lang-b/bar …) |
| 17:52 | mthvedt | that's a good idea |
| 17:52 | bbloom | i wasn't at the conj, but somebody told me that the rally cry was "DATA ALL THE THINGS" |
| 17:53 | technomancy | bbloom: that wasn't just this conj =) |
| 17:53 | cemerick | I think there were at least four slides with that exact meme on them |
| 17:53 | clojurebot | qcon slides is http://qconlondon.com/london-2009/file?path=/qcon-london-2009/slides/RichHickey_PersistentDataStructuresAndManagedReferences.pdf |
| 17:54 | cemerick | A couple with that odd stick figure with a match as well |
| 17:54 | bbloom | clojurebot: that is a completely unrelated, but entirely useful link |
| 17:54 | clojurebot | Alles klar |
| 17:54 | bbloom | clojurebot: i have no idea what that means. |
| 17:54 | clojurebot | your idea of vars, symbols, and scoping is wackadoodle |
| 17:54 | bbloom | lol |
| 17:54 | bbloom | ~botsnack |
| 17:54 | technomancy | cemerick: the author of that comic goes to the coffee shop I usually work from |
| 17:54 | clojurebot | thanks; that was delicious. (nom nom nom) |
| 17:55 | brehaut | haha i fear that one might have been my fault somehow |
| 17:55 | cemerick | technomancy: oh? I figured it was a 4chan thing |
| 17:56 | brehaut | cemerick: is that necessarily mutually exclusive? |
| 17:56 | technomancy | cemerick: http://hyperboleandahalf.blogspot.com/ <- grep for coffee |
| 17:56 | cemerick | I am forever hopelessly behind on internet memes and slang. |
| 17:56 | brehaut | thats why we have technomancy |
| 17:56 | bbloom | cemerick: http://knowyourmeme.com/memes/x-all-the-y |
| 17:56 | technomancy | brehaut: not memes, just comics |
| 17:57 | technomancy | anyway this place has an espresso blend named after her |
| 17:57 | brehaut | technomancy: oh. i had just assumed funny pictures in general |
| 17:57 | amalloy | technomancy: oh, you run into allie at the coffee shop? so she hasn't like, crawled into a hole to die? |
| 17:59 | technomancy | amalloy: I haven't met her yet, I just keep noticing "Allie's Extreme Laser Blend" and the owner mentioned her once |
| 17:59 | technomancy | I did meet the Oatmeal at my other favourite coffee shop, |
| 17:59 | technomancy | (which is almost the same thing) |
| 18:00 | brehaut | I have not been to a coffeeshop with multiple blends in a long time |
| 18:00 | bbloom | well if she lives in seattle, maybe it explains why her blog talks about her being depressed for no reason |
| 18:00 | bbloom | i'm moving out of this city because i just can't take the gray winters any more.... |
| 18:01 | technomancy | dunno, I got depressed living in LA because it never rained or had clouds. |
| 18:01 | bbloom | heh. are you from seattle? |
| 18:01 | bbloom | i know you live here now |
| 18:01 | technomancy | I grew up in the tropics |
| 18:01 | brehaut | solution: all clojurists should move to new zealand and we can have conj '13 here |
| 18:02 | technomancy | I still really miss warm rain |
| 18:02 | dsantiago | technomancy: Where in the tropics? |
| 18:03 | technomancy | dsantiago: Indonesia |
| 18:03 | cemerick | technomancy: surprised you didn't end up in Boston, where every single kind of possible weather can be experienced. :-P |
| 18:03 | dsantiago | Ah. Interesting that Seattle suits you better than LA. |
| 18:04 | technomancy | couple years in LA and I discovered "The Golden State" is a euphemism for "it's mostly brown" |
| 18:04 | technomancy | cemerick: but I'm a wimp when it comes to the cold |
| 18:04 | Raynes | technomancy: You're killing my moving-to-LA buzz. |
| 18:04 | technomancy | 3-4 snowy days a year is just perfect for me |
| 18:05 | technomancy | Raynes: it's not so bad if you don't stray more than a few hundred meters from the water =) |
| 18:05 | technomancy | can't afford to do that with a family though |
| 18:05 | dsantiago | Raynes: As I always say, LA sucks, don't move here. |
| 18:05 | cemerick | technomancy: Heh, Bostonites are a bit wimpy. Head two hours west or north, then you'll start seeing real winter. |
| 18:05 | Raynes | technomancy: I plan to live in a Submarine. |
| 18:05 | Raynes | dsantiago: Shush. |
| 18:06 | technomancy | dsantiago: it was worse when I was there since the only tech jobs were in entertainment or defense |
| 18:06 | Raynes | dsantiago: You know you want me there. Life is meaningless without me. |
| 18:06 | brehaut | seriously guys: new zealand |
| 18:06 | cemerick | If you aren't accumulating icicles in your eyebrows, you're doing it wrong. |
| 18:06 | brehaut | you can live by the beach for cheap |
| 18:06 | technomancy | I drove across town for a Ruby meetup with a friend and when we arrived there was one other guy |
| 18:06 | brehaut | and still be relatively close to snow |
| 18:06 | dsantiago | Raynes: My point is, the biggest problems in LA are there are too many people here. |
| 18:06 | Raynes | Can't we kick a few out when I get there to make room? |
| 18:07 | cemerick | brehaut: Sounds nice, but aren't the clamps required to keep from falling off the bottom of the world a drag? |
| 18:07 | technomancy | dsantiago: I thought the root problem was the idea that building a city in the middle of the desert could even work? |
| 18:07 | dsantiago | That's what you didn't like about LA? |
| 18:07 | hiredman | cemerick: and the expense for helmets to avoid dropbear concussions? forget about it |
| 18:07 | Raynes | Las Vegas works. |
| 18:07 | brehaut | cemerick: nah, most of us who were born here develop really strong toes |
| 18:07 | technomancy | dsantiago: I was further inland |
| 18:08 | brehaut | hiredman: theres a ditch between us and the drop bears; its roughly as wide as cali is long. |
| 18:08 | cemerick | dsantiago: LA has nothing on NYC re: population; whatever problems there are, it can't be that |
| 18:08 | dsantiago | cemerick: Yeah, but Nyc copes with it better with public transport and dense urbanness. LA is a sprawling suburban city of just as many people and the main transport is cars. |
| 18:09 | hiredman | brehaut: I choose to believe that the wild wallabies released in to the wild in new zealand have become drop bears through covergent evolution |
| 18:09 | dsantiago | I mean, NYC has its own problems as well of course. Obviously I prefer LA overall. |
| 18:09 | brehaut | hiredman: thats a terrifying thought |
| 18:10 | nDuff | ...prefer... LA?! |
| 18:10 | cemerick | hiredman: when I emerge from the wikipedia tour that this dropbear lookup will surely provoke, I shall curse you. |
| 18:10 | zodiak | hey! LA is an awesome city |
| 18:10 | dsantiago | nDuff: Good! Don't move here! |
| 18:10 | zodiak | at least in LA, if people don't like you, you know it. Unlike SF |
| 18:10 | Raynes | zodiak: That's what I'm talking about! |
| 18:10 | hiredman | "Drop bears are commonly said to be unusually large, vicious, carnivorous koalas" |
| 18:10 | nDuff | zodiak: that's true. Can't say I'm a fan of SF either. |
| 18:11 | zodiak | LA is honest, brutally so, jst don't drive and stick near either Venice/Culver City/Santa Monica or out near the foothills (Arcadia etc) |
| 18:11 | nDuff | ...last time I hired someone from LA, he took a long vacation after his best friend was killed in a drive-by. |
| 18:11 | zodiak | ouch! |
| 18:11 | cemerick | SF appears to be a large dumpster out of which people have built a city. |
| 18:11 | zodiak | yeah.. you don't want to try to drive across town for a job in LA. that's a fair point. |
| 18:12 | technomancy | I have some friends still there who do that, and it's kind of sad |
| 18:13 | zodiak | ouch, yeah, I tried to commute between Arcadia and Santa Monica a while back. 2 hours one way (worst case). |
| 18:13 | zodiak | not good. |
| 18:13 | dsantiago | Yikes. |
| 18:14 | brehaut | ◎_◎ |
| 18:14 | brehaut | my longest commute has been 40 minutes on foot |
| 18:14 | brehaut | i cannot fathom driving for 2 hours a day |
| 18:15 | muhoo | cemerick: wow, really? |
| 18:15 | zodiak | brehaut, well, sometimes it was 4 hours :( |
| 18:15 | brehaut | zodiak: i literally cannot fathom that |
| 18:15 | nDuff | (also, flatness, population density, aggressive bike/ped plans...) |
| 18:15 | dsantiago | nDuff: Just moved to LA from Chicago earlier this year. |
| 18:15 | zodiak | nDuff, chicago is not bad, but yeah, you want to live near the workplace. move if you have to ;) |
| 18:16 | brehaut | admittedly the entire population of new zealand is smaller many american cities |
| 18:16 | technomancy | I was on the train an hour each way for a couple years in high school and swore never again. |
| 18:16 | zodiak | brehaut, it was.. brutal. I won't lie. |
| 18:16 | technomancy | even then, the train is way better than driving |
| 18:17 | nDuff | ...but another 30min would be fine. I mean, some time with reading material / personal electronics is pleasant or productive, depending on what one's doing. |
| 18:18 | technomancy | I could do 30 min if it's a straight shot |
| 18:19 | technomancy | transfers wreck any chance at concentration though |
| 18:19 | nDuff | *nod*. |
| 18:19 | nDuff | A few of the potential post-move job leads I have in mind are telecommute, which would make the commute only to the most conveniently-located coworking space. |
| 18:26 | technomancy | nDuff: that's what IRC is for =) |
| 18:26 | Bergle_1 | ooh a lighttable update. |
| 18:28 | ivaraasen | technomancy: an hour each way must have been really painful |
| 18:29 | technomancy | ivaraasen: I'm sure lots of people even in here go further |
| 18:32 | ivaraasen | technomancy: a friend of mine used to commute 1100 kilometers, although not daily |
| 18:32 | technomancy | well when I was in Singapore I literally commuted from one end of the country to the other |
| 18:33 | ivaraasen | intense |
| 18:36 | ivaraasen | I will probably be living 1.5k kilometers from where I'm going to work myself. luckily it's a two-four system, so you get four weeks off after working two weeks |
| 18:39 | ivaraasen | nDuff: due to hitting enter and having open parentheses? |
| 18:40 | nDuff | I haven't noticed myself making that mistake. |
| 18:40 | nDuff | ...it happens when executing complete, functional lines -- they eval, but print a bunch of whitespace after them. |
| 18:40 | nDuff | ...sometimes. |
| 18:44 | [1]abp | Can I somehow find all the ubound symbols in a given body of code with a macro? i.e. (some-macro (let [a 1] (+ a x)) finds x to be not bound in that context. |
| 19:00 | cemerick | muhoo: really, what? |
| 19:10 | seangrove | What's the best way to get a remote repl in cljs? |
| 19:11 | hiredman | https://github.com/hiredman/nrepl-cljs-middleware https://github.com/hiredman/drawbridge-cljs |
| 19:11 | hiredman | depends what you mean by remote repl |
| 19:13 | seangrove | hiredman: Yes, on reflection, I just meant 'repl' :) |
| 19:13 | seangrove | Checking out drawbridge |
| 19:14 | brehaut | afternoon talios |
| 19:14 | talios | 'lo |
| 19:16 | talios | brehaut - hows the weather your end of the world? |
| 19:16 | brehaut | talios: dark and thunderous |
| 19:17 | brehaut | bucketing down? better in orcland? |
| 19:17 | talios | I have fog and torrents of rain, but no thunder/lightening yet |
| 19:17 | talios | tornado out henderson just ripped up damage |
| 19:17 | brehaut | hurrah summer! |
| 19:17 | brehaut | far out, again? |
| 19:18 | talios | brehaut - http://www.nzherald.co.nz/nz/news/article.cfm?c_id=1&objectid=10852307 |
| 19:18 | brehaut | climate change is a bitch |
| 19:19 | brehaut | ha |
| 19:19 | Norgelys | hola |
| 19:20 | talios | hail! |
| 19:21 | brehaut | here that americans? you could be missing out on weather like this if you're country had summer now too |
| 19:22 | holo | brehaut, that sound like chinglish |
| 19:22 | brehaut | english is my first language |
| 19:22 | brehaut | im just really bad at it |
| 19:23 | holo | oh.. sorry. i thought you were quoting some funny sentence |
| 19:23 | brehaut | nope, that was all my failure |
| 19:23 | brehaut | as soon as i pressed enter i realised i had written a disaster |
| 19:23 | holo | >.> |
| 19:24 | seangrove | "I had written a disaster" |
| 19:24 | seangrove | Very nice :) |
| 19:25 | talios | brehaut - damn, just heard from a co-worker there was a fatality from the tornado |
| 19:25 | holo | brehaut, so that's why the preference for low syntax languages :) |
| 19:25 | seangrove | Hrm, I'm in a rhino-cljs repl using nrepl.el - how do I get out of the cljs repl and back to clj? |
| 19:25 | brehaut | talios: shit :( |
| 19:25 | talios | brehaut - not public knowledge but was on the fire-radio ( he's a volunteer firedude/marshall whatever) |
| 19:26 | brehaut | talios: well, its on the internet now |
| 19:26 | talios | DELETE^H^H^H^H^H^H^H^H^Hshit |
| 19:27 | seangrove | cljs.user> :cljs/quit => :cljs/quit |
| 19:27 | seangrove | Type `:cljs/quit` to stop the ClojureScript REPL |
| 19:27 | seangrove | Not quite, I think... |
| 19:27 | brehaut | talios: stuff is reporting 2 dead |
| 19:27 | Norgelys | hello |
| 19:29 | talios | brehaut - i thought clojure was your first language |
| 19:29 | brehaut | lol |
| 19:30 | cemerick | brehaut: didn't you hear? We get shit like that, then a blizzard the next weekend. |
| 19:30 | talios | cemerick - then move to NZ with us - NO BLIZZARDS! |
| 19:30 | talios | bliss |
| 19:31 | brehaut | we have snow too |
| 19:31 | brehaut | just not where talios is |
| 19:31 | talios | damnit WE HAD SNOW LAST YEAR |
| 19:31 | brehaut | what, really‽ |
| 19:31 | brehaut | in auckland? |
| 19:31 | cemerick | You can't be a flinty New Englander without being thinking that snowshoeing in 0ºF is a good time. |
| 19:31 | talios | technically it wasn't snow ( http://www.nzherald.co.nz/nz/news/article.cfm?c_id=1&objectid=10745187 ) |
| 19:32 | cemerick | talios: how are things your way? |
| 19:32 | brehaut | cemerick: from the part of New Zealand im from we have snow but not snowshoes. its more a case of falling on your arse a lot |
| 19:33 | cemerick | oh, we have that too :-D |
| 19:33 | Norgelys | por q ablan ingles |
| 19:34 | cemerick | The first morning after I bought the titanium macbook pro (~2002, I think?), I slipped on my way out to the car and landed on the damn thing. Torqued the case but good. |
| 19:35 | lynaghk | brehaut: are you still based in New Zealand? I'll be there for all of January and wouldn't mind meeting up with some Clojure folks. |
| 19:35 | talios | cemerick - things are good, just wet :) |
| 19:35 | brehaut | lynaghk: talios and I both are |
| 19:36 | talios | lynaghk - awesome - Auckland here - you can join us for a podcast :) |
| 19:36 | talios | of course - I'll have to kidnap and coerce brehaut into joining as well |
| 19:36 | brehaut | haha |
| 19:36 | lynaghk | brehaut, talios: I would love to do that! I'll be there (in Auckland) towards the end of December. talios, mind if I email you? |
| 19:37 | talios | lynaghk - sure - mark @ talios.com |
| 19:37 | brehaut | lynaghk: end of dec/jan is a pretty busy but id be open to doing something |
| 19:38 | lynaghk | cool! I'll ping you both. Nothing like esoteric programming languages to make new friends around the world =) |
| 19:38 | talios | I'm heading to Napier end of december and first week of Jan ( back on the 4th ) |
| 19:38 | talios | and back eve |
| 19:38 | talios | even |
| 19:38 | brehaut | talios: if we could organise something in the CBD its much easier for me to make it as i can just grab a bus both ways |
| 19:38 | seangrove | Getting an error trying to use cemerick's piggieback cljs-repl: https://www.refheap.com/paste/7331 |
| 19:39 | cemerick | seangrove: I think that's an old ClojureScript bug. What rev are you using? |
| 19:39 | talios | any one know if La Clojure has been updated for IntelliJ IDEA 12 at all? |
| 19:39 | cemerick | La Clojure is deadpooled as far as anyone can tell. |
| 19:40 | cemerick | oh, lookit that, it's on github now |
| 19:41 | seangrove | Let me check... using cljsbuild 0.2.9 which I believe is tied to a specific version of cljs |
| 19:41 | cemerick | talios: Looks like 12 compat is on master: https://github.com/JetBrains/la-clojure/commits/master?page=2 |
| 19:41 | talios | cemerick - yeh - coworker just mentioned that, it gets compat updates but no real improvement/features |
| 19:41 | cemerick | ah |
| 19:42 | cemerick | well, perhaps that's where the abandonware impression I've heard about from various people (incl. you now) comes from |
| 19:42 | brehaut | talios: ram is cheap, just run ccw/eclipse as well :P |
| 19:43 | talios | mmmm, can I run a headless eclipse/ccw via Idea |
| 19:43 | cemerick | buh? |
| 19:43 | cemerick | sounds like eclim |
| 19:43 | cemerick | (which doesn't work on OS X :-( |
| 19:44 | talios | eclim yeh :) I'm sure we could write a IDEA wrapper |
| 19:44 | talios | oh really? poo |
| 19:44 | seangrove | Is cljsbuild 0.2.9 pretty far behind Clojurescript at this point? |
| 19:45 | cemerick | seangrove: no, but it's not tied to anything |
| 19:45 | cemerick | it uses whatever is set in :dependencies |
| 19:45 | cemerick | I have no idea what its default is though |
| 19:45 | seangrove | Ah, so there's a way to easily get cljsbuild to use a different version of cljs? |
| 19:46 | brehaut | im not sure i understand what a headless eclipse would be? |
| 19:46 | cemerick | just as a dependency, as with any other clojure lib |
| 19:46 | cemerick | brehaut: eclipse that you interop with to drive another environment (e.g. gvim) |
| 19:46 | clojurebot | Something weird that I noticed: & (use '[clojure.contrib.json :as json]) & &| (json/pprint-json nil) |& |
| 19:46 | lazybot | java.lang.RuntimeException: No such namespace: json |
| 19:47 | aamar | Is clojuredocs still being maintained? |
| 19:51 | technomancy | aamar: there is work underway on a replacement |
| 19:51 | technomancy | or next-gen version I guess |
| 19:52 | technomancy | the backend is all there but they need someone to do the web UI |
| 19:52 | muhoo | cemerick: hatin' on SF? |
| 19:52 | aamar | technomancy: cool, good to hear. Are they looking for help? |
| 19:52 | technomancy | aamar: I believe so |
| 19:53 | cemerick | muhoo: SF is okay; just not particularly clean when I was there |
| 19:53 | technomancy | aamar: actually just join #clojure-doc |
| 19:54 | aamar | technomancy: cool, thanks as always! |
| 19:54 | technomancy | sure thing. it would be great to get some movement on that front. |
| 19:54 | technomancy | and to get off rails =\ |
| 19:55 | muhoo | cemerick: the wind blows litter around, true. but for dirty, i grew up around NYC, and nowhere in california is as dirty as i remember manhattan or da bronx being. |
| 19:55 | technomancy | a number of the sidewalks there smell like poo |
| 19:55 | cemerick | where, there? |
| 19:55 | qubit[01] | whats SF ? |
| 19:55 | technomancy | in SF that is |
| 19:55 | muhoo | dog piss, actually. the last months of summer before the rains start. |
| 19:55 | cemerick | yeah, that was my impression |
| 19:56 | qubit[01] | theres a good joke in here |
| 19:56 | technomancy | muhoo: pretty sure some of it is human =( |
| 19:56 | muhoo | oh, heroku office is in SOMA ? :-) |
| 19:56 | muhoo | yeah, that'd be human. |
| 19:56 | cemerick | SF reminds me of NYC when we visited there ~1985/86 |
| 19:57 | muhoo | it doesn't rain all summer. by october, it can get bestial. rains come and clean everything up. |
| 19:57 | qubit[01] | , (define bestial) |
| 19:57 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: define in this context, compiling:(NO_SOURCE_PATH:0)> |
| 19:57 | cemerick | Manhattan is really wonderful. Never had the pleasure of the bronx, tho. |
| 19:57 | muhoo | i see what's going on. tech guys, visiting moscone, SOMA, market st, mission, TL, that's the grimer areas |
| 19:58 | technomancy | muhoo: yeah I don't understand the mindset that makes those go hand-in-hand |
| 19:58 | muhoo | cheap rent, i'd suppose. |
| 19:59 | muhoo | s/cheap/not-quite-so-outrageous/ |
| 19:59 | technomancy | maybe for the really early-stage startups |
| 19:59 | technomancy | which I guess set the trends for the more established ones =) |
| 19:59 | muhoo | exactly. it acquires a hipster patina. if you want the good people, you got to roll with that. |
| 20:00 | technomancy | someone told me it's the same reason low-slung pants became hip |
| 20:00 | technomancy | because when you get out of prison they don't give you your belt back |
| 20:00 | brehaut | lol |
| 20:00 | technomancy | and everyone wants to emulate the gangsters |
| 20:00 | qubit[01] | bestial, patina - I want to learn from you |
| 20:00 | muhoo | qubit[01]: i have nothing on technomancy in terms of erudition |
| 20:01 | technomancy | except in SF it's quaffing ramen instead |
| 20:01 | qubit[01] | good lord |
| 20:01 | technomancy | heh |
| 20:01 | brehaut | 'ramen' is american for instant noodles right? |
| 20:02 | technomancy | japanese, actually |
| 20:02 | muhoo | brehaut: http://en.wikipedia.org/wiki/Ramen |
| 20:02 | brehaut | technomancy: that makes more sense |
| 20:02 | muhoo | shit, now i'm hungry |
| 20:03 | brehaut | muhoo: the pictures in that article look like real food. is that what people mean when they talk about eating ramen at startups, or do they just mean noodles and broth? |
| 20:04 | muhoo | probably mean packaged instant version, yes. very, very cheap. |
| 20:04 | muhoo | college food |
| 20:04 | muhoo | sorry, uni :-) |
| 20:04 | qubit[01] | noodles and broth, many a college nights |
| 20:04 | brehaut | muhoo: haha thanks :) |
| 20:05 | berdario | Hello, I'm trying to understand what's the best way to debug code under clojure |
| 20:05 | berdario | something along the lines of python's pdb |
| 20:05 | brehaut | muhoo: my first year of uni was largely instant noodle and crap coffee fuelled |
| 20:05 | berdario | I'm looking at cdt, but it doesn't have any installation instructions |
| 20:05 | seangrove | Is there a way to get this to work? https://www.refheap.com/paste/7335 |
| 20:06 | seangrove | (< min value max), given that min or max could be nil |
| 20:06 | technomancy | berdario: if you can work mostly in terms of referentially-transparent functions you don't need a debugger |
| 20:06 | amalloy | brehaut: ramen in america usually means instant ramen, but there are actual reputable ramen restaurants as well |
| 20:06 | seangrove | I could put the three in a list, filter for nil, and then pass it to <, I suppose |
| 20:06 | technomancy | that said, there are definitely times that's not feasible. |
| 20:06 | berdario | I guess I could try to add it to a project.clj, but this code doesn't have one |
| 20:07 | technomancy | berdario: it seems like ritz is the most polished option for debugging |
| 20:07 | brehaut | seangrove: you could apply defaults for :min and :max in your desctructuring |
| 20:07 | berdario | technomancy: I need to traverse the stack |
| 20:07 | seangrove | brehaut: Ah, yes, that's much better, thank you |
| 20:07 | berdario | technomancy: thanks, I'll look into that |
| 20:07 | technomancy | berdario: you mean examining locals all the way up? pretty sure ritz does that. |
| 20:07 | berdario | technomancy: btw... maybe you can also suggest me a better approach this time |
| 20:07 | technomancy | swank-clojure has it too |
| 20:08 | berdario | I'm looking at the clojurescript sources |
| 20:08 | brehaut | seangrove: also, :keys [min max] |
| 20:08 | berdario | and I cannot find where closure/-compile is defined |
| 20:08 | technomancy | berdario: sorry; never used clojurescript |
| 20:08 | berdario | (I tried a grep over the whole sources) |
| 20:08 | brehaut | {:keys [min max] :or {min 0 :max 10}} for instance |
| 20:08 | brehaut | seangrove: ^ |
| 20:09 | seangrove | brehaut: Ah, perfect, I was just googling for the syntax |
| 20:09 | seangrove | I can never remember the syntax for default arguments |
| 20:09 | brehaut | http://clojure.org/special_forms#binding-forms ;; seangrove |
| 20:09 | berdario | technomancy: ok, but it's still clojure code... do you have any idea of why the declaration might not pop up anywhere? |
| 20:09 | technomancy | it's really not |
| 20:09 | berdario | technomancy: clojurescript it's implemented in clojure |
| 20:10 | seangrove | brehaut: Thanks |
| 20:10 | berdario | technomancy: I'm not interested in clojurescript code: I'm interested in the clojure code that compiles the clojurescript code |
| 20:10 | technomancy | yeah, but closure is a javascript compiler |
| 20:10 | berdario | technomancy: I know, but there's a closure.clj file... and I can't find a -compile inside of it |
| 20:13 | arohner | technomancy: when do you expect the next lein2 release? |
| 20:13 | technomancy | arohner: depends on how long it takes the new clojars releases to get reasonably populated |
| 20:13 | technomancy | I haven't looked at the numbers since the conj |
| 20:14 | brehaut | technomancy: new clojars is available somewhere? |
| 20:14 | technomancy | brehaut: yeah, no real docs though =\ |
| 20:14 | arohner | technomancy: oh? the next lein will break people downloading from old clojars? |
| 20:14 | technomancy | http://releases.clojars.org/ |
| 20:14 | berdario | ugh, ritz doesn't have any documentation :/ |
| 20:15 | berdario | maybe ritz-nrepl is what I'm looking for? |
| 20:15 | technomancy | arohner: it will change the default, yeah. using the old repo will require explicitly declaring it |
| 20:15 | brehaut | technomancy: do library developers need to do anything specific to publish to it? |
| 20:15 | technomancy | brehaut: due to some horrible concurrency bugs surrounding sqlite the process is currently manual =( |
| 20:16 | brehaut | technomancy: its almost like you said SQLite there but i must have misheard |
| 20:16 | technomancy | wasn't my idea =( |
| 20:16 | technomancy | brehaut: if you log in and view a jar you own you can either click "promote" or it will show a list of reasons it's not qualified for promotion |
| 20:17 | brehaut | technomancy: is hall do that then |
| 20:17 | brehaut | oh boy. lots of badness |
| 20:17 | technomancy | that'd be tops |
| 20:18 | brehaut | im a little surprised that its not pulling me up for having a project with an implicit group id |
| 20:18 | technomancy | that's standard issue for clojars |
| 20:19 | technomancy | it should probably yell at you if you try to promote an org.clojars.* group-id though |
| 20:19 | brehaut | technomancy: real question is, should i be fixing that |
| 20:19 | technomancy | not unless it's a name that's likely to conflict |
| 20:20 | technomancy | please don't do this: https://github.com/amitrathore/conjure |
| 20:20 | brehaut | technomancy: mind if PM you? |
| 20:20 | technomancy | sure |
| 20:21 | muhoo | you're running sqlite multi-threaded? :-O |
| 20:22 | technomancy | muhoo: apparently it's not a problem inherent in sqlite, just in the jdbc adapter |
| 20:22 | technomancy | you can have concurrent access as long as it's from a single process |
| 20:23 | basicsensei | what am I missing when I use :aot [memorystone.s] in project.clj and lein jar includes everything as .class including all project dependencies and every project namespace |
| 20:23 | basicsensei | (with some lein2 from master) |
| 20:23 | basicsensei | (in other words it's like :aot :all) |
| 20:24 | hiredman | :aot is transitive |
| 20:24 | technomancy | basicsensei: the clojure compiler doesn't support AOTing a namespace without AOTing what it requires |
| 20:24 | hiredman | so anythign you require, or cause to be loaded in some other way (including code from other libraries) will be be emitted as class files to disk |
| 20:25 | technomancy | basicsensei: leiningen includes some mechanism for deleting those after compilation (see `lein help sample`) but there is no way to avoid compiling them |
| 20:26 | basicsensei | alright, so even if I'm not explicitly using the project dependencies in any way in that namespace (in :aot) ie. if I just have (ns memorystone.s) then some prn it will still want to include those dependencies |
| 20:26 | basicsensei | ok I'll take a look at that thanks |
| 20:27 | talios | really should add support for automatically cleaning them up to the maven plugin - been meaning to do that for ages |
| 20:27 | technomancy | talios: it breaks pretty wretchedly with protocols and records |
| 20:27 | hiredman | basicsensei: no, that should not be the case |
| 20:27 | technomancy | talios: clojure can't fall back to the JITted version of protocols like it can for regular defns |
| 20:27 | talios | technomancy - ug *yay* |
| 20:28 | basicsensei | lein help sample shows this line "../../../sample.project.clj" |
| 20:28 | technomancy | I had it on by default for one release and didn't notice it because I don't use protocols; that didn't last long |
| 20:28 | technomancy | basicsensei: uh oh. are you running a release or from source? |
| 20:28 | talios | you don't use protocols? interesting |
| 20:28 | hiredman | basicsensei: if all you have in the file is (ns memorystone.s (:gen-class)) (def -main [& _] (println "hello world")) it should not generate class files for anything else |
| 20:28 | talios | just not of use in what your using, or some other reason? |
| 20:28 | basicsensei | technomancy: it's a compiled as .jar master (not latest though) |
| 20:29 | basicsensei | hiredman: I'll (re)check that |
| 20:29 | technomancy | basicsensei: on Windows? |
| 20:30 | basicsensei | technomancy: yes |
| 20:30 | technomancy | talios: well I don't have any need for writing polymorphic functions |
| 20:31 | basicsensei | hiredman: I have the feeling that I'm missing a prior lein clean? |
| 20:31 | technomancy | basicsensei: ok, in that case it's a known bug |
| 20:31 | technomancy | shouldn't be an issue on a stable release |
| 20:31 | basicsensei | oh |
| 20:32 | technomancy | or at least, when I do need polymorphism it's not dispatched on the class of the first argument. |
| 20:32 | basicsensei | hiredman: you were right it works as you said, I just had to lein clean |
| 20:35 | basicsensei | excellent that's what I was really missing in my first question: lein do clean, jar |
| 20:35 | basicsensei | what I had was leftovers from :aot :all |
| 20:39 | berdario | I still haven't a debugger |
| 20:39 | berdario | but I realized just now that I could've done (source closure/-compile) |
| 20:40 | basicsensei | can aot a gen-class implementing a class which has since been recompiled? getting IncompatibleClassChangeError |
| 20:41 | seangrove | hm, how can I have js->clj make keywords from the strings? |
| 20:41 | basicsensei | ie. I have this :implements [org.bukkit.plugin.java.JavaPlugin] but JavaPlugin appears to be newer when my code gets executed, ie. maybe it's not the same one that I had in project dependencies |
| 20:43 | berdario | nrepl-ritz is calling the wrong shell -_- |
| 20:46 | holo | random remark: it seems a defmulti- there is not :( |
| 20:48 | brainproxy | holo: you can still mark it private, just a sec, finding the syntax |
| 20:49 | holo | hi brainproxy! thank you again |
| 20:49 | brainproxy | holo: (defmulti ^:private ...) |
| 20:49 | holo | oh, that's cool |
| 20:50 | basicsensei | awesome |
| 20:50 | brainproxy | same thing can be done with plain def, since there's no def- |
| 20:50 | holo | greatness |
| 21:07 | basicsensei | are we expected to use clojure classloader to load a gen-class that implemented a java class? I wonder if that's why it fails with IncompatibleClassChangeError or is something else I'm missing |
| 21:20 | aphyr | What's the best way to extract a line number from a LispReader$ReaderException? |
| 21:21 | aphyr | Am I really supposed to use reflection hacks? |
| 21:29 | technomancy | aphyr: I think in 1.5 it uses ex-info but no idea before that |
| 22:16 | gfredericks | is 4clojure open-source? |
| 22:17 | bbloom | gfredericks: read the home page |
| 22:17 | gfredericks | that has got to be my most blatantly unresearched question ever. |
| 22:17 | brehaut | https://github.com/4clojure/4clojure |
| 22:17 | bbloom | hence the blatant RTFM equivalent response |
| 22:18 | gfredericks | totally appropriate |
| 22:18 | jyu | hello |
| 22:18 | gfredericks | brehaut should be ashamed of himself for not being more dismissive |
| 22:18 | brehaut | gfredericks: i cant answer the hard questions, so i take what i can get |
| 22:18 | jyu | is it possible to figure out the code coverage along with midje |
| 22:21 | gfredericks | dangit now I need to learn about mongo. |
| 22:22 | brehaut | gfredericks: i have a video about that somewhere |
| 22:23 | muhoo | hahahaha |
| 22:23 | muhoo | something about it being web scale? |
| 22:23 | brehaut | that'd be it |
| 22:23 | brehaut | two bears having an informative discussion |
| 22:23 | gfredericks | those bears have an awful lot of informative discussions |
| 22:23 | muhoo | i weep for the damage that has been done to the reputation of that product by that hilarious video. |
| 22:23 | brehaut | haha |
| 22:24 | muhoo | it's probably a really good product. but so hard to take seriously now without willfully putting that video out of my mind. |