#clojure logs

2010-01-10

00:10optimizerdoes anyone know of an implementation of stackoverflow in clojure?
00:10optimizerthat'd be so cool
00:11greghstackoverflow the web site?
00:13optimizeryeah,
00:13optimizerlike i wnat to run a private stackoverflow
00:13optimizerand perferably it'd be in clojure
00:13greghafaik there isn't any other implementation of stackoverflow, so it's unlikely that any of those implementations would be in clojure. :)
00:14optimizeri wonder what people in caompanies use
00:14mitchellh1Typically "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:14mitchellh1optimizer: Stack overflow licenses out its software to 3rd parties
00:14optimizerenlighten me please
00:14optimizerwhat neat features?
00:15mitchellh1optimizer: Let me find something, one sec
00:16mitchellh1optimizer: http://stackexchange.com/
00:16mitchellh1There is the actually software which runs stack overflow
00:17mitchellh1And 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:20optimizeralot of these features, badges, spam, etc ...
00:20optimizerseems useful when you have to motivate a bunch of people you're not paying
00:20optimizerbut within a company,where you can hire/fire people at will, spam does not seem like a problem
00:55technomancyanyone with edit permissions on clojure.org around?
00:56technomancythe "getting started" page links to a really old version of clojure-mode
00:56tolstoyAnd the contrib.sql links to SVN for examples.
01:21Licenserhmm, when I do have a map and change something via assoc the GC will clean up the unused copies right?
01:21Licenser´
01:23tolstoyLicenser: I'd assume so.
01:23Licenserokay, I'd hope so
03:56Licenserhmm I'm confused why is this: (defn a [] 1) (defn a [] (+ (a) 1)) (a) I'd kind of expect 2
03:59Licenserokay I'm wrong and a tad confused
04:04Licenser(let [a a] (def a (fn [] (+ (a) 1)))) works as I epxect thank you :D
04:18LauJensenHehe - Fun last night when I logged off defn was having a discussion with himself as well :)
04:48LicenserLauJensen: 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:49LauJensenYea that sounds like a plan :)
04:49Licenser^^
04:52Licenser(= LauJensen "The lau with the webcasts about cloujure web development") ?
04:52LauJensentrue
04:53Licenserah cool then good work with them! I liked them
04:55LauJensenGreat, glad to hear it
05:00Licenserhelped me getting started with emacs ^^
05:04LauJensenYea you can't dig into that too soon
05:05LicenserHeh
05:07LicenserI don't like it too much, but it slowly gets better - seem so that my incompetence is part of the problem :P
05:28LauJensenYou read the Tolstoy quote right? :)
07:48LauJensenIs there a spit variant which appends if the file exists+
07:50LauJensenoh.. seems append-spit might do just that :)
08:33somnium~def get
09:07BrianB04Morning all.
10:08bagucodeIs there a way to programmatically check how many arguments a function takes
10:08bagucode?
10:08bagucodeGiven the function object
10:08Chousukebagucode: yes, but it's not trivial and relies on implementation details and reflection
10:08bagucode:(
10:12bagucodeChousuke: 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:13Chousukebagucode: 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:15bagucodeChousuke: 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:16bagucodeSo 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:18bagucodeI 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:20bagucodeActually, 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:14edbondhow to convert lazyseq to string?
11:16the-kenny(apple str seq)
11:16arohner(apply str lazyseq)
11:16the-kennys/apple/apply/
11:17the-kenny,(apply str (take 10 (iterate inc 0)))
11:17clojurebot"0123456789"
11:18edbondthanks
11:53LauJensenI'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:58somniumLauJensen: .# is an emacs file lock
11:59somniumLauJensen: save/close all the buffers in your project and theyll likely go away
12:01LauJensen1) the file doesn't exist (which is the problem according to lein), 2) Why would lein care?
12:03LauJensenhmmm, correction, there was a broken symlink in there - wonder who made it
12:04somniumLauJensen: 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:05somniumin my experience at least this has been the case
12:05LauJensenOk - First time I've seen that. Emacs knows that all tmp files go in a certain directory
12:45durka42this seems weird to me
12:45durka42but my program seems to have a bottleneck in java.lang.Integer.intValue
12:55crazzyfordIs there an easy way to convert a seq into a set?
12:59schlammpudding(into #{} <your seq here>)
13:15defndurka42: could you explain more
13:16durka42defn: 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:17defndid you try saying (int blah)
13:18defnor type hinting?
13:24the-kennydurka42: There's uncheckedDivide, which doesn't check for division-through-zero.. you have to be careful, that's clear
13:25durka42hmm, i will look at that
13:27durka42no unchecked-divide for floats?
13:34chouserdurka42: you shouldn't need unchecked. just using '/' on primitives instead of moxed number should give you a good boost.
13:34chouserboxed
13:36durka42chouser: fair enough
13:37edbondhow to convert string from one encoding to other?
13:40KjellskiHi there =)
13:41chouseredbond: 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:41chouseror both.
13:44KjellskiAnyone with a better solution than this to do a "curl" - http://paste.lisp.org/+1ZX7 ?
13:45LauJensenI'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:46Kjellskiomfg... forget it... just did the read-lines solo and said something homer like...
13:47chouserKjellski: I think you can just (slurp* "http://whatever/&quot;)
13:49robwolfeLauJensen: "export DEBUG=1", try compile again and see what is on your classpath
13:50LauJensenrobwolfe: thanks
13:50Kjellskichouser : yes, that works too, thanks... but is there a better way to handle html than just parse that output?
13:51chouserKjellski: I'm not sure what you mean.
13:51Kjellskichouser : like find input fields and links ....
13:51chouserAre you asking, when your goal is parsed HTML, if there's a better way to fetch it than to slurp into a string?
13:51chouseror something else?
13:54edbondchouser: I get html page in wrong encoding, want to convert it to utf8
13:55chouseredbond: might be best to try to set the encoding when you read the bytes
14:09Kjellskichouser: that´s exacptly what would be nice...
14:25chouserKjellski: clojure.xml/parse can take a url string
14:25chouserand then you could use clojure.contrib.zip-filter to certain tags.
14:25chouseror you could use enlive which has similar features.
14:26LauJensenWho is in charge of Clojars? And who do I get in touch with that person, the contact email on the site bounces
14:27the-kennyLauJensen: _ato. The source is on Github
14:27LauJensenthe-kenny: Ok, what do I need the source for?
14:27the-kennyLauJensen: Don't know :) Maybe you're interested in it
14:28LauJensenI'm often tripping over broken jars from that site, thats my interest
14:29the-kennyah ok
14:29Kjellskichouser thanks!
14:31Kjellskichouser : the problem is, nearly no page is really well formatted, so I´m getting only errors... =(
14:32chouserKjellski: right, you want tagsoup
14:32chouserKjellski: enlive uses that by default I think, but clojure.xml can be made to use it as well.
14:33chouserKjellski: see zip-soup here: http://github.com/hiredman/odds-and-ends/blob/master/newegg.clj
14:35KjellskiThanks a lot... I´ll try to install that!
14:59Kjellskichouser: 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:00chouserKjellski: do you have your *print-level* set low, to something like 4 or 5?
15:01Kjellskichouser: that´s it... how can I inc that?
15:01chouserI use (set! *print-level* 15)
15:02Kjellskichouser : thanks again...
15:05chousernp
15:08mebaran151LauJensen, is there anyway to use clojureql to insert a blog (like an x.509 cert)
15:08mebaran151*blob
15:08mebaran151in clojureQL that is
15:09LauJensenmebaran151: 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:10mebaran151I think it requires some custom jdbc calls
15:15LauJensenI wouldn't think so, but I encourage you to find out :)
15:19mebaran151yeah, we're internally using a patched ClojureQL that has support for returning auto-genned keys and now we'll add blobs
15:21mebaran151I think one of my team sent some patches to you a week ago actually
15:48arohnergrr. Google, when I search for "ref?" I mean "ref?" not "ref"
15:48arohnersimilarly with ref\?
15:51crazzyfordis 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:51arohnercrazzyford: that's really a question of personal taste, and the riskiness of your project
15:52chouserbest is if you can pick out a process that makes it easy to move snippets from the repl to a test suite
15:52crazzyfordso I've been writing a simple webapp
15:52crazzyfordand loadsa stuff I would have previously written tests for I now just do at the repl
15:53crazzyfordapart from authentication things
15:53crazzyfordwhich are all tested out pretty heavily
15:54crazzyfordeverywhere else it seems kinda pointless to test things, in that the code is so simple there's really not much to test
15:54chousercrazzyford: you're aware of how many tests rhickey has written for clojure itself, right?
15:55crazzyfordnone iirc
15:55chouserexactly
15:55chouserso there's one opinion for ya. :-)
15:55crazzyfordaye
15:59technomancycrazzyford: if you keep as much of your code in pure functions as possible, it's easy to write simple tests for it
15:59technomancythen for the messy stateful UI stuff you could punt on automated testing and do it by hand
15:59crazzyfordwhich is what I've been doing
15:59crazzyfordit just annoys me
15:59technomancyautomated testing for web apps that use nontrivial JS is usually more trouble than it's worth in my experience
16:00crazzyfordguess I could go look at selenium or summat
16:00crazzyfordaye
16:00technomancyso freakng complicated
16:00crazzyfordthe other thing that bothers me about testing is that `lein test` takes freaking ages
16:01arohnerwebdriver is somewhat simpler than selenium, but it's still a mess
16:01crazzyfordand I'm used to running tests after every save (or thereabouts)
16:01technomancycrazzyford: oh yeah... lein test is for that one final sanity check before you commit
16:01technomancyit's not for TDD
16:01technomancyfor TDD you want something like clojure-test-mode
16:01technomancysomething you don't need to spin up a new JVM for
16:02tknudsenhas BDD found popularity with clojure developers?
16:02crazzyfordthere's circumspec
16:02technomancycrazzyford: if you're not using slime I think there's a nailgun plugin for lein test
16:02crazzyfordbut the api is still under heavy development
16:02crazzyfordI'm using slime
16:02tknudsencrazzyford, thanks
16:02technomancycrazzyford: definitely try clojure-test-mode then
16:03technomancyit highlights failures inside the Emacs buffer, so you don't have to manually match up line numbers
16:03technomancysuper-handy
16:03crazzyfordis there a guide to clojure-test-mode somewhere
16:03crazzyfordheh
16:03crazzyfordlike augment.el?
16:04technomancyexactly!
16:04technomancyexcept not generalized
16:04technomancycrazzyford: just install it with package.el, open your test file, and hit C-c C-, to run the tests
16:04technomancynuthin to it
16:05technomancyoh damn... there's actually a bug in package.el that may prevent it from getting installed right.
16:05technomancyI have the bugfix, but it hasn't been applied yet
16:05crazzyfordseems to be installed right
16:05crazzyfordI never managed to make it work before now though
16:05technomancyoh?
16:06crazzyfordcan't remember the exact error
16:06technomancyyou weren't using contrib test-is, were you?
16:06crazzyfordnah installing it from package.el wasn't working
16:07crazzyfordand I'm using clojure.test
16:07technomancyoh, right. to work around the bug just rm ~/.emacs.d/elpa/swank-clojure* before you install, and it will get re-installed.
16:07crazzyfordit works fine now, so eh
16:07crazzyforddon't think I have swank-clojure installed, using lein slime and slime-connect
16:07technomancystrange, I just fixed that bug last night; no way the fix has made it to you yet. =)
16:08technomancyoh, that makes sense
16:08crazzyfordaye
16:08crazzyfordyeah that's pretty awesome
16:08crazzyfordat least it would be if clojure had nicer stack traces :/
16:08hiredmanclojure.stacktrace
16:09chouserclojure stack traces are so rish with information.
16:09chouserrich
16:09chouser:-)
16:10tknudsenchouser, perfect. I was in need of more reading.
16:12tknudsenI 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:13tknudsensorted/simplified
16:13crazzyfordtechnomancy thanks a bunch for that
16:14crazzyfordhuge help
16:14crazzyfordnow I just need to move my tests out of circumspec and into clojure.test
16:15mebaran151my partner is writing a set of macros that would take tests from the repl and automatically save them in a test suite
16:15mebaran151it's kind of cool
16:15mebaran151like an interactive test maker
16:17chouserI 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:17tknudsenchouser, what's your book title?
16:17chouser"The Joy of Clojure"
16:18mebaran151I feel like cooking
16:18chouserI'm sure that bit of code would frustrate any confirmed literate programming advocate. If there are any of those left.
16:18chousermebaran151: :-)
16:18tknudsenI was thinking of purchasing the beta of the aPress clojure book. Love their CL book.
16:18chousertknudsen: nothing to buy quite yet. Any day now, so they say...
16:18mebaran151which bit of code?
16:18chousermebaran151: the bit of code I wrote to extract examples and their output from our book text.
16:19mebaran151ah
16:21chouserbut it behaves as a sort of test suite for the book itself. kinda interesting.
16:21hiredmanneat
16:22chouserof course it also occasionally tries to use the Clojure compiler on bits of scheme or java code. :-P
16:24hiredmantime to use some bayesian filtering for languages
16:24chouserheh
16:24crazzyfordjust search the text above the code snippet for "java" or "scheme"
16:25hiredmancrazzyford: how boring is that
16:25crazzyfordtrue
16:26mebaran151I should think there should be tagging in the markup
16:26hiredmanhttps://ci-bayes.dev.java.net/
16:26mebaran151the book itself could be a giant ant script
16:27hiredmanpffft
16:27crazzyfordhell
16:27crazzyfordwrite your book in clojure as well
16:27hiredmantagging is just shifting work from the computer to the author, which is shifting it in the wrong direction
16:27hiredmancrazzyford: feed #clojure logs through a markov chain generator
16:29mebaran151well I often whish my IDE and wordprocessor used a richer data structure than .... flat everything shows text
16:29mebaran151*wish
16:30hiredman~hiredman
16:30clojurebothiredman is slightly retarded
16:30hiredman:|
16:30hiredman~hiredman
16:30clojurebothiredman is slightly retarded
16:30Chousuke:/
16:30hiredmanclourebot never gives the factoid I want
16:31hiredmanclojurebot: latex?
16:31clojurebotNo entiendo
16:31hiredman~hiredman
16:31clojurebothiredman is slightly retarded
16:31mebaran151~soup
16:31clojurebotexcusez-moi
16:31hiredmanthat is a random selection from four or five factiods about me
16:31mebaran151oh
16:31mebaran151ha
16:31tknudsenProgramming Clojure by Holloway looks good. I see that the author also wrote circumspec.
16:32hiredman~hiredman
16:32clojurebothiredman <3 XeLaTeX
16:32hiredmanyay!
16:32chouserI dislike LaTeX as a source language.
16:33tknudsenchouser, you would write a book in sexp instead of latex?
16:34tknudsenerr s-exp
16:51KjellskiIs 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:51KjellskiOr do I need the actual build?
17:11KjellskiWhere can I get an actual clojure-contrib.jar?
17:12technomancyKjellski: build.clojure.org should have one
17:12Kjellskitechnomancy : thanks!
17:13crazzyfordso if I'm in src/foo.clj, can it run the tests from test/foo-test.clj
17:14Kjellskitechnomancy : actually it would be pretty nice if that was mentioned somewhere on clojure.org... thanks again (pasting to favorites)
17:14technomancycrazzyford: 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:14technomancyKjellski: agreed.
17:15technomancycrazzyford: the problem is there's not really a widely-accepted mapping between the two that you can rely on
17:16technomancyI 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:16crazzyfordtrue
17:16crazzyfordalso major thanks for lein
17:17crazzyfordI barely got into clojure before it existed due to laziness with managing the classpath etc
17:17technomancypain is your software's way of telling you to write some code to fix it. =)
17:17DapperDantechnomancy: 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:18sethstechnomancy: seconded for a skeleton testfile from lein new
17:19technomancyDapperDan: 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:19technomancyso I'm hesitant
17:19technomancyclojurebot: #232
17:19clojurebotIt's greek to me.
17:19technomancyclojurebot: ticket #232
17:19clojurebot{: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:20technomancyclojurebot: ticket #130
17:20clojurebot{: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:20technomancythat's the one
17:21technomancywith c-in-c "right around the corner" there's not a lot of motivation to fix compiler bugs like that
17:22DapperDanDoes c-in-c have a milestone? (By another name, perhaps?)
17:22technomancyI don't think so
17:23DapperDanwhile 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:25technomancythanks! 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:27DapperDannoted. i think a boilerplate note on your blog to the effect of "if you liked this, buy X" would be appropriate.
17:27sethsDapperDan: I heartily recommend the Clojure PeepCode
17:29sethsit doesn
17:29sethst even scare people with Emacs
17:29technomancyDapperDan: yeah, good idea.
17:32DapperDantechnomancy: 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:33technomancyDapperDan: I can't say I've done enough with swank to take donations for it. =)
17:33technomancyI've only taken over from the original author and made it easier to install and done a few bugfixes.
17:57KjellskiAnyone with a bigger example on parsing xml with zip-filter?
18:10hiredmanhttp://blogs.azulsystems.com/cliff/2010/01/biased-locking.html <-- this makes biased locking sound bad for stm
18:16sethshas anyone tried the Azul JVM with Clojure?
18:17hiredmanrhickey's ant colony sim has been run on an azul box
18:17chouserthat was traveling salesman using an ant algorithm, right? Not the food-gathering one.
18:18hiredmanI don't know
18:42hiredmanclojurebot: #clojure?
18:42clojurebotthis is not IRC, this is #clojure. We aspire to better than that.
18:48chouserrhickey: you're not around, itching to answer a question about agent error handling race conditions, are you?
19:08sethswow, the funding is going pretty well!
19:08sethsthat is great
19:16chouser7 corps -- very cool.
19:20mebaran151does Clojure have a non-profit governing board to handle donations?
19:20chousernope. Donations go to Rich.
19:24DapperDanAre 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:24danlarkinit's called paypal :)
19:26DapperDanI'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:27sethsbtw, pls consider s/paypal/google checkout/
19:27DapperDanOne could still use paypal or Amazon wishlists for the actual donation.
19:27sethsor at least +=
19:27DapperDansure
19:28sethsDapperDan: what is elance?
19:28the-kennyseths: No, Google Checkout only accepts Credit Cards. That's endlessly annoying
19:30DapperDanhttp://www.elance.com/
19:34mebaran151I've often considered writing an app that would let an opensource project embed a donator
19:34mebaran151where a user could set some sort of rate based on usage, with some sort of cap involved
19:35mebaran151maybe distributed between lots and lots of projects that all signed up
19:35chousermebaran151: based on ratios I could set.
19:35mebaran151yeah exactly
19:35mebaran151or ratios that you derive from some other function
19:36mebaran151like open time
19:36chousermebaran151: that can be initialized by a tool that looks at what packages I have installed
19:36chouserright
19:36mebaran151yeah
19:36mebaran151does this already exist?
19:36mebaran151I was thinking it could be embedded in license files
19:36chouserand only takes 5% of my donation. :-P
19:36mebaran151that would automatically get parsed
19:36mebaran151heh, or maybe nothing
19:36mebaran151like open source style
19:36DapperDanit could be linked to a run-time profiler, and weight fund allocations based on who commited the code.
19:37chouserthe most money going to the authors of the least efficient code?
19:37mebaran151the 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:37chouserI don't thinnk anything automatic would be very good, but something that seeds your ratios with something sane that you can then tweak.
19:37mebaran151yeah
19:37mebaran151exactly
19:38mebaran151my company is actually developing something similar for media companies
19:38DapperDanchouser: profiler could be for what functions are called, not how long they took to run.
19:38mebaran151but it seems really easy to move it into open source
19:39DapperDanmebaran151: it does sound like a similar problem to royalties for AV usage.
19:39mebaran151yeah
19:39mebaran151very similar
19:39mebaran151the biggest problem in open source though is what you're buying
19:39mebaran151we all give money to Rich with the implicit promise he'll keep working on the code
19:40mebaran151with a company, the terms are explicit
19:40mebaran151so it would be nice to link open source payments with a kind of escrow
19:40chousernah, I'd be happy to pay for the work already done.
19:41mebaran151that's a fair point
19:41chouserif 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:41DapperDanmebaran151: 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:41mebaran151yeah, settable by the user
19:41mebaran151or even for libraries: I want a great library for Amazon S3 or what not
19:41DapperDanor documentation
19:42mebaran151haha documentation!
19:42DapperDanscreencasts
19:42mebaran151this is UNIX
19:42mebaran151read the source ...
19:42mebaran151but yeah
19:42mebaran151I think it would be a great tool for open source if it were seamless and integrated over a lot of projects
19:42mebaran151like I gave money to Clojure, but I really should give money to Ubuntu too, because they made my dev environment livable
19:42mebaran151and to Netbeans
19:43DapperDanintegration with github, assembla, lighthouse, etc.
19:43mebaran151and to even the nice guy who wrote XChat
19:43mebaran151well if the app had postbacks, we'd be set
19:43DapperDanagreed
19:43mebaran151but I don't have 2 grand a month
19:43mebaran151I do have like 100, and I'd like it to be fairly distributed to projects that need it
19:44DapperDanyep
19:45hiredmanwhat does "give money to ubuntu" mean? give money to canonical?
19:45hiredman(or whatever it's called)
19:46mebaran151well support ubuntu development
19:46chouseryou can "buy" ubuntu, can't you?
19:46mebaran151it was meant to illustrate that there are a lot of good projects
19:46chouseryes
19:46mebaran151and it would be nice if donation were automated
19:46mebaran151and setup in some fair way
19:47hiredmanI find calling it a "donation" kind of odd
19:47mebaran151well Ubuntu isn't as good an example, because it has a company
19:47mebaran151just like github
19:47mebaran151but I used to use ArchLinxu
19:47mebaran151ArchLinxu
19:48hiredmanmebaran151: ok, so if you want to give money to archlinux, that means what? you give money to some foundation? to a single developer?
19:48mebaran151and they definitely don't have a rich Mark Shuttleworth to help support them
19:48mebaran151that's the other issue in open source
19:48mebaran151usually the governance is unclear
19:49hiredmanthis kind of market organization is a difficult problem
19:49DapperDanhiredman: I was talking about funding a very specific unit of work, e.g. a bug or milestone, not a whole project.
19:49mebaran151but let's assume there existed an entity that could accept donations
19:49mebaran151and disperse them properly
19:49hiredmanDapperDan: so whatever entity does the work gets the funds
19:49mebaran151say by bug fixed, or unit of work
19:49DapperDanhiredman: yes
19:49hiredmanmebaran151: that's just it
19:50mebaran151or they could prioritize bugs per se
19:50hiredmanyou can't waive your hands and assume perfect distribution
19:50mebaran151say bug x is worth more than bug y
19:50mebaran151not quite, but I think if the payment system existed
19:50mebaran151open sourcers wouldhave a huge incentive to have better organization
19:50DapperDanput auctions on the bugs "I'll fix it for $X" or bounties "whoever fixes gets $Y", that will prioritise them
19:50hiredmanwhat DapperDan (dig the reference) is proposing is an actual market
19:51mebaran151the problem with that is that unsexy bugs are less likely to get bounties
19:51mebaran151or good architectural changes
19:51hiredmanless work since the market assumes the work of distribution as well
19:51chouserbut that's a lot of market overhead for each little piece of work
19:51mebaran151exactly
19:51hiredmansure
19:51DapperDanhiredman: I haven't studied economics but OK
19:51mebaran151but both these systems can work together
19:51chouserand puts a disinsentive on fixing bugs quickly before they get bid up
19:51DapperDanmebaran151: architectural changes would come under milestones?
19:52mebaran151maybe
19:52mebaran151but who decides milestones
19:52mebaran151you need an organization to do this
19:52hiredmanisn't there some bug database where you can file bugs against anything?
19:53mebaran151but these are two separate problem
19:53hiredmanessentially you want rent-a-coder without the feeling of being in the ghetto
19:53mebaran151one is getting money to open source projects
19:53mebaran151the other is internal distribution
19:53mebaran151they're related, but can be solved independently
19:53hiredmanmebaran151: one won't work without the other
19:53mebaran151well you need tools for both
19:54mebaran151but a donation to an opensource project can be as simple as supporting a single developer, like for Clojure
19:54hiredmanyou cannot give money to "clojure" there is no entity "clojure" to recieve the money, you can just give money to rhickey
19:54mebaran151or building something more complex, like if I were to donate to the Apache project
19:54chousersingle-person projects already have the "internal distribution" problem solved.
19:54mebaran151which has governance etc
19:54chouserright
19:54mebaran151a projects that have more than a single person, really probably need to get a governance board etc
19:55mebaran151like I know GNOME has a foundation
19:55hiredmanmebaran151: yes, but at that point you are handing over the control of the distribution of funds to the apache project
19:55mebaran151when I donate to charity, I do that anyway
19:55hiredmanI'd rather just give money to a developer
19:56hiredmanmebaran151: and you see stories of outrage over the small percentage of money that doesn't go to 'overhead' for charitys
19:56mebaran151well I mean both schemes could be developed
19:57mebaran151they're not mutually exclusive
19:57mebaran151developers could register to have their worked sponsored
19:57mebaran151bugs could register to have their work sponsored
19:57mebaran151projects could register
19:57mebaran151if 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:00mebaran151if I wanted to micromanage, that option should be available too
20:01DapperDanmebaran151: ideas from kivo.org would probably apply
20:02mebaran151I thnk that's actually a little too active
20:02mebaran151it's gotta be like a set it and forget it sorta thing, that can be tweaked as necessary
20:07mebaran151bug bounties only make sense for very well qualified, very informed customers
20:16technomancyrich gets 10% of the peepcode monies
20:23mebaran151heh, I was looking for evening project, maybe I'll throw something together in compojure
20:24DapperDanwill you send me an email if you get something working?
20:24mebaran151oh yeah sure
20:29technomancymebaran151: you should think about contributing to clojars
20:29technomancythat's a useful compojure project
20:29mebaran151you mean donation or code wise?
20:29technomancyjust as a project to work on
20:30mebaran151oh yeah sure
20:30technomancyit's helpful to be able to take a look at a working project to see how it's structured, etc
20:30mebaran151actually my colleague and me were talking about that just today
20:30mebaran151over lunch
20:30mebaran151we were thinking of cooler ways to search clojure projects
20:31mebaran151like by docstring or by function, or being able to cherrypick individual functiosn with dependencies between them
20:31mebaran151and get a custom namespace with exactly what you needed
20:31mebaran151(he's a computational linguist, so these problems are candy for him)
20:32quizmeis Lau here ?
20:33mebaran151I was thinking of download all the clojars to get a dataset, but I'm worried about your bandwidth bill :)
20:51mebaran151technomancy, what would be the best way to get all the clojars for you?
20:55technomancymebaran151: I was talking with _ato about enabling couchdb replication to do that, but I don't know if it got anywhere. =\
20:56mebaran151is your fts powered by couchdb?
20:56technomancyI told him I would help with the browse functionality, but I got distracted by leiningen, swank, and package.el
20:56technomancymebaran151: it's couch-lucene IIRC
20:56technomancyhttp://github.com/rnewson/couchdb-lucene
20:57mebaran151did you ever look at hypersonicsql
20:57technomancymebaran151: I don't run clojars; it's _ato
20:57technomancy(Alex Osborne)
20:57technomancyI just wrote leiningen
20:57mebaran151oh
20:58technomancyI hacked the codebase a little right after lein was released, but that's all
20:58mebaran151well, actually we wanted to do some source investigation (like unzip all the clojars and actually do some semantic indexing)
20:58technomancythere aren't enough jars for bandwidth to be a big issue yet
20:59technomancyonce there are, hopefully we can use couchdb replication to make it easy for folks to host mirrors
20:59technomancycouch replication is badass
20:59mebaran151aren't the jars files though?
20:59technomancyyeah, but you can attach files to couchdb documents
21:00mebaran151do you actually stuff them into couchdb as blobs?
21:00mebaran151*does he?
21:00mebaran151I played with CouchDB about version 0.6 and got annoyed that they kept breaking it
21:00technomancyI 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:00technomancyit's come a looooong way since 0.6
21:00mebaran151I can buy it
21:01mebaran151but I left for h2 which was based on hsql with integrated lucene
21:01mebaran151that was a surprisingly well integrated, nice experience
21:01mebaran151and sql replication is usually pretty simple to setup
21:02mebaran151couch does master to master replication though right?
21:03technomancyit does
21:03technomancybut for clojars only the main site would perform writes
21:07mebaran151yeah, I never trusted master to master replication
21:08mebaran151it feels like something that should be application specific to be done right
21:10technomancyI can't say I've used it in action
21:13mebaran151what makes couchdb master slave replication better than sql replication
21:14mebaran151just easier to setup?
21:14technomancyyeah, you just point it at an HTTP URL and click go; nothing to it
21:14mebaran151heh, that is kinda neat
21:15technomancycan be initaited via curl, or whatever
21:33mebaran151I'd be more than happy to contribute to clojars though
23:41chouserhaha. My Java is so bad.
23:42hiredman:(
23:42chouserI'm null-punning everywhere. When the compiler calls me on it I try to compare to NULL
23:42hiredmanhah
23:42hiredmanjust rewrite clojure on it :P
23:43chouserI'm a Clojure programmer, trapped in C++ and trying to use javac...
23:47johnmn3Hello
23:52defnchouser: i bet my java is worse :)
23:57mebaran151whenever I write Java, I feel like I'm in the Soviet Union
23:57mebaran151with all the factories, and interfaces, and hierarchies, and five year plans