text:
0:08 alexbaranosky: what the heck is &form ?
0:08 :)
0:08 cgray`: in what context?
0:08 alexbaranosky: I'm not sure if its a Clojure thing or a Midje code-base thing
0:08 I see it in some code I'm reading
0:09 cgray`: is it an argument to a function?
0:09 alexbaranosky: (in Midje)
0:09 yes, as well as to a macro, and also in a backtick empalte like such : '~&form
0:10 empalte => template
0:10 ahhh is it anaphora or something/
0:11 cgray`: it's not something i've seen :)
0:11 alexbaranosky: a way to reference the form of macro that you're inside of?
0:16 cgray`: it could just be a weird name for a variable...
0:17 i would think it would be here: http://
0:24 technomancy: &form and &env are implicit arguments to every macro
0:24 lazybot: java.lang.RuntimeException: Unable to resolve symbol: form in this context
0:28 amalloy: alexbaranosky: it's anaphorically added to every macro definition: (defmacro foo [x] (println &form) x) (foo (+ 1 2)) prints (foo (+ 1 2)) and expands to (+ 1 2)
0:29 it's not mentioned in the reader because it's unrelated to the reader
0:29 alexbaranosky: technomancy, what does &env do?
0:32 amalloy, that's neat
0:32 amalloy: it's a map containing information about the lexical environment into which the macro will be expanded
0:33 alexbaranosky: you have an example of &env in action, in utilize - the datatypes namespace checks out &env to figure out what typehint its argument has been given
0:33 alexbaranosky: amalloy, checking..........
0:33 quotemstr: Wait --- rest is being changed, and the lazy sequence model redesigned?
0:34 amalloy: quotemstr: that is *very* old. the change has happened
0:34 quotemstr: Oh, okay. Good.
0:41 alexbaranosky: are there any good links to read more about &env?
0:41 nevermind: http://
0:42 didn't think I could effectively google for things starting with &
1:31 lghtng: ,&env
1:31 clojurebot: #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: &env in this context, compiling:(NO_SOURCE_PATH:0)>
1:31 lghtng: ,google &env
1:31 clojurebot: #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: google in this context, compiling:(NO_SOURCE_PATH:0)>
1:31 lghtng: ,g &env
1:31 clojurebot: #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: g in this context, compiling:(NO_SOURCE_PATH:0)>
1:32 lghtng: ,search &env
1:32 clojurebot: #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: search in this context, compiling:(NO_SOURCE_PATH:0)>
1:32 lghtng: ,uptime
1:32 clojurebot: #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: uptime in this context, compiling:(NO_SOURCE_PATH:0)>
1:32 amalloy: lghtng: if you're going to try to brute-force this, could you do it im PM?
1:32 lghtng: lol, ok
1:32 devn: heh
1:32 lghtng: sry
1:32 amalloy: $google &env
1:32 lazybot: [Jay Fields' Thoughts: Clojure: &env and &form] http://
1:32 devn: lghtng: np bro u r kewl
1:33 lghtng: what happened to the keywords in fsbot?
1:33 tnx
1:33 devn: ur so welcome bro
1:34 amalloy: lghtng: you're not in #emacs, buddy. we don't have fsbot
1:35 devn: "you're not in #emacs anymore"
1:36 justicefries: the new vim chantitle
1:36 devn: justicefries: in madison?
1:36 justicefries: me?
1:36 clojurebot: slime-installer is deprecated
1:37 justicefries: like the city?
1:37 devn: justicefries: indeed
1:37 justicefries: no, I spoke there at madison ruby conf...fell in love with it, wouldn't mind going back. why?
1:37 or living there.
1:37 devn: <-bendyworks
1:38 justicefries: oh nice.
1:38 yeah, seems like the main place for a rubyist to work.
1:41 I may end up moving there, we'll see. coolest place ever.
1:45 cgray`: ok, to answer my question from about 45 minutes ago, typehinting with ^"[Ljava.lang.Object;" is the way to go
1:45 amalloy: ^objects
1:45 cgray`: damn
1:45 i thought i tried that
1:46 amalloy: well, i guess it might not work anymore, but i think it's supposed to
1:46 cgray`: i might have tried ^Objects
1:46 amalloy: any you still want to know the general syntax for things that don't have a shortcut like objects
1:47 cgray`: yeah, you can get it with (type foo)...
1:47 it sped my code up by about 100x
3:53 quotemstr: Why is /= an "invalid token"?
4:00 amalloy: quotemstr: / is the namespace separator
4:05 quotemstr: amalloy: But it's not separating anything.
4:05 amalloy: that's why it's invalid
4:06 quotemstr: Symbols _starting_ with / are unambiguous and should be treated normally.
4:06 amalloy: meh
4:06 quotemstr: ( /= is what Lisp uses, so it'd be nice to be able to use the same symbol.)
4:06 amalloy: there's an exception for clojure.core//, but in general / isn't a legal part of a symbol
4:07 using /= instead of not= just because you're used to a different lisp is kinda gross. you can't use 1+ either; just dive in and use clojure's names
4:07 or +1 - i could never remember which order the dang things went in
4:08 quotemstr: 1+.
4:08 +1 is an integer.
4:27 Is there a way of writing (new foo bar) so that bar is evaluated?
4:27 That is, is there a way to choose the constructor used at runtime?
4:28 nickmbailey: that is how it will work by default
4:29 amalloy: i assume quotemstr meant he wants foo evaluated
4:29 nickmbailey: (new foo (bar))?
4:29 wait, foo or bar
4:30 amalloy: quotemstr: reflection. you can muddle through the javadocs to do it by hand, or let clojure.lang.Reflector/invokeConstructor do it
4:30 quotemstr: Err, yes, I meant foo.
4:30 Thanks.
4:32 nickmbailey: is it fairly standard to rebind *in* and *out* to new stream readers and use things like println and read-line for working with streams?
4:34 quotemstr: nickmbailey: I do it all the time in Lisp.
4:35 nickmbailey: just encountered it recently and the idea took me by surprise
4:36 quotemstr: Heck, I've seen people do that in C, with printf.
4:37 amalloy: really? surely it's easier to just use fprintf there
4:38 quotemstr: amalloy: Easier than reassigning stdout?
4:38 amalloy: yeah
4:40 quotemstr: amalloy: You might want to temporarily reassign stdout for the same reason you might want to temporarily bind *out*.
4:40 amalloy: i guess that's true
4:41 the only serious C programming i ever did was on a device with no stdout, so i guess i'm out of touch there
4:42 * quotemstr uses C every day.
4:48 gmaggior: Excuse me, can you tell me why (defn bbb [x y] ((get (vec x)) y)) and (bbb '(1 2 3) 1) give invalid argument exception to get?
4:49 amalloy: gmaggior: your parens are way off
4:49 inside of bbb
4:49 gmaggior: oh
4:50 amalloy: (defn bbb [x y] (get (vec x) y)) ;; although this would be simpler: (def bbb nth)
4:51 alexbaranosky: amalloy, I should remember to use nth next time I am writing a bbb util function
4:51 it's so much more concise
4:52 gmaggior: amalloy: thank you very much amalloy. It works. Actually I'm writing a function to simulate nth instead of using it (it is a 4clojure problem)
4:53 alexbaranosky: aha! nice, do they wouldn't let you try the old (def bbb nth) trick anyway
4:53 tomoj: alexbaranosky: consider (nth (range) 3)
4:54 Raynes: (def bbc "Doctor Who")
4:54 alexbaranosky: tomoj, ?
4:55 amalloy: yeah, i guess we should have added a test to verify that your nth works for infinite sequences. too late to change now, though
5:26 quotemstr: Why is :keys necessary when an :or is present?
5:26 A bare :or provides all the information you need.
5:26 amalloy: they're orthogonal
5:27 quotemstr: I want to write a destructuring expression with default key values, and I don't want to repeat the key names.
5:27 amalloy: (let [{user-name :user-record-data-name :or {user-name "no user"}} the-data] (do stuff with user-name...))
5:27 quotemstr: {:keys [a b] :or [a 0 b 2]} seems silly when the :or part indicates that key parsing is desired.
5:28 amalloy: no; the keys in the or refer to your local names, which are not by any means always the same as the keys in the original map
5:28 quotemstr: Err, {a 0 b 2}.
5:29 Still, I want is fairly common, I imagine.
5:29 amalloy: i don't really see :or get used that often. once in a while, sure
5:30 quotemstr: Maybe that's because you have to repeat the local names.
5:30 amalloy: haha
5:32 quotemstr: Why not follow CL and allow :keys [(key default-form)...] ?
5:32 amalloy: so, write a let+ macro that finds {:keys-or {a 0 b 2}} and replaces it with {:keys [a b] :or {a 0 b 2}}
5:33 quotemstr: or if you only use the value once, don't destructure it at all. (let [m (...)] (+ (m :a 0) (m :b 2)))
5:33 quotemstr: I'd have to provide a + version of every destructuring form.
5:51 Bahman: Hi all!
6:01 _ulises: morning folk
6:02 fbru02: hey guys !! I still have the same question that a couple days ago, before when evaluating sth with the same name it issued a warning , now it gives an IlligalStateException : x already refers to ... , is there away to enforce this evaluation?
6:04 _ulises: can one have different :pre and :post conditions for different arities of a function? or even, how do pre and post-conditions work when one defines functions like (defn foo ([] ...) ([p] ...) ...)?
6:05 fbru02: have any code to show what you're getting?
6:05 a simple example that is
6:06 fbru02: _ulises: no, is just more like the order i was using when developing... but let me think on how i can clarify
6:06 _ulises: fbru02: are you using slime?
6:06 fbru02: _ulises: yes
6:06 _ulises: I get that sometimes when I move things about between files and my swank server maintains state
6:07 I tried with (ns-unmap ...) but perhaps I wasn't using it correctly
6:07 I think you may want to experiment with that
6:07 as in, it didn't work for me, but in theory that's what you'd want to clear a namespace
6:08 fbru02: _ulises: awesome didn't know about its existence , thanks
6:09 _ulises: no worries
6:09 let me know if this works and how you got it to work though :)
6:21 * _ulises silently hopes somebody can shed some light into the pre and post conditions for multiple-arity fns
8:53 gfredericks: _ulises: I know it's been a couple hours, but I just confirmed at the repl that you can enter separate conditions for each arity-definition.
8:53 Specifically I did (defn foo ([a] {:pre [(pos? a)]} (inc a)) ([a b] {:pre [(= 15 (+ a b))]} (- a b))) and it worked as you would expect
8:55 Raynes: Yeah. I imagine I'd have tried it rather than asking about it for two days with no answers. :P
8:57 gfredericks: Raynes: does clojurebot have a snarky phrase handy for that?
8:57 ~try-it
8:57 Raynes: Don't think so.
8:57 clojurebot: I don't understand.
8:57 Raynes: clojurebot: try-it |is| Why not just try it? It's quicker that way.
8:57 clojurebot: 'Sea, mhuise.
8:58 Raynes: ~try-it
8:58 clojurebot: try-it is Why not just try it? It's quicker that way.
8:58 Raynes: Well... close enough.
8:58 clojurebot: try-it |is| <reply>Why not just try it? It's quicker that way.
8:58 clojurebot: 'Sea, mhuise.
8:58 gfredericks: dang what was the syntax for that.
8:58 Raynes: ~try-it
8:58 clojurebot: try-it is Why not just try it? It's quicker that way.
8:58 gfredericks: ~try-it
8:58 Raynes: Well, something like that.
8:58 clojurebot: Why not just try it? It's quicker that way.
8:58 Raynes: There we go.
8:58 gfredericks: Raynes: it worked, he's just got both now
8:58 clojurebot: forget try-it
8:58 clojurebot: Why not just try it? It's quicker that way.
8:58 gfredericks: ~try-it
8:58 clojurebot: try-it is Why not just try it? It's quicker that way.
8:59 Raynes: I concede.
8:59 gfredericks: clojurebot: forget try-it |is| Why not just try it? It's quicker that way.
8:59 clojurebot: I forgot that try-it is Why not just try it? It's quicker that way.
8:59 gfredericks: ~try-it
8:59 clojurebot: Why not just try it? It's quicker that way.
8:59 gfredericks: okay I think he's better now
8:59 ejackson: i think clojurebot had too much turkey
9:00 gfredericks: ~turkey
9:00 clojurebot: Excuse me?
9:12 biallym: Hey is there a way to have a function called on or around garbage collection of an object?
9:13 Like an Idisposable for C#
9:52 ambrosebs: has anyone explored adding compiler hooks to Clojurescript?
10:03 tauntaun: Glad to see that clojurebot is freely available. I'll assume that the absence of a user guide means it's trivially easy to use :-)
11:27 fliebel: Is there a 1.3 Clojure lib for dealing with complex numbers?
11:37 reiddraper: What's the rationale behind the namespace naming pattern foo.core? Is it not possible to put code in the foo namespace directly?
12:00 fliebel: reiddraper: You can, I think the idea is that when you have a large app, it makes sense to have a core.
12:00 technomancy_: reiddraper: it's not possible in certain contexts
12:06 reiddraper: ok, it's not a restriction for me or anything, just curious. thanks
12:43 fliebel: technomancy_: re namespaces: in which cases is it not possible?
12:49 gtrak``: Raynes, so are you considering university?
12:50 Raynes: gtrak``: Not particularly. At some point, possibly.
12:50 fliebel: I don't remember the details, but I know of some classloader bizarreness that is the result of single-segment namespaces.
12:51 Man, why isn't the guy who did this here: https://
12:51 I need to tell him how awesome he is.
12:52 fliebel: Raynes: Ok, so we should have more names like del.ico.us, because I dislike core.
12:53 Raynes: I like core. Core is cool.
12:54 mdeboard: Raynes: Great blog post
12:54 Raynes: mdeboard: Thanks. :>
12:56 TimMc: co/re.clj
12:57 gtrak``: core/.clj
13:00 Raynes: fliebel: Just start using namespaces like fliebel.moar and fliebel.coar.
13:01 fliebel: Raynes: For some reason, IRC is the only place I'm called fliebel.
13:01 Raynes: fliebel: That's because it is impossible to pronounce your name.
13:03 mdeboard: Raynes: Dude god, I thought I was doing good getting my career started. Your first job is backend dev with Clojure? I quit.
13:03 fliebel: Raynes: I suppose you can say Dijkstra's algorithm, right?
13:03 Raynes: Heh. Did you praise me for my post before you finished reading it? :p
13:03 fliebel: I'm not entirely confident that I know how to pronounce his name either.
13:03 I *think* I do though.
13:04 mdeboard: Raynes: Well since you're just a child I thought you could use some positive encouragement. Just kidding -- I read through the 2010 part then my ADHD attacked. :P
13:04 Raynes: Heh
13:07 fliebel: Raynes: Maybe I can teach you how to say my name on (next conj), I'm already devising things to talk about and ways to make money :P
13:07 Raynes: :p
13:09 fliebel: &(next ())
13:09 lazybot: ⇒ nil
13:09 Raynes: &(-> () next next next next next)
13:09 lazybot: ⇒ nil
13:10 fliebel: Raynes: I still can't remember rest/next ##(-> () rest rest rest rest)
13:10 lazybot: ⇒ ()
13:14 alexbaranosky: Raynes, nice article.
13:15 gtrak``: i need to get off my ass and learn haskell, this is an encouragement
13:16 jamiltron: Sorry to backtrack, but what article?
13:16 gtrak``: http://
13:16 mdeboard: gtrak``: Ditto. Haskell is awesome. I use it to work on stuff in my discrete math course
13:17 jamiltron: Same here. I love Haskell but feel so humbled by it I never feel like I can run with it for long enough.
13:17 gtrak``: mdeboard, yea, I need to see what all the fuss is about with types, i talked to djspiewak once about it and he convinced me it's interesting
13:18 Derander: glorious, glorious types
13:18 Raynes: alexbaranosky: Thanks. :)
13:18 mdeboard: The deeper I get into discrete math the more I understand haskell
13:18 And I understand essentially nothing.
13:18 alexbaranosky: Derander: timewasting, pain-in-the ass, types ;-)
13:18 gtrak``: discrete-math like fields and groups?
13:19 finite field?
13:19 Derander: alexbaranosky: :-P
13:19 mdeboard: I understand Haskell the way someone who once flew over a library with a book about Italian food understands the Mona Lisa.
13:20 alexbaranosky: Haskell's a lot like Clojure but with all these annoying types all over the place - and without all the delicious power that homoiconicity provides
13:20 Derander: mooonaaaaadddssss
13:20 gtrak``: i do like my power delicious
13:20 alexbaranosky: :P
13:20 Raynes: Haskell is also painfully non-dynamic. lazybot would have been so much of a bitch to write if I had done it in Haskell.
13:21 gtrak``: i'm starting up 'reasoned schemer' because of what was said about core.logic and ad-hoc typing
13:23 Derander: someone wrote a pattern matching library for clojure.. does anyone know the name?
13:23 gtrak``: core.match
13:23 Derander: gtrak``: danke :-)
13:27 gtrak``: anyone have a good guide to starting a meetup? I want a Baltimore FP meetup, it seems like there's a small group of people that would do it.
13:30 ckirkendall: gtrack: In cincy carin miers and I started up one. We spread the word through twitter and through the leaders of other meetups. Our first meeting had 30 people much of that was carin's sales job.
13:31 gtrak``: ah, ckirkendall I remember talking to you about this :-)
13:31 ckirkendall: We got a simple websites through wordpress. We created a google group.
13:31 all of this was done before the first meetup
13:32 gtrak``: ckirkendall, it seems like there's some interest and programming talent around, but not much going on in the way of meetups here. We have a javascript meetup, though they meet like less than once a month
13:33 but i could totally run a site
13:33 and I could do an intro to clojure talk probably
13:35 ckirkendall: gtrak: we also made the decision to do a functional programming group and not just a clojure group.
13:36 gtrak``: yea, at this point i want to be inclusive
13:36 and i'm interested in FP in general
13:37 ckirkendall: We were all amazed at how many people were interested in FP
13:37 I also have done presentation at other meetups pitching cincyfp
13:38 gtrak``: awesome
13:38 ckirkendall: If you have some technical friends that have a good following on twitter in balt. That was our best way to get the word out.
13:39 gtrak``: yea, i don't have enough contacts to piggyback off of stuff like that, it might take a while
13:39 but that's ok
13:40 mdeboard: I think I'm going to disable the 80+ minor mode for clojure
13:41 The highlighting drives me bananas
13:42 Raynes: http://
13:42 "Continue being awesome."
13:42 * Raynes chuckles
13:43 ckirkendall: I didn't even know what twitter really was before meeting carin. It was here contacts that got the word out.
13:43 gtrak``: maybe she knows people in balty :-)
13:48 Saturnation: Raynes, nice post
13:49 Raynes: Saturnation: Thanks. :)
13:50 Saturnation: Brilliant talk at the Conj to, btw. :)
13:52 Raynes: Saturnation: Double thanks. :)
13:55 Saturnation: And thanks for your work on 4Clojure
13:56 * Saturnation stops now before it looks like he is kissing up... :)
13:57 Raynes: I haven't actually done a whole lot on 4Clojure.
13:58 Definitely not enough to earn any ecreds.
14:00 Oh shit -- I got hn'd: http://
14:00 tolstoy: Raynes: Yep. I'm reading your blog post right now as a result. ;)
14:05 mdeboard: Raynes: So I'm trying to get lazybot up and running, but when I run `lein uberjar` it tells me that "Release versions may not depend upon snapshots", or set an env var. Should I just set the env var and move on or ..?
14:06 Raynes: Yes.
14:06 Or just do 'lein run'.
14:06 That should work.
14:06 I think.
14:06 ibdknox: it will
14:07 Raynes: I should update the docs about that.
14:07 ibdknox: we have to be careful though... at the rate we're going there will be a lazybot army
14:07 Raynes: Heh
14:07 mdeboard: Link them all together
14:07 shtutgart: hm, i'm getting "error in process filter: Wrong number of arguments: nil, 0" after sending (keys (:members (r/reflect "foo"))) to REPL. I've tried to relaunch swank, but the problem persist. (vals ...) or just (:members ...) work fine
14:07 mdeboard: I mean, lisps ARE all about AI after all right
14:07 Raynes: There was a fellow who PMed me a few days ago because he wanted to run his own instance of the bot.
14:08 shtutgart: ideas? is it a bug?
14:08 ibdknox: shtutgart: what's returned from members?
14:10 shtutgart: ibdknox: it's a set of clojure.reflect.Method
14:11 ibdknox: shtutgart: https://
14:11 shtutgart: not only Method, Field, Constructor etc
14:11 ibdknox: not sure if that's related
14:12 but it appears to be an issue at the swank-clojure/slime level
14:12 which means I'm useless
14:12 :)
14:13 Raynes: you're famous! #2 on HN
14:14 shtutgart: ibdknox: not really, other expressions like (+ "foo" "bar") and even (vals (:members (r/reflect "foo"))) work fine (I mean, throw exceptions), just this one causes the problem
14:14 Raynes: I know. I didn't even realize it was hn'd until like 10 minutes ago. Saw it was on the front page and pissed myself.
14:14 ibdknox: Raynes: so now that you're doing all this writing... when will I be getting some chapters? :p
14:15 mdeboard: Only bad part about getting frontpaged on HN is it usually draws out the worst HN commenters, at least IME
14:15 ibdknox: shtutgart: yeah, but the error itself is a swank one. Try it in lein repl and see what happens? Maybe that will give some clues
14:15 Raynes: ibdknox: Once I finish reviewing Keith's reviews and he reviews my reviews of his reviews and I review... yeah. After that, he should send the first chapter down your pipe.
14:15 shtutgart: ibdknox: yeah, already trying...
14:15 Raynes: There is only one chapter at this point that is close to ready for technical review.
14:16 ibdknox: mdeboard: it's true. There are some scary people on HN.
14:16 Raynes: Another one is currently under developmental review, and I should be submitting another chapter around the 5th.
14:16 ibdknox: Raynes: awesome :D
14:17 mdeboard: ibdknox: I wrote to Dr. Norvig to see if he would chime in on people using his "Teach Yourself Programming in Ten Years" as a bludgeon to beat up on new programmers. He did so, graciously.
14:17 ibdknox: mdeboard: :D
14:20 mdeboard: Raynes: Am I missing a config step with mongo here? When I `lein run` or run the jarfile I get this error: http://
14:22 Raynes: mdeboard: I have no idea what that means.
14:22 Is there a stacktrace?
14:22 mdeboard: ya
14:22 sec
14:23 http://
14:23 Raynes: Huh.
14:23 mdeboard: Maybe the port is wrong?
14:23 What port is mongo running on?
14:24 mdeboard: 27017 & 28017
14:24 Raynes: Well..
14:24 mdeboard: Is :servers-port supposed to be the mongo port?
14:25 Raynes: No.
14:25 mdeboard: Ok
14:25 Didn't think so, but maybe I was going crazy
14:25 Raynes: Well, one problem here is that printStackTrace isn't real.
14:25 Let's fix that first. Give me a sec.
14:29 mdeboard: Could you hop over to #flatland?
14:30 mdeboard: sure
14:34 sritchie: Raynes, are you around?
14:34 quick question on lein-nenew
14:34 s/nenew/newnew
14:34 Raynes: sritchie: I am.
14:34 Sure. Shoot.
14:35 sritchie: how do you recommend creating a new templates? forking lein-newnew and adding them directly, or is there some way to pull a template in separately and have "lein templates" pick it up?
14:35 Raynes: Ah, that's the beauty of it! Templates need only be maven artifacts.
14:35 Just create your template and then publish it on clojars.
14:36 You can then 'lein plugin install' your template just like any other leiningen plugin and it'll be picked up by lein-newnew.
14:36 ibdknox: just think of all the awesome template packs
14:37 sritchie: awesome, that's great
14:38 so for a template called "axelrod", I'd create a project with "leiningen/new/axelrod.clj" and "leiningen/new/axelrod/<templatefiles>"
14:38 Raynes: Yes.
14:38 sritchie: boom
14:38 ibdknox: sritchie: there's a template for creating templates :D
14:38 sritchie: how about a recursive template template
14:38 Raynes: sritchie: Since lein-newnew is in Leiningen now (master), the templates that currently exist are probably the only ones that'll ever be included with it.
14:38 sritchie: nice
14:38 Raynes: `lein new template mytemplate`
14:39 sritchie: I'm making a template for *-koans projects
14:39 I pulled the macros, etc out of clojure-koans, so now anyone can make koan projects for their own libraries
14:39 Raynes: Excellent usage.
14:40 ibdknox: sritchie: I still need to look into that cljs-watch change you made :)
14:40 sritchie: I think though, that it won't work without changes to the CLJS compiler :(
14:40 sritchie: yeah, I realized after I sent it in that it'll only work for local files
14:40 files in your project
14:40 it's a very anti-social pull request
14:40 ibdknox: haha
14:41 devn: what are people's feelings about including swank-clojure as a dev-dependency?
14:41 ibdknox: don't do it
14:41 devn: I often find it annoying that I need to add it to the project.clj for every project I pull down
14:41 ibdknox: user level plugins ftw
14:41 Raynes: devn: You totally don't.
14:41 ibdknox: lein plugin install swank-clojure some-version
14:41 sritchie: devn: you can install it locally
14:41 Raynes: devn: lein plugin install swank-clojure 1.3.3
14:42 devn: lol, when did I miss this memo
14:42 sritchie: I just figured this out too
14:42 ibdknox: totally 6 months behind :p
14:42 a while back during the 1.3.0 transition I sent out a post telling everyone to remove it
14:42 lol
14:43 with some other general clean up things
14:43 Raynes: marginalia has a lein-vimclojure plugin in the dev deps.
14:43 Makes me want to kill myself.
14:43 ibdknox: now now. Vim is a special case :D
14:43 we have to wave our flag proudly
14:43 as we are the few here
14:44 Raynes: Heh.
14:44 You should be the transitioning.
14:44 ibdknox: sritchie: you were building something with Noir, right? How did that go?
14:45 Raynes: pfft, where's the fun in that? Then I'd have to *actually* help with swank issues and such... for now I can just claim ignorance.
14:45 sritchie: ibdknox: it's going really well -- I've had to let it sit for a bit while I rework this elephantdb project
14:45 gfredericks: $inc ibdknox
14:45 lazybot: ⇒ 5
14:45 Raynes: There isn't any helping to be done.
14:45 M-x clojure-jack-in and stfu.
14:45 ibdknox: lol
14:46 gfredericks: every other question in #clojure has something to do with skank-swim-mode or whatever
14:46 ibdknox: lol
14:46 Raynes: I bet ejackson thinks that was directed at him now.
14:46 ibdknox: sritchie: haha
14:46 sritchie: there's always something :)
14:46 sritchie: ibdknox: I'm starting to play with clojurescript, though
14:46 technomancy: gfredericks: and they're all answered by the documentation!
14:46 Raynes: He's probably sitting there muttering "what did I do" in his little English accent.
14:46 sritchie: ibdknox: I set up a little google maps demo with noir: https://
14:47 ejackson: Raynes: I'm struggling with the XML aspersions, to take any more on board
14:47 Raynes: technomancy: You should really get some t-shirts made of the docs.
14:47 devn: ibdknox: did you see some of the conversation that happened around how noir puts the V and C in the same file?
14:47 gfredericks: technomancy: I know, I just get bitter that my editor isn't all tricked out so I have to find something to complain about
14:47 ibdknox: devn: you should read my epic response :)
14:47 devn: ibdknox: is it on the issue that was submitted?
14:47 ibdknox: sritchie: oh awesome
14:47 sritchie: along with my clojurescript "getting started" tips, as if there aren't enough floating around
14:47 * gfredericks wants to read an epic response
14:47 ibdknox: devn: http://
14:48 devn: be back in 7 hours after I finish reading this
14:48 ibdknox: sritchie: that's really cool :)
14:49 sritchie: how was working with CLJS?
14:49 devn: have you guys seen trail?
14:50 https://
14:50 ibdknox: yeah
14:51 I was going to sit down and start figuring that stuff out for pinot soon. I actually don't think the classic approach is necessarily the best one in this case
14:51 but I haven't really gone into it yet, so I could be totally wrong :D
14:52 gfredericks: ibdknox: I am glad you wrote this.
14:53 ibdknox: gfredericks: why's that?
14:53 gfredericks: ibdknox: because I like the ideas and I hadn't thought of it that way before.
14:54 sritchie: I'm heading to pinot next
14:54 ibdknox: gfredericks: yeah, I mean the main thing they wanted to accomplish with MVC was separation of business and presentation
14:55 gfredericks: controllers seems a bit of an after thought, but were important in contexts where any number of actions might cause changes (e.g. in a standard client interface)
14:55 sritchie: let me know how that goes. I think most of what you need is there, but I won't claim it's "good" yet :) The hiccup over dom objects is really fun though
14:56 lots of cool things you can do with that
14:56 Raynes: sritchie: Let me know when your template is out.
14:57 ibdknox: Also. Trynoir. Do it.
14:57 ibdknox: I know
14:57 ugh, just have too much going on :(
14:57 Raynes: You just think you do.
14:57 ibdknox: haha
14:58 mdeboard: ibdknox: Don't get yourself burnt out
14:58 sritchie: ibdknox: this maps project is going to evolve into the front end for a clojure-based deforestation-monitoring system I've been working on
14:58 Raynes: If he gets burnt out he'll just make me maintain his stuff until he is okay.
14:59 "Hi, I'm Anthony Grimger here to talk about Noir and Korma."
14:59 ibdknox: sritchie: interesting. Where are you going to get the data?
14:59 cgag: Did you make noir? I'm just getting into clojure and was thinking of trying it. I was going to ask what the current options were as far as web dev with clojure.
14:59 Dyscrete: Raynes, your blog post on HN sent me here :D
14:59 Raynes: Dyscrete: Hi! :)
14:59 ibdknox: cgag: yep, I wrote it :) It'll be by far the easiest starting point if you're new
14:59 Raynes: cgag: ibdknox wrote noir.
14:59 sritchie: ibdknox: I've got a hadoop workflow that processes NASA's MODIS dataset back to 2000; the bulk of the work is generating timeseries, extracting some trends and running a classification algorithm over all of the pixels
15:00 ckirkendall: Raynes: I second that.
15:00 mdeboard: Dyscrete: Welcome
15:00 cgag: If yours was the post about the clojure community that's what sent me here as well :)
15:00 Dyscrete: thanks all
15:00 sritchie: so the final dataset is, for every pixel, a percent chance of deforestation in the next time period
15:00 Raynes: cgag: It was.
15:00 sritchie: Raynes: you KNOW it
15:00 almost done here, just need to test this thing out
15:01 ibdknox: sritchie: that's cool stuff, are you going to open source it? I'd love to see what that ends up looking like
15:01 sritchie: ibdknox: yup, hopefully in the next month or two
15:02 ibdknox: sritchie: cool. You're not in the bay area are you?
15:02 sritchie: yeah, actually, I'm at twitter
15:02 ibdknox: hah
15:02 sritchie: I need throw an interface between my thrift schema and the hadoop logic, and then it should be good to go
15:02 ibdknox: sritchie: we should get together sometime
15:02 sritchie: sounds good, man
15:03 I'm back in town tomorrow, I'll send you a note
15:03 ibdknox: awesome.
15:03 There are a lot of us around here, it's funny that none of us seem to find eachother though
15:04 you guys don't come to the user group :p
15:04 mdeboard: Wild_Cat: ping
15:04 devn: get thee to a user group!
15:04 sritchie: haha, I busted in late at the last one
15:04 rudely interrupting your pinot demonstration
15:04 ibdknox: haha
15:04 pmooser: ok I am going to go read this article
15:05 and maybe I'll be so impressed that I'll join IRC a second time
15:05 ibdknox: devn: did you read that response?
15:05 sritchie: but it's a fair point, I'll add myself to the meetup
15:05 ibdknox: :)
15:05 Now I need to convince mark to go
15:06 and other heroku people
15:06 Wild_Cat: mdeboard: pong?
15:06 devn: ibdknox: I did. I liked it. :)
15:07 zmanji: Is there a document that enumerates the difference between Clojure and Scheme/Racket? I have used Scheme before and I am interested in learning and using Clojure
15:07 devn: zmanji: yes, as a matter of fact there is :)
15:07 dnolen: zmanji: too many to list :)
15:07 ibdknox: my deep dark secret: Noir is the 4th web framework I've built
15:07 devn: zmanji: http://
15:07 zmanji: thanks devn
15:07 devn: np
15:07 mdeboard: ibdknox: When you say web framework, what do you mean, specifically? Just a collection of abstractions for common HTTP-handling tasks?
15:08 devn: dnolen: someone did the work :)
15:08 ibdknox: mdeboard: depends, is that what you would label rails?
15:08 dnolen: devn: well that's a detail oriented list, but it doesn't list the bigger philosophical differences
15:09 mdeboard: ibdknox: I've never used rails, but I'd describe a subset of Django's codebase that way
15:09 devn: dnolen: it
15:09 dnolen: it's a very, *very* long list. They get into some of that later on in the document.
15:09 ibdknox: mdeboard: I've always struggled with the difference between "library" and "framework", the distinction I ultimately settled on was that a framework is something you write code *in* while a library is something you write code around
15:09 pmooser: Nice article, Raynes.
15:09 Raynes: <3
15:10 ibdknox: mdeboard: I wrote two at the level of django
15:10 Wild_Cat: mdeboard: say, since you appear to be involved in both the Python andClojure communities, would you have a couple Clojure-for-the-Python-programmer tutorials to recommend? I've gone through Mark Volmann's, which is good but apparently written for an older version of Clojure
15:10 dnolen: devn: for "define class" it says use Java :P
15:10 ibdknox: mdeboard: one more like noir
15:10 pmooser: I was at the conj this year and your talk was cool and entertaining, and it didn't seem like you were nervous at all ;)
15:10 dnolen: for the Clojure table entry
15:10 devn: dnolen: haha, no one said it was perfect! :)
15:10 jgrimes: I came here because of that article Raynes, it was quite good
15:10 Raynes: Happy you enjoyed it. :)
15:10 devn: dnolen: I was using it to translate what I've learned about Clojure back to scheme
15:11 * ibdknox bows before the mighty celebrity that is Raynes :D
15:11 mdeboard: Wild_Cat: Unfortunately not, I basically just learn by doing/tinkering :-\ I think a "CLojure for Python programmers" tutorial would do a grave injustice to Clojure. "Python for Clojure programmers" would be more appropriate, but I've not seen that either.
15:11 Wild_Cat: (more specifically, the actors and destructuring parts were out of date, and I/O was mostly glossed over)
15:12 ibdknox: mdeboard: the first one I wrote was a PHP MVC framework, well before django ever existed :)
15:12 mdeboard: Wild_Cat: I always recommend picking up either Joy of Clojure or Practical Clojure
15:12 devn: the new pragprog clojure book is quite good
15:12 pmooser: The updated edition of the old one ?
15:12 devn: *nod*
15:12 ibdknox: mdeboard: the one after that was a crazy declarative metaprogramming thing that let you write out your site in xml. It was very cool, but meh.
15:12 mdeboard: the last was called trigger, it was a very lightweight event-based framework for building sites
15:13 devn: ibdknox: bad memories! *shows you a cross*
15:13 mdeboard: "xml... very cool..." aka "a face only a mother could love"
15:13 ibdknox: lol
15:13 devn: hey, don't beat up on XML
15:13 ibdknox: it was all we had!
15:13 devn: when we ran out of zeros, we just used 1s
15:13 mdeboard: I have a new appreciation for XML after taking that Stanford online DB class
15:14 devn: and then we had to walk 4 miles up hill both ways to get more zeros.
15:14 and we liked it.
15:14 ibdknox: exactly
15:14 Raynes: jgrimes: Hey. I just realized you and I have the same last name.
15:14 Wild_Cat: mdeboard: Joy of Clojure? Nice. I'll take a look at it, probably once I've completed my move and can justify buying books :p
15:14 jgrimes: Raynes: oh, nice :)
15:14 Raynes: It took me way too long to notice that.
15:14 jgrimes: haha
15:15 mdeboard: Wild_Cat: If you have a Kindle it's one of hte few tech books I think reads quite well in ebook format
15:16 Wild_Cat: mdeboard: well, since I'm planning to buy a Kindle shortly before the aforementioned move, I'll add that one to my initial buy-list
15:16 Bahman: Is there any easy way to copy a byte array into another one?
15:18 Wild_Cat: mdeboard: does it include a guide to the Clojure ecosystem too (Leiningen, Clojars, useful libs, etc.?)
15:18 mdeboard: Wild_Cat: No not at all. Definitely use irc for that
15:18 raek: Bahman: http://
15:19 ibdknox: supposedly the 2nd edition of Programming Clojure has Noir in it
15:19 mdeboard: ibdknox: nice
15:19 Wild_Cat: mdeboard: ah, bit of a shame, that.
15:19 mdeboard: I do like Noir a lot
15:19 Raynes: My book will have whole chapters on Leiningen and Noir.
15:19 Wild_Cat: what's Noir?
15:19 ibdknox: meh, it's ok ;)
15:19 mdeboard: I'm kind of burnt out on hand-wavey we frameworks
15:19 Bahman: Thanks raek!
15:19 devn: I will love noir when I can get haml templates :X
15:19 mdeboard: s/we/web
15:19 ibdknox: there's not a java haml implementation?
15:20 devn: https://
15:20 devn: ibdknox: yes, it needs some work though
15:20 ibdknox: Wild_Cat: it's a web framework I wrote: www.webnoir.org
15:21 devn: I'm not so hot with parsers, so that's been a bit of a stumbling block for me with haml-macro
15:21 ibdknox: devn: I'd just find a java lib, wrap it real quick, and be done
15:21 Wild_Cat: ibdknox: hmm. A web framework for the JVM that doesn't suck harder than a black hole? That could be nifty.
15:22 ibdknox: Wild_Cat: 100% less suck ;)
15:22 Wild_Cat: what, you mean it blows? :p
15:22 mdeboard: lol
15:22 ibdknox: damn
15:22 beat at my own game
15:22 gfredericks: I'm writing some clojure code to use from java/jruby, and am curious how poor everyone thinks this idea is: a macro called at the end of a file that creates a class with a static method for every public function in the namespace.
15:22 Wild_Cat: :D
15:22 ibdknox: devn: this one seems active: https://
15:22 ericmoritz\0: 100% less suck means it neither sucks nor blows
15:23 ibdknox: true.
15:23 it's neutral
15:23 Wild_Cat: ibdknox: looks cool. No boilerplate. I like that.
15:23 devn: ibdknox: it seems to be missing quite a bit
15:24 no interpolation is a bummer
15:24 ibdknox: devn: I didn't look much into it :)
15:24 never really wanted haml myself
15:24 Wild_Cat: while we're on the topic of noob stuff, is there a good lib, preferably in the stdlib, that I could use to scrape HTML?
15:25 mdeboard: Wild_Cat: Get used to most things not being in the std lib
15:25 Wild_Cat: ack :(
15:25 devn: this isn't common lisp! :)
15:25 ibdknox: there appears to be a scala haml impl
15:25 mdeboard: Wild_Cat: https://
15:25 devn: ibdknox: yeah, i'll have to do some more digging.
15:25 mdeboard: Wild_Cat: I was looking at that last night for similar reasons
15:25 Wild_Cat: devn: well, I'm a Python guy, really. That's where I got the "hey, it's in the stdlib"-itis from ;)
15:27 mdeboard: Wild_Cat: Ya ditto on that
15:28 devn: heh, I've been a Ruby guy, so "The standard library is a ghetto!" has always made me a little bit iffy about locking into stdlib
15:28 Wild_Cat: to be fair, the Python stdlib includes a lot of really dodgy stuff, and no HTML scraping lib.
15:29 devn: Wild_Cat: same with Ruby. so much of it has been abandoned or was written to work with pre-1.0 ruby
15:29 Wild_Cat: (if I'd had a dollar for every time someone came to #python trying to parse HTML with regxes...)
15:29 devn: it's a lot of garbage and a couple of useful bits
15:31 Wild_Cat: there are a bunch of options for HTML parsing. I know of html-parse which uses tagsoup, there's also a lib called apricot-soup, and a couple hundred more written in Java I'm sure that you could use from clojure
15:31 I'm sure I'm leaving dozens of options out
15:32 Wild_Cat: yeah, figures. I was mostly looking for the standard clojuric way of doing that ;)
15:33 (i.e. the local equivalent to "use lxml or BeautifulSoup"
15:33 )
15:35 devn: Wild_Cat: well, you already seem to be matching your parens. seems like you're well on your way to mastery. :)
15:35 Wild_Cat: haha
15:37 I gotta say, I still find all those parens somewhat ugly. In fact, Clojure scored tons of points in my book by using vectors for function signatures and by including set/dict/vector literals. Suddenly the code looks tons more readable.
15:39 devn: yeah, even without syntax highlighting I have very little trouble parsing clojure code due to binding forms being delimited by []s
15:39 parens in lisp and scheme are overloaded. they mean everything.
15:41 Wild_Cat: yeah, that's how I felt.
15:42 besides, I consider the dict/map an important enough data structure that it deserves syntax-level support in any language.
15:43 cgag: i feel like i've read people actually complaining about the fact that it's not all parens, which I don't get at all. The literal syntaxes are excellent imo.
15:43 Wild_Cat: practicality beats purity ;)
15:44 samaaron: are there any linux-based clojurians willing to test out the new Overtone asset manager in here?
15:50 Saturnation: asset manager?
15:50 samaaron: Saturnation: yup
15:51 Saturnation: do you rock the linux?
15:51 mdeboard: lol
15:51 brogrammers
15:51 samaaron: mdeboard: brogramming motherfucker!
15:52 Saturnation: I use the linux :)
15:52 it doesn't rock when I use it, fairly stable :)
15:52 pmooser: Hey Sam, what was the name of that input device you were using during your talk at the conj ?
15:52 samaaron: Saturnation: nice - and have you ever installed Overtone?
15:52 Saturnation: yes, but was painful :(
15:52 samaaron: pmooser: It's called a monome: http://
15:52 Wild_Cat: oh, is there a video of the Overtone conj vid? I heard it was awesome?
15:53 pmooser: Thank you
15:53 Wild_Cat: s/vid/talk/ >.<
15:53 samaaron: Saturnation: painful? How? And why didn't you share your pain on the mailing list?
15:53 Saturnation: Wild_Cat, not yet and it was :)
15:53 Wild_Cat: ffffffuuuuuuuuuu--
15:53 * Saturnation is a clojure and overtone noob
15:54 sritchie: Raynes: all done! I've got to wait for abedra and trptcolin to make me a few github projects, then I'll announce it and ping you
15:54 Saturnation: the one thing is that it doesn't seem to start the super collider server when running local or whatever it is...
15:54 sritchie: love the plugin :)
15:54 Raynes: :D
15:54 sritchie: Raynes: pardon me for asking before checking the lein-newnew source myself, BUT is it possible to keep file permissions on template copying?
15:54 Nick_1: 1
15:54 Saturnation: samaaron, for reference, I was the guy at the Overtone unconj with the computer...
15:55 s/with/without
15:55 samaaron: Saturnation: oh cool - hello :-)
15:55 Saturnation: hello :)
15:55 Raynes: sritchie: Nope. Not at the moment.
15:55 * Saturnation atempts to fire up overtone with the external server...
15:55 sritchie: no worries, thanks again
15:55 samaaron: Saturnation: did you ever get the internal server working? (use 'overtone.live)
15:56 Saturnation: I did
15:56 samaaron: perfect
15:56 Raynes: sritchie: I would accept a patch for that though. And migrate it to Leiningen.
15:56 Saturnation: is it meant to be using super collider internally?
15:56 sritchie: I'll see if I can take a peek in the next few days
15:57 samaaron: Saturnation: yep, if (use 'overtone.live) works for you, then it will have booted an internal server
15:57 Saturnation: could you do a fresh pull of the master branch on http://
15:57 Saturnation: echo wasn't working when I tried some of the examples with internal server (didn't try them with the external server...)
15:57 samaaron: Saturnation: did you manage to make *any* kind of sound with the internal server?
15:58 Saturnation: OK, give a sec, was just firing up a clojar version
15:58 lots of good noises :)
15:58 loved the examples
15:58 devn: wub wub wub
15:58 Saturnation: keen to give the jazz chords a go as well
15:58 samaaron: Saturnation: ok, so it'll be a bug in the examples, not a problem with the internal server
15:58 Saturnation: cool
15:58 * Saturnation goes off to pull from github
15:58 samaaron: Saturnation: if you come across any such bugs, please either file an issue or fire off a message to the mailing lists
15:59 Saturnation: 'k
15:59 devn: samaaron: how cool is this random jazz scales thread? Apparently the key is to just incredibly open ended questions about an interesting topic.
15:59 just post*
15:59 samaaron: devn: it's crazy cool
15:59 devn: I'm just suffering from a severe loss in the family, so i haven't been able to devote too much brain time to it yet
15:59 devn: samaaron: speaking of overtone, I still need to write up those remote server notes
16:00 samaaron: sorry to hear that. :\
16:00 samaaron: devn: that would be cool
16:00 devn: me too - particularly as we don't know if it's suicide or murder
16:00 devn: samaaron: i don't even know how to properly respond to that. that's terrible.
16:01 samaaron: and both options are too hideous to contemplate
16:01 Saturnation: I can just lein swank from overtone, yes?
16:01 samaaron: devn: i don't think there is a proper response - that's why i'm still pretty numb
16:01 so i'm spending time with the family and hacking on stuff i can wrap my brains around, which currently is the asset manager stuff
16:02 Saturnation: you should just need to `lein deps` and then `lein swank` from within the freshly pulled overtone dir
16:02 Saturnation: "Warning - old config directory detected. Moved to ~/.overtone-old and replaced with new, empty config."
16:02 samaaron: Saturnation: that's a good sign :)
16:02 Saturnation: lein swank appears to have done a lein deps
16:03 Bahman: Is it possible to return a string from -main to the invoking program?
16:03 Saturnation: swank seems to have died :(
16:03 Wild_Cat: Bahman: write it to stdout
16:03 samaaron: Saturnation: oh. How?
16:03 Bahman: Wild_Cat: Is it considered "return"ing?
16:03 Saturnation: JVM segfault
16:04 samaaron: Saturnation: but you got the internal server working before?
16:04 Saturnation: :(
16:04 yes
16:04 I can act insane and try again? :)
16:04 samaaron: hmm, that's odd - i haven't touched the server code
16:04 sure, do a `lein deps` for sanity purposes
16:04 Wild_Cat: Bahman: well, the thing is, a program's return code is always an integer. For any kind of more complicated communication between processes (any processes) you'll have to use something beefier than a simple return statement in your main.
16:05 Bahman: Saturnation: If you're on Windoze, restart the computer several times to solve the problem :-P
16:05 Wild_Cat: Bahman: those ways include stdin/stdout (the parent process can read from the child's stdout and write to its stdin), files, UNIX pipes, general-purpose IPC libs like DBus...
16:05 samaaron: Bahman: I believe he's on Linux - but if there are any windows users, i'd love them to lend a hand testign out the latest overtone
16:05 Bahman: Wild_Cat: You're right. Now I recall that from C times.
16:05 Wild_Cat: yeah, it's a language-independent problem ;)
16:05 Saturnation: OK, doing lein deps
16:06 for what its worth "JackServer::Open() failed with -1"
16:06 Wild_Cat: Bahman: if you can get away with simple stdout reading, do it. ;)
16:06 samaaron: Saturnation: damned jack
16:06 Saturnation: Um, when I got it working, wasn't with github, but lein and clojars dependencies
16:07 daniel___: can anyone explain this error? https://
16:07 samaaron: Saturnation: sure, but I don't remember changing any jack-related code since 0.5.0
16:07 Bahman: Wild_Cat: That's a good suggestion. I just worry that if there are runtime exceptions the caller may get garbage instead of a useful result :-)
16:07 daniel___: im using openjdk6
16:07 Bahman: Or exceptions are written to stderr?
16:07 Wild_Cat: Bahman: that's where the return code comes in handy.
16:07 Saturnation: (require 'overtone.live) sufficient/correct way to do this?
16:07 samaaron: Saturnation: do you have SuperCollider installed?
16:08 Saturnation: Pretty sure I do, what's the command line for it?
16:08 samaaron: scsynth
16:08 devn: samaaron: i have noticed that a lot of the examples are out of date or are missing some info. for instance, there is composed_dubstep, but overtone.sc.machinery.defcgen seems to have moved
16:08 Wild_Cat: Bahman: if the subprocess returns 0, it means it executed correctly. Otherwise, it means an error of some sort occurred, in which case you shouldn't bother with whatever data it produced
16:08 samaaron: devn: that issue is fixed in 0.6-dev
16:08 Bahman: Wild_Cat: Thank you. That gave me an idea.
16:08 Saturnation: that's the front end, isn't it?
16:09 samaaron: Saturnation: well, it's a separate program entirely
16:09 but if scsynth is in your PATH then you're probably good
16:09 Saturnation: I'm good
16:09 from that point of view
16:09 samaaron: ok, so just stick with lein repl for the time being
16:09 Saturnation: did that, still died :(
16:10 samaaron: it dies when you do `lein repl`?
16:10 Saturnation: for sanity, going to do this from my lein project...
16:10 samaaron: Saturnation: wait a moment
16:10 devn: samaaron: should I be using the localhost server or the internal server as my default for local dev?>
16:11 samaaron: Saturnation: just for the record, you just need to type `lein repl` and the JVM crashes?
16:11 Saturnation: no
16:11 samaaron: Saturnation: well, you're rushing ahead of yourself then ;-)
16:11 Saturnation: user => (require 'overtone.live) and JVM crashes
16:11 samaaron: Saturnation: I just mentioned `lein repl` nothing else...
16:12 quotemstr: #clojure, we need to talk about keyword arguments. I'm trying to get CL-equivalent semantics. Is there a concise way to provide a list of keys, a list of default values for each key, and means to signal an error if keys not on the list are supplied?
16:12 * Saturnation waits for him to check up with himself
16:12 Saturnation: OK, reset, what would you like me to test?
16:12 samaaron: devn: this page might help https://
16:12 Saturnation: right now, I just want to see if you can make a sound with the master branch
16:12 daniel___: can anyone explain this error? https://
16:12 im using openjdk6
16:13 samaaron: it seems that your jack<->overtone setup is broken
16:13 Saturnation: OK, what's the best way to make a sound?
16:13 agreed
16:13 samaaron: so i think we're best going with an external server
16:13 so for that, you don't (use 'overtone.live)
16:13 instead you (use 'overtone.core)
16:13 and then (boot-external-server)
16:14 Saturnation: don't think I ever got (boot-external-server) to work ever
16:15 but was able to start the super collider server then connect to it fully the tutorials
16:15 spoke too soon maybe :)
16:15 devn: samaaron: curiously enough I'm blowing up now on overtone.live
16:16 samaaron: devn: which os?
16:16 devn: OSX, 10.7.2, I'm using a Presonus Firestudio
16:16 samaaron: devn: I have no idea what a "Presonus Firestudio" is. Which version of Overtone?
16:16 devn: 0.5.0
16:17 samaaron: Saturnation: did booting the external server blow up?
16:17 Saturnation: nope, looked like it connected
16:17 but I accidentally killed the repl and can't get it to reconnect :(
16:17 devn: In SC: Number of Devices: 6, 0: ..., 2: ..., etc. followed by
16:17 samaaron: devn: is that a non-apple machine?
16:18 devn: input and output sample rates do not match. 44100 != 48000, could not initialize audio
16:18 samaaron: Saturnation: sounds like you're having fun!
16:18 Wild_Cat: Could Overtone be used as a VST-type audio source in a DAW?
16:18 Saturnation: :P
16:18 devn: I then start a swank server, and connect to the swank server
16:18 mdeboard: this kills the swank server
16:18 samaaron: devn: ah, that's an annoying problem - i'm not sure how to automatically fix it. The solution is to go open up Audio MIDI Setup and set the rate of built-in output to 44100Hz
16:19 devn: samaaron: will that cause overtone to crash?
16:19 samaaron: devn: yep, it causes SC to freak out, which causes Overtone to crash if you're trying to boot an internal server (internal server crashes kill the JVM process)
16:19 devn: samaaron: that fixed it. thanks.
16:20 samaaron: devn: great - i should really document that fix - unless someone knows some magic AppleSCript vodoo
16:20 Saturnation: so do you have a repl fired up yet?
16:22 Saturnation: yep, but not connected to the server... Getting a message to stop the application using hw:0, but NOOO idea what applicaiton that is :(
16:23 samaaron: Saturnation: I'm not sure what that means...
16:23 Saturnation: it means I needed to kill my browser :)
16:23 OK, I'm there and started :)
16:24 samaaron: Saturnation: great
16:24 Saturnation: so (demo (sin-osc)) works?
16:24 Saturnation: Houston, we have a beep! :)
16:24 yes it does
16:24 samaaron: Saturnation: hell yeah
16:24 ok, now for the real test...
16:24 Saturnation: Oh :)
16:24 quotemstr: Why does Clojure use vector syntax for lambda lists again?
16:24 samaaron: do a (use 'overtone.inst.sampled-piano)
16:25 Saturnation: Failed to create temporary directory after 10000 attempts.
16:25 samaaron: Saturnation: oh crap
16:25 Saturnation: :(
16:25 samaaron: i wonder why that failed
16:26 Saturnation: I have no idea, but that won't stop me from having a look...
16:26 samaaron: Saturnation: are you still keen to help out?
16:26 Saturnation: as much as I'm able to
16:27 samaaron: go into the overtone.helpers.file ns
16:27 Saturnation: use use?
16:28 samaaron: (in-ns 'overtone.helpers.file)
16:28 Saturnation: eek
16:28 samaaron: Saturnation: still with it?
16:28 devn: samaaron: where do I get mdapiano?
16:29 Saturnation: yep, but some errors or warnings
16:29 Exception Error in checker for ugen binary-op-u-gen. Error: after initialisation, not all inputs to this ugen were numbers or other ugens (inputs which are explicitly allowed to be other data types (i.e strings) will have been converted to numbers at this point): [#<sc-ugen: binary-op-u-gen:ir [2]> overtone.helpers.file] overtone.sc.machinery.ugen.specs/with-ugen-checker-fn (specs.clj:133)
16:29 sorry
16:30 samaaron: devn: mdapiano sucks - you want to use the new sampled piano in 0.6-dev
16:30 devn: but if you do want it, you need to use an external server with the bonus ugens installed
16:30 Saturnation: what did you do?
16:31 Saturnation: typed the wrong thing, sorry :/
16:31 OK, in overtone.helper.file
16:31 samaaron: devn: it would be cool to see if you can get the sampled-piano working too - just do a fresh pull of overtone in a new dir, lein deps, lein repl, (use 'overtone.live), (use 'overtone.inst.sampled-piano)
16:32 Saturnation: it should be overtone.helpers.file
16:32 Saturnation: yes, I typed badly :)
16:32 but I am there
16:32 samaaron: try (mk-tmp-dir!)
16:32 same error?
16:33 Saturnation: yep, that failed
16:33 devn: samaaron: It's downloading it now
16:33 Saturnation: Exception Failed to create temporary directory after 10000 attempts. overtone.helpers.file/mk-tmp-dir! (file.clj:339)
16:33 samaaron: devn: awesome!!
16:33 devn: samaaron: I'll say. This is crazy.
16:33 samaaron: devn: :-) It's great when things work
16:33 devn: I did not expect that at all. I assumed I'd need to go all over creation moving things into the proper directories, installing stuff, etc.
16:34 samaaron: devn: haha - Overtone is the magic source
16:34 well, only on OS X at the moment it seems...
16:34 devn: samaaron: since I'm using sampled-piano, do I just replace calls to piano with sampled-piano?
16:34 samaaron: devn: yup
16:35 devn: and once you've downloaded it, it's cached in your ~/.overtone dir
16:35 Saturnation: try (System/getProperty "java.io.tmpdir")
16:35 devn: samaaron: I'm trying to run the example Jeff Rose posted
16:35 Saturnation: it's /tmp
16:35 just looking at the code now
16:36 samaaron: devn: did it download already?
16:36 devn: He built a player fn that took piano as its second arg
16:36 ah, wrong number of args
16:36 * devn opens up source
16:36 samaaron: devn: does (sampled-piano 60) work?
16:37 devn: samaaron: no unfortunately
16:37 samaaron: Saturnation: could you try evaluating (System/getProperty "java.io.tmpdir")
16:37 Saturnation: I did, it's tmp
16:37 samaaron: devn: oh - did it download successfully?
16:38 devn: samaaron: "Download successful", yes
16:38 Saturnation: just walking through the code at the repl now
16:38 samaaron: Saturnation: the output is "tmp"?
16:38 Saturnation: not "/tmp"
16:38 devn: could you take a look inside ~/.overtone/assets
16:39 devn: samaaron: I think it is actually playing, but it's not being routed to the right outputs
16:39 Saturnation: it is the tmp directory "/tmp"
16:39 samaaron: Saturnation: ok, great
16:39 Saturnation: samaaron, give a few minutes, I'll chase this one down...
16:39 devn: (sampled-piano 60) => 28, (sampled-piano 60) => 29, etc.
16:39 so it looks like it's working, but the output is wrong
16:40 samaaron: devn: the 28 and 29 are the synth ids
16:40 devn: does (demo (sin-osc)) work?
16:40 devn: samaaron: *nod*, my firestudio uses output 3/4 instead of 1/2 for the headphones
16:40 so that's where the issue is I think
16:40 Saturnation: I think the issue may be that it's /tmp and not /tmp/?
16:41 samaaron: devn: weird that the sin-osc plays though
16:41 Saturnation: nope, not right...
16:41 devn: samaaron: it doesn't
16:41 samaaron: do you know how to set the outputs explicitly to be 3/4 instead of 1/2?
16:41 samaaron: devn: ah, so you can't get any sound?
16:41 devn: samaaron: correct
16:41 samaaron: devn: where i come from *nod* means yes ;-)
16:42 devn: samaaron: ah, well it does "work", but I just don't hear it
16:42 :)
16:42 samaaron: devn: also 0 is typically left and 1 is right
16:42 so you might be on 2/3
16:42 Saturnation: I was right
16:43 samaaron: devn: but i have no quick solution for routing output to 2/3
16:43 Saturnation: samaaron, the file to string doesn't print the trailing / on directories it would appear
16:43 samaaron: Saturnation: cool - swap str with mk-path in the second line of the let clause after base-name
16:44 * Saturnation just throw in the "/" after the tmp-dir
16:44 samaaron: Saturnation: we need to deal with windows which uses \
16:45 quotemstr: *sigh* Also, is anyone working on fixing contrib.error-kit to work with 1.3?
16:45 * Saturnation is just in debug mode
16:45 Saturnation: it's downloading now :)
16:45 quotemstr: contrib.error-kit is relying on the implicit dynamicness of *variables*.
16:45 samaaron: please try mk-dir - so i know i have a fix
16:45 devn: samaaron: regardless, how would one go about changing the outputs for a selected output device. I have 6 outputs and I just need to change which ones it is using
16:45 Saturnation: OK
16:45 samaaron: devn: i honestly don't know
16:46 devn: i'll have to think about it
16:47 Saturnation: nope, didn't like mk-path :(
16:47 samaaron: devn: we've ever considered 2 channels - 0 and 1
16:47 Saturnation: ah, my bad - that wouldn't work
16:48 Saturnation: it looks correct when printed out...
16:49 samaaron: Saturnation: could you try this: https://
16:50 devn: so would would a solution look like for you?
16:50 devn: samaaron: i switched the cable and sure enough it is sending to 1/2 instead of 3/4
16:51 samaaron: devn: so you have sound now?
16:51 devn: well, sort of
16:51 samaaron: only the right channel works?
16:51 devn: my external device has a number of inputs and outputs
16:51 Saturnation: yay! :)
16:51 downloading now
16:52 samaaron: Saturnation: nice
16:52 devn: the default outputs are split left and right, but I use the output for headphones which is 3/4
16:52 samaaron: devn: if you unplug the external device, can you make a sound?
16:52 Saturnation: you did the hard bits
16:52 3% complete, this may take some time
16:52 samaaron: Saturnation: :-)
16:52 devn: samaaron: i know for a fact i can make sound, im just trying to figure out how to tell supercollider to use different default outputs
16:52 Saturnation: brb
16:53 devn: it has 6 outputs to choose from, it chooses the first two it sees. I want to tell it to use different ones
16:53 samaaron: devn: ok
16:53 devn: the mailing list might be the best place for this
16:54 devn: so with your external device, you have 0 and 1 on speakers and 2 and 3 on headphones?
16:55 devn: samaaron: in OSX they get referred to in the audio midi setup as: Master, 1: DAW 1, 2: DAW 2...6: DAW 6
16:55 1 is Left, 2 is Right, 3 and 4 map to the headphone output
16:55 samaaron: devn: annoyingly supercollider is zero-indexed
16:56 so (demo (sin-osc)) comes through the speakers, but not the headphones?
16:57 devn: samaaron: i moved the cable I had going from my headphone out to my speakers, and changed it to be the first output on the device (which is Left) going to the speakers
16:57 Saturnation: my new tag line may have to be "I'm Sam Aaron's code monkey..." :)
16:57 devn: I can get sound this way, but it is on one channel
16:57 samaaron: Saturnation: code monkey boy, code!
16:57 devn: the demo will be one channel only
16:57 Saturnation: 30%
16:58 samaaron: devn: can you hear the sampled-piano?
16:58 even only on one channel?
16:58 devn: samaaron: yes, out of one channel, because i have two outputs, one of them is left, the other is right. do you see what I mean?
16:58 samaaron: YEY!
16:58 so the asset manager thingy is working
16:58 devn: It is using the first outputs it finds. I want to say: no. start here instead.
16:59 or no, use these specific outputs
16:59 samaaron: devn: that's not built in yet
16:59 duck1123: I just set up Overtone and played through the samples on the wiki. Pretty neat
16:59 samaaron: duck1123: brilliant
16:59 devn: samaaron: it seems like it must be. People have to have needed this in supercollider before.
16:59 samaaron: devn: oh, outputting to specific channels is
17:00 devn: yes, how do I do that?
17:00 samaaron: you'd have to write your own synths
17:00 devn: wha? this seems crazy. I'll figure it out
17:00 samaaron: devn: it's only crazy because you're the first to try to get Overtone working with a crazy powerful external device
17:01 Overtone tries to make things easy for people
17:01 devn: samaaron: I think we are misunderstanding eachother.
17:01 samaaron: and so far everyone has just got stereo systems
17:01 but if you stick to the primitives, you should be fine :-)
17:01 devn: This is not a problem with overtone. it is a supercollider setting or a hardware setting. I'm trying to determine how to get supercollider to change it's default outputs, not overtone.
17:01 samaaron: try: (demo (out 3 (sin-osc)))
17:01 devn: overtone should just send where supercollider knows to send to
17:02 samaaron: devn: I don't think you can get supercollider to change its default outputs
17:02 devn: it's crazy low-level like that - we probably need to build those smarts into overtone itself
17:02 devn: just like the noise limiting system i built
17:02 devn: samaaron: zero indexing indeed!
17:02 samaaron: devn: which you would expect sueprcollider to have
17:03 devn: (demo (out 2 (sin-osc))) and (demo (out 3 (sin-osc))) are where I want to send
17:03 samaaron: perfect
17:03 ok, we need to think of a nice solution for overtone to handle this case
17:04 so you essentially want to offset all output by n channels?
17:04 devn: yeah, basically
17:04 samaaron: so you'd lose access to 0 and 1
17:04 but that would be ok?
17:05 devn: samaaron: yeah, that'd be fine -- i think the ideal solution would be something like:
17:05 (defchannel speakers [0 1])
17:05 or something like that, so you could define channel output groups to send to
17:06 samaaron: devn: yeah, maybe - ideas like that will need a lot of fleshing out
17:06 we could definitely do with this kind of abstraction though
17:07 we want to move away from supercollider's super low-level attitude to everything
17:07 Saturnation: 83%
17:08 devn: samaaron: yeah, i don't mean to be a pain, honestly this could be fixed by just getting a couple of cables out of a box, but based on my experience with other applications like logic pro, etc. you can just say: "for this track, send output to 3/4"
17:08 I figured the same would be true for supercollider
17:09 samaaron: devn: we have to start somewhere :-)
17:10 Saturnation: be pleased you're getting % updates - I worked on that today :-)
17:10 Saturnation: something to do while we wait :)
17:10 samaaron: :-)
17:11 devn: btw, if i'm coming across less friendly than usual - my apologies, but my mind isn't where it normally is
17:11 devn: samaaron: nono, not at all, i'm struggling to explain my setup and there were some small hurdles with 0 indexed outputs and so on
17:11 samaaron: thanks for your help
17:11 Saturnation: Houston, we have sampled-piano!
17:11 samaaron: Saturnation: very cool
17:11 so linux is in the house
17:11 Saturnation: anything else?
17:12 samaaron: Saturnation: yes - you now need to have fun with it! :-)
17:12 Saturnation: devn: thanks so much for your help
17:12 Saturnation: thank you for all the work you've put into it
17:12 I'll do my best to play later
17:12 devn: samaaron: annnddd I fixed it.
17:12 * Saturnation heads off to eat
17:12 samaaron: Saturnation: youan thank me by having fun with it
17:13 s/youan/you can/
17:13 devn: what did you do?
17:13 devn: samaaron: I opened up the configuration utility that came with the device that up until now seemed useless
17:13 and I switched outputs 3-4 to be mixer instead of 1-2
17:14 samaaron: devn: ah, so you found a device-oriented fix?
17:15 devn: samaaron: *nod*
17:15 samaaron: devn: cool
17:15 devn: <-fool
17:15 samaaron: devn: although i still think you raise some important points
17:15 devn: overtone should also be able to handle this sort of thing
17:16 devn: now to figure out how to get this to play with sampled-piano instead of piano
17:16 piano sure took a lot of args
17:18 samaaron: will there be additional params added to sampled-piano to set the length?
17:19 samaaron: devn: perhaps - it's just a pre-recorded sample being played back
17:19 devn: we could run an envelope over it
17:20 devn: but it does sound *much* better than the synth piano
17:21 devn: happy to accept sample-piano improvement patches. I've not put any time into it - I just got it working. My efforts have been put into the asset manager stuff
17:22 Overtone can now reference arbitrary wav files on thh web and cache them locally
17:22 I feel like it's a huge step forward
17:28 kylert: \exit
17:28 lnostdal: does clojure hava a "common" (parent) data type that covers all integer types?
17:30 devn: samaaron: muahaha, sorry, got totally distracted with playing generated jazz progressions
17:31 Raynes: lnostdal: Number, I'd think.
17:31 lnostdal: but that covers non-integer types too, Raynes
17:32 Raynes: Oh, Integer types.
17:32 Sorry, I've been awake for too long.
17:32 lnostdal: :)
17:32 samaaron: devn: that's ok, i got distracted by the cat wanting some fuss
17:32 now it's time for bed
17:32 devn: it's super cool that you're having fun with the jazz progressions :-)
17:32 devn: samaaron: thanks for the help. feel better.
17:32 Raynes: http://
17:33 samaaron: devn: i'll try - but i'm sure it'll take quite some time
17:33 Raynes: <3 cats.
17:35 gfredericks: Raynes: they're fluffy.
17:35 Raynes: gfredericks and cute. :>
17:36 gfredericks: Raynes: that'd be an interesting slogan for me
17:36 Raynes: Yeah, linkinus decided to not put a semicolon there.
17:36 gfredericks: now I'm imagining it as the subtitle of a movie
17:42 technomancy: Raynes: seeing the backscroll about permissions, you can't actually read or set octal permissions until JDK 7
17:42 you can just set the executable bit
17:43 Raynes: technomancy: Ah. Makes sense. /cc sritchie
17:43 technomancy: well... I would posit that it does not make sense.
17:43 but that's how it is
17:48 danlarkin: because permissions aren't a feature of all the platforms to which java has been ported
17:48 therefore it cannot be supported
17:48 it's genius!
18:02 zakwilson: I had no idea Raynes was a teenager. On the internet, nobody knows you're a dog.
18:05 Raynes: zakwilson: Indeed.
18:06 zakwilson: Well, good work. I know I'm using a library or two you've written somewhere, and that's more than I've contributed to any open source community as far as I'm aware.
18:06 Raynes: Heh, thanks.
18:18 alexbaranosky: hey guys, is cake still going to exist after the merger with Leiningen?
18:19 Raynes: alexbaranosky: It isn't going to be taken down and eliminated from the internet, one file system at a time if that's what you mean.
18:19 It'll only be actively developed as long as we still need it for our projects at Geni.
18:19 Which realistically means a couple of months, probably.
18:21 alexbaranosky: Raynes, I tried to download it via the script I found on the site, but the url wasn't found
18:21 Raynes, I'm wondering if I should be keeping the cake-midje plugin up to date with the lein one
18:21 Raynes: Don't bother.
18:22 As for the URL problem, no clue. It's been down for a while and I'm unclear about whether or not it is intentionally not being brought back up.
18:24 alexbaranosky: Raynes, thanks for the info, I now know I can leave cake's Midje plugin to rot :)
18:25 Raynes: Feels good, doesn't it? Being able to only maintain one thing.
18:25 alexbaranosky: yes, especially since I don't even have cake setup on my machine -- I couldn't even get past that one initial stage =D
18:31 zakwilson: What's this? Lein/cake merger?
18:32 ibdknox: and the people rejoice :)
18:32 zakwilson: Yes, probably a good thing.
18:33 ibdknox: definitely a good thing!
18:33 zakwilson: Hey, wait. You're the korma guy, aren't you?
18:33 ibdknox: maybe
18:33 :)
18:33 zakwilson: Yes if I have a compliment, no if I have a complaint?
18:33 ibdknox: basically.
18:33 haha
18:33 What's up?
18:34 zakwilson: I haven't used it yet. I did poke around the site and source though. What does it do with dates?
18:34 ibdknox: JDBC turns them into java.sql.TimeStamps
18:34 alexbaranosky: zakwilson, if you're looking for help with your love life, korma's not that kind of thing
18:35 ibdknox: everyone loves indian food!
18:35 :p
18:35 zakwilson: alexbaranosky: I disagree. My girlfriend loves it when I make curry.
18:35 ibdknox: mine does too :D
18:35 zakwilson: Are java.sql.TimeStamps those horrible things based on java.util.Date?
18:36 ibdknox: I believe so
18:36 I just convert them into millis
18:36 that isn't specific to Korma though
18:36 all java.jdbc will do that
18:36 I believe
18:37 zakwilson: Right, I had that impression. I wonder how hard it would be to make it use clj-time.
18:37 And what were the people who wrote the Java data libraries smoking?
18:37 ibdknox: lol
18:37 well the trivial solution is to just convert them
18:38 fixing the use of java.sql.timestamp would likely mean changing the sql drivers
18:38 which isn't worth the effort
18:39 zakwilson: http://
18:41 ibdknox: not sure, like I said, I always just convert to millis :)
18:43 zakwilson: Fair enough. Thanks for trying to make the nasty little problems a little nicer. SQL has the most horrid syntax....
18:44 ibdknox: haha you're telling me, ugh
18:44 people keep telling me about quirks between them
19:02 zakwilson: Yeah, that's potentially nasty too. I think it actually might be better if databases all had different query languages and abstraction was done at the library level.
19:11 gfredericks: zakwilson: we could call it JDBC
19:12 ibdknox: lol
19:16 zakwilson: JDBC, as I understand it doesn't abstract away any of the differences in SQL.
19:16 gfredericks: oh. then that would be a bad name for it.
19:17 maybe korma?
19:17 amalloy: yes it does
19:18 eg getting table metadata takes different describe commands in postgres vs mysql,. but i'm fairly sure it's the same in jdbc
19:18 zakwilson: Of course, I haven't used JDBC directly and don't know what the hell I'm talking about.
19:19 ibdknox: JDBC does do some unification
19:19 though it doesn't unify SQL differences itself
19:19 things like "AS" for example
19:20 basically it's a mess :)
19:21 zakwilson: I bet half the nosql movement wouldn't exist if relational databases came with a nice query language.
19:21 ibdknox: hm, how would you do it better?
19:22 Raynes: He wouldn't do it at all and would instead opt to write things his application needs to store down on paper and place them in file cabinents.
19:22 ibdknox: woah
19:22 that's awesome, isn't storage space pretty limited though?
19:22 zakwilson: It has already been done better, I suspect. QUEL looks like a nicer language than SQL.
19:23 ibdknox: how's lookup time?
19:23 gfredericks: ibdknox: I think your wrist would be the bottleneck before the cabinet size would be
19:23 ibdknox: lol
19:23 true
19:23 zakwilson: To generalize, I'd give it a more regular syntax and try to make it easy for the query language to be a compiler target.
19:23 gfredericks: hence cabinet size is effectively infinite, and we all need to switch to cabinet-persistence
19:24 ibdknox: zakwilson: my sql compiler is < 500 lines
19:24 zakwilson: I'd probably just make it based on data structure literals. I suspect it would look lispy.
19:25 ibdknox: SQL would be fine if everyone adhered cleanly to the specs
19:26 and for the most part they do
19:26 otherwise korma wouldn't work at all
19:26 lol
19:26 zakwilson: As a compiler target, sure. As a language for using directly... it's pretty bad.
19:27 tolstoy: The guys I knew who worked a lot with it would always "tune" queries to appeal to the underlying engine. And re-arrange tables to work at "scale". The promise of SQL sort of disappears after a while.
19:27 ibdknox: that's true
19:28 zakwilson: The relational model is actually pretty nice for most apps, but real databases feel like they're from the stone age.
19:28 gfredericks: funny when the stone age things are the ones with all the features
19:28 tolstoy: Yeah, I like SQL if I get to use it without thinking about "performance" and so on. Nice and declarative.
19:29 gfredericks: and the new things are the simple ones
19:29 amalloy: seancorfield: is your clj-time repo the official one?
19:29 Raynes: It is.
19:29 ibdknox: what happened to the other one?
19:30 huh
19:30 I missed this... when did getwoven disappear?
19:30 and why?
19:32 zakwilson: SQL is declarative, but it isn't very nice. Mixed prefix, infix and postfix, prepositions that don't actually do anything, but have to be there, different syntax for closely related operations (I'm thinking of create/alter and insert/update)
19:33 If I tried to push a programming language with nice semantics (say... those of Clojure) and a syntax like that, somebody would probably force me to have a psych evaluation.
19:33 * ibdknox points at JavaScript
19:33 ibdknox: :D
19:33 zakwilson: JS has some warts, but it's no SQL.
19:33 gfredericks: o_O
19:33 ibdknox: ...
19:34 gfredericks: I think in terms of obvious ways it could have been better....
19:34 tolstoy: zakwilson: I guess so. But when faced with an SQL string vs Hypernate (or some such scheme)….
19:34 zakwilson: PHP is bad too, but everyone here probably knows that already.
19:34 tolstoy: Hibernate? Something like that.
19:34 ibdknox: PHP is bad for very different reasons than JS
19:34 zakwilson: I've never used Hibernate. The only ORMs I've used a clsql and activerecord.
19:34 ibdknox: and very different reasons the SQL
19:35 gfredericks: I can't imagine anyone choosing to use JavaScript if it hadn't been defaulted on them
19:35 zakwilson: Are you aware of node.js? It's the latest trendy thing. Everybody's doing it.
19:35 gfredericks: yes I am.
19:35 ibdknox: because they started with JS
19:35 zakwilson: (except me - I'm with you on that - don't see the point)
19:36 tolstoy: My boss LOVES node.js. I keep getting hints. Like "Threaded app servers are a legacy architecture."
19:36 ibdknox: haha
19:36 I've tried building something large and performant in node
19:36 It was painful
19:36 and not performant :)
19:37 zakwilson: Using events by default seems backwards. Most things you'd want to do probably shouldn't be event-based. Futures are nice.
19:37 tolstoy: Seems like it might be okay for a simple, single-purpose API, but I end up writing apps which have (say) and MQ broker sending stuff out, or what have you, and I don't see how node handles that.
19:37 Erlang, on the other hand....
19:37 ibdknox: zakwilson: are you zak on HN?
19:38 tolstoy: zakwilson: I've been trying to find research about events vs threads, and I can't make much sense of it. events for mostly do-nothing, long-running connections, threads for quick request/response. *shrug*
19:38 zakwilson: ibdknox: yes
19:39 tolstoy: thread pools managed by your runtime for all of it.
19:39 tolstoy: zakwilson: By "much sense" I mean most of it seem alike advocacy.
19:39 ibdknox: zakwilson: did my response on the reasoning behind Korma answer your question?
19:39 zakwilson: tolstoy: oh, of course it is.
19:40 ibdknox: yes. I'm convinced enough to give it a try on the project I should work on later tonight after I get the project I've been procrastinating on done.
19:40 ibdknox: haha
19:40 use 0.3.0-alpha5
19:41 Raynes: ibdknox: We require new noir version with new lein-noir version using my fork.
19:41 zakwilson: Why?
19:41 clojurebot: why not?
19:41 ibdknox: Raynes: haha we require it, huh?
19:41 alexbaranosky: ~shrimp
19:41 clojurebot: shrimp are small
19:42 Raynes: ibdknox: I REQUIRE IT.
19:42 (require new.lein.noir.version)
19:43 ibdknox: well
19:43 I think 1.2.2 will be coming out next weekend probably
19:43 I need to do a docs pass
19:44 Raynes: Acceptable.
19:44 ibdknox: Have you considered marginalia? As in, would you accept a patch to add marg docs?
19:44 zakwilson: Why do I want to use the alpha? Will it differ greatly from the docs?
19:44 ibdknox: zakwilson: bug fixes, and a better syntax for with
19:45 Raynes: marg couldn't run over the project last time I tried
19:45 Raynes: ibdknox: Bullshit.
19:45 Give me 20 seconds.
19:45 ibdknox: Raynes: hah
19:45 Raynes: I'm the bloody king of marginalia.
19:45 gfredericks: one of those bots needs a stopwatch
19:45 ibdknox: Raynes: there was some issue with having hiccup in it
19:51 ambrosebs: who's got a Confluence admin account? My account needs editing privs (ambrosebs)
19:51 please
19:56 devn: ambrosebs: any rush? i think i saw you posted to the ML about this, yeah?
19:56 ambrosebs: :) just excited about creating a page for compiler hooks
19:57 I can wait
19:57 ibdknox: compiler hooks?
19:58 ambrosebs: currently there is no entry point for customizing the compiler
19:58 devn: ambrosebs: I don't have admin. Sorry man.
19:58 ambrosebs: for example, I want to perform some type checking when every top level form is evaled
19:58 or "analyse"d
19:59 ibdknox: I see
19:59 ambrosebs: much easier to target Clourescript atm
20:00 ibdknox: yeah, there was talk of this at the Conj
20:00 about exposing analysis
20:00 it would be very useful for tools :)
20:01 devn: ibdknox: you need some noir and pinot logos
20:02 ibdknox: as I am a mediocre visual designer, I always do text logos :)
20:02 Pinot needs to have a real release too
20:02 devn: ibdknox: if i came up with a couple for you to peek at maybe?
20:03 ibdknox: sure!
20:09 devn: I'm not so great at it myself, but I've been trying to learn. I have an eye but I don't know a lot of the tools well enough to make what I want.
20:10 ibdknox: devn: yeah, I'm the same. Worked with some world class designers, so I *know* good graphic design, I just haven't worked enough at it to get above "meh"
20:13 devn: your colors are really nice
20:22 brehaut: ibdknox: it makes a huge difference having worked with good designers though
20:23 ibdknox: brehaut: yes it does
20:23 brehaut: you do internalize a lot of the smaller details
20:25 devn: ibdknox: https://
20:25 ibdknox: ;)
20:32 ibdknox: that is of course, a picture of dick tracy
20:33 alexbaranosky: devn, ibdknox: Dick Tracey is of course, the shit
20:34 devn: hah
20:34 alexbaranosky: devn: did I see you had an autotest project on github?
20:35 or lazytest - something near to that
20:38 devn: alexbaranosky: I'm cleaning up my github, that's Stuart Sierra's
20:40 alexbaranosky: Are there any Boston-area Clojure jobs with opening these days? I'd love to be going to work tomorrow to do Clojure instead of Java/Scala... I know there's Sonian, but not sure if they're hiring.
20:55 devn: alexbaranosky: careful, this channel is logged publicly
20:55 :)
20:55 alexbaranosky: ha
20:59 tolstoy: I have to admit, being able to use a Mac and work in a fun language (Clojure, Erlang, even Scala) would be a plus for me, but what I'd REALLY like is a shop with clear business goals. Even if they last one month at a time.
21:01 devn: tolstoy: what if they last for more than a month but they aren't your own?
21:01 i don't know that i value consistency over evolvability
21:02 tolstoy: devn: I value clarity, more and more.
21:02 devn: but maybe that is a false dichotomy
21:02 tolstoy: Yeah.
21:02 devn: a thing can be consistent in its evolvability, or evolvably consistent
21:03 tolstoy: A lot of times we argue for this or that architecture, this or that technology choice. The sad thing is, just about anything can work. But clear business goals help focus the decisions.
21:03 devn: tolstoy: to what end?
21:04 tolstoy: To the end of achieving the goals.
21:04 devn: goals are too specific IMO. "intentions" are more important.
21:05 they're more malleable.
21:05 tolstoy: Well, hm.
21:06 Maybe we mean the same thing with goals/intentions.
21:06 devn: maybe. but goals are often hard-coded. "this is the concrete goal"
21:06 alexbaranosky: tolstoy, you're just saying you want to work somewhere with direction?
21:06 tolstoy: I don't mean, "A web form with three fields," as a goal, for instance. But it would be nice to know if keeping petabytes of data for 10 years is a goal.
21:07 alexbaranosky: Yeah. Well, I mean, over time, I find myself less concerned with my tools, and more interested in having clarity on the problem I need to solve.
21:07 devn: concreteness in the face of uncertainty seems foolish, which is why i prefer to think of intentions instead. if our intention is to get a lot of users, that is different from a goal of getting a lot of users. one of them is a finish line, the other is a sequence of possible finish lines
21:08 tolstoy: Or maybe more accurately, why these problems and not others need to be solved, or the context in which the problems are even meaningful beyond just your boss telling you to do it.
21:08 devn: heh, well, that is one for the ages.
21:08 alexbaranosky: tolstoy: I agree, to an extent, but certain tools are better fits for certain jobs, and certain tools are just better all around - just mho
21:09 tolstoy: alexbaranosky: Yep. I agree wholeheartedly.
21:09 mdeboard: Noir's philosophy in 38 seconds: http://
21:10 devn: mdeboard: hahahahaha
21:10 tolstoy: Heh. That's what I tell all my slaves.
21:11 mdeboard: devn: ibdknox's post on the listserv reminded me
21:11 devn: mdeboard: we should put stuart halloway's face over bruce lee's
21:14 alexbaranosky: Would anyone local to the Boston are be interested in getting together for Clojure hacking sessions?
21:15 actually that might be a good question for the mailing list
21:15 tmciver: alexbaranosky: absolutely!
21:15 devn: alexbaranosky: start a meetup
21:15 alexbaranosky: dev: do you have your graphic design software out to get to work on that?
21:16 tmciver: are you around beantown? I'm in E. Boston
21:16 tmciver: There is a Boston Clojure meetup already and they're due for another one soon.
21:16 tolstoy: mdeboard: That post is great.
21:16 tmciver: alexbaranosky: yeah, north of Boston
21:16 mdeboard: tolstoy: It is indeed
21:16 I don't compare just anyone to Bruce lee
21:17 alexbaranosky: tmciver, yeah, but they're so infrequent, and also, I think it'd be cool to focus on contributing to open source
21:17 tmciver: I didn't meet you at the Conj did I ?
21:18 tmciver: alexbaranosky: I'm not sure :\
21:18 alexbaranosky: tmciver: me neither hehe
21:19 tmciver: alexbaranosky: are you a member of the Boston meetup group?
21:19 alexbaranosky: tmciver: I am - I was at the last one with the angry Racket programmer
21:19 tolstoy: mdeboard: I get the idea that ibdknox has begun to think of web development as a fine art. I like it.
21:20 tmciver: Oh yeah, we did meet! :)
21:21 alexbaranosky: tmciver: is your name Tim? I think Rob and I might have talked to you about our BAZNEX group??
21:21 lazybot: alexbaranosky: Definitely not.
21:21 tmciver: Yes, I was just trying to remember that name.
21:22 alexbaranosky: well, we were sortof thinking that something like that, but only for Clojure programmers might be interesting, because we could send out messages to the different lips/clojure groups locally and get more people to hack with
21:23 tmciver: http://
21:23 tmciver: alexbaranosky: Yeah, I was just checking it out. Did you guys ever meet at Sprout?
21:24 alexbaranosky: probably this wweek, the day before thanksgiving was a dumb idea
21:24 mdeboard: tolstoy: He's been doing it a long time, he probably doesn't even see the numbers anymore; all he sees now is blonde, brunette, redhead.
21:26 tmciver: alexbaranosky: I'll definitely be at the next meeting if I can make it.
21:27 alexbaranosky: tmciver: how much time in advance is it best for you to know, for scheduling? We've been being very impromptu about it, but that should really change - we should make the schedule firmer for people like you who have to travel into Boston a little
21:29 tmciver: alexbaranosky: it's no problem. I work in Cambridge and have been going into town from work occasionally lately. I'm flexible.
21:30 alexbaranosky: in fact, I'll sign up for the google group now.
21:30 alexbaranosky: tmciver: great, we always talk on the google group about upcoming gatherings
21:31 I've hit a bit of a wall in adding method stubbing/mocking to Midje
21:31 mdeboard: Indianapolis y u no have clojure meetups
21:31 tmciver: alexbaranosky: Done. So is there a meetup planned for Wednesday?
21:31 alexbaranosky: mdeboard, why u no started one?
21:32 mdeboard: alexbaranosky: I don't have the time or I would have already
21:32 alexbaranosky: let me post about it. I think yes is the answer
21:32 time is an underrepresented form of wealth
21:33 mdeboard: alexbaranosky: Indeed. Single parenthood + an hour-long commute every day = huge time drain
21:33 gfredericks: make the kid do the commute instead: both problems solved.
21:35 alexbaranosky: hey tmciver: just add yourself to the thread I started saying you're interested :)
21:38 tmciver: alexbaranosky: Done.
21:41 alexbaranosky: tmciver: great. !
21:41 it's always good to bring your laptop, since we pair a lot on stuff, more laptops is best
21:45 tmciver: alexbaranosky: Yup, I was going to anyway.
21:50 alexbaranosky: Wednesday is the 30th . . .
21:50 alexbaranosky: did you mean this Wednesday?
21:50 alexbaranosky: crap
21:50 hehe
21:51 let me fix post again. I'll add your interest to my post, so you don't have to post again
21:51 tmciver: cool
21:51 alexbaranosky: I looked at the calendar for November... durrr
21:51 tmciver: and you call yourself a geek . . .
21:51 alexbaranosky: I'm a dumb geek though
21:52 tmciver: It's OK, me too.
22:02 quotemstr: What's wrong with (use 'clojure.string '(split)) ?
22:04 tmciver: quotemstr: are you referring to the warnings from name conflicts?
22:04 trptcolin: ,(use '[clojure.string :only [split]])
22:04 clojurebot: nil
22:04 quotemstr: trptcolin: The documentation says "list", so I thought round brackets.
22:04 trptcolin: that'll work too
22:04 quotemstr: tmciver: I'm trying to work around those warnings.
22:04 trptcolin: ,(use '[clojure.string :only (split)])
22:04 clojurebot: nil
22:04 quotemstr: user=> (refer 'clojure.string :only '(split))
22:04 Exception No namespace: clojure.string clojure.core/refer (core.clj:3761)
22:05 use gives the same error.
22:05 trptcolin: you need the whole thing wrapped in a vector like mine
22:06 quotemstr: Ah!
22:07 trptcolin: it would be nice to have an examples in the use docstring, but until then: http://
22:08 err, pretend i know about grammar and that i said "an example"
22:08 quotemstr: Okay, (use '[clojure.string :only (split)]) works but (use '(clojure.string :only (split))) doesn't.
22:09 Aren't both just seqs?
22:09 Is there a way to just refer to string.split directly?
22:10 trptcolin: libspecs have to be vectors
22:10 or symbols
22:10 quotemstr: Actually, that reminds me: if I'm storing pairs of things, should I use a two-element vector, a two-element list, or something else?
22:11 amalloy: two-element vectors are most common
22:11 quotemstr: Aha!
22:11 Thanks for the blog post.
22:12 And while we're on namespaces: I want to load-file, but in the context of a particular namespace (or a particular lexical environment, more generally). Is there a high-level way to do that?
22:12 And in the repl, once I (ns foo), doc no longer works. Where does it come from?
22:12 amalloy: you can't really eval code in a non-null lexical environment
22:12 quotemstr: Ah, repl.
22:13 amalloy: Well, I want to load a configuration file, and I want to define some primitives for the configuration file to use.
22:13 amalloy: (eval `(let [...] ~(read the file)))
22:14 is the only way i can think to do it
22:20 quotemstr: Or just have the configuration file begin with a namespace directive. I'll just do that.
22:20 Thanks.
22:21 Actually, one more thing: using immutable locals is _very_ inconvenient in some cases. One example is doing some complex text layout where multiple sets of coordinates need to be maintained and updated.
22:21 How bad is it to use vars even when there's no thread-dependent state?
22:22 amalloy: vars are usually the wrong tool. a ref or atom makes more sense, if you can't restructure it to be immutable (which is always possible, of course, but might not be most convenient, as you say)
22:23 quotemstr: Using a ref for something only modified by one thread feels wrong somehow.
22:23 amalloy: not as wrong as a var for something that isn't top-level
22:24 quotemstr: Hrm, okay.
22:24 Why is #' a reader macro? Is (var foo) all that common?
22:24 amalloy: plus they're move convenient anyway, with alter/swap! functions instead of var-set/var-get
22:25 huh, good question. it does seem like an odd choice, just to save three or four characters
22:28 perhaps it's a remnant from a time when vars were more-special in some way, and (var foo) didn't exist
22:28 but that's just a crazy guess. who can know why rich added #'
22:30 quotemstr: Well, it does conveniently stomp on a common CLism. :-)
22:30 amalloy: i don't get "stomp on" in this context. i mean, i know what #' does in CL, but...?
22:31 quotemstr: It conflicts, that's all.
22:31 It's still habit to write #'function.
22:32 amalloy: quotemstr: well, that still works
22:32 &(map #'inc [1 2 3 4])
22:32 lazybot: ⇒ (2 3 4 5)
22:32 quotemstr: Oh, right.
22:32 Because functions are vars.
22:32 amalloy: it's a bad habit, but not an actual problem
22:32 because vars are functions
22:32 or i guess you could think of it that way
22:32 quotemstr: amalloy: The other way around, yes?
22:33 amalloy: &(ifn? #'inc)
22:33 lazybot: ⇒ true
22:33 amalloy: vars are functions which, when called, delegate to their current value'
22:33 whereas not every function is a var
22:34 quotemstr: Ah.
22:34 So that's why all defs are highlighted in font-lock-function-name-face.
22:38 amalloy: i doubt if that's related. it's not like the parser knows "clojure thinks this is a function"; whoever wrote the syntax highlighter just figured things you def at the top level should stand out and might as well be highlighted as functions
22:39 trptcolin: before i post this to the dev list, anybody see anything silly i'm missing with this clojure.java.io issue? https://
22:40 i have a patch ready for it, just would love another set of eyes - getting shot down over IRC doesn't hurt as bad
22:42 amalloy: trptcolin: doesn't really seem like an issue related to java.io, does it?
22:43 trptcolin: i feel like the Coercions protocol should handle the encoding/decoding
22:43 as-file / as-url
22:43 ambrosebs: gtrak: you might be interested in following this project https://
22:43 amalloy: jio/resource is just delegating to .getResource on the classloader
22:43 trptcolin: yeah jio/resource is cool
22:44 but when readers & writers get constructed, that's the problem
22:44 amalloy: maybe you could clarify what change you plan to make?
22:45 trptcolin: yep, that'll help :)
22:45 https://
22:49 .toURL is what's currently used on the File (as-url ...) coercion, and that's deprecated in java 1.6; but my real issue is with slurping resource URLs, and i'm feeling decent about the change
22:50 but usually when i feel this confident about a problem in clojure i'm wrong :)
22:52 i guess normally resources are in jarfiles, so things like spaces would be much rarer...
22:54 technomancy: trptcolin: hey... someone suggested that your ns blog post would make a good replacement for http://
22:56 jodaro: hrm
22:56 trptcolin: that came up on the mailing list awhile back (I think on Alex's initial clojure.org push), didn't seem to get much clojure/core traction
22:56 jodaro: lein daemon should fork and return me to the shell, no?
22:57 technomancy: trptcolin: if you know the thread I can pipe up in favour
22:57 trptcolin: not sure if it just fell through the cracks or if there was actual opposition. i can understand wanting clojure.org to be docstring-y
22:57 lemme take a look
22:57 technomancy: Rich actually said during dinner at the conj that he always has to look up examples to remember how ns works, so ... I think that's a pretty good argument for needing better docs =)
22:58 trptcolin: did you see http://
22:58 trptcolin: yeah, i like it
22:59 i also kind of like the idea that came up on the list (maybe hiredman?) about using symbols instead of keywords in the ns macro
22:59 especially since it already works, as someone (amalloy?) pointed out
23:00 so (ns foo (require bar))
23:00 technomancy: I think the point of keywords is that it looks more declarative, which I can buy
23:00 to switch to symbols you would have to rewrite require-the-function to make it work exactly like the require clause of ns
23:00 otherwise you're just asking for confusion
23:01 trptcolin: require-the-function?
23:01 oh, nm
23:01 gotcha
23:02 technomancy: discussing breaking changes right after 1.3 has landed definitely falls into the category of long-term dreaming =)
23:03 trptcolin: :)
23:07 here's that thread: https://
23:07 technomancy: thanks
23:17 ckirkendall: does anyone no a good way in clojure script to check for the type NodeList
23:17 *know
23:17 dnolen: did you try (instance? js/NodeList x)
23:19 ckirkendall: dnolen: crap I forgot the "js" thx!
23:20 quotemstr: Why isn't every deref in a transaction an ensure?
23:21 hiredman: quotemstr: deref derefs many things besides refs
23:23 quotemstr: Okay, so why isn't every deref or a ref an ensure?
23:23 hiredman: deref on a ref?
23:24 because then there would be no way to get the value of a ref without ensuring it
23:24 quotemstr: Why would you want to do that?
23:25 hiredman: because you may have a most unrelated ref you just want to grab whatever value from
23:25 mostly
23:30 amalloy: eg maybe you want to log a message like "about N% done" - doesn't have to be super-accurate, but you'd like to deref the %-done ref
23:31 mdeboard: alexbaranosky: nice :P http://


text: It is impossible in limited number of pages to give a fair picture of such a remarkable man, great mathematician and human being as Josip Pecaric. Our intention is instead to complement the picture of him in various ways. We hope that our paper will give also someflavor of Josip as family man, fighter, supervisor,international authority, author (also in other subjects than mathematics), fan of the Croatian football team, and not only as his obvious role as our King of Inequalities.

subset: commoncrawl


text:
2-person studio
Studio 10 and 11
These studios are located on the ground floor and can accommodate 2 people. The living room is also the bedroom with a double bed. The bathroom has a shower, washbasin and toilet. There is a kitchenette with full kitchen inventory. These studios feature a terrace, and studio 10 comes with a great sea view.
2-person studio
Sea-view + €20,- p.n.
€ 140,- /per night
Minimum 2 nights stay. For special requests call 06 14692245


text:
As a global branded products marketer and nonwovens leader, Kimberly-Clark manufactures high-quality nonwoven substrates ideal for use in many wiping applications.
Our unique meltblown process is capable of producing very fine fibers, creating a low-linting nonwoven with high absorbency and metered fluid release.
Kimberly-Clark manufactures both fine fiber and dual-texture meltblown substrates. The uniformity of our basis weight contributes to superior performance properties such as metered fluid release and high absorbent capacity. For fine fiber meltblown, we offer a variety of bond patterns which bring both strength and aesthetics to the nonwoven allowing you to differentiate your brand in the marketplace. For dual-texture meltblown, we offer a variety of colors including red, orange, magenta, yellow and grey.
Fine Fiber Meltblown
Key Properties:
- -Metered Fluid Release
- -Low-Lint
- -High Absorbent Capacity
- -Naturally Oleophilic
- -No Chemical Binders
Common Applications:
- -Automotive Car Care
- -Hard Surface Cleaning & Polishing
- -Hard Surface Sanitizing & Disinfecting
- -Hand Cleaning
Dual Texture Meltblown
Key Properties:
- -Dual-sided performance: scrubby & smooth
- -Low-lint
- -Metered fluid release
- -Naturally oleophilic
- -No chemical binders
Common Applications:
- -Hard surface cleaning
- -Hand cleaning & sanitizing (scrubby)
Kimberly-Clark Hydroknit* Material is extremely strong, highly absorbent and soft to the touch making it ideal for household cleaning. The material is manufactured without chemicals or adhesives by bonding soft pulp fibers into a strong polypropylene base.
Key Properties:
- -Wet strength/ durability
- -Tear resistance
- -Cloth-like appearance
- -Low-lint
- -Absorption
Common Applications:
- -Surface cleaning
- -Disinfecting
- -Sanitizing
- -Furniture cleaning
- -Polishing
- -Glass & lens wiping
Ultrasoft Spunbond offers superior softness without sacrificing strength, making it ideal for anywhere it touches skin especially in personal care applications.
Ultrasoft Spunbond is comprised of long, continuous fibers that are thermally fused together with a patterned bonding system to produce a finished product with maximized strength, surface stability and softness.
Key Properties:
- -Softness
- -Cloth-like appearance
- -Abrasion-resistant
- -Low-lint
- -Durability
Common Applications:
- -Personal care wipes
- -Insect wipes
- -Specialty wipes
Turn your used, non-hazardous apparel and gloves into the...