#clojure logs

2009-06-10

00:32hiredmanclojurebot: what do you have to say about the reader syntax of collections?
00:47hiredmanQ - How exactly does an agent protect its "state" from concurrency
00:47hiredmanissues, particularly race conditions since I do not see any locking on
00:47hiredmanagents.
01:19cataskais this possible ? (defn 1+ [x] ... )
01:21Carkdefn |1+| would be possible, but that doesn't help much =)
01:21Carkanyways you have the inc function
01:21Cark,(doc inc)
01:21clojurebot"([x]); Returns a number one greater than num."
01:23hiredman(let [+1 inc] (+1 1))
01:23hiredman,(let [+1 inc] (+1 1))
01:23clojurebotjava.lang.Exception: Unsupported binding form: 1
01:23hiredmanbah
01:23Carkthat's not common lisp =)
01:24hiredman,(let [++ inc] (++ 1))
01:24clojurebot2
01:25hiredman,(let [+1+ inc] (+1+ 1))
01:25clojurebotInvalid number: +1+
01:25cataskaso in clojure, cant define a method that number characters have precedence ?
01:27Carkmhh i don't understand your question
01:28cataskasorry, poor english
01:28Carkhehe no problem, my english is pretty bad too
01:28cataskalike 1+ function, so can't define method named 1step, 2more etc in clojure ?
01:30Carklooks like you can't do that
01:31cataskammm
01:32cataskafeel sad
01:35replaca,(let [_1+ inc] (_1+ 7))
01:35clojurebot8
01:35replacanot beautiful, but...
03:15frodefam I supposed to fetch clojure contrib by svn, or does it come prepackaged somewhere?
03:17replacamostly you grab it by svn
03:18replacathere is also a github mirror, if you prefer
03:22frodefok, thanks. I thought maybe I'd missed some obvious other source.
03:47rysYeah, I think most people build it themselves from current head
04:02opqdonutdoes nested doto work properly?
04:04Carkopqdonut : yes
04:04Carkthough it does not make sense to have them directly nested
04:05Cark(doto something (doto bleh does not make sense
04:05opqdonut(doto something (foo) (doto (.getOther) (bar)))
04:05Carkwell this does not make sense
04:06Carkthe first parameter of your second doto will be replaced with "something"
04:06Carkyou should try to macroexpand and understand how that works
04:07opqdonutmacroexpand doesn't expand macros in subforms
04:07clojurebotHoly Crap.
04:07opqdonutbut yeah, i see the problem
04:08opqdonuthmmh.
04:08Carkit does not matter that the second doto is a macro or not, it gets macro expanded after we're done with the first doto
04:10Carkmhh i see what you want to do .. i guess you'll have to use a let
04:18opqdonutÁ/act
04:18opqdonutoops
04:18opqdonutyeah, i'll use a let
07:23cemerickdespite my ravings w.r.t. swing, clojure + netbeans/matisse + a REPL + a good cells impl is a wonderful way to build UIs.
07:26jdzgive screenshots!
07:27cemerickheh
07:27cemerickoh, it's not pretty, just functional
07:28asbjxrnWhich cells implementation are you using?
07:28jdznvm then. we want pretty screenshots :)
07:28cemerickI'm by no means a designer, so it's definitely lacking a certain something. Using substance helps spruce things up, though (and targetting just one L&F is a great way to simplify one's life).
07:29cemerickasbjxrn: our own. We needed some specific characteristics for our core functionality, but it's worked out to be very useful in general.
07:32cemerickAt some point, I suppose we could open-source it, but I'm guessing people would find it a little odd -- in particular, the state transitions are event-based, which allows us to keep a "redo log" to support reasonable runtime given nondeterministic workflows.
08:33opqdonutis there an easy way to proxy an already constructed object
08:33opqdonutinstead of constructing a new one?
08:34opqdonuti just want to wrap a few utility methods into this object i get from somewhere else
08:34Chouseryou could create a new instance that delegates to the given object
08:35Chouser...using proxy.
08:36ChouserI've done that for a specific class -- I suppose with some reflection you could make a utility that does it automatically.
08:36opqdonutyeah
08:36opqdonutthere's a ton of methods to proxy, reflection would be the way to go
08:51cemerickChouser: have you ever considered maintaining a git repo of the #clojure transcripts? That would save your server from my occasional scraping runs. ;-)
08:51Chouserha
08:51Chouser!
08:52ChouserI actually did think of that in the last couple days.
08:53cemerickgoogle search is just so friggin' crummy in a lot of contexts...there's often no substitute for having the thing on disk.
08:53ChouserI'm working on the log stuff these days -- I have plans for getting the page to update withing seconds instead of once a day.
08:54cemerickwhat's actually doing the logging? is it just your local irc logs?
08:54rhickey_github vs assembla+git vs assembla+github?
08:54cemericklocal irc client logs, I mean
08:54Chousercemerick: yeah, right now it's the logs from the irssi client I'm typing in right now.
08:55cemerickwe've got a bus problem ;-)
08:55Chousercemerick: the code's all on github now at least
08:57cemerickI'm kind of surprised that freenode doesn't offer a logging service. I'd think that'd be a great revenue stream for them.
08:59Chouserwell, anything that didn't require me to write and maintain could would be nice.
08:59Chousercode
08:59rhickey_trying to choose a new host for use with git. github seems to have a dearth of tools, and their pages always mess with my browser. I like assembla's tool suite. They can host git or update tickets from github. I guess the main difference would be browser-hosted source viewing
09:00cemerickrhickey_: this is for your "real work"?
09:00rhickey_this is for Clojure
09:00Chouserassembla doesn't provide source viewing in the browser?
09:00cemerickoh. I didn't realize a move from google code was in the cards.
09:00rhickey_Chouser: it does, but I imagine differently from github
09:00rhickey_cemerick: move to git implies move from google code
09:01cemerickrhickey_: I thought you were just going to use git-svn. Fine by me, though! :-)
09:01rhickey_I imagine github being the most git savvy, also has the social aspects of git nailed
09:01asbjxrnSpeaking of browser and messing up, the top of the clojure.org page looks funny from my office. (Where I have the choice of using IE6)
09:01rhickey_cemerick: git-svn didn't really deliver benefits of git
09:02cemerickyeah, that's an understatement
09:03cemerickI'd say +1 for github. assembla is nice, but they're definitely svn-focussed
09:03Chousukegitorious might be good too
09:03rhickey_cemerick: the nuanced choice is assembla+github: http://www.assembla.com/catalog/13-Assembla-Ticketing-for-Github-Package
09:04cemerickoh, that must be relatively new
09:04cemerickChousuke: do you happen to use it locally?
09:05rhickey_cemerick: I really want a place we can use to collaborate - tired of emails and other primitive things. Assembla milestones, logged chat, messages, wysiwyg wiki, etc are highly desired by me
09:05cemerickwe currently use gitosis, but would much prefer something like gitorious. Unfortunately, setting it up turned out to be nontrivial.
09:05Chousukecemerick: nah, but it looks interesting
09:05cemerickrhickey_: well hell, if the integration is there, then by all means
09:06cemerickbest of both worlds, if I'm to be taken by the sales copy :-)
09:06rhickey_cemerick: I don't know what the loss is, and as I said, find github's code browsing web interface troublesome
09:07Chouserwhen do you browse sources on the web?
09:08duck1123_I use github's code browsing over google's currently when i need to refer to clojure source
09:08ChouserI do that mostly on projects that I haven't yet cloned -- reading examples, copying snippets, evaluating the project.
09:08rhickey_Chouser: more often then I thought - when pointing someone at some code, looking at contrib I haven't yet pulled, history, etc
09:09Chouserhm. I guess if you'll be evaluating repos to consider pulling patches from them into clojure, you'll only be doing more of it.
09:10ChouserCan we not just fix that one page, if that's your biggest issue with github?
09:10rhickey_github is definitely not enough, but it could host the source
09:11rhickey_bbl
09:11Chouserrhickey_: you don't happen to use greasemonkey or stylish, do you?
09:11Chouserswingandamiss
09:13cemerickit's too bad jira studio doesn't have github integration. Though JIRA probably isn't Rich's style.
09:15mccraiggithub's network view is really interesting... do other git hosts have similar ?
09:16rysI think there's a lot to be said for github. The connected view/network, tracking and pull request stuff is really good, and the code and diff browsing has always worked for me
09:18cemerickI'd imagine that they can't be far away from offering a complete solution. It's surely a common set of requirements.
09:19opqdonutgah, what causes java.lang.ClassCastException: clojure.lang.PersistentList cannot be cast to clojure.lang.Symbol
09:19clojurebot
09:19opqdonutwhen loading a file
09:22Chouseropqdonut: That means some piece of code is expecting a symbol and finding a list instead
09:22ChouserI would guess it's incorrect arguments to a macro, but that's just a guess.
09:22opqdonutyeah i found the problem
09:22opqdonutannoying to debug these
09:22opqdonutline numbers would be nice
09:23Chouseryou should get a line number
09:23Chouserdid you look at a full stack trace?
09:23asbjxrnrhickey_: The chat/messaging features: do you consider it an addition or replacement for google groups/freenode?
09:24opqdonutChouser: yes i did, the line number was 1 but the error was much later in the ns macro
09:24Chouseroh, I see.
09:41rhickey_it looks like assembla internal git ticket integration is the same as assembla+github
10:33sh10151Hi -- any reason :refer-clojure :exclude might not work per the docstring in Clojure 1.0 ?
10:34Chousersh10151: nope, ought to work.
10:34sh10151well feh
10:35Chouser(ns foo (:refer-clojure :exclude (map))) ...then type map at the repl and it fails to resolve
10:35sh10151I've got (ns myns (:refer-clojure :exclude [replace])) and it still fails to compile based on using clojure.core/replace
10:40Chouserlooks right to me. note that won't remove 'replace' if the namespace exists already
10:41sh10151ah that's probably it
10:41sh10151thanks
10:41Chouserso if you were already running clojure, you'll either have to remove 'replace' manually or restart clojure.
10:43sh10151does changing the parameters to ns do anything if the namespace already exists, or is it just this one :refer-clojure :exclude that doesn't work?
10:43Chouserthat's actually a rather interesting question
10:43sh10151e.g. I want to add some :imports and whatnot :)
10:43ChouserI think it'll do "additive" things
10:44Chouserin general 'ns' is meant to be run once per namespace, but of course reloading a file that include 'ns' isn't prevented in any way.
10:45Chouseradding new :imports or :requires, etc. should work. but adding more :excludes probably won't.
10:49stuartsierraYou can also call import/require/use directly.
10:50sh10151well, I am trying to write a script and don't want to accidentally depend on some state of the repl when I was writing it.
10:50sh10151maybe I should add remove-ns to whatever runs when I do C-c C-k in slime
10:56sh10151well, I don't think that was a good idea
10:56sh10151didn't seem to work after I did a remove-ns manually once
10:58sh10151ah, nm, I had it set up with a forward reference -- same problem as before, the namespace already existed when compiling
11:02rhickey_hmm... who took clojure on twitter?
11:03gnuvince"took it"?
11:03gnuvincethe username?
11:04rhickey_gnuvince: yes
11:07gnuvinceHmmm
11:07gnuvinceI don't know who that is
11:09rhickey_seems like keeping the git repo in assembla and mirroring on github might give us the most flexibility
11:17sh10151What's a good way to get the effect of forward references? My script reads better with the more declarative part at the top and the implementations at the bottom.
11:20stuartsierrash10151: (declare var1 var2 ...)
11:21sh10151thanks
11:26danlarkinapparently the palm pre runs java5 SE
11:26danlarkinapache harmony
11:34leafw5
11:34leafw~5
11:34clojurebotExcuse me?
11:34leafw~'5
11:34clojurebotNo entiendo
11:36Chouser,5
11:36clojurebot5
11:36Chouser,'5
11:36clojurebot5
12:19rzoomis it possible to "unpack" a list/vector to be args for a function?
12:19technomancyclojurebot: tell rzoom about destructuring
12:19clojurebotdestructuring is http://clojure.org/special_forms#let
12:20technomancy,((fn [[a b c]] (+ a c)) [1 2 3])
12:20clojurebot4
12:21technomancyrzoom: like that; just put a vector inside the arguments vector
12:21Chouserrzoom may actually be asking for apply
12:21rzoomI think that technomancy is right
12:21technomancythis is also possible.
12:21rzoomtechnomancy: thank you! I will take a look at this.
12:21technomancynp
12:22Chouser,(apply (fn [a b c] (+ a c)) [1 2 3])
12:22clojurebot4
12:22technomancyapply does the same thing if you want to "unpack" it on the caller side rather than the fn definition
12:22rzoomahh. I see.
12:23rzoomI think that I will go for the "apply" version since it doesn't change the function definition, will keep the intent of the function more clear.
12:29rzoomhmm. this makes me wonder though, could you expand a list for creating a struct?
12:29rzoome.g. (defstruct s :a :b)
12:29rzoomthen: (struct s (1 2))
12:30rzoombut that just sets :a to (1 2)
12:30rzoomnot :a=1 and :b=2
12:31dnolenrzoom: struct is a function you can use apply
12:31dnolen(apply struct s [1 2])
12:32rzoomdnolen: perfect! thanks.
13:37rhickey_hmmph - assembla code browser has no .clj syntax highlighting
13:39Chousergithub was impressively early with that.
13:40rhickey_are they using Pygments?
13:41rhickey_I can't tell what Assembla is using, just found one message asking for Fortran :)
13:41technomancyI think they use pygments, yeah
13:42technomancysomething like 35 languages supported
13:44technomancyI like how three of the top-5-watched Java repositories are for other languages: http://github.com/languages/Java
13:44technomancy(ioke, clojure, and couchdb-lucene)
13:44technomancyand jruby was on that list last time I checked.
13:46cemerickthat's a very interesting stat
13:46cemerickI should checkout ioke, I know nothing abou tit
13:47Chouserthere's seriously more ObjC in github than there is Clojure?
13:47rsynnottis that surprising?
13:47gnuvinceChouser: is that really surprising?
13:47technomancycemerick: it's pretty influenced by io, I think.
13:47rsynnottobjc is the primary language used to write software for macs, which are 10% of the desktop market
13:47cemerickheh, another language I know virtually nothing about :-)
13:47technomancybiggest difference so far seems to be that you can actually google for it
13:47clojurebotfor is not a loop
13:48technomancycemerick: basically: prototype-based OO without the insanity of JS.
13:48cemerickI took the basic -> CL -> scheme -> java -> python -> scala -> clojure path
13:48ChouserI guess NeXT lives on...
13:48rsynnottChouser: as the basic of MacOS X and the iPhone, yep
13:48technomancyalso: github is very mac-dominated
13:48gnuvincecemerick: no C?
13:49gnuvinceThe jump from BASIC to CL is also interesting
13:49cemerickJS has been my sole exposure to prototype-based OO, so maybe that accounts for my poor opinion of it.
13:49cemerickgnuvince: yeah, a very little C in the very beginning (and scattered about when I've been unlucky), as well as assembler on the C64.
13:49rsynnottMacOS X is basically a pretty NextSTEP with a bunch of compatibility APIs
13:50rsynnott(many macos apps can actually be compiled using openstep)
13:50cemerickgnuvince: I was using realbasic on the Mac to build custom apps while in high school, and then was dropped straight into CL when I started college.
13:50gnuvincersynnott: what do you mean "pretty NeXTSTEP"? I think it was a very nice interface.
13:50rhickey_what's the best recipe for one-time conversion of svn to git?
13:51rsynnott(not nice modern pascal, the one where a 40 character string was an entirely different thing to a 41 character string :) )
13:51cemerickrhickey_: best recipe I've seen, used it at least 20x times so far: http://blog.zobie.com/2008/12/migrating-from-svn-to-git/
13:51gnuvincersynnott: ouch :-/
13:52cemerickrhickey_: note that the nifty sed/script one-liners he provides to convert svn tags/branches depend on bash. tsch chokes on them.
13:53technomancycemerick: can't git-svn figure out the branches/tags by itself now?
13:54cemericktechnomancy: it does, but it puts those refs under a different directory structure than "native" git branches/tags
13:54technomancyiirc there's a git-svn clone flag saying "this svn repo just follows the standard trunk/tags/branches layout" that takes care of that for you
13:54technomancycemerick: oh, gotcha.
13:54cemerickI'll bet you could just mv the refs in one shot without the sed one liners, but they work, so I use them :-)
13:54technomancyit's been a while for me, even when I was tracking svn repos I was doing all my branches in git, so I wasn't concerned with that.
13:56technomancykevinoneill on github has got his mirror all set up; you could probably just use that.
13:57eevarjust clone kevinoneill's repo ;)
13:57rhickey_what about: http://github.com/jcoglan/svn2git/tree/master ?
13:57eevarno branches in there?
13:58eevaror nm
13:58cemerickyeah, we have a constantly up-to-date repo as well. *shrug*
13:58eevarbah
13:59technomancyI guess the one downside of kevinoneill's repo is that it keeps the authors in SVN style. if it's important to have that formatted properly then you should do your own import, otherwise use his.
14:00rhickey_it seems authors, branches and tags are issues over and above git-svn
14:00technomancyright, but kevinoneill has got branches/tags figured out.
14:00technomancysvn2git looks like it's at least worth a try
14:01cemerickrhickey_: FWIW, the recipe I linked to describes how to handle all of that, and it does work.
14:02rhickey_cemerick: it's much more complicated than other recipes that claim to do the same
14:03cemerickthankfully, I don't have any other svn repos to convert anymore.
14:03technomancycemerick: yeah, rub it in. =)
14:04cemericktechnomancy: yeah, even better, those svn repos that I follow in general are moving to git themselves, so I won't even be using git-svn for very long.
14:04Chousercontrib already has a couple set of author ids, I think. One from sourceforge and one from google code.
14:05rhickey_Chouser: I guess we'd need everyone's git identities?
14:05rhickey_I guess base on Google IDs
14:06technomancyit's just name and email, right?
14:06rhickey_but not necessarily the same for some folks
14:07stuartsierraI don't have a personal github acct.
14:07rhickey_assembla wants the email you register with them to match user.email
14:07rhickey_in git config
14:08technomancyyou don't need a github account for this
14:08Chousergit itself doesn't tie any permissions or anything to the author id, I think.
14:08rhickey_right
14:08eevaralso, users can assign any email address they control to their git account
14:08Chousereevar: github?
14:08ChouserI think the same is true of assembla
14:08eevarassumeing we talk github, yea
14:08eevar-e
14:11rhickey_I don't know that we can presume contrib authors will use the same gmail email with assembla and in their git user.email config
14:11eevarpeople might have issues with their email being published, tho
14:13mrsolotoo bad partial only work first agrument.
14:13rhickey_eevar: does it get published as a result of being in user.email?
14:13mrsolorather can't skip argument hmm
14:13technomancymrsolo: you could probably write partial that filled in args from the right pretty easily
14:13rhickey_mrsolo: try #()
14:13technomancyrpartial
14:14ataggartis there anything partial will do for you that #() won't?
14:15stuartsierrano
14:15stuartsierrapartial predates #()
14:15mrsolono
14:15mrsolobut partial is build in vocab..it is nice :-)
14:15Chousersome things you can do with partial would require something like #(apply foo a y %&)
14:16Chouser...in which case partial may look cleaner
14:16hiredmanataggart: partial is a nice higher order function, which are good for you, like wheaties
14:16ataggartah like (partial + 5) == #(apply + 5 %&) ?
14:17eevarrhickey: email addresses would be accessible from the repo
14:17eevarif you use those as git IDs
14:18mrsolotechnomancy: yea can be done easily oh well will dump this in my util ns.. rpartial and npartial :-)
14:21rhickey_eevar: oh well, seems like it's required
14:29eevardon't know. think you can stuff any crap you want into the identity fields, if they are even required
14:31rhickey_eevar: no, assembla won't take pushes without emails + ssh keys matching your user profile, which is a validated email
14:32rhickey_which is a non-problem as far as I'm concerned - people shouldn't write open source in anonymity
14:32cp2hi rhickey_
14:32rhickey_cp2: hi
14:37eevarrhickey: having my main address harvested by spammers would suck. i'm not a contributor, tho. ;)
14:38rhickey_eevar: it just has to be a valid address you own, not your main one
14:40eevaryea, thinking of existing contributors and their svn -> git username mapping, if you go that route
14:41rhickey_eevar: that goes to my point, we can't presume what email they'll want to use with git
14:42cemerickthere can't be that many...?
14:42cemerickby that I mean, each contributor can just declare their preference.
14:43rhickey_cemerick: sure, I just can't make up the authors file right now
14:45replacarhickey_: also, most of the contributors probably also have an email set up for github (I know I do)
14:47eevarpossible to just push the repo with svn user names for now, and rewrite history when/if contributors set up github/assembla accounts?
14:48rhickey_eevar: I'm not going to start off by rewriting history :)
14:48eevarwould probably wreak havoc on the people who cloned the repo, yea ;)
14:49technomancythat's fine for just experimenting, but you wouldn't want to make that public.
14:49technomancythere's only a handful of people with commit rights anyway, it shouldn't take long to get a preferred address for all of them
14:50replacarhickey_: I'll start your translation file with tomfaulhaber at google == github_com at infolace.com on github
14:51technomancywait, rich is still the only committer for clojure itself, right? so this is only an issue for contrib?
14:52replacatechnomancy: yeah
14:53technomancyno need to have a simultaneous migration
15:00rhickey_contrib members have been invited to assembla
15:08replacarhickey_: saw it. Hey, do we know anything about hacking the wiki programmatically? On google I just did it through svn
15:08rhickey_replaca: just looking at that!
15:09rhickey_there's an API: https://www.assembla.com/wiki/show/breakoutdocs/Document_REST_API
15:09rhickey_but I don't see wiki push
15:14replacarhickey_: I was looking in the same place, but it didn't seem right
15:16mrsolois there an easier way to do this? http://paste.lisp.org/display/81665
15:26Chousermrsolo: you don't know the class of (time-now) at compile time?
15:26replacarhickey_: of course, it doesn't have to be wiki. If they supported another type of doc that got rendered as html, that would be OK too. We might be able to do something on github along the lines of the blogs and stuff folks have put there
15:26mrsolowell except it is from same class hierachy
15:26mrsolono
15:27mrsoloit can be either datetime or timestamp or subclass
15:27Chouserand you want to make a new instance of whatever it is?
15:27mrsoloyes
15:27mrsoloconstruct works.. just want to know if there is another better way to do it
15:29Chousermaybe: (clojure.lang.Reflector/invokeConstructor (class (time-now)) (to-array [234]))
15:31Chousercemerick: would one git commit per IRC post be too much?
15:31Chouserthen you could either look at the file contents, or just read the history backwards.
15:34mrsolochouser: exploded No matching ctor found for class java.util.Date hmm let me check out what invokeConstructor does
15:36cemerickChouser: heh, that'd be great
15:36cemerickgood test of git :-)
15:37ChouserI'd rather just use wave, but I guess we're not quite there yet.
15:38mrsolo(clojure.lang.Reflector/invokeConstructor (class (u/time-now)) (to-array [(long 234)])) works..thanks :-)
15:38Chouserah, great.
16:08hiredmanugh
16:09hiredmanI had something like (+ 10 (cond ...)) and no else in my cond clause, so it was returning nil
16:10Chouserwe'll get AOT type checking some day
16:11hiredman(doc compare)
16:11clojurebot"([x y]); Comparator. Returns 0 if x equals y, -1 if x is logically 'less than' y, else 1. Same as Java x.compareTo(y) except it also works for nil, and compares numbers and collections in a type-independent manner. x must implement Comparable"
16:14ataggartanyone present that is using the intellij clojure plugin?
17:29mrsolotoo bad there is no seg-utils/group-by-with-cmp ..copy n paste
18:05mrsolohow do one catch java exception?
18:08mrsolonm
18:11replacamrsolo: (try .... (catch class var stmnts*))
18:14mrsoloya found it under special form..
20:00rhickeywoo-hoo! my Kindle DX has shipped
20:00mtd:)
20:00rhickeynow I have someplace to put my 1400 pdfs
20:03technomancyrhickey: I think your suggestion to read Out of the Tarpit is the last thing I needed to get me to buy one.
20:03technomancyread half of it on my laptop, but my eyes can't take too much.
20:03rhickeyI want all of my research papers with me all the time
20:04rhickeyunfortunately I've already printed most of them because I can't deal with reading screens
20:04technomancyhaving a high-resolution screen helps, but only so much.
20:07technomancyis there a trick to get clojure.xml or contrib's prxml to sanitize input so control characters don't sneak into the XML?
20:28technomancynice that they've got a regex class for it
20:33replacarhickey: I'll be intereste dto hear how you like the kindle for tech papers. That's my interest in it as well.
20:33rhickeyreplaca: I have high hopes, I like the Kindle screens, as long as the pdfs fit, I'm good
20:35replacayeah, my concern was the quality of the pdf rendering
20:36replacagoogling for "out of the tarpit" gives you: Attack of the Big-Buxomed Bikinied Bimbos Part II
20:36replacaand Rich Hickey on Testing
20:36replacabet you didn't think those were related!
20:38cp2replaca: perhaps it's best if people don't know about his former job ;)
22:17hiredman~ping
22:17clojurebotPONG!
22:30DTrejo~ping
22:30clojurebotPONG!
22:30DTrejo~pong
22:30clojurebotTitim gan éirí ort.
22:30durka42~marco
22:30clojurebotPardon?
22:30DTrejo~pong
22:30clojurebotexcusez-moi
22:31durka42~marco is <reply>POLO! nya nya you can't see me
22:31clojurebotAck. Ack.
22:52hiredmangood golly miss molly, 3 gigabytes of video?
22:54hiredmanthat'll take from now till the heat death of the universe to download
23:14DTrejo~marco
23:14clojurebotPOLO! nya nya you can't see me
23:15DTrejo~penis
23:15clojurebotNo entiendo
23:16DTrejohttp://code.google.com/p/lightbotclojure/ is this clojurebot?
23:16stuhood~where are you?
23:16clojurebothttp://github.com/hiredman/clojurebot/tree/master
23:17DTrejocool thanks
23:21DTrejohttp://mattsears.com/2009/6/6/20-clojure-links-to-get-you-up-to-speed
23:37hiredmanlightbot seems to have a lot of .java files for a clojure project
23:38hiredman*cough*