2011-11-27
| 00:08 | alexbaranosky | what the heck is &form ? |
| 00:08 | alexbaranosky | :) |
| 00:08 | cgray` | in what context? |
| 00:08 | alexbaranosky | I'm not sure if its a Clojure thing or a Midje code-base thing |
| 00:08 | alexbaranosky | I see it in some code I'm reading |
| 00:09 | cgray` | is it an argument to a function? |
| 00:09 | alexbaranosky | (in Midje) |
| 00:09 | alexbaranosky | yes, as well as to a macro, and also in a backtick empalte like such : '~&form |
| 00:10 | alexbaranosky | empalte => template |
| 00:10 | alexbaranosky | ahhh is it anaphora or something/ |
| 00:11 | cgray` | it's not something i've seen :) |
| 00:11 | alexbaranosky | a way to reference the form of macro that you're inside of? |
| 00:16 | cgray` | it could just be a weird name for a variable... |
| 00:17 | cgray` | i would think it would be here: http://clojure.org/reader if it was actually something |
| 00:24 | technomancy | &form and &env are implicit arguments to every macro |
| 00:24 | lazybot | java.lang.RuntimeException: Unable to resolve symbol: form in this context |
| 00: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) |
| 00:29 | amalloy | it's not mentioned in the reader because it's unrelated to the reader |
| 00:29 | alexbaranosky | technomancy, what does &env do? |
| 00:32 | alexbaranosky | amalloy, that's neat |
| 00:32 | amalloy | it's a map containing information about the lexical environment into which the macro will be expanded |
| 00:33 | amalloy | 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 |
| 00:33 | alexbaranosky | amalloy, checking.......... |
| 00:33 | quotemstr | Wait --- rest is being changed, and the lazy sequence model redesigned? |
| 00:34 | amalloy | quotemstr: that is *very* old. the change has happened |
| 00:34 | quotemstr | Oh, okay. Good. |
| 00:41 | alexbaranosky | are there any good links to read more about &env? |
| 00:41 | alexbaranosky | nevermind: http://blog.jayfields.com/2011/02/clojure-and.html |
| 00:42 | alexbaranosky | didn't think I could effectively google for things starting with & |
| 01:31 | lghtng | ,&env |
| 01:31 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: &env in this context, compiling:(NO_SOURCE_PATH:0)> |
| 01:31 | lghtng | ,google &env |
| 01:31 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: google in this context, compiling:(NO_SOURCE_PATH:0)> |
| 01:31 | lghtng | ,g &env |
| 01:31 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: g in this context, compiling:(NO_SOURCE_PATH:0)> |
| 01:32 | lghtng | ,search &env |
| 01:32 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: search in this context, compiling:(NO_SOURCE_PATH:0)> |
| 01:32 | lghtng | ,uptime |
| 01:32 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: uptime in this context, compiling:(NO_SOURCE_PATH:0)> |
| 01:32 | amalloy | lghtng: if you're going to try to brute-force this, could you do it im PM? |
| 01:32 | lghtng | lol, ok |
| 01:32 | devn | heh |
| 01:32 | lghtng | sry |
| 01:32 | amalloy | $google &env |
| 01:32 | lazybot | [Jay Fields' Thoughts: Clojure: &env and &form] http://blog.jayfields.com/2011/02/clojure-and.html |
| 01:32 | devn | lghtng: np bro u r kewl |
| 01:33 | lghtng | what happened to the keywords in fsbot? |
| 01:33 | lghtng | tnx |
| 01:33 | devn | ur so welcome bro |
| 01:34 | amalloy | lghtng: you're not in #emacs, buddy. we don't have fsbot |
| 01:35 | devn | "you're not in #emacs anymore" |
| 01:36 | justicefries | the new vim chantitle |
| 01:36 | devn | justicefries: in madison? |
| 01:36 | justicefries | me? |
| 01:36 | clojurebot | slime-installer is deprecated |
| 01:37 | justicefries | like the city? |
| 01:37 | devn | justicefries: indeed |
| 01:37 | justicefries | no, I spoke there at madison ruby conf...fell in love with it, wouldn't mind going back. why? |
| 01:37 | justicefries | or living there. |
| 01:37 | devn | <-bendyworks |
| 01:38 | justicefries | oh nice. |
| 01:38 | justicefries | yeah, seems like the main place for a rubyist to work. |
| 01:41 | justicefries | I may end up moving there, we'll see. coolest place ever. |
| 01:45 | cgray` | ok, to answer my question from about 45 minutes ago, typehinting with ^"[Ljava.lang.Object;" is the way to go |
| 01:45 | amalloy | ^objects |
| 01:45 | cgray` | damn |
| 01:45 | cgray` | i thought i tried that |
| 01:46 | amalloy | well, i guess it might not work anymore, but i think it's supposed to |
| 01:46 | cgray` | i might have tried ^Objects |
| 01:46 | amalloy | any you still want to know the general syntax for things that don't have a shortcut like objects |
| 01:47 | cgray` | yeah, you can get it with (type foo)... |
| 01:47 | cgray` | it sped my code up by about 100x |
| 03:53 | quotemstr | Why is /= an "invalid token"? |
| 04:00 | amalloy | quotemstr: / is the namespace separator |
| 04:05 | quotemstr | amalloy: But it's not separating anything. |
| 04:05 | amalloy | that's why it's invalid |
| 04:06 | quotemstr | Symbols _starting_ with / are unambiguous and should be treated normally. |
| 04:06 | amalloy | meh |
| 04:06 | quotemstr | ( /= is what Lisp uses, so it'd be nice to be able to use the same symbol.) |
| 04:06 | amalloy | there's an exception for clojure.core//, but in general / isn't a legal part of a symbol |
| 04:07 | amalloy | 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 |
| 04:07 | amalloy | or +1 - i could never remember which order the dang things went in |
| 04:08 | quotemstr | 1+. |
| 04:08 | quotemstr | +1 is an integer. |
| 04:27 | quotemstr | Is there a way of writing (new foo bar) so that bar is evaluated? |
| 04:27 | quotemstr | That is, is there a way to choose the constructor used at runtime? |
| 04:28 | nickmbailey | that is how it will work by default |
| 04:29 | amalloy | i assume quotemstr meant he wants foo evaluated |
| 04:29 | nickmbailey | (new foo (bar))? |
| 04:29 | nickmbailey | wait, foo or bar |
| 04:30 | amalloy | quotemstr: reflection. you can muddle through the javadocs to do it by hand, or let clojure.lang.Reflector/invokeConstructor do it |
| 04:30 | quotemstr | Err, yes, I meant foo. |
| 04:30 | quotemstr | Thanks. |
| 04: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? |
| 04:34 | quotemstr | nickmbailey: I do it all the time in Lisp. |
| 04:35 | nickmbailey | just encountered it recently and the idea took me by surprise |
| 04:36 | quotemstr | Heck, I've seen people do that in C, with printf. |
| 04:37 | amalloy | really? surely it's easier to just use fprintf there |
| 04:38 | quotemstr | amalloy: Easier than reassigning stdout? |
| 04:38 | amalloy | yeah |
| 04:40 | quotemstr | amalloy: You might want to temporarily reassign stdout for the same reason you might want to temporarily bind *out*. |
| 04:40 | amalloy | i guess that's true |
| 04:41 | amalloy | the only serious C programming i ever did was on a device with no stdout, so i guess i'm out of touch there |
| 04: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? |
| 04:49 | amalloy | gmaggior: your parens are way off |
| 04:49 | amalloy | inside of bbb |
| 04:49 | gmaggior | oh |
| 04:50 | amalloy | (defn bbb [x y] (get (vec x) y)) ;; although this would be simpler: (def bbb nth) |
| 04:51 | alexbaranosky | amalloy, I should remember to use nth next time I am writing a bbb util function |
| 04:51 | alexbaranosky | it's so much more concise |
| 04: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) |
| 04:53 | alexbaranosky | aha! nice, do they wouldn't let you try the old (def bbb nth) trick anyway |
| 04:53 | tomoj | alexbaranosky: consider (nth (range) 3) |
| 04:54 | Raynes | (def bbc "Doctor Who") |
| 04:54 | alexbaranosky | tomoj, ? |
| 04: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 |
| 05:26 | quotemstr | Why is :keys necessary when an :or is present? |
| 05:26 | quotemstr | A bare :or provides all the information you need. |
| 05:26 | amalloy | they're orthogonal |
| 05:27 | quotemstr | I want to write a destructuring expression with default key values, and I don't want to repeat the key names. |
| 05:27 | amalloy | (let [{user-name :user-record-data-name :or {user-name "no user"}} the-data] (do stuff with user-name...)) |
| 05:27 | quotemstr | {:keys [a b] :or [a 0 b 2]} seems silly when the :or part indicates that key parsing is desired. |
| 05: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 |
| 05:28 | quotemstr | Err, {a 0 b 2}. |
| 05:29 | quotemstr | Still, I want is fairly common, I imagine. |
| 05:29 | amalloy | i don't really see :or get used that often. once in a while, sure |
| 05:30 | quotemstr | Maybe that's because you have to repeat the local names. |
| 05:30 | amalloy | haha |
| 05:32 | quotemstr | Why not follow CL and allow :keys [(key default-form)...] ? |
| 05: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}} |
| 05:33 | amalloy | quotemstr: or if you only use the value once, don't destructure it at all. (let [m (...)] (+ (m :a 0) (m :b 2))) |
| 05:33 | quotemstr | I'd have to provide a + version of every destructuring form. |
| 05:51 | Bahman | Hi all! |
| 06:01 | _ulises | morning folk |
| 06: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? |
| 06: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] ...) ...)? |
| 06:05 | _ulises | fbru02: have any code to show what you're getting? |
| 06:05 | _ulises | a simple example that is |
| 06:06 | fbru02 | _ulises: no, is just more like the order i was using when developing... but let me think on how i can clarify |
| 06:06 | _ulises | fbru02: are you using slime? |
| 06:06 | fbru02 | _ulises: yes |
| 06:06 | _ulises | I get that sometimes when I move things about between files and my swank server maintains state |
| 06:07 | _ulises | I tried with (ns-unmap ...) but perhaps I wasn't using it correctly |
| 06:07 | _ulises | I think you may want to experiment with that |
| 06:07 | _ulises | as in, it didn't work for me, but in theory that's what you'd want to clear a namespace |
| 06:08 | fbru02 | _ulises: awesome didn't know about its existence , thanks |
| 06:09 | _ulises | no worries |
| 06:09 | _ulises | let me know if this works and how you got it to work though :) |
| 08: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. |
| 08:53 | gfredericks | 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 |
| 08:55 | Raynes | Yeah. I imagine I'd have tried it rather than asking about it for two days with no answers. :P |
| 08:57 | gfredericks | Raynes: does clojurebot have a snarky phrase handy for that? |
| 08:57 | gfredericks | ~try-it |
| 08:57 | Raynes | Don't think so. |
| 08:57 | clojurebot | I don't understand. |
| 08:57 | Raynes | clojurebot: try-it |is| Why not just try it? It's quicker that way. |
| 08:57 | clojurebot | 'Sea, mhuise. |
| 08:58 | Raynes | ~try-it |
| 08:58 | clojurebot | try-it is Why not just try it? It's quicker that way. |
| 08:58 | Raynes | Well... close enough. |
| 08:58 | Raynes | clojurebot: try-it |is| <reply>Why not just try it? It's quicker that way. |
| 08:58 | clojurebot | 'Sea, mhuise. |
| 08:58 | gfredericks | dang what was the syntax for that. |
| 08:58 | Raynes | ~try-it |
| 08:58 | clojurebot | try-it is Why not just try it? It's quicker that way. |
| 08:58 | gfredericks | ~try-it |
| 08:58 | Raynes | Well, something like that. |
| 08:58 | clojurebot | Why not just try it? It's quicker that way. |
| 08:58 | Raynes | There we go. |
| 08:58 | gfredericks | Raynes: it worked, he's just got both now |
| 08:58 | gfredericks | clojurebot: forget try-it |
| 08:58 | clojurebot | Why not just try it? It's quicker that way. |
| 08:58 | gfredericks | ~try-it |
| 08:58 | clojurebot | try-it is Why not just try it? It's quicker that way. |
| 08:59 | Raynes | I concede. |
| 08:59 | gfredericks | clojurebot: forget try-it |is| Why not just try it? It's quicker that way. |
| 08:59 | clojurebot | I forgot that try-it is Why not just try it? It's quicker that way. |
| 08:59 | gfredericks | ~try-it |
| 08:59 | clojurebot | Why not just try it? It's quicker that way. |
| 08:59 | gfredericks | okay I think he's better now |
| 08:59 | ejackson | i think clojurebot had too much turkey |
| 09:00 | gfredericks | ~turkey |
| 09:00 | clojurebot | Excuse me? |
| 09:12 | biallym | Hey is there a way to have a function called on or around garbage collection of an object? |
| 09:13 | biallym | Like an Idisposable for C# |
| 09: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 | Raynes | fliebel: I don't remember the details, but I know of some classloader bizarreness that is the result of single-segment namespaces. |
| 12:51 | Raynes | Man, why isn't the guy who did this here: https://github.com/jedahu/story |
| 12:51 | Raynes | 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 | Raynes | fliebel: I'm not entirely confident that I know how to pronounce his name either. |
| 13:03 | Raynes | 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://blog.raynes.me/blog/2011/11/27/the-clojure-community-and-me/ |
| 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 | mdeboard | 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 | gtrak`` | 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 | ckirkendall | 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 | gtrak`` | but i could totally run a site |
| 13:33 | gtrak`` | 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 | gtrak`` | 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 | ckirkendall | 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 | gtrak`` | but that's ok |
| 13:40 | mdeboard | I think I'm going to disable the 80+ minor mode for clojure |
| 13:41 | mdeboard | The highlighting drives me bananas |
| 13:42 | Raynes | http://blog.raynes.me/blog/2011/11/27/the-clojure-community-and-me/#comment-373681480 |
| 13:42 | Raynes | "Continue being awesome." |
| 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:57 | Raynes | I haven't actually done a whole lot on 4Clojure. |
| 13:58 | Raynes | Definitely not enough to earn any ecreds. |
| 14:00 | Raynes | Oh shit -- I got hn'd: http://news.ycombinator.com/item?id=3282837 |
| 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 | Raynes | Or just do 'lein run'. |
| 14:06 | Raynes | That should work. |
| 14:06 | Raynes | 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://github.com/technomancy/swank-clojure/issues/31 |
| 14:11 | shtutgart | not only Method, Field, Constructor etc |
| 14:11 | ibdknox | not sure if that's related |
| 14:12 | ibdknox | but it appears to be an issue at the swank-clojure/slime level |
| 14:12 | ibdknox | which means I'm useless |
| 14:12 | ibdknox | :) |
| 14:13 | ibdknox | 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://paste.pocoo.org/show/513666/ I haven't touched mongo except to get its daemon running. I didn't see anything in .lazybot/config.clj about mongo config. |
| 14:22 | Raynes | mdeboard: I have no idea what that means. |
| 14:22 | Raynes | Is there a stacktrace? |
| 14:22 | mdeboard | ya |
| 14:22 | mdeboard | sec |
| 14:23 | mdeboard | http://paste.pocoo.org/show/513668/ |
| 14:23 | Raynes | Huh. |
| 14:23 | Raynes | mdeboard: Maybe the port is wrong? |
| 14:23 | Raynes | 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 | mdeboard | 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 | Raynes | Let's fix that first. Give me a sec. |
| 14:29 | Raynes | mdeboard: Could you hop over to #flatland? |
| 14:30 | mdeboard | sure |
| 14:34 | sritchie | Raynes, are you around? |
| 14:34 | sritchie | quick question on lein-nenew |
| 14:34 | sritchie | s/nenew/newnew |
| 14:34 | Raynes | sritchie: I am. |
| 14:34 | Raynes | 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 | Raynes | Just create your template and then publish it on clojars. |
| 14:36 | Raynes | 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 | sritchie | 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:38 | Raynes | :D |
| 14:39 | sritchie | I'm making a template for *-koans projects |
| 14:39 | sritchie | 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 | ibdknox | 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 | sritchie | files in your project |
| 14:40 | sritchie | 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 | ibdknox | a while back during the 1.3.0 transition I sent out a post telling everyone to remove it |
| 14:42 | ibdknox | lol |
| 14:43 | ibdknox | with some other general clean up things |
| 14:43 | Raynes | marginalia has a lein-vimclojure plugin in the dev deps. |
| 14:43 | Raynes | Makes me want to kill myself. |
| 14:43 | ibdknox | now now. Vim is a special case :D |
| 14:43 | ibdknox | we have to wave our flag proudly |
| 14:43 | ibdknox | as we are the few here |
| 14:44 | Raynes | Heh. |
| 14:44 | Raynes | You should be the transitioning. |
| 14:44 | ibdknox | sritchie: you were building something with Noir, right? How did that go? |
| 14:45 | ibdknox | 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 | Raynes | 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 | ibdknox | 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://github.com/sritchie/contour |
| 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 | ibdknox | devn: http://groups.google.com/group/clj-noir/browse_thread/thread/1718a9b1312156d3 |
| 14:48 | devn | be back in 7 hours after I finish reading this |
| 14:48 | ibdknox | sritchie: that's really cool :) |
| 14:49 | ibdknox | sritchie: how was working with CLJS? |
| 14:49 | devn | have you guys seen trail? |
| 14:50 | devn | https://github.com/bobby/trail |
| 14:50 | ibdknox | yeah |
| 14:51 | ibdknox | 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 | ibdknox | 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 | sritchie | ibdknox: I found that the browser repl helped a lot; it was a bit difficult to figure out how to examine javascript objects, etc, but that's more my problem |
| 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 | ibdknox | 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 | ibdknox | 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 | ibdknox | lots of cool things you can do with that |
| 14:56 | Raynes | sritchie: Let me know when your template is out. |
| 14:57 | Raynes | ibdknox: Also. Trynoir. Do it. |
| 14:57 | ibdknox | I know |
| 14:57 | ibdknox | 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 | Raynes | "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 | sritchie | 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 | sritchie | I'm back in town tomorrow, I'll send you a note |
| 15:03 | ibdknox | awesome. |
| 15:03 | ibdknox | There are a lot of us around here, it's funny that none of us seem to find eachother though |
| 15:04 | ibdknox | 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 | sritchie | rudely interrupting your pinot demonstration |
| 15:04 | ibdknox | haha |
| 15:04 | pmooser | ok I am going to go read this article |
| 15:05 | pmooser | 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 | ibdknox | Now I need to convince mark to go |
| 15:06 | ibdknox | 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://hyperpolyglot.org/lisp |
| 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 | devn | 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 | 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 | ibdknox | 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 | devn | 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://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#copyOf(T[], int) |
| 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 | ibdknox | devn: https://github.com/mmikulicic/haml-macro |
| 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 | ibdknox | 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://github.com/raymyers/JHaml |
| 15:22 | ericmoritz\0 | 100% less suck means it neither sucks nor blows |
| 15:23 | ibdknox | true. |
| 15:23 | ibdknox | 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 | devn | no interpolation is a bummer |
| 15:24 | ibdknox | devn: I didn't look much into it :) |
| 15:24 | ibdknox | 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://github.com/heyZeus/clj-web-crawler |
| 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 | devn | 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 | devn | 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 | Wild_Cat | (i.e. the local equivalent to "use lxml or BeautifulSoup" |
| 15:33 | Wild_Cat | ) |
| 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 | Wild_Cat | 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 | devn | parens in lisp and scheme are overloaded. they mean everything. |
| 15:41 | Wild_Cat | yeah, that's how I felt. |
| 15:42 | Wild_Cat | 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 | samaaron | Saturnation: do you rock the linux? |
| 15:51 | mdeboard | lol |
| 15:51 | mdeboard | brogrammers |
| 15:51 | samaaron | mdeboard: brogramming motherfucker! |
| 15:52 | Saturnation | I use the linux :) |
| 15:52 | Saturnation | 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://monome.org |
| 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: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 | Saturnation | 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 | 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 | samaaron | Saturnation: could you do a fresh pull of the master branch on http://github.com/overtone/overtone |
| 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 | Saturnation | lots of good noises :) |
| 15:58 | Saturnation | 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 | 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 | devn | just post* |
| 15:59 | samaaron | devn: it's crazy cool |
| 15:59 | samaaron | 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 | devn | samaaron: sorry to hear that. :\ |
| 16:00 | samaaron | devn: that would be cool |
| 16:00 | samaaron | 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 | samaaron | 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 | samaaron | 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 | Saturnation | yes |
| 16:04 | Saturnation | I can act insane and try again? :) |
| 16:04 | samaaron | hmm, that's odd - i haven't touched the server code |
| 16:04 | samaaron | 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 | Saturnation | 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://gist.github.com/1398139 |
| 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 | samaaron | but if scsynth is in your PATH then you're probably good |
| 16:09 | Saturnation | I'm good |
| 16:09 | Saturnation | 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 | OK, reset, what would you like me to test? |
| 16:12 | samaaron | devn: this page might help https://github.com/overtone/overtone/wiki/Connecting-scsynth |
| 16:12 | samaaron | 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://gist.github.com/1398139 |
| 16:12 | daniel___ | 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 | Saturnation | agreed |
| 16:13 | samaaron | so i think we're best going with an external server |
| 16:13 | samaaron | so for that, you don't (use 'overtone.live) |
| 16:13 | samaaron | instead you (use 'overtone.core) |
| 16:13 | samaaron | and then (boot-external-server) |
| 16:14 | Saturnation | don't think I ever got (boot-external-server) to work ever |
| 16:15 | Saturnation | but was able to start the super collider server then connect to it fully the tutorials |
| 16:15 | Saturnation | 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 | Saturnation | 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 | samaaron | 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 | Saturnation | OK, I'm there and started :) |
| 16:24 | samaaron | Saturnation: great |
| 16:24 | samaaron | Saturnation: so (demo (sin-osc)) works? |
| 16:24 | Saturnation | Houston, we have a beep! :) |
| 16:24 | Saturnation | yes it does |
| 16:24 | samaaron | Saturnation: hell yeah |
| 16:24 | samaaron | 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:27 | Saturnation | OK? |
| 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 | Saturnation | 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 | Saturnation | sorry |
| 16:30 | samaaron | devn: mdapiano sucks - you want to use the new sampled piano in 0.6-dev |
| 16:30 | samaaron | devn: but if you do want it, you need to use an external server with the bonus ugens installed |
| 16:30 | samaaron | Saturnation: what did you do? |
| 16:31 | Saturnation | typed the wrong thing, sorry :/ |
| 16:31 | Saturnation | 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 | samaaron | Saturnation: it should be overtone.helpers.file |
| 16:32 | Saturnation | yes, I typed badly :) |
| 16:32 | Saturnation | but I am there |
| 16:32 | samaaron | try (mk-tmp-dir!) |
| 16:32 | samaaron | 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 | samaaron | 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 | samaaron | devn: and once you've downloaded it, it's cached in your ~/.overtone dir |
| 16:35 | samaaron | 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 | Saturnation | 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 | devn | ah, wrong number of args |
| 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 | samaaron | Saturnation: not "/tmp" |
| 16:38 | samaaron | 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 | devn | 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 | samaaron | 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 | devn | 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 | devn | 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 | devn | :) |
| 16:42 | samaaron | devn: also 0 is typically left and 1 is right |
| 16:42 | samaaron | 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 | 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 | 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 | samaaron | 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 | samaaron | 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://gist.github.com/1398198 |
| 16:50 | samaaron | 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 | Saturnation | 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 | Saturnation | 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 | samaaron | devn: the mailing list might be the best place for this |
| 16:54 | samaaron | 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 | devn | 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 | samaaron | 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 | samaaron | devn: the demo will be one channel only |
| 16:57 | Saturnation | 30% |
| 16:58 | samaaron | devn: can you hear the sampled-piano? |
| 16:58 | samaaron | 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 | samaaron | 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 | devn | 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 | samaaron | 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 | samaaron | 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 | samaaron | devn: it's crazy low-level like that - we probably need to build those smarts into overtone itself |
| 17:02 | samaaron | 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 | samaaron | ok, we need to think of a nice solution for overtone to handle this case |
| 17:04 | samaaron | 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 | samaaron | 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 | devn | (defchannel speakers [0 1]) |
| 17:05 | devn | 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 | samaaron | we could definitely do with this kind of abstraction though |
| 17:07 | samaaron | 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 | devn | I figured the same would be true for supercollider |
| 17:09 | samaaron | devn: we have to start somewhere :-) |
| 17:10 | samaaron | 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 | samaaron | 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 | devn | samaaron: thanks for your help |
| 17:11 | Saturnation | Houston, we have sampled-piano! |
| 17:11 | samaaron | Saturnation: very cool |
| 17:11 | samaaron | 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 | samaaron | Saturnation: devn: thanks so much for your help |
| 17:12 | Saturnation | thank you for all the work you've put into it |
| 17:12 | Saturnation | I'll do my best to play later |
| 17:12 | devn | samaaron: annnddd I fixed it. |
| 17:12 | samaaron | Saturnation: youan thank me by having fun with it |
| 17:13 | samaaron | s/youan/you can/ |
| 17:13 | samaaron | 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 | devn | 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 | samaaron | 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 | devn | piano sure took a lot of args |
| 17:18 | devn | 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 | samaaron | devn: we could run an envelope over it |
| 17:20 | samaaron | devn: but it does sound *much* better than the synth piano |
| 17:21 | samaaron | 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 | samaaron | Overtone can now reference arbitrary wav files on thh web and cache them locally |
| 17:22 | samaaron | 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 | Raynes | 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 | samaaron | now it's time for bed |
| 17:32 | samaaron | 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://raynes.me/hfiles/mraow.mov |
| 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 | technomancy | 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 | technomancy | 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 | danlarkin | therefore it cannot be supported |
| 17:48 | danlarkin | 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 | Raynes | It'll only be actively developed as long as we still need it for our projects at Geni. |
| 18:19 | Raynes | 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 | alexbaranosky | 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 | Raynes | 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 | ibdknox | :) |
| 18:33 | zakwilson | Yes if I have a compliment, no if I have a complaint? |
| 18:33 | ibdknox | basically. |
| 18:33 | ibdknox | haha |
| 18:33 | ibdknox | 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 | ibdknox | :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 | ibdknox | I just convert them into millis |
| 18:36 | ibdknox | that isn't specific to Korma though |
| 18:36 | ibdknox | all java.jdbc will do that |
| 18:36 | ibdknox | 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 | zakwilson | And what were the people who wrote the Java data libraries smoking? |
| 18:37 | ibdknox | lol |
| 18:37 | ibdknox | well the trivial solution is to just convert them |
| 18:38 | ibdknox | fixing the use of java.sql.timestamp would likely mean changing the sql drivers |
| 18:38 | ibdknox | which isn't worth the effort |
| 18:39 | zakwilson | http://pastebin.com/CUyv7rSA <-- is this reasonable, or is there a better way? |
| 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 | ibdknox | 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 | gfredericks | maybe korma? |
| 19:17 | amalloy | yes it does |
| 19:18 | amalloy | 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 | ibdknox | though it doesn't unify SQL differences itself |
| 19:19 | ibdknox | things like "AS" for example |
| 19:20 | ibdknox | 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 | ibdknox | 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 | ibdknox | 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 | ibdknox | and for the most part they do |
| 19:26 | ibdknox | otherwise korma wouldn't work at all |
| 19:26 | ibdknox | 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 | ibdknox | huh |
| 19:30 | ibdknox | I missed this... when did getwoven disappear? |
| 19:30 | ibdknox | 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 | zakwilson | 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 | :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 | ibdknox | I've tried building something large and performant in node |
| 19:36 | ibdknox | It was painful |
| 19:36 | ibdknox | 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 | tolstoy | 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 | zakwilson | 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 | zakwilson | 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 | ibdknox | 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 | Raynes | (require new.lein.noir.version) |
| 19:43 | ibdknox | well |
| 19:43 | ibdknox | I think 1.2.2 will be coming out next weekend probably |
| 19:43 | ibdknox | I need to do a docs pass |
| 19:44 | Raynes | Acceptable. |
| 19:44 | Raynes | 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 | ibdknox | Raynes: marg couldn't run over the project last time I tried |
| 19:45 | Raynes | ibdknox: Bullshit. |
| 19:45 | Raynes | 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 | ambrosebs | 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 | ambrosebs | 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 | ambrosebs | 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 | ibdknox | about exposing analysis |
| 20:00 | ibdknox | 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 | ibdknox | 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://skitch.com/thinkslate/gma6i/noir |
| 20:25 | devn | ibdknox: ;) |
| 20:32 | devn | 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 | alexbaranosky | 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 | devn | :) |
| 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 | devn | 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 | devn | they're more malleable. |
| 21:05 | tolstoy | Well, hm. |
| 21:06 | tolstoy | 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 | tolstoy | 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://www.youtube.com/watch?v=USlnfTGlhXc |
| 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 | alexbaranosky | 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 | alexbaranosky | 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 | mdeboard | 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 | alexbaranosky | 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 | alexbaranosky | tmciver: http://groups.google.com/group/baznex |
| 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 | tmciver | 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 | alexbaranosky | 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 | alexbaranosky | 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 | alexbaranosky | 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 | tmciver | alexbaranosky: Wednesday is the 30th . . . |
| 21:50 | tmciver | alexbaranosky: did you mean this Wednesday? |
| 21:50 | alexbaranosky | crap |
| 21:50 | alexbaranosky | hehe |
| 21:51 | alexbaranosky | 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 | quotemstr | Exception No namespace: clojure.string clojure.core/refer (core.clj:3761) |
| 22:05 | quotemstr | 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://blog.8thlight.com/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html |
| 22:08 | trptcolin | 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 | quotemstr | Aren't both just seqs? |
| 22:09 | quotemstr | Is there a way to just refer to string.split directly? |
| 22:10 | trptcolin | libspecs have to be vectors |
| 22:10 | trptcolin | 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 | quotemstr | Thanks for the blog post. |
| 22:12 | quotemstr | 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 | quotemstr | 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 | quotemstr | 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 | amalloy | 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 | quotemstr | Thanks. |
| 22:21 | quotemstr | 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 | quotemstr | 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 | quotemstr | 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 | amalloy | huh, good question. it does seem like an odd choice, just to save three or four characters |
| 22:28 | amalloy | perhaps it's a remnant from a time when vars were more-special in some way, and (var foo) didn't exist |
| 22:28 | amalloy | 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 | quotemstr | It's still habit to write #'function. |
| 22:32 | amalloy | quotemstr: well, that still works |
| 22:32 | amalloy | &(map #'inc [1 2 3 4]) |
| 22:32 | lazybot | ⇒ (2 3 4 5) |
| 22:32 | quotemstr | Oh, right. |
| 22:32 | quotemstr | Because functions are vars. |
| 22:32 | amalloy | it's a bad habit, but not an actual problem |
| 22:32 | amalloy | because vars are functions |
| 22:32 | amalloy | 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 | amalloy | whereas not every function is a var |
| 22:34 | quotemstr | Ah. |
| 22:34 | quotemstr | 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://gist.github.com/1398972 |
| 22:40 | trptcolin | 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 | trptcolin | as-file / as-url |
| 22:43 | ambrosebs | gtrak: you might be interested in following this project https://github.com/frenchy64/typed-clojure |
| 22:43 | amalloy | jio/resource is just delegating to .getResource on the classloader |
| 22:43 | trptcolin | yeah jio/resource is cool |
| 22:44 | trptcolin | 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 | trptcolin | https://gist.github.com/1398988 |
| 22:49 | trptcolin | .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 | trptcolin | but usually when i feel this confident about a problem in clojure i'm wrong :) |
| 22:52 | trptcolin | 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://clojure.org/libs |
| 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 | trptcolin | 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 | technomancy | trptcolin: did you see http://dev.clojure.org/jira/browse/CLJ-879 ? |
| 22:58 | trptcolin | yeah, i like it |
| 22:59 | trptcolin | 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 | trptcolin | especially since it already works, as someone (amalloy?) pointed out |
| 23:00 | trptcolin | 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 | technomancy | 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 | technomancy | otherwise you're just asking for confusion |
| 23:01 | trptcolin | require-the-function? |
| 23:01 | trptcolin | oh, nm |
| 23:01 | trptcolin | 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 | trptcolin | here's that thread: https://groups.google.com/d/topic/clojure-dev/JluIepQCGbI/discussion - looks like Andy, Alex, & I had a brief offline chat about it, but didn't land anywhere |
| 23:07 | technomancy | thanks |
| 23:17 | ckirkendall | does anyone no a good way in clojure script to check for the type NodeList |
| 23:17 | ckirkendall | *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 | hiredman | 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 | hiredman | 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://news.ycombinator.com/item?id=3283713 |