2010-01-10
| 00:10 | optimizer | does anyone know of an implementation of stackoverflow in clojure? |
| 00:10 | optimizer | that'd be so cool |
| 00:11 | gregh | stackoverflow the web site? |
| 00:13 | optimizer | yeah, |
| 00:13 | optimizer | like i wnat to run a private stackoverflow |
| 00:13 | optimizer | and perferably it'd be in clojure |
| 00:13 | gregh | afaik there isn't any other implementation of stackoverflow, so it's unlikely that any of those implementations would be in clojure. :) |
| 00:14 | optimizer | i wonder what people in caompanies use |
| 00:14 | mitchellh1 | Typically "clones" of stackoverflow lack on a lot of features. The basic question/answer/upvoting is easy to do, but stackoverflow is comprised of a lot of really neat features. |
| 00:14 | mitchellh1 | optimizer: Stack overflow licenses out its software to 3rd parties |
| 00:14 | optimizer | enlighten me please |
| 00:14 | optimizer | what neat features? |
| 00:15 | mitchellh1 | optimizer: Let me find something, one sec |
| 00:16 | mitchellh1 | optimizer: http://stackexchange.com/ |
| 00:16 | mitchellh1 | There is the actually software which runs stack overflow |
| 00:17 | mitchellh1 | And the features I'm talking about are searching, badges, wiki functionality, spam filters, statistics, etc. which are all not totally trivial to implement QUICKLY (though trivial to implement, sans spam filters) |
| 00:20 | optimizer | alot of these features, badges, spam, etc ... |
| 00:20 | optimizer | seems useful when you have to motivate a bunch of people you're not paying |
| 00:20 | optimizer | but within a company,where you can hire/fire people at will, spam does not seem like a problem |
| 00:55 | technomancy | anyone with edit permissions on clojure.org around? |
| 00:56 | technomancy | the "getting started" page links to a really old version of clojure-mode |
| 00:56 | tolstoy | And the contrib.sql links to SVN for examples. |
| 01:21 | Licenser | hmm, when I do have a map and change something via assoc the GC will clean up the unused copies right? |
| 01:21 | Licenser | ´ |
| 01:23 | tolstoy | Licenser: I'd assume so. |
| 01:23 | Licenser | okay, I'd hope so |
| 03:56 | Licenser | hmm I'm confused why is this: (defn a [] 1) (defn a [] (+ (a) 1)) (a) I'd kind of expect 2 |
| 03:59 | Licenser | okay I'm wrong and a tad confused |
| 04:04 | Licenser | (let [a a] (def a (fn [] (+ (a) 1)))) works as I epxect thank you :D |
| 04:18 | LauJensen | Hehe - Fun last night when I logged off defn was having a discussion with himself as well :) |
| 04:48 | Licenser | LauJensen: sometimes it helps just to phrase your thoughts to find the solution ;) als I don't contradict myself as often as others do so I'm a good person to talk to for me :P |
| 04:49 | LauJensen | Yea that sounds like a plan :) |
| 04:49 | Licenser | ^^ |
| 04:52 | Licenser | (= LauJensen "The lau with the webcasts about cloujure web development") ? |
| 04:52 | LauJensen | true |
| 04:53 | Licenser | ah cool then good work with them! I liked them |
| 04:55 | LauJensen | Great, glad to hear it |
| 05:00 | Licenser | helped me getting started with emacs ^^ |
| 05:04 | LauJensen | Yea you can't dig into that too soon |
| 05:05 | Licenser | Heh |
| 05:07 | Licenser | I don't like it too much, but it slowly gets better - seem so that my incompetence is part of the problem :P |
| 05:28 | LauJensen | You read the Tolstoy quote right? :) |
| 07:48 | LauJensen | Is there a spit variant which appends if the file exists+ |
| 07:50 | LauJensen | oh.. seems append-spit might do just that :) |
| 08:33 | somnium | ~def get |
| 09:07 | BrianB04 | Morning all. |
| 10:08 | bagucode | Is there a way to programmatically check how many arguments a function takes |
| 10:08 | bagucode | ? |
| 10:08 | bagucode | Given the function object |
| 10:08 | Chousuke | bagucode: yes, but it's not trivial and relies on implementation details and reflection |
| 10:08 | bagucode | :( |
| 10:12 | bagucode | Chousuke: I'm implementing callbacks in my C interop lib and I'm suspecting very bad things (like a jvm crash) will happen if the jvm throws an exception instead of returning normally to a native function. So I wanted to check that the number of arguments match for the callback specification when registering a clojure function for callbacks. |
| 10:13 | Chousuke | bagucode: you can always wrap the function in something that does the checking for you and returns a sane failure value if there is an argument mismatch. |
| 10:15 | bagucode | Chousuke: you mean catch the exception on the jvm side and return a sane value to the native function? Yeah that would be a good plan if I knew the details of the native function. But this is not for a particular library, I'm writing a clojure library for interfacing with C in general. |
| 10:16 | bagucode | So for that to work, the user would have to input valid error codes to use in case of an exception when she specifies the callback interface :/ I don't like that |
| 10:18 | bagucode | I guess I will just see what happens and if it's a disaster when an exception happens then I don't mind relying on implementation details. |
| 10:20 | bagucode | Actually, never mind. I would have to check the return type as well, which is impossible since it's always Object so I have to trust the users to get it right :) |
| 11:14 | edbond | how to convert lazyseq to string? |
| 11:16 | the-kenny | (apple str seq) |
| 11:16 | arohner | (apply str lazyseq) |
| 11:16 | the-kenny | s/apple/apply/ |
| 11:17 | the-kenny | ,(apply str (take 10 (iterate inc 0))) |
| 11:17 | clojurebot | "0123456789" |
| 11:18 | edbond | thanks |
| 11:53 | LauJensen | I'm taking lein out for a spin and lein compile runs fine, but lein jar fails with .../haddit/src/.#haddit.clj File Not Found - What does it get the notion that src should contain a .#haddit.clj file? |
| 11:58 | somnium | LauJensen: .# is an emacs file lock |
| 11:59 | somnium | LauJensen: save/close all the buffers in your project and theyll likely go away |
| 12:01 | LauJensen | 1) the file doesn't exist (which is the problem according to lein), 2) Why would lein care? |
| 12:03 | LauJensen | hmmm, correction, there was a broken symlink in there - wonder who made it |
| 12:04 | somnium | LauJensen: emacs puts hidden .#foo files in the dir where the original file exists, and lein stumbles on them when it traverses ./src I guess |
| 12:05 | somnium | in my experience at least this has been the case |
| 12:05 | LauJensen | Ok - First time I've seen that. Emacs knows that all tmp files go in a certain directory |
| 12:45 | durka42 | this seems weird to me |
| 12:45 | durka42 | but my program seems to have a bottleneck in java.lang.Integer.intValue |
| 12:55 | crazzyford | Is there an easy way to convert a seq into a set? |
| 12:59 | schlammpudding | (into #{} <your seq here>) |
| 13:15 | defn | durka42: could you explain more |
| 13:16 | durka42 | defn: i profiled my program with YourKit, and it's spending a lot of time in clojure's Divide, specifically isZero, which calls intValue because it needs a primitive |
| 13:17 | defn | did you try saying (int blah) |
| 13:18 | defn | or type hinting? |
| 13:24 | the-kenny | durka42: There's uncheckedDivide, which doesn't check for division-through-zero.. you have to be careful, that's clear |
| 13:25 | durka42 | hmm, i will look at that |
| 13:27 | durka42 | no unchecked-divide for floats? |
| 13:34 | chouser | durka42: you shouldn't need unchecked. just using '/' on primitives instead of moxed number should give you a good boost. |
| 13:34 | chouser | boxed |
| 13:36 | durka42 | chouser: fair enough |
| 13:37 | edbond | how to convert string from one encoding to other? |
| 13:40 | Kjellski | Hi there =) |
| 13:41 | chouser | edbond: strings are already "decoded", so you may be wanting a way to convert from bytes (array? on disk?) to strings, or from strings to bytes. |
| 13:41 | chouser | or both. |
| 13:44 | Kjellski | Anyone with a better solution than this to do a "curl" - http://paste.lisp.org/+1ZX7 ? |
| 13:45 | LauJensen | I've added a dependency in defproject both as a regular dep and a dev-dep, but when compiling it says that its not on the classpath - why? Its downloaded correctly to lib/ |
| 13:46 | Kjellski | omfg... forget it... just did the read-lines solo and said something homer like... |
| 13:47 | chouser | Kjellski: I think you can just (slurp* "http://whatever/") |
| 13:49 | robwolfe | LauJensen: "export DEBUG=1", try compile again and see what is on your classpath |
| 13:50 | LauJensen | robwolfe: thanks |
| 13:50 | Kjellski | chouser : yes, that works too, thanks... but is there a better way to handle html than just parse that output? |
| 13:51 | chouser | Kjellski: I'm not sure what you mean. |
| 13:51 | Kjellski | chouser : like find input fields and links .... |
| 13:51 | chouser | Are you asking, when your goal is parsed HTML, if there's a better way to fetch it than to slurp into a string? |
| 13:51 | chouser | or something else? |
| 13:54 | edbond | chouser: I get html page in wrong encoding, want to convert it to utf8 |
| 13:55 | chouser | edbond: might be best to try to set the encoding when you read the bytes |
| 14:09 | Kjellski | chouser: that´s exacptly what would be nice... |
| 14:25 | chouser | Kjellski: clojure.xml/parse can take a url string |
| 14:25 | chouser | and then you could use clojure.contrib.zip-filter to certain tags. |
| 14:25 | chouser | or you could use enlive which has similar features. |
| 14:26 | LauJensen | Who is in charge of Clojars? And who do I get in touch with that person, the contact email on the site bounces |
| 14:27 | the-kenny | LauJensen: _ato. The source is on Github |
| 14:27 | LauJensen | the-kenny: Ok, what do I need the source for? |
| 14:27 | the-kenny | LauJensen: Don't know :) Maybe you're interested in it |
| 14:28 | LauJensen | I'm often tripping over broken jars from that site, thats my interest |
| 14:29 | the-kenny | ah ok |
| 14:29 | Kjellski | chouser thanks! |
| 14:31 | Kjellski | chouser : the problem is, nearly no page is really well formatted, so I´m getting only errors... =( |
| 14:32 | chouser | Kjellski: right, you want tagsoup |
| 14:32 | chouser | Kjellski: enlive uses that by default I think, but clojure.xml can be made to use it as well. |
| 14:33 | chouser | Kjellski: see zip-soup here: http://github.com/hiredman/odds-and-ends/blob/master/newegg.clj |
| 14:35 | Kjellski | Thanks a lot... I´ll try to install that! |
| 14:59 | Kjellski | chouser: could you give me a hint on what I´m missing? http://paste.lisp.org/display/93215 thought there should be something in there, no? |
| 15:00 | chouser | Kjellski: do you have your *print-level* set low, to something like 4 or 5? |
| 15:01 | Kjellski | chouser: that´s it... how can I inc that? |
| 15:01 | chouser | I use (set! *print-level* 15) |
| 15:02 | Kjellski | chouser : thanks again... |
| 15:05 | chouser | np |
| 15:08 | mebaran151 | LauJensen, is there anyway to use clojureql to insert a blog (like an x.509 cert) |
| 15:08 | mebaran151 | *blob |
| 15:08 | mebaran151 | in clojureQL that is |
| 15:09 | LauJensen | mebaran151: Not now, but look in the backend at set-env and extend it to Blob - Should take about 5 minz if all goes well |
| 15:10 | mebaran151 | I think it requires some custom jdbc calls |
| 15:15 | LauJensen | I wouldn't think so, but I encourage you to find out :) |
| 15:19 | mebaran151 | yeah, we're internally using a patched ClojureQL that has support for returning auto-genned keys and now we'll add blobs |
| 15:21 | mebaran151 | I think one of my team sent some patches to you a week ago actually |
| 15:48 | arohner | grr. Google, when I search for "ref?" I mean "ref?" not "ref" |
| 15:48 | arohner | similarly with ref\? |
| 15:51 | crazzyford | is there a good guide to when you should be testing in clojure? I've been struggling with working out when to use the repl, and when to write tests |
| 15:51 | arohner | crazzyford: that's really a question of personal taste, and the riskiness of your project |
| 15:52 | chouser | best is if you can pick out a process that makes it easy to move snippets from the repl to a test suite |
| 15:52 | crazzyford | so I've been writing a simple webapp |
| 15:52 | crazzyford | and loadsa stuff I would have previously written tests for I now just do at the repl |
| 15:53 | crazzyford | apart from authentication things |
| 15:53 | crazzyford | which are all tested out pretty heavily |
| 15:54 | crazzyford | everywhere else it seems kinda pointless to test things, in that the code is so simple there's really not much to test |
| 15:54 | chouser | crazzyford: you're aware of how many tests rhickey has written for clojure itself, right? |
| 15:55 | crazzyford | none iirc |
| 15:55 | chouser | exactly |
| 15:55 | chouser | so there's one opinion for ya. :-) |
| 15:55 | crazzyford | aye |
| 15:59 | technomancy | crazzyford: if you keep as much of your code in pure functions as possible, it's easy to write simple tests for it |
| 15:59 | technomancy | then for the messy stateful UI stuff you could punt on automated testing and do it by hand |
| 15:59 | crazzyford | which is what I've been doing |
| 15:59 | crazzyford | it just annoys me |
| 15:59 | technomancy | automated testing for web apps that use nontrivial JS is usually more trouble than it's worth in my experience |
| 16:00 | crazzyford | guess I could go look at selenium or summat |
| 16:00 | crazzyford | aye |
| 16:00 | technomancy | so freakng complicated |
| 16:00 | crazzyford | the other thing that bothers me about testing is that `lein test` takes freaking ages |
| 16:01 | arohner | webdriver is somewhat simpler than selenium, but it's still a mess |
| 16:01 | crazzyford | and I'm used to running tests after every save (or thereabouts) |
| 16:01 | technomancy | crazzyford: oh yeah... lein test is for that one final sanity check before you commit |
| 16:01 | technomancy | it's not for TDD |
| 16:01 | technomancy | for TDD you want something like clojure-test-mode |
| 16:01 | technomancy | something you don't need to spin up a new JVM for |
| 16:02 | tknudsen | has BDD found popularity with clojure developers? |
| 16:02 | crazzyford | there's circumspec |
| 16:02 | technomancy | crazzyford: if you're not using slime I think there's a nailgun plugin for lein test |
| 16:02 | crazzyford | but the api is still under heavy development |
| 16:02 | crazzyford | I'm using slime |
| 16:02 | tknudsen | crazzyford, thanks |
| 16:02 | technomancy | crazzyford: definitely try clojure-test-mode then |
| 16:03 | technomancy | it highlights failures inside the Emacs buffer, so you don't have to manually match up line numbers |
| 16:03 | technomancy | super-handy |
| 16:03 | crazzyford | is there a guide to clojure-test-mode somewhere |
| 16:03 | crazzyford | heh |
| 16:03 | crazzyford | like augment.el? |
| 16:04 | technomancy | exactly! |
| 16:04 | technomancy | except not generalized |
| 16:04 | technomancy | crazzyford: just install it with package.el, open your test file, and hit C-c C-, to run the tests |
| 16:04 | technomancy | nuthin to it |
| 16:05 | technomancy | oh damn... there's actually a bug in package.el that may prevent it from getting installed right. |
| 16:05 | technomancy | I have the bugfix, but it hasn't been applied yet |
| 16:05 | crazzyford | seems to be installed right |
| 16:05 | crazzyford | I never managed to make it work before now though |
| 16:05 | technomancy | oh? |
| 16:06 | crazzyford | can't remember the exact error |
| 16:06 | technomancy | you weren't using contrib test-is, were you? |
| 16:06 | crazzyford | nah installing it from package.el wasn't working |
| 16:07 | crazzyford | and I'm using clojure.test |
| 16:07 | technomancy | oh, right. to work around the bug just rm ~/.emacs.d/elpa/swank-clojure* before you install, and it will get re-installed. |
| 16:07 | crazzyford | it works fine now, so eh |
| 16:07 | crazzyford | don't think I have swank-clojure installed, using lein slime and slime-connect |
| 16:07 | technomancy | strange, I just fixed that bug last night; no way the fix has made it to you yet. =) |
| 16:08 | technomancy | oh, that makes sense |
| 16:08 | crazzyford | aye |
| 16:08 | crazzyford | yeah that's pretty awesome |
| 16:08 | crazzyford | at least it would be if clojure had nicer stack traces :/ |
| 16:08 | hiredman | clojure.stacktrace |
| 16:09 | chouser | clojure stack traces are so rish with information. |
| 16:09 | chouser | rich |
| 16:09 | chouser | :-) |
| 16:10 | tknudsen | chouser, perfect. I was in need of more reading. |
| 16:12 | tknudsen | I see that compojure (off-topic?) has been sorted into more libraries. I have a website that would provide a good deal of traffic without commercial interference that may help with debugging. |
| 16:13 | tknudsen | sorted/simplified |
| 16:13 | crazzyford | technomancy thanks a bunch for that |
| 16:14 | crazzyford | huge help |
| 16:14 | crazzyford | now I just need to move my tests out of circumspec and into clojure.test |
| 16:15 | mebaran151 | my partner is writing a set of macros that would take tests from the repl and automatically save them in a test suite |
| 16:15 | mebaran151 | it's kind of cool |
| 16:15 | mebaran151 | like an interactive test maker |
| 16:17 | chouser | I wrote a thing for our book -- goes through the text of each chapter and confirms that examples produce the output and return value shown in the text. |
| 16:17 | tknudsen | chouser, what's your book title? |
| 16:17 | chouser | "The Joy of Clojure" |
| 16:18 | mebaran151 | I feel like cooking |
| 16:18 | chouser | I'm sure that bit of code would frustrate any confirmed literate programming advocate. If there are any of those left. |
| 16:18 | chouser | mebaran151: :-) |
| 16:18 | tknudsen | I was thinking of purchasing the beta of the aPress clojure book. Love their CL book. |
| 16:18 | chouser | tknudsen: nothing to buy quite yet. Any day now, so they say... |
| 16:18 | mebaran151 | which bit of code? |
| 16:18 | chouser | mebaran151: the bit of code I wrote to extract examples and their output from our book text. |
| 16:19 | mebaran151 | ah |
| 16:21 | chouser | but it behaves as a sort of test suite for the book itself. kinda interesting. |
| 16:21 | hiredman | neat |
| 16:22 | chouser | of course it also occasionally tries to use the Clojure compiler on bits of scheme or java code. :-P |
| 16:24 | hiredman | time to use some bayesian filtering for languages |
| 16:24 | chouser | heh |
| 16:24 | crazzyford | just search the text above the code snippet for "java" or "scheme" |
| 16:25 | hiredman | crazzyford: how boring is that |
| 16:25 | crazzyford | true |
| 16:26 | mebaran151 | I should think there should be tagging in the markup |
| 16:26 | hiredman | https://ci-bayes.dev.java.net/ |
| 16:26 | mebaran151 | the book itself could be a giant ant script |
| 16:27 | hiredman | pffft |
| 16:27 | crazzyford | hell |
| 16:27 | crazzyford | write your book in clojure as well |
| 16:27 | hiredman | tagging is just shifting work from the computer to the author, which is shifting it in the wrong direction |
| 16:27 | hiredman | crazzyford: feed #clojure logs through a markov chain generator |
| 16:29 | mebaran151 | well I often whish my IDE and wordprocessor used a richer data structure than .... flat everything shows text |
| 16:29 | mebaran151 | *wish |
| 16:30 | hiredman | ~hiredman |
| 16:30 | clojurebot | hiredman is slightly retarded |
| 16:30 | hiredman | :| |
| 16:30 | hiredman | ~hiredman |
| 16:30 | clojurebot | hiredman is slightly retarded |
| 16:30 | Chousuke | :/ |
| 16:30 | hiredman | clourebot never gives the factoid I want |
| 16:31 | hiredman | clojurebot: latex? |
| 16:31 | clojurebot | No entiendo |
| 16:31 | hiredman | ~hiredman |
| 16:31 | clojurebot | hiredman is slightly retarded |
| 16:31 | mebaran151 | ~soup |
| 16:31 | clojurebot | excusez-moi |
| 16:31 | hiredman | that is a random selection from four or five factiods about me |
| 16:31 | mebaran151 | oh |
| 16:31 | mebaran151 | ha |
| 16:31 | tknudsen | Programming Clojure by Holloway looks good. I see that the author also wrote circumspec. |
| 16:32 | hiredman | ~hiredman |
| 16:32 | clojurebot | hiredman <3 XeLaTeX |
| 16:32 | hiredman | yay! |
| 16:32 | chouser | I dislike LaTeX as a source language. |
| 16:33 | tknudsen | chouser, you would write a book in sexp instead of latex? |
| 16:34 | tknudsen | err s-exp |
| 16:51 | Kjellski | Is the code for (ns ...) outdated at http://richhickey.github.com/clojure/clojure.core-api.html#clojure.core/ns ? Seems like it doesn´t work without vectors for me... |
| 16:51 | Kjellski | Or do I need the actual build? |
| 17:11 | Kjellski | Where can I get an actual clojure-contrib.jar? |
| 17:12 | technomancy | Kjellski: build.clojure.org should have one |
| 17:12 | Kjellski | technomancy : thanks! |
| 17:13 | crazzyford | so if I'm in src/foo.clj, can it run the tests from test/foo-test.clj |
| 17:14 | Kjellski | technomancy : actually it would be pretty nice if that was mentioned somewhere on clojure.org... thanks again (pasting to favorites) |
| 17:14 | technomancy | crazzyford: I started on some functionality to do that, but our project at work is such a mess wrt directory layout that calculating the relationship between implementation files and test files was going to be a huge pain |
| 17:14 | technomancy | Kjellski: agreed. |
| 17:15 | technomancy | crazzyford: the problem is there's not really a widely-accepted mapping between the two that you can rely on |
| 17:16 | technomancy | I guess if lein spit out an empty test file when it did "lein new" it would go a fair ways towards creating such a convention |
| 17:16 | crazzyford | true |
| 17:16 | crazzyford | also major thanks for lein |
| 17:17 | crazzyford | I barely got into clojure before it existed due to laziness with managing the classpath etc |
| 17:17 | technomancy | pain is your software's way of telling you to write some code to fix it. =) |
| 17:17 | DapperDan | technomancy: to back up a default file/directory convention, there could be a mechanism for explicitly linking source and test files from within the files themselves. what do you think? |
| 17:18 | seths | technomancy: seconded for a skeleton testfile from lein new |
| 17:19 | technomancy | DapperDan: namespace-level metadata would do it, but there's a bug in the compiler right now that deletes metadata for namespaces that are AOT'd |
| 17:19 | technomancy | so I'm hesitant |
| 17:19 | technomancy | clojurebot: #232 |
| 17:19 | clojurebot | It's greek to me. |
| 17:19 | technomancy | clojurebot: ticket #232 |
| 17:19 | clojurebot | {:url http://tinyurl.com/yhlzzjc, :summary "Locals cleared too aggressively on delay", :status :new, :priority :normal, :created-on "2009-12-31T01:27:06+00:00"} |
| 17:20 | technomancy | clojurebot: ticket #130 |
| 17:20 | clojurebot | {:url http://tinyurl.com/ndkovn, :summary "Namespace metadata lost in AOT compile", :status :new, :priority :normal, :created-on "2009-06-19T04:47:33+00:00"} |
| 17:20 | technomancy | that's the one |
| 17:21 | technomancy | with c-in-c "right around the corner" there's not a lot of motivation to fix compiler bugs like that |
| 17:22 | DapperDan | Does c-in-c have a milestone? (By another name, perhaps?) |
| 17:22 | technomancy | I don't think so |
| 17:23 | DapperDan | while i have your attention, thanks a lot for your work with lein and swank. do you get any of the Clojure donation money, or do you have a donation link of your own? |
| 17:25 | technomancy | thanks! I don't have any donation stuff set up, but if you want to help the best thing you could do is buy the Clojure PeepCode and recommend it to others since I get royalties from that. |
| 17:27 | DapperDan | noted. i think a boilerplate note on your blog to the effect of "if you liked this, buy X" would be appropriate. |
| 17:27 | seths | DapperDan: I heartily recommend the Clojure PeepCode |
| 17:29 | seths | it doesn |
| 17:29 | seths | t even scare people with Emacs |
| 17:29 | technomancy | DapperDan: yeah, good idea. |
| 17:32 | DapperDan | technomancy: on your github repos as well. with a deep link to the peepcode screencast page, for pagerank. i still think you should have e.g. a paypal donate page, because i could see myself donating once for lein and once for swank. |
| 17:33 | technomancy | DapperDan: I can't say I've done enough with swank to take donations for it. =) |
| 17:33 | technomancy | I've only taken over from the original author and made it easier to install and done a few bugfixes. |
| 17:57 | Kjellski | Anyone with a bigger example on parsing xml with zip-filter? |
| 18:10 | hiredman | http://blogs.azulsystems.com/cliff/2010/01/biased-locking.html <-- this makes biased locking sound bad for stm |
| 18:16 | seths | has anyone tried the Azul JVM with Clojure? |
| 18:17 | hiredman | rhickey's ant colony sim has been run on an azul box |
| 18:17 | chouser | that was traveling salesman using an ant algorithm, right? Not the food-gathering one. |
| 18:18 | hiredman | I don't know |
| 18:42 | hiredman | clojurebot: #clojure? |
| 18:42 | clojurebot | this is not IRC, this is #clojure. We aspire to better than that. |
| 18:48 | chouser | rhickey: you're not around, itching to answer a question about agent error handling race conditions, are you? |
| 19:08 | seths | wow, the funding is going pretty well! |
| 19:08 | seths | that is great |
| 19:16 | chouser | 7 corps -- very cool. |
| 19:20 | mebaran151 | does Clojure have a non-profit governing board to handle donations? |
| 19:20 | chouser | nope. Donations go to Rich. |
| 19:24 | DapperDan | Are there other open-source projects which handle this well? Maybe there is a webapp idea behind making it easy for any developer to solicit/receive donations. |
| 19:24 | danlarkin | it's called paypal :) |
| 19:26 | DapperDan | I'm looking at Paypal as 'just' a payment mechanism, I'm talking about bounties/auctions for milestones or bugs, graphs so people can see how close a goal is to being met, etc. Like elance on a micro-scale. |
| 19:27 | seths | btw, pls consider s/paypal/google checkout/ |
| 19:27 | DapperDan | One could still use paypal or Amazon wishlists for the actual donation. |
| 19:27 | seths | or at least += |
| 19:27 | DapperDan | sure |
| 19:28 | seths | DapperDan: what is elance? |
| 19:28 | the-kenny | seths: No, Google Checkout only accepts Credit Cards. That's endlessly annoying |
| 19:30 | DapperDan | http://www.elance.com/ |
| 19:34 | mebaran151 | I've often considered writing an app that would let an opensource project embed a donator |
| 19:34 | mebaran151 | where a user could set some sort of rate based on usage, with some sort of cap involved |
| 19:35 | mebaran151 | maybe distributed between lots and lots of projects that all signed up |
| 19:35 | chouser | mebaran151: based on ratios I could set. |
| 19:35 | mebaran151 | yeah exactly |
| 19:35 | mebaran151 | or ratios that you derive from some other function |
| 19:36 | mebaran151 | like open time |
| 19:36 | chouser | mebaran151: that can be initialized by a tool that looks at what packages I have installed |
| 19:36 | chouser | right |
| 19:36 | mebaran151 | yeah |
| 19:36 | mebaran151 | does this already exist? |
| 19:36 | mebaran151 | I was thinking it could be embedded in license files |
| 19:36 | chouser | and only takes 5% of my donation. :-P |
| 19:36 | mebaran151 | that would automatically get parsed |
| 19:36 | mebaran151 | heh, or maybe nothing |
| 19:36 | mebaran151 | like open source style |
| 19:36 | DapperDan | it could be linked to a run-time profiler, and weight fund allocations based on who commited the code. |
| 19:37 | chouser | the most money going to the authors of the least efficient code? |
| 19:37 | mebaran151 | the reason it would have to take 5 percent is that, working with authorize.net, you already give 5 percent to the credit card companies and paypal for moving the money |
| 19:37 | chouser | I don't thinnk anything automatic would be very good, but something that seeds your ratios with something sane that you can then tweak. |
| 19:37 | mebaran151 | yeah |
| 19:37 | mebaran151 | exactly |
| 19:38 | mebaran151 | my company is actually developing something similar for media companies |
| 19:38 | DapperDan | chouser: profiler could be for what functions are called, not how long they took to run. |
| 19:38 | mebaran151 | but it seems really easy to move it into open source |
| 19:39 | DapperDan | mebaran151: it does sound like a similar problem to royalties for AV usage. |
| 19:39 | mebaran151 | yeah |
| 19:39 | mebaran151 | very similar |
| 19:39 | mebaran151 | the biggest problem in open source though is what you're buying |
| 19:39 | mebaran151 | we all give money to Rich with the implicit promise he'll keep working on the code |
| 19:40 | mebaran151 | with a company, the terms are explicit |
| 19:40 | mebaran151 | so it would be nice to link open source payments with a kind of escrow |
| 19:40 | chouser | nah, I'd be happy to pay for the work already done. |
| 19:41 | mebaran151 | that's a fair point |
| 19:41 | chouser | if they stop developing, they're likely to be overtaken by another project. when I start using that, I'll stop paying for the old one. |
| 19:41 | DapperDan | mebaran151: there are lots of models, e.g. "i want [this bug] fixed, and will pay X". or "here's $$ to pay for milestone Clojure-in-Clojure" |
| 19:41 | mebaran151 | yeah, settable by the user |
| 19:41 | mebaran151 | or even for libraries: I want a great library for Amazon S3 or what not |
| 19:41 | DapperDan | or documentation |
| 19:42 | mebaran151 | haha documentation! |
| 19:42 | DapperDan | screencasts |
| 19:42 | mebaran151 | this is UNIX |
| 19:42 | mebaran151 | read the source ... |
| 19:42 | mebaran151 | but yeah |
| 19:42 | mebaran151 | I think it would be a great tool for open source if it were seamless and integrated over a lot of projects |
| 19:42 | mebaran151 | like I gave money to Clojure, but I really should give money to Ubuntu too, because they made my dev environment livable |
| 19:42 | mebaran151 | and to Netbeans |
| 19:43 | DapperDan | integration with github, assembla, lighthouse, etc. |
| 19:43 | mebaran151 | and to even the nice guy who wrote XChat |
| 19:43 | mebaran151 | well if the app had postbacks, we'd be set |
| 19:43 | DapperDan | agreed |
| 19:43 | mebaran151 | but I don't have 2 grand a month |
| 19:43 | mebaran151 | I do have like 100, and I'd like it to be fairly distributed to projects that need it |
| 19:44 | DapperDan | yep |
| 19:45 | hiredman | what does "give money to ubuntu" mean? give money to canonical? |
| 19:45 | hiredman | (or whatever it's called) |
| 19:46 | mebaran151 | well support ubuntu development |
| 19:46 | chouser | you can "buy" ubuntu, can't you? |
| 19:46 | mebaran151 | it was meant to illustrate that there are a lot of good projects |
| 19:46 | chouser | yes |
| 19:46 | mebaran151 | and it would be nice if donation were automated |
| 19:46 | mebaran151 | and setup in some fair way |
| 19:47 | hiredman | I find calling it a "donation" kind of odd |
| 19:47 | mebaran151 | well Ubuntu isn't as good an example, because it has a company |
| 19:47 | mebaran151 | just like github |
| 19:47 | mebaran151 | but I used to use ArchLinxu |
| 19:47 | mebaran151 | ArchLinxu |
| 19:48 | hiredman | mebaran151: ok, so if you want to give money to archlinux, that means what? you give money to some foundation? to a single developer? |
| 19:48 | mebaran151 | and they definitely don't have a rich Mark Shuttleworth to help support them |
| 19:48 | mebaran151 | that's the other issue in open source |
| 19:48 | mebaran151 | usually the governance is unclear |
| 19:49 | hiredman | this kind of market organization is a difficult problem |
| 19:49 | DapperDan | hiredman: I was talking about funding a very specific unit of work, e.g. a bug or milestone, not a whole project. |
| 19:49 | mebaran151 | but let's assume there existed an entity that could accept donations |
| 19:49 | mebaran151 | and disperse them properly |
| 19:49 | hiredman | DapperDan: so whatever entity does the work gets the funds |
| 19:49 | mebaran151 | say by bug fixed, or unit of work |
| 19:49 | DapperDan | hiredman: yes |
| 19:49 | hiredman | mebaran151: that's just it |
| 19:50 | mebaran151 | or they could prioritize bugs per se |
| 19:50 | hiredman | you can't waive your hands and assume perfect distribution |
| 19:50 | mebaran151 | say bug x is worth more than bug y |
| 19:50 | mebaran151 | not quite, but I think if the payment system existed |
| 19:50 | mebaran151 | open sourcers wouldhave a huge incentive to have better organization |
| 19:50 | DapperDan | put auctions on the bugs "I'll fix it for $X" or bounties "whoever fixes gets $Y", that will prioritise them |
| 19:50 | hiredman | what DapperDan (dig the reference) is proposing is an actual market |
| 19:51 | mebaran151 | the problem with that is that unsexy bugs are less likely to get bounties |
| 19:51 | mebaran151 | or good architectural changes |
| 19:51 | hiredman | less work since the market assumes the work of distribution as well |
| 19:51 | chouser | but that's a lot of market overhead for each little piece of work |
| 19:51 | mebaran151 | exactly |
| 19:51 | hiredman | sure |
| 19:51 | DapperDan | hiredman: I haven't studied economics but OK |
| 19:51 | mebaran151 | but both these systems can work together |
| 19:51 | chouser | and puts a disinsentive on fixing bugs quickly before they get bid up |
| 19:51 | DapperDan | mebaran151: architectural changes would come under milestones? |
| 19:52 | mebaran151 | maybe |
| 19:52 | mebaran151 | but who decides milestones |
| 19:52 | mebaran151 | you need an organization to do this |
| 19:52 | hiredman | isn't there some bug database where you can file bugs against anything? |
| 19:53 | mebaran151 | but these are two separate problem |
| 19:53 | hiredman | essentially you want rent-a-coder without the feeling of being in the ghetto |
| 19:53 | mebaran151 | one is getting money to open source projects |
| 19:53 | mebaran151 | the other is internal distribution |
| 19:53 | mebaran151 | they're related, but can be solved independently |
| 19:53 | hiredman | mebaran151: one won't work without the other |
| 19:53 | mebaran151 | well you need tools for both |
| 19:54 | mebaran151 | but a donation to an opensource project can be as simple as supporting a single developer, like for Clojure |
| 19:54 | hiredman | you cannot give money to "clojure" there is no entity "clojure" to recieve the money, you can just give money to rhickey |
| 19:54 | mebaran151 | or building something more complex, like if I were to donate to the Apache project |
| 19:54 | chouser | single-person projects already have the "internal distribution" problem solved. |
| 19:54 | mebaran151 | which has governance etc |
| 19:54 | chouser | right |
| 19:54 | mebaran151 | a projects that have more than a single person, really probably need to get a governance board etc |
| 19:55 | mebaran151 | like I know GNOME has a foundation |
| 19:55 | hiredman | mebaran151: yes, but at that point you are handing over the control of the distribution of funds to the apache project |
| 19:55 | mebaran151 | when I donate to charity, I do that anyway |
| 19:55 | hiredman | I'd rather just give money to a developer |
| 19:56 | hiredman | mebaran151: and you see stories of outrage over the small percentage of money that doesn't go to 'overhead' for charitys |
| 19:56 | mebaran151 | well I mean both schemes could be developed |
| 19:57 | mebaran151 | they're not mutually exclusive |
| 19:57 | mebaran151 | developers could register to have their worked sponsored |
| 19:57 | mebaran151 | bugs could register to have their work sponsored |
| 19:57 | mebaran151 | projects could register |
| 19:57 | mebaran151 | if I trusted the Apache Foundation to make good decisions, I'd probably be amenable to letting them figure out what needs to get done |
| 20:00 | mebaran151 | if I wanted to micromanage, that option should be available too |
| 20:01 | DapperDan | mebaran151: ideas from kivo.org would probably apply |
| 20:02 | mebaran151 | I thnk that's actually a little too active |
| 20:02 | mebaran151 | it's gotta be like a set it and forget it sorta thing, that can be tweaked as necessary |
| 20:07 | mebaran151 | bug bounties only make sense for very well qualified, very informed customers |
| 20:16 | technomancy | rich gets 10% of the peepcode monies |
| 20:23 | mebaran151 | heh, I was looking for evening project, maybe I'll throw something together in compojure |
| 20:24 | DapperDan | will you send me an email if you get something working? |
| 20:24 | mebaran151 | oh yeah sure |
| 20:29 | technomancy | mebaran151: you should think about contributing to clojars |
| 20:29 | technomancy | that's a useful compojure project |
| 20:29 | mebaran151 | you mean donation or code wise? |
| 20:29 | technomancy | just as a project to work on |
| 20:30 | mebaran151 | oh yeah sure |
| 20:30 | technomancy | it's helpful to be able to take a look at a working project to see how it's structured, etc |
| 20:30 | mebaran151 | actually my colleague and me were talking about that just today |
| 20:30 | mebaran151 | over lunch |
| 20:30 | mebaran151 | we were thinking of cooler ways to search clojure projects |
| 20:31 | mebaran151 | like by docstring or by function, or being able to cherrypick individual functiosn with dependencies between them |
| 20:31 | mebaran151 | and get a custom namespace with exactly what you needed |
| 20:31 | mebaran151 | (he's a computational linguist, so these problems are candy for him) |
| 20:32 | quizme | is Lau here ? |
| 20:33 | mebaran151 | I was thinking of download all the clojars to get a dataset, but I'm worried about your bandwidth bill :) |
| 20:51 | mebaran151 | technomancy, what would be the best way to get all the clojars for you? |
| 20:55 | technomancy | mebaran151: I was talking with _ato about enabling couchdb replication to do that, but I don't know if it got anywhere. =\ |
| 20:56 | mebaran151 | is your fts powered by couchdb? |
| 20:56 | technomancy | I told him I would help with the browse functionality, but I got distracted by leiningen, swank, and package.el |
| 20:56 | technomancy | mebaran151: it's couch-lucene IIRC |
| 20:56 | technomancy | http://github.com/rnewson/couchdb-lucene |
| 20:57 | mebaran151 | did you ever look at hypersonicsql |
| 20:57 | technomancy | mebaran151: I don't run clojars; it's _ato |
| 20:57 | technomancy | (Alex Osborne) |
| 20:57 | technomancy | I just wrote leiningen |
| 20:57 | mebaran151 | oh |
| 20:58 | technomancy | I hacked the codebase a little right after lein was released, but that's all |
| 20:58 | mebaran151 | well, actually we wanted to do some source investigation (like unzip all the clojars and actually do some semantic indexing) |
| 20:58 | technomancy | there aren't enough jars for bandwidth to be a big issue yet |
| 20:59 | technomancy | once there are, hopefully we can use couchdb replication to make it easy for folks to host mirrors |
| 20:59 | technomancy | couch replication is badass |
| 20:59 | mebaran151 | aren't the jars files though? |
| 20:59 | technomancy | yeah, but you can attach files to couchdb documents |
| 21:00 | mebaran151 | do you actually stuff them into couchdb as blobs? |
| 21:00 | mebaran151 | *does he? |
| 21:00 | mebaran151 | I played with CouchDB about version 0.6 and got annoyed that they kept breaking it |
| 21:00 | technomancy | I don't know if he does yet, but I think that's the way it'll be done in the future to support replication |
| 21:00 | technomancy | it's come a looooong way since 0.6 |
| 21:00 | mebaran151 | I can buy it |
| 21:01 | mebaran151 | but I left for h2 which was based on hsql with integrated lucene |
| 21:01 | mebaran151 | that was a surprisingly well integrated, nice experience |
| 21:01 | mebaran151 | and sql replication is usually pretty simple to setup |
| 21:02 | mebaran151 | couch does master to master replication though right? |
| 21:03 | technomancy | it does |
| 21:03 | technomancy | but for clojars only the main site would perform writes |
| 21:07 | mebaran151 | yeah, I never trusted master to master replication |
| 21:08 | mebaran151 | it feels like something that should be application specific to be done right |
| 21:10 | technomancy | I can't say I've used it in action |
| 21:13 | mebaran151 | what makes couchdb master slave replication better than sql replication |
| 21:14 | mebaran151 | just easier to setup? |
| 21:14 | technomancy | yeah, you just point it at an HTTP URL and click go; nothing to it |
| 21:14 | mebaran151 | heh, that is kinda neat |
| 21:15 | technomancy | can be initaited via curl, or whatever |
| 21:33 | mebaran151 | I'd be more than happy to contribute to clojars though |
| 23:41 | chouser | haha. My Java is so bad. |
| 23:42 | hiredman | :( |
| 23:42 | chouser | I'm null-punning everywhere. When the compiler calls me on it I try to compare to NULL |
| 23:42 | hiredman | hah |
| 23:42 | hiredman | just rewrite clojure on it :P |
| 23:43 | chouser | I'm a Clojure programmer, trapped in C++ and trying to use javac... |
| 23:47 | johnmn3 | Hello |
| 23:52 | defn | chouser: i bet my java is worse :) |
| 23:57 | mebaran151 | whenever I write Java, I feel like I'm in the Soviet Union |
| 23:57 | mebaran151 | with all the factories, and interfaces, and hierarchies, and five year plans |