1:11lazybot: ⇒ "([promise val]); Alpha - subject to change. Delivers the supplied value to the promise, releasing any pending derefs. A subsequent call to deliver on a promise will throw an exception."

1:13amalloy: no, it's in 1.2 - it's just that promises happen to be implemented as functions which, when you call them, save their argument. so (deliver promise value) is implemented as (promise value)

1:34joshnz: I help build a web app for mental health NGOs. It's in asp.net webforms, and I'm so over it. It's a horrible horrible technology. My journey this year has been exploring other technologies outside Microsoft, and once you're out you don't really want to have anything to do with MS again :)

1:38joshnz: we are at least using .net 4...but the thing with MS stuff is that if you don't use it exactly the way they intend you to use it, you're in a world of hurt. And often I find it's not how I want to work ;) When you combine it with TFS - which is a terrible source control program and horrible task management system - and all the rest of it, you find life becomes so much harder than it really needs to be. lol

1:47joshnz: We have the "we're a MS shop..." issue, despite the fact that MS development tech is typically worse than the rest of the industry. It's like it's a marketing thing, but seems totally misdirected to me.

2:02brehaut: thats built on the legacy of source safe. the slowest, most unsafe version control ever :P

2:04amalloy: joshnz: you should try using github issues. not as all-encompassing as jira, i'm sure, but about a hundred times easier to do anything you could *actually* want to do

2:04joshnz: It's still not much better. We lose web pages from our project due to auto merges gone wrong fairly regularly. And it's a simply text (xml) merge... and we don't even know they've been excluded!

2:05 amalloy: thanks, I'll look into it. We're not a big dev group (less than 10), so we don't need anything complicated.

3:18khaliG: joshnz, trying to but it seems the elpa package.el doesn't support other sources

3:19joshnz: you could just clone the clojure-mode git repo as a quick alternative. The swank-clojure link above suggests this.

3:21* clgv is happy about CCW just needing a plugin install within eclipse. :)

3:22joshnz: khaliG: what version of emacs are you running? I understood 24 to include package.el... and otherwise you need to obtain it yourself, since you can't use the elpa since you don't have package.el... chicken and egg syndrome

4:15zakwilson: clgv: thanks. I found that page and just went with the mailcap solution as initilaly presented without reading the comments about doing it programatically. I added the mailcap thing to the project documentation and am considering it fixed.

4:38joshnz: khaliG: what's your current status? You still don't get the repl? There should be a *slime* buffer which lists any errors. I had to add lein to my path within emacs

4:39khaliG: joshnz, i've got a repl now thankfully! but trying to use clojure-jack-in with my existing project didn't bring up a repl - so i need to investigate that

4:41joshnz: check the relevant slime buffer and see if there are any errors, perhaps?

4:43khaliG: joshnz, there are no slime buffers, i had a look, and the only other buffer is messages but it just says 'starting swank server'

4:46joshnz: I get the following buffers: *slime-repl* *swank* and *slime-events*. Oh, you mean you don't get any other buffers on your existing project which doesn't work.... presumably you get these buffers on the new project where you got the repl, of course. silly me.

6:49khaliG: is there a way to write this sort of thing neater: (when (= "FOO" (.getName model)) (do-foo (.getName model)) - i wanted to use when-let but since = returns true/false and not the value compared it won't work unless i'm missing some trick

6:52kzar: With the -> macro what do you do when you need to use a function that takes arguments in a different order? Say if I want to thread a string through re-seq, the regexp is the second argument not the string

7:37 Is there a good example anywhere of how to structure your directory structure for a clojure web app. With Rails it's quite good in that everything has it's place but with this I'm not sure where to put Enlive templates or static files and things like that

8:49Chousuke: wunki: I didn't notice anything extra weird glancing over a couple of the files, but in one place you had a cond with a single clause in it (could use when instead) and (if (not (nil? foo))) ...) in a couple places could be just (if foo ...) couldn't it?

8:50wunki: Chousuke: yes, I wasn't sure about that list thing if I should check for nil? or if ``if`` would be sufficient

8:52Chousuke: wunki: explicit nil checks are usually not needed. sometimes you have to differentiate between false and nil though

9:59 a java io question: I have long running process that is writing into a file. meanwhile I want to have another program reading from that file to have a look at it during the run of the first process. is there any locking of the OS involved that could throw any kind of exception in my writing process when it wants to write the file and I am currently reading it?

11:07joegallo: hey, there was a blog post somewhere a while back about how protocols are commonly used wrong. it particularly was calling out the definition of functions that happen to be implemented in terms of a protocol at a low level, but are not themselves members of the protocol (as the right way to do things). does that jog anybody's memory?

14:11mdeboard: dnolen: I just watched your preso on the (match) library(?) from last month. I'm in a discrete math class so it was pretty awesome hearing about clojure.core.logic and predicate matching and Prolog. Definitely had no idea Prolog was anything but a toy db :P

16:43cemerick: technomancy: I have 72 right now. FF's expose-esque thing in v6 + tree style tabs is very scalable IMO.

16:44technomancy: cemerick: I added an ido-style buffer switcher to conkeror (the browser I use day to day) so I can just do 0) switch keystroke, 1) type only enough keystrokes needed to uniquely identify my target tab and 2) return.

16:46 anyway, that's really the only context in which I'm interested in writing JS right now

16:46 but I guess it's understandable that clojurescript isn't targeting that

16:46cemerick: Yup. Matching history pops up; if a currently-open tab has a match, it's included with a "switch to tab" subtitle.

17:17jweiss: my swank process has grown to 515mb, any suggestions for common memory leaks? I don't know if things like recompiling namespaces should keep eating more memory (i'd hope not). Seems like as far as data does, once a value is returned to the repl and passes out of the *1 *2 *3 it should be GC'd, right?

17:19hiredman: jweiss: grown to 515mb in what sense? if you want a smaller max heap size you should specify one

18:09pashields: does anyone have any advice on how to run count(distinct foo) queries with clojureql? For example, how would I output "select count(distinct foo) from bar"

18:59leeda: hi, i need some help with writing idiomatic tests for an API. the problem i'm having is that most tests need data in a certain state before they run, but if i split into separate tests, i have to recreate the data and prepare it to the desired state before i test anything in each function.

20:14dnolen: technomancy: as far as advocacy. To each his own. I'm jumping up and down cause everything that came before is actually pitiful … IMO. JS / DOM is innately hostile. Clojure solves that. No one else is even trying.

20:47TimMc: dnolen: Is there somewhere clojure.browser.dom is documented?

20:50dnolen: TimMc: not that I'm aware of. But there's not a whole lot there. I recommended just using Google Closure directly. I think it's going to take a lot of thinking to figure out what the best way to deal w/ the DOM is.

22:45 not a good idea to put the .cljs sources on the classpath, apparently

23:52srid: 4clojure issue -- I get "java.io.IOException: couldn't connect to [elephant.local/10.0.1.2:27017]" error when connecting to mongo. I think it is failing because the mongo connector uses hostname (not local IP even though that's what I passed) and mongo server refuses connection at that host.

23:53 had to comment out bind-ip from mongo conf file to workaround it.