2011-11-08
| 00:03 | amalloy | technomancy: i (despite my general stance against :private meta) used refer-clojure in my namespace so i could (defn- meta ...). doesn't bother consumers if it's private, of course |
| 00:03 | tensorpudding | ugh, i can't get anything done while swank-clojure isn't working |
| 00:05 | tensorpudding | well, lein swank works |
| 00:47 | tensorpudding | so many hours, and i only have 350 lines of code |
| 00:47 | tensorpudding | well at least it does stuff |
| 01:18 | tashafa | hello |
| 01:18 | tashafa | is this thing working? |
| 01:19 | tashafa | ? |
| 01:21 | brehaut | yes |
| 01:22 | cemerick | tashafa: Tunde? |
| 01:24 | tashafa | cemerick: |
| 01:24 | tashafa | whats up |
| 01:24 | cemerick | Not much. |
| 01:24 | cemerick | I should be sleeping. |
| 01:24 | tashafa | same here |
| 01:25 | tashafa | I was actually looking for the clojurescript channel |
| 01:25 | cemerick | How have you never gotten settled with irc in general, anyway? ;-) |
| 01:25 | tashafa | I did at one point |
| 01:25 | cemerick | tashafa: there isn't one, really |
| 01:26 | tashafa | just fell off after that job search debacale |
| 01:26 | tashafa | :-/ |
| 01:26 | cemerick | ah |
| 01:27 | cemerick | The Clojure jobs are coming along pretty decently these days, actually. |
| 01:27 | tashafa | yeah i see them everywhere |
| 01:28 | tensorpudding | does clojure have a newsgroup |
| 01:28 | cemerick | ~google group |
| 01:28 | clojurebot | First, out of 416000000 results is: |
| 01:28 | clojurebot | Ministry Resources | Group |
| 01:28 | clojurebot | http://group.com/ |
| 01:28 | cemerick | ugh |
| 01:28 | cemerick | clojurebot: google group |
| 01:28 | clojurebot | First, out of 416000000 results is: |
| 01:28 | clojurebot | Ministry Resources | Group |
| 01:28 | clojurebot | http://group.com/ |
| 01:28 | tensorpudding | google groups aren't the same |
| 01:28 | cemerick | tensorpudding: I don't think so, no |
| 01:28 | tashafa | hmm... how do you set flags in regexes again? |
| 01:29 | tashafa | that's how much I have fallen off |
| 01:29 | amalloy | tashafa: i think you have to use j.u.regex.Pattern/compile |
| 01:30 | tashafa | not #"(?:i)[a-z]" ? |
| 01:30 | cemerick | tashafa: (?i) |
| 01:30 | tashafa | thanks for the response btw amalloy |
| 01:30 | amalloy | tashafa: (?i) works, but isn't exactly the same as setting a flag for a whole regex |
| 01:30 | amalloy | $javadoc java.util.regex.Pattern compile |
| 01:30 | lazybot | http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#compile(java.lang.String) |
| 01:31 | cemerick | amalloy: how does it differ? |
| 01:31 | amalloy | cemerick: http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#CANON_EQ |
| 01:31 | amalloy | ie, it doesn't differ for the specific case of ?i |
| 01:31 | amalloy | but for flags in general it may |
| 01:32 | tashafa | I'm actually trying this out in clojureScript |
| 01:32 | cemerick | ah |
| 01:33 | cemerick | tashafa: You're probably SOL in that case. |
| 01:33 | brehaut | if it passes them through to javascript regexps, then i dont think those flags would work |
| 01:33 | brehaut | does clojurescript let you access the RegExp constructor? |
| 01:33 | tashafa | it does recognize #"..." regex literal |
| 01:33 | amalloy | brehaut: i think the js regexes are about as perl-compliant as java's, so (?i) ought to work |
| 01:34 | cemerick | Yeah, that's just dropping the regex in /regex/ |
| 01:34 | tashafa | looking at source it does account for flags |
| 01:34 | tashafa | https://github.com/clojure/clojurescript/commit/a201e9d8dec84ac0bca5b51c714b3179ed7444c8 |
| 01:34 | brehaut | amalloy: i doubt it |
| 01:34 | tashafa | but this is a while ago |
| 01:35 | cemerick | amalloy: flags are appended to the // literal |
| 01:35 | brehaut | but if you can do the equivalent of new RegExp("[a-z]", "i") then you're ok |
| 01:35 | cemerick | e.g. /foo/i |
| 01:35 | amalloy | cemerick: well, those are pattern-global |
| 01:36 | amalloy | ie, if you can't do /TeST(?i)ing/, that's not so nice |
| 01:36 | amalloy | but apparently you can't. stupid javascript |
| 01:37 | brehaut | most likely javascripts regexps are equivalent to the perl regexps supported by java back in 1995 |
| 01:37 | brehaut | (just like the Date class) |
| 01:38 | amalloy | tashafa: http://www.regular-expressions.info/javascript.html has a good list of what's missing from js regexes |
| 01:39 | tashafa | http://www.regular-expressions.info/javascript.html |
| 01:39 | tashafa | sorry |
| 01:39 | tashafa | right click on terminal |
| 01:39 | cemerick | I'd trust this more: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Regular_Expressions |
| 01:39 | cemerick | (just from a reference perspective) |
| 01:40 | amalloy | cemerick: no doubt yours is more authoritative, but over the years that site has served me well and is easier to absorb |
| 01:40 | tashafa | but I'm erroring on the clojure compiler |
| 01:41 | amalloy | nooo, the compiler hates errors! |
| 01:41 | tashafa | error is "java.util.regex.Pattern.error (Pattern.java:1713)" |
| 01:43 | tashafa | compiler.clj says... |
| 01:43 | tashafa | (defmethod emit-constant java.util.regex.Pattern [x] |
| 01:43 | tashafa | (let [[_ flags pattern] (re-find #"^(?:\(\?([idmsux]*)\))?(.*)" (str x))] |
| 01:43 | tashafa | (print (str \/ (.replaceAll (re-matcher #"/" pattern) "\\\\/") \/ flags)))) |
| 01:43 | brehaut | oh boy. 10 generations deep sierpinksi triangle is grinding emacs to a halt |
| 01:43 | tashafa | sorry im being stubborn |
| 01:44 | tensorpudding | creating automata in your emacs? |
| 01:45 | leo2007 | what exactly is 'reflective invocation'? |
| 01:46 | brehaut | leo2007: if the compiler doesnt know what the type of something is, then it has to dig around in the objects metadata to find a matching method. that digging around is called reflection, and the invocation is invoking the method |
| 01:46 | amalloy | mostly it's slow, amirite? |
| 01:47 | brehaut | lol |
| 01:47 | leo2007 | brehaut: thanks. |
| 02:45 | tsdh | Hi. After coming back from holidays, M-x clojure-jack-in errors with 'error in process filter: clojure-eval-bootstrap-region: Search failed: "(run-hooks 'slime-load-hook) ; on port"'. Indeed, there's no slime-load-hook. What's the matter? |
| 02:45 | clojurebot | ,(let [testar (fn [x y] (cond (= (reduce + (filter odd? (range 0 x))) y) (str y " is an square perfect")), :else("nao eh") )] (testar 10 25)) |
| 02:46 | tsdh | I've updated clojure-mode from 1.11.1 to 1.11.3, so maybe that's part of the problem. |
| 03:21 | tsdh | technomancy: Hm, with respect to the clojure-jack-in error: one thing is that this function searches for "(run-hooks 'slime-load-hook) ; on port", but in swank-clojure-1.4.0-SNAPSHOT.jar's slime.el, there's only "(run-hooks 'slime-load-hook)" without "; on port". |
| 03:41 | Blkt | good morning everyone |
| 03:55 | tsdh | Hi Blkt |
| 04:00 | ejackson | morning good people |
| 06:08 | kephale | raek: ping? |
| 06:10 | raek | kephale: pong |
| 06:11 | kephale | huzzah. i was looking into adjusting the size of the thead pool and ran into one of your posts |
| 06:12 | kephale | i have a piece of code that is parallelized with agents and pcalls. is there a way to define a global (newFixedThreadPool maybe) to get the code to run as single core? |
| 06:13 | kephale | without performing a lobotomy on the code |
| 06:23 | raek | kephale: have you looked at this? http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Executors.html#newSingleThreadExecutor() |
| 06:24 | raek | (def pool (Executors/newSingleThreadExecutor)) (.submit pool #(println "hello!")) |
| 06:24 | clgv | kephale: nope. I checked that. itÄs a pity you cant adjust that poolsize. maybe a patch for this is due. The Java ThreadPoolExecutor supports setting core- and maxpoolsize |
| 06:25 | kephale | raek: no, i have not. |
| 06:25 | clgv | raek: yeah, you have to do that manually. pmap, pcalls etc dont support it |
| 06:25 | raek | yes |
| 06:26 | raek | .invokeAll is very similar to pcalls, though |
| 06:26 | kephale | clgv: arg.. i was worried about that. it looks like it could be done fairly easily on the java side of clojure |
| 06:26 | kephale | well, the agents are the bigger deal, there is just 1 pcalls call, so that could be handled manually if necessary |
| 06:26 | clgv | kephale: yeah it's pretty easy. thats why I wondered why nobody had done it yet |
| 06:28 | kephale | raek, clgv: ty, i might poke around at medusa |
| 06:29 | clgv | clgv: you would just have to store the ExecutorService in the Agent Implementation as ThreadPoolExecutor and write a function to be able to set both numbers |
| 06:30 | kephale | the agents are more of a hack to avoid some of the hangs that you get when pmapping with a large function |
| 06:30 | clgv | kephale: not really. pmap and the other p* just suck^^ |
| 06:31 | clgv | agents are pretty good |
| 06:31 | kephale | clgv: how does medusa-pmap compare? |
| 06:31 | clgv | kephale: you have a link to it? |
| 06:32 | kephale | https://github.com/amitrathore/medusa/blob/master/src/org/rathore/amit/medusa/core.clj |
| 06:32 | kephale | it is based on futures, so it feels like it should be a bit smoother |
| 06:33 | kephale | well, medusa-futures |
| 06:33 | clgv | pmap is also based on future afair (in source) |
| 06:33 | clgv | the direct medusa-pmap looks fine: build all futures at once and returning a lazyseq that derefs them |
| 06:34 | clgv | thats how I would have liked pmap^^ |
| 06:34 | kephale | ok, i might just bite the bullet and get my scalpel |
| 06:35 | clgv | I dont know why they add uuids - maybe for supervision and status reports |
| 06:37 | kephale | for the preempting maybe |
| 06:41 | clgv | ok. I like the medusa-pmap definition, but I dont know what to think about the environment of it ;)# |
| 06:47 | kephale | good point. i actually have no use for the supervision. maybe i'll just copy their style of pmap |
| 06:48 | clgv | kephale: you can just use a ThreadPool and submit your futures there like their pmap does |
| 06:49 | kephale | mmm… now if there was a simple way to override agent/send/await with a custom threadpool everything would be hunky-dory |
| 06:50 | kephale | the proper thing to do would be reverting back to pmap, but i'm kind of lazy |
| 06:50 | clgv | kephale: I dont think you need a custom one. the one that is used is fine, but you need access to setCorePoolSize and setMaxPoolSize |
| 07:00 | kephale | clgv: no luck with (.setCorePoolSize clojure.lang.Agent/pooledExecutor 1) (.setMaximumPoolSize clojure.lang.Agent/pooledExecutor 1) |
| 07:24 | clgv | kephale: yeah. it's private, isnt it? |
| 07:27 | kephale | public in ThreadPoolExecutor |
| 07:36 | clgv | I meant clojure.lang.Agent/pooledExecutor |
| 07:37 | clgv | oh no. it's final that is |
| 07:39 | clgv | what does it do when you change pool sizes? |
| 07:40 | kephale | no error or anything, but the cpu usage doesn't change (still using multiple cores) |
| 07:41 | clgv | kephale: I thought it will finish the already started jobs and then reduce the number of worker threads |
| 07:43 | clgv | kephale: see here http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html#setCorePoolSize%28int%29 |
| 07:43 | kephale | well, just to be certain nothing weird was happening i am using lein run and putting those calls right before i call the function that uses agents |
| 07:44 | kephale | in fact, those calls are the first things to be evaluated |
| 08:16 | bhenry | easiest way to determine if a date is within two other dates? |
| 08:19 | ejackson | bhenry: the clj-time library has functions for this |
| 08:41 | kephale | clgv: fyi, the simplest work around (given that i only care about single core or not) is ((if use-single-core atom agent) …), ((if use-single-core swap! send) …) and that takes care of all the cases (aside from disabling await's) |
| 08:42 | clgv | kephale: nice^^ |
| 08:57 | mdeboard | e/die |
| 09:29 | curious_xoxota | What was that function to generate [[1 2] [1 3] [10 2] [10 3]] from [1 10] and [2 3]? |
| 09:35 | clgv | curious_xoxota: cartesian-product? |
| 09:35 | mdeboard | curious_xoxota: What clgv said, you want http://richhickey.github.com/clojure-contrib/combinatorics-api.html afaik |
| 09:35 | lazybot | Nooooo, that's so out of date! Please see instead http://clojure.github.com/clojure-contrib/combinatorics-api.html and try to stop linking to rich's repo. |
| 09:36 | mdeboard | unless that's been rolled into-- |
| 09:36 | mdeboard | Oh thanks lazybot |
| 09:36 | mdeboard | :) |
| 09:36 | mdeboard | (inc lazybot) |
| 09:36 | lazybot | ⇒ 2 |
| 09:36 | curious_xoxota | thanks :) |
| 09:36 | mdeboard | |
| 09:36 | lazybot | No search term! |
| 09:36 | mdeboard | $google combinatorics api |
| 09:37 | lazybot | [combinatorics API reference (clojure-contrib)] http://richhickey.github.com/clojure-contrib/combinatorics-api.html |
| 09:37 | mdeboard | See :-| |
| 09:37 | mdeboard | lazybot you naughty monkey |
| 09:37 | mdeboard | (dec lazybot) |
| 09:37 | lazybot | You want me to leave karma the same? Fine, I will. |
| 09:38 | clgv | (- lazybot 10) |
| 09:38 | clgv | (dec lazybot 10) |
| 09:38 | lazybot | ⇒ -1 |
| 09:38 | clgv | (dec lazybot 10) |
| 09:38 | lazybot | ⇒ -2 |
| 09:38 | mdeboard | weird |
| 09:38 | mdeboard | $google lexicographic permutations |
| 09:38 | lazybot | [Permutation - Wikipedia, the free encyclopedia] http://en.wikipedia.org/wiki/Permutation |
| 09:39 | mdeboard | (inc cemerick) |
| 09:39 | lazybot | ⇒ 6 |
| 09:39 | mdeboard | For dat podcast |
| 09:39 | cemerick | FYI: Mostly λazy Episode 0.0.1: Sean Corfield, Clojure Contrib, and "real world Clojure" http://wp.me/p1Y10D-c #podcast |
| 09:39 | mdeboard | http://mostlylazy.com/2011/11/08/episode-0-0-1-sean-corfield-clojure-contrib-and-real-world-clojure/ |
| 09:39 | cemerick | (first and last promo of it here) |
| 09:39 | cemerick | mdeboard: well, make sure you listen before praising me on it ;-) |
| 09:39 | cemerick | But, thanks anyway. :-D |
| 09:40 | mdeboard | I was looking for it this a.m. so I could listen on the drive in to work |
| 09:40 | mdeboard | alas |
| 09:41 | mdeboard | cemerick: Downloading now. There's a dearth of in-depth technical podcasts; have been looking forward to this |
| 09:41 | cemerick | I can't say it's in-depth and technical |
| 09:42 | cemerick | e.g. I almost certainly won't be going se-radio-style on the implementation details of hash array map tries |
| 09:42 | ejackson | thats a relief |
| 09:42 | mdeboard | cemerick: Oh I don't mean like that |
| 09:42 | mdeboard | More like devops cafe |
| 09:42 | cemerick | The conversation seancorfield and I had was actually more about libraries and community than anything else. |
| 09:43 | cemerick | ejackson: are you guys on the ground yet? |
| 09:43 | ejackson | tomorrow |
| 09:43 | ejackson | landing 3pm ish in Raleigh |
| 09:44 | ejackson | cgrand and I, having not yet met, have an elaborate plan involving funny hats and orange sneakers.... |
| 09:45 | clgv | ah clojure conj is this week. dont forget to put your slides online ;) |
| 09:46 | mdeboard | I'm curious if/how rhickey will top Simple Made Easy |
| 09:47 | mdeboard | Also hoping dnolen's pred matching talk goes up as well. |
| 09:47 | mdeboard | Are these going up on InfoQ or what |
| 09:47 | zerokarmaleft | sussman's talk also went up on infoq |
| 09:48 | zerokarmaleft | don't know for sure if *everything* from strangeloop will be posted |
| 09:48 | mdeboard | I mean from ClojureConj |
| 09:48 | mdeboard | this weekend |
| 09:48 | mdeboard | dnolen is delivering a talk on predicate matching which I am assuming will be a more polished/updated version of the talk I saw on Vimeo on the same topic to the NYC Clojure user group |
| 09:50 | ejackson | I'm sure somebody will point a video camera at the stadium. |
| 09:50 | ejackson | although they didn't last year |
| 09:51 | TimMc | Awkward timing for the Conj vis-Ã -vis the November 8 elections. |
| 09:51 | ejackson | sorry, they did, but not everything, I don't think |
| 09:52 | cemerick | ejackson: The video was unusable for some. |
| 09:52 | ejackson | like your good self.... |
| 09:53 | cemerick | Yeah, me, Laurent, and S. Sierra got no video love. |
| 09:53 | cemerick | Might have been another, but I don't remember. |
| 09:53 | ejackson | anyway, the precedent is good |
| 09:54 | TimMc | (dec lazybot I don't think it reads the rest of the line |
| 09:54 | TimMc | (dec lazybot or perhaps it does) |
| 09:54 | lazybot | ⇒ -1 |
| 09:57 | ejackson | cemerick: I think you should repay the favour to certain gentleman who nagged you into being Podcast-in-Chief..... Somebody should be Vlogger-in-Chief.... |
| 09:59 | cemerick | ejackson: crap, who was that? |
| 10:00 | cemerick | The blur of tweets dissipates rapidly. |
| 10:00 | ejackson | fogus, no ? |
| 10:00 | cemerick | Ech, anyway, I'm not anything-in-chief. :-) |
| 10:01 | cemerick | Yeah, fogus was in there, as was Alex Miller and Aaron Bedra. |
| 10:01 | cemerick | Couple others, too. |
| 10:01 | cemerick | I'm not sure why that plurality suddenly popped up. |
| 10:01 | ejackson | yes, some parenthesis wielding mob |
| 10:01 | ejackson | or other |
| 10:02 | curious_xoxota | I'm taking two sets, and for every element of one, mapping with an operation to the other set. In the end, I join the sets. I'm getting memory errors with this algorithm: do you think this implementation is too inefficient, or there might be a bugw |
| 10:02 | curious_xoxota | *bugw -> bug? |
| 10:02 | TimMc | curious_xoxota: Example input and output? |
| 10:03 | TimMc | (I don't understand the first sentence.) |
| 10:03 | mdeboard | Ditto, can you post a snippet or summat |
| 10:04 | curious_xoxota | http://454a56951ea463a7.paste.se/ |
| 10:04 | curious_xoxota | One of the sets has like 10000 pairs of numbers, like [1 2 |
| 10:04 | curious_xoxota | (sorry, enter in an awkward position) |
| 10:05 | curious_xoxota | [1 2], and the other is smaller, with like 300 elements at most |
| 10:05 | redinger | TimMc: Vote early, vote often |
| 10:06 | mdeboard | curious_xoxota: Just out of curiosidad, why did you overwrite conj? |
| 10:06 | mdeboard | or rather, use conj as a temp var |
| 10:07 | Chousuke | there's nothing obvious about that code that leaks memory :/ |
| 10:07 | TimMc | redinger: That's hard if you're out of state! If i had gone to the Conj, I wouldn't have been able to vote today. |
| 10:07 | redinger | TimMc: No absentee voting for you? |
| 10:07 | curious_xoxota | mdeboard: for 'conjunto', or set, in portuguese |
| 10:08 | curious_xoxota | mdeboard: poor choice, I agree :) |
| 10:08 | mdeboard | curious_xoxota: oic |
| 10:08 | Chousuke | feels sort of weird to see non-ascii characters in identifiers :P |
| 10:08 | TimMc | redinger: Is "traveling" a valid excuse? Some states are pretty restrictive on who they'll give an absentee ballot. |
| 10:08 | Chousuke | I'm too used to coding in English |
| 10:09 | Chousuke | if I try to use Finnish identifiers it just looks weird |
| 10:09 | curious_xoxota | I think it's pretty neat to be able to use them. You can define a function named ♥! |
| 10:10 | redinger | TimMc: Gotcha. In NC, we don't even need a reason for absentee voting. |
| 10:11 | mdeboard | redinger: So much military in NC, they have to be flexible that way (lived in NC for 8 years as a Marine). |
| 10:11 | mdeboard | not that you needed me to tell you that... |
| 10:12 | TimMc | aha |
| 10:12 | mdeboard | anyway curious_xoxota besides normal troubleshooting steps I can't give any help. What is the error you're getting? |
| 10:13 | curious_xoxota | mdeboard: out of memory. Lemme run the code to get the precise error |
| 10:13 | TimMc | Chousuke: Greek identifiers at the bottom: https://github.com/timmc/CS4300-HW4/blob/master/src/timmcHW4/tri.clj#L98 |
| 10:14 | TimMc | Why not use the same identifiers as in the original equations? :-) |
| 10:23 | Chousuke | TimMc: yeah, I guess that's useful. Most people who would understand Clojure code can probably read at least a couple greek letters :P |
| 10:32 | lambdanaut | I've got a function "recurseThis" that takes an x and does something to that x. I want another function "find" that takes that x and puts it back into "recurseThis" over and over until x satisfies some condition, like being equal to 1. |
| 10:33 | lambdanaut | Can I do this in clojure? I'm basically just trying to avoid explicit recursion |
| 10:34 | raek | lambdanaut: sure. (defn find [f x done?] (loop [x x] (if (done? x) x (recur (f x)))) |
| 10:34 | raek | or you could use 'trampoline' |
| 10:36 | lambdanaut | Thanks raek! |
| 11:05 | mefesto | technomancy: ping |
| 11:10 | mefesto | technomancy: fyi, i pushed wabbitmq 0.1.5 with your commits to clojars. thanks! :) |
| 11:24 | cark | is it possible to do a lein uberjar which would not include clj sources ? |
| 11:34 | dnolen | any opinions on fixing the behavior of instance? in CLJS, http://dev.clojure.org/jira/browse/CLJS-98 |
| 11:34 | raek | I remember seeing an article about JVM garbage collector implementations (with pretty pictures) on hacker new a while ago. anyone happen to know which one I'm looking for? |
| 11:36 | cemerick | cark: :omit-source https://github.com/technomancy/leiningen/blob/stable/sample.project.clj#L159 |
| 11:37 | cark | ah thanks cemerick ! |
| 11:38 | cark | looks like you gave me the way to find my own answers concerning leiningen too |
| 11:38 | cark | thanks |
| 11:38 | raek | (found it: http://sdoulger.blogspot.com/2011/05/very-interesting-article-regarding-gc.html) |
| 12:14 | TimMc | raek: neat link |
| 12:44 | cemerick | raek: that's a weak reblog |
| 12:44 | cemerick | http://blog.dynatrace.com/2011/05/11/how-garbage-collection-differs-in-the-three-big-jvms/ seems to be the authentic one |
| 12:48 | technomancy | mefesto: cool |
| 12:48 | technomancy | j.io.Serializable is new in 1.3, right? |
| 12:49 | technomancy | or rather, support thereof |
| 13:00 | TimMc | redinger: Wait, never mind -- I was confusing Tuesday with Thursday. >_< |
| 13:05 | technomancy | cemerick: heh; *con*trib? |
| 13:06 | technomancy | so what's the weather like in Raleigh |
| 13:13 | kzar | Anyone know how to check if your app is running locally or on heroku progmatically? I wanted to set the mode flag to :prod when I see it's on heroku |
| 13:14 | technomancy | kzar: want to try the lein 1.6.1.1 preview? then you can just check for LEIN_NO_DEV. |
| 13:15 | kzar | technomancy: how does that work? |
| 13:16 | technomancy | kzar: heroku config:add BUILDPACK_URL=http://github.com/heroku/heroku-buildpack-clojure.git |
| 13:16 | technomancy | feel free to msg me if you have any issues |
| 13:19 | kzar | technomancy: What does the buildpack do? Also how do I use the preview version of lein? Is LEIN_NO_DEV an enviroment var? |
| 13:20 | cemerick | technomancy: ? |
| 13:20 | technomancy | kzar: when you do git push, it compiles a "slug"; basically a tarball of the project and all its deps. setting this config just puts you on the latest version of the part that builds the clojure slug, which uses lein 1.6.1.1. |
| 13:20 | technomancy | cemerick: just the pronunciation =) |
| 13:20 | licenser | geez why does emacs hate me? |
| 13:21 | technomancy | kzar: yeah, LEIN_NO_DEV is an environment var |
| 13:21 | cemerick | technomancy: I never noticed! |
| 13:21 | kzar | technomancy: Cool so I don't even have to mess with Lein on my laptop, just run that command to tell Heroku to use the new version |
| 13:22 | cemerick | I did notice that I can't maintain a consistent pronunciation of leiningen, nevermind a correct one. :-P |
| 13:22 | kotarak | licenser: Because it's not vi. ;) |
| 13:22 | technomancy | kzar: yep. currently it's using 1.5.2 by default, but we'll push the upgrade out to everyone soon. |
| 13:22 | cemerick | good to see you kotarak :-) |
| 13:22 | licenser | but how can emcas know I used VI today ? you think it's jalous? |
| 13:23 | kzar | technomancy: Cool beans, thanks for the tip. I have to run but I'm going to try that out tomorrow morning and I'll let you know how I get on |
| 13:23 | kotarak | cemerick: thanks. :) the pronunciation of leiningen is quite easy, btw. ;) |
| 13:23 | technomancy | sure, no problem |
| 13:23 | kotarak | licenser: might be. Those diva types are difficult. |
| 13:23 | licenser | :.( |
| 13:24 | kotarak | licenser: And this “foreign editing”… tstststs |
| 13:24 | cemerick | kotarak: I *can* pronounce it properly, it just often doesn't come out as intended. |
| 13:24 | cemerick | It should come naturally, given part of my heritage, I suppose. All that Russian getting in the way, perhaps. :-P |
| 13:25 | kotarak | cemerick: hehe, globalization is difficult. |
| 13:25 | cemerick | kotarak: now that you're here, your prize is having me bug you about vimclojure (+ nrepl) ;-) |
| 13:26 | kotarak | cemerick: honestly I just thought about it this afternoon. |
| 13:27 | kotarak | cemerick: vim allows to call into native libraries. That would allow a C(?) client library for nrepl to be used directly. |
| 13:27 | cemerick | so the scripting approach was a dead end, huh? |
| 13:27 | kotarak | cemerick: however I don't have the time, nor the (in particular Windows) experience to implement something like that. :| |
| 13:27 | cemerick | The jark guys have an ocaml nrepl client brewing that might suit your needs. |
| 13:27 | kotarak | cemerick: yeah, kind of. Never really worked. |
| 13:28 | technomancy | hm... now immutant has its own "lein new" command as well. need to keep people from reinventing the wheel. |
| 13:29 | kotarak | cemerick: a native version would have the advantage of eliminating the “fork/spawn the client” step. I would expect this to be much faster. |
| 13:29 | technomancy | hah |
| 13:29 | technomancy | touché |
| 13:29 | kotarak | Whether OCaml can do that? hmmm…. |
| 13:29 | cemerick | kotarak: ocaml can compile down to a very small/fast native executable just about everywhere, so… |
| 13:30 | cemerick | I don't actually know anything about it, short of it basically in a working state. |
| 13:30 | cemerick | Windows may be problematic, but that's typical. |
| 13:30 | kotarak | cemerick: OCaml is quite nice, and yes, windows is a problem… as usual. |
| 13:34 | kotarak | The jark site is down? Hmm... |
| 13:34 | Raynes | technomancy: ibdknox and I have been working on Spawn. Problem is, we want it to remain a library, and you don't like dependencies because of packaging issues. |
| 13:34 | cemerick | kotarak: yeah, I just msg'd Issac about it. |
| 13:35 | cemerick | kotarak: here's the ocaml client: https://github.com/icylisper/jark-client |
| 13:35 | technomancy | Raynes: I think this is a case where wider sharing and standardization would justify it |
| 13:36 | technomancy | also considering it's probably more than a page =) |
| 13:38 | ibdknox | what'd I miss? |
| 13:38 | technomancy | ibdknox: how are you finding spawn? |
| 13:39 | ibdknox | technomancy, Raynes basically rewrote it so that it makes a bit more sense :) |
| 13:40 | technomancy | heh; gotcha |
| 13:40 | cemerick | spawn? |
| 13:40 | ibdknox | cemerick, project templating as a library |
| 13:40 | ibdknox | cemerick, with both lein and cake plugins |
| 13:40 | Raynes | There are still a few bugs because resources are the bane of my existence, but… getting there. |
| 13:40 | cemerick | ah-ha |
| 13:40 | cemerick | that's a swamp :-| |
| 13:40 | technomancy | cemerick: do tell |
| 13:40 | Raynes | A deep, dark swamp. |
| 13:40 | ibdknox | resources suck |
| 13:41 | technomancy | wait, what's wrong with resources? |
| 13:41 | Raynes | technomancy: Go list files under the same directory structure in 6 different jars. |
| 13:42 | technomancy | you don't want to just require a manifest? |
| 13:42 | cemerick | technomancy: defaults are hard to get right, defaults across contributors or types of projects are even harder to get right and keep halfway coherent, and discovery of these sets of defaults is really hard to get right, especially once more than 3 people are producing them. |
| 13:42 | cemerick | Just remembering my encounters w/ archetypes — which surely had their own baggage, but there seems to be some hard problems in general. |
| 13:43 | ibdknox | cemerick, well, you can add your own templates very easily, so I suspect there will be packs of templates that people will build |
| 13:43 | technomancy | cemerick: yeah, I'm definitely interested in hearing about the issues |
| 13:43 | ibdknox | cemerick, and that is *separate* from spawn |
| 13:43 | ibdknox | which is important |
| 13:43 | cemerick | ibdknox: see, I'm already confused. :-P |
| 13:43 | cemerick | ;-) |
| 13:43 | ibdknox | haha |
| 13:43 | ibdknox | basically lein plugin install spawn |
| 13:44 | ibdknox | lein plugin install noir-templates |
| 13:44 | ibdknox | lein spawn heroku-project my-cool-site |
| 13:45 | cemerick | fair enough — what happens when there's 200 different template plugins? |
| 13:45 | Raynes | There isn't really an issue with anything but template discovery. We already require that template (genome) definitions have a specific directory structure (spawn/genome/foo.clj and spawn/genome/foo/ for template files). Mostly, we want to be able to dynamically list and access all of the genomes whether or not they are in jars and we want to list them. I just haven't had time to work out how to do that yet. |
| 13:45 | ibdknox | eh, if there are, there are |
| 13:45 | ibdknox | cemerick, they tend to be specific to the problem you're solving |
| 13:45 | cemerick | ibdknox: absolutely |
| 13:46 | Raynes | We also want to repeat ourselves because we just woke up and want to repeat ourselves. |
| 13:50 | technomancy | Raynes: literally spawn/genome, or spawn/$GENOME ? |
| 13:50 | technomancy | cemerick: you don't think distributing them as maven artifacts solves the namespacing issue? |
| 13:50 | technomancy | actually the real problem with pulling in spawn is that it's a circular dependency =\ |
| 13:50 | cemerick | (The short upshot is almost no one uses archetypes. It's impossible to find the one you want; but if you do (often going only by the name, e.g. there's a partial list here: http://docs.codehaus.org/display/MAVENUSER/Archetypes+List), chances are it's ill-maintained or helpfully adds bugs to your project from the start.) |
| 13:51 | cemerick | well, that was helpful |
| 13:51 | cemerick | (The short upshot is almost no one uses archetypes. It's impossible to find the one you want; but if you do (often going only by the name, e.g. there's a partial list here: http://docs.codehaus.org/display/MAVENUSER/Archetypes+List), chances are it's ill-maintained or helpfully adds bugs to your project from the start.) |
| 13:51 | technomancy | (though a 5-line shell script would probably suffice for packaging purposes in spawn) |
| 13:52 | technomancy | cemerick: what makes them hard to find? is it just that the nice UI on search.maven.org is a relatively recent development? |
| 13:53 | cemerick | technomancy: it's that there are often multiple archetypes with minute (yet subtly important) differences, so an artifact id is a pretty narrow peephole through which to determine whether one is right v. another. Nevermind differences in terminology, etc. |
| 13:54 | technomancy | cemerick: so the standard clojars-mosh-pit issues apply, but apart from that would it be fair to say it's more of a social issue than a technical one? |
| 13:54 | cemerick | The only times I've used them, I ended up trying two or three, finally found the one I needed, and then discovered a week later I was suffering from a bug in the generated descriptor for something-or-other. |
| 13:54 | licenser | Can anyone tell me why clojue-jack-in dies with this: "error in process filter: progn: Symbol's value as variable is void: /Users/licenser/\.lein" |
| 13:54 | technomancy | licenser: what version of clojure-mode? |
| 13:55 | technomancy | there's a bug we just fixed last week where unexpected junk on lein's stdout could interfere with the bootstrap |
| 13:55 | licenser | technomancy: your version from git (1.11.2) |
| 13:55 | licenser | ohh sneaky :) |
| 13:55 | licenser | that might be it |
| 13:55 | technomancy | licenser: that was sooooo last week. =) |
| 13:55 | licenser | heh |
| 13:56 | licenser | weeh :D |
| 13:56 | licenser | now I just get the version mismatch thingy :( |
| 13:57 | cemerick | technomancy: I wouldn't say that. |
| 13:58 | licenser | technomancy: you are my hero! |
| 13:58 | licenser | thanks mate :) |
| 13:58 | technomancy | heh; np |
| 13:58 | cemerick | If the only interaction the user can provide is are coordinates, then yes. However, I can imagine spawn (or whatever appropriate bit) making it possible for template authors to provide interactive guidance to help find their templates when appropriate. It'd be a bit of a random walk, but a series of Y/N questions could make the selection process more of a conversation between the user and N different template authors about what mak |
| 13:58 | cemerick | each option distinctive. |
| 13:59 | wastrel | my glasses are dirty |
| 13:59 | licenser | wastrel: ask technomancy he is great at helping people :P |
| 13:59 | licenser | perhaps he has fixed that in a patch last week too ^^ |
| 14:00 | technomancy | have you tried increasing your font size? |
| 14:02 | technomancy | cemerick: I almost want to hope that the smaller, more tightly-knit nature of the clojure community would help avoid overlap. |
| 14:02 | technomancy | but there are like five rabbitmq clients, so I'm thinking no. |
| 14:02 | licenser | technomancy: I'd like to ask you on a thought of mine about lein if I am not disturbing you too much? |
| 14:02 | cemerick | hah :-) |
| 14:02 | technomancy | licenser: sure, what's up? |
| 14:02 | cemerick | also, +5 years, how small and tightly-knit is it, etc. |
| 14:04 | licenser | I found a strange idea in the erlang world about build tools: make the tools 'executable' part of the project. So allow leiningen to be shipped as part of the git repository, that way every project always has the 'right' version of leiningen |
| 14:04 | licenser | have you ever thought about that? |
| 14:05 | licenser | cemerick: we just have to scare away all potential newcomers - we can get a few CL'ers to help with that |
| 14:05 | technomancy | licenser: actually I think you could do that already |
| 14:05 | technomancy | licenser: lein will automatically perform self-install now if it notices its uberjar is missing |
| 14:05 | licenser | technomancy: I did it just required a bit hackery |
| 14:05 | cemerick | that's just a submodule, no? |
| 14:06 | kotarak | licenser: gradle has something similar IIRC. |
| 14:06 | technomancy | cemerick: you should only need a submodule if you wanted a snapshot rather than a release |
| 14:06 | licenser | as making ./lein use $PWD/.lein instead of $HOME./lein as it's root |
| 14:06 | technomancy | licenser: what was needed? |
| 14:06 | licenser | mostly that |
| 14:06 | licenser | I think only that |
| 14:07 | technomancy | I don't understand |
| 14:07 | licenser | so if lein would like check of $PWD/.lein exists and take it istead of $HOME/.lein all would be for free |
| 14:07 | cemerick | technomancy: I think the benefit of a submodule would be zero install… |
| 14:07 | technomancy | licenser: oh, you want to make sure user-level plugins don't conflict? |
| 14:08 | cemerick | Not that I'm actually advocating submodules. :-P |
| 14:08 | technomancy | cemerick: right, the benefit of not using submodules is that you would get to not use submodules. =) |
| 14:08 | cemerick | Tantalizing syllogism, that is. |
| 14:08 | licenser | technomancy: yap that and also as cemerick pointed out - really zero install, plus the fact that different projects can use different versions of lein |
| 14:08 | technomancy | submodules praemium sum est |
| 14:08 | licenser | and with that entirely different versions of clojure too |
| 14:08 | technomancy | licenser: using ~/.lein will actually not conflict |
| 14:09 | technomancy | because each version's self-install is its own uberjar in ~/.lein/self-installs |
| 14:09 | technomancy | the only thing that's shared is ~/.lein/init.clj and user-level plugins, which I think in most cases you do want to share |
| 14:09 | licenser | yes but I'd have to edit the lein sh to switch between versions (i.e. clojure versions)( |
| 14:10 | licenser | had a lot of fun with different clojure versions :P |
| 14:10 | technomancy | oh, are you trying to run lein on clojure 1.3? that's probably not going to work. |
| 14:10 | licenser | it is working great |
| 14:11 | licenser | had to self upgrade a few libraries on the project side but it works |
| 14:11 | technomancy | oh, wow; interesting. |
| 14:11 | technomancy | is this 1.6.2-SNAPSHOT? |
| 14:11 | licenser | there is a working lein uberjar on the github page for lein-clojurescript |
| 14:12 | technomancy | I guess if you did it on a per-project basis it wouldn't be a big deal since you'd be responsible for plugin breakage yourself |
| 14:12 | licenser | https://github.com/bartonj/lein-clojurescript |
| 14:12 | licenser | technomancy: exactly my point :) |
| 14:12 | licenser | that is why this semi lein lives in ./line and not global lein |
| 14:12 | technomancy | though honestly I think for clojurescript using eval-in-project with an in-memory clojure 1.3 project is cleaner |
| 14:12 | technomancy | someone on the mailing list tried that and said it worked for him |
| 14:13 | licenser | then I figured, hey that is actually a nice thing, reminds me of rebar from erlang |
| 14:13 | licenser | and then I figured that it is like only 3 lines in the lein sh to make lein work globally and locally |
| 14:14 | licenser | cemerick: aside of being confusing? :P |
| 14:14 | cemerick | licenser: Or, not existing. |
| 14:14 | licenser | yes which is quite confusing |
| 14:14 | cemerick | heh |
| 14:14 | cemerick | yeah |
| 14:14 | licenser | so I still don't understood the entire concept of clojurescript |
| 14:15 | licenser | but what I got working works great :OP |
| 14:15 | licenser | so it was a darn hard thing to translate foo.bar() -.- |
| 14:15 | licenser | geez |
| 14:24 | tashafa | clojurescript is the future. |
| 14:24 | tashafa | for me at least :) |
| 14:25 | licenser | tashafa: it is certnely darn nice but it has a lot of pitfalls |
| 14:25 | cemerick | I love the vision. I need some trains running on time though. |
| 14:25 | tensorpudding | i don't much understand the point either |
| 14:25 | tashafa | what pitfalls? |
| 14:25 | licenser | like foo.bar() for example |
| 14:25 | ibdknox | cemerick, what? |
| 14:25 | ibdknox | lol |
| 14:26 | tensorpudding | you still need to compile it to javascript for it to be useful |
| 14:26 | tensorpudding | why not just write the javascript? |
| 14:26 | cemerick | ibdknox: hrm? |
| 14:26 | ibdknox | cemerick, you need some trains running on time? |
| 14:26 | licenser | tensorpudding: I like clojure better |
| 14:26 | cemerick | tensorpudding: that's like saying, why not write Java if you're going to run on the JVM. |
| 14:26 | tensorpudding | it's not like javascript devs are in short supply |
| 14:26 | ibdknox | tensorpudding, actually, they are |
| 14:26 | licenser | tensorpudding: neither are java devs :P |
| 14:27 | cemerick | In any case, just because you can sling more mess doesn't make the mess go away. |
| 14:27 | licenser | ibdknox: no they are not, good js devs are in short sypply |
| 14:27 | ibdknox | tensorpudding, try hiring a javascript person who doesn't suck right now |
| 14:27 | cemerick | ibdknox: basic infrastructure services. I'm a releases broken record. :-P |
| 14:27 | tashafa | I've been using it on theis project of mine. and the advantages over javascript is godsend |
| 14:27 | ibdknox | cemerick, I really want a cljs release too :( |
| 14:27 | tashafa | and I do a lot of javascript |
| 14:28 | ibdknox | I hate javascript so much |
| 14:28 | tensorpudding | who knows, maybe dart will kick javascript to the curb |
| 14:28 | tashafa | javascript is my first love |
| 14:28 | tensorpudding | okay, that's not going to happen |
| 14:28 | tensorpudding | but it'd be funny to think about it |
| 14:28 | ibdknox | I spent 6 hours yesterday finding out that IE9 has broken Dom replacement |
| 14:29 | ibdknox | a very simply set of steps will cause a reference to a dom element to be destroyed, while in every other browser it's fine lol (including IE8 and 7) |
| 14:29 | cemerick | talk about a swamp |
| 14:29 | ibdknox | unfortunately, that's something cljs doesn't fix |
| 14:29 | tashafa | are you using jquery? |
| 14:30 | zodiak | tashafa, I prefer my first loves not to be abusive relationships ;) |
| 14:30 | tashafa | zodiak: hahaha |
| 14:30 | ibdknox | tashafa, I was, the repro I have to prove it's an IE9 bug doesn't |
| 14:30 | technomancy | the browser is giving ORMs a run for their money for the title of "the vietnam of computer science" |
| 14:30 | technomancy | "the vietnam war of computer science" rather |
| 14:30 | licenser | ORMs? |
| 14:30 | clojurebot | special forms are http://clojure.org/special_forms |
| 14:30 | tensorpudding | i like web dev |
| 14:31 | technomancy | licenser: object-relational mappers |
| 14:31 | licenser | ah |
| 14:31 | cemerick | ORBs -> ORMs -> browsers, huh? |
| 14:32 | ibdknox | tensorpudding, I love the web. Web dev is terrible |
| 14:32 | tensorpudding | what's wrong with it? |
| 14:32 | ashafa | technomancy: I think browsers already have that title |
| 14:32 | tensorpudding | i mean, if you ignore noncompliant browsers |
| 14:32 | ibdknox | you can't ignore that |
| 14:32 | ibdknox | unless you don't care about users |
| 14:33 | technomancy | ashafa: was specifically referring to http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx |
| 14:33 | ashafa | the scene has to be the worst |
| 14:33 | zodiak | ibdknox, web dev is fun, if you ignore IE ;) |
| 14:33 | tensorpudding | it seems easier to me to make an acceptable cross-platform experience with web than with anything else |
| 14:33 | ibdknox | zodiak, and JS in general ;) |
| 14:33 | technomancy | "Designed for curl 7.20." |
| 14:33 | zodiak | ibdknox, touche sir, touche |
| 14:34 | licenser | technomancy: sure that your JS is curl compatible? :P |
| 14:34 | ibdknox | for example, there is no sensible date handling for JS |
| 14:34 | ibdknox | date.js does terrible things with timezones |
| 14:34 | technomancy | tensorpudding: well the nice thing about developing CLI applications is that windows users typically don't want to use your programs anyway. |
| 14:35 | ibdknox | (inc technomancy ) |
| 14:35 | lazybot | ⇒ 1 |
| 14:35 | clojurebot | No entiendo |
| 14:35 | ibdknox | gr |
| 14:35 | ibdknox | (inc technomancy) |
| 14:35 | lazybot | ⇒ 19 |
| 14:35 | licenser | (inc technomancy) |
| 14:35 | lazybot | ⇒ 20 |
| 14:35 | ashafa | I've learned when it comes to dates in JS its bext to roll your own. keep it constrained to what exactly it needs to do |
| 14:35 | licenser | wait tachnomancy has state?!?! |
| 14:35 | ashafa | best* |
| 14:35 | licenser | EVIL! |
| 14:35 | licenser | you are mutating mate! |
| 14:36 | technomancy | it's ok; /me is an identity |
| 14:36 | ibdknox | I keep nearly talking to tech-otter |
| 14:36 | technomancy | at least, I think I am |
| 14:36 | technomancy | but that should be good enough |
| 14:36 | tensorpudding | most people on mac don't want to use CLI apps either |
| 14:36 | technomancy | heh |
| 14:36 | licenser | (technomancy 1) |
| 14:36 | ibdknox | tensorpudding, not true, the vast majority of devs are on macs now ;) |
| 14:36 | licenser | tensorpudding: not true! |
| 14:37 | cemerick | I wonder if I'll have the brass to not support IE in my next app. |
| 14:37 | dnolen_ | tensorpudding: ClojureScript is a much more expressive language than JS in IMO (fn [] ...) vs. function(){...}, as well cutting down ceremony for things which are tedious in plain JS (namespacing) |
| 14:37 | tensorpudding | i as a linux user don't necessarily want foo to be a CLI app |
| 14:37 | licenser | tensorpudding: are you thread safe? |
| 14:37 | Bronsa | CLI is faster |
| 14:37 | tensorpudding | CLI is more esoteric |
| 14:37 | tensorpudding | less visual |
| 14:37 | cemerick | Sounds like CLI is web scale. |
| 14:37 | ibdknox | it is. |
| 14:37 | ibdknox | very web scale |
| 14:37 | licenser | the best reason for Cli is - it follows the unix principle - lets you chan programs |
| 14:38 | tensorpudding | a tool for devs, not users |
| 14:38 | licenser | try that with a GUI |
| 14:38 | ibdknox | I'm working on the web scale CLI framework for Clojure |
| 14:38 | ashafa | dnolen_: being able to do #(let [x ($ %2)]...)) is just pure ectasy |
| 14:38 | TimMc | licenser: s/chaining/clipboard/ |
| 14:38 | tensorpudding | whats that $ |
| 14:38 | tensorpudding | is that from jquery or something |
| 14:38 | ibdknox | jquery |
| 14:39 | licenser | TimMc: wait you want to say chaining is the same as a clipboard? |
| 14:39 | dbushenko | hi all! |
| 14:39 | ashafa | (def $ (js* "$")) |
| 14:39 | tensorpudding | you can use jquery with clojurescript? |
| 14:39 | licenser | hi dbushenko |
| 14:39 | tensorpudding | that's pretty convenient |
| 14:39 | dbushenko | is there a way to override a method of a java class except using proxy? |
| 14:39 | TimMc | licenser: Clipboard is the GUI substitute for chaining. :-) |
| 14:39 | ibdknox | sort of |
| 14:39 | licenser | TimMc: but it is not nearly the same |
| 14:39 | dnolen_ | tensorpudding: you can use any JS lib from ClojureScript. There's a couple of things that need fixing for it to be ideal tho. |
| 14:39 | TimMc | of course |
| 14:40 | ashafa | tensorpudding: yes you can |
| 14:40 | licenser | no of cause not :P chaining allows for scriptability and automation clip boarding allows for a tennis arm |
| 14:42 | tensorpudding | excluding web stuff, what user apps use clojure? |
| 14:43 | ibdknox | not many |
| 14:43 | ibdknox | there are a few swing apps out there |
| 14:43 | cemerick | looks like overtone's new tooling uses swing |
| 14:43 | technomancy | it's not very common to distribute JVM-hosted programs to the user in any language |
| 14:43 | ibdknox | Clojure lends itself more naturally to server/computational applications |
| 14:44 | ibdknox | overtone has new tooling? :D |
| 14:44 | tensorpudding | right, i forgot |
| 14:44 | tensorpudding | the clojure gui choice is swing isn't it |
| 14:44 | cemerick | ibdknox: http://overtone.github.com/blog.html |
| 14:44 | cemerick | tensorpudding: or swt |
| 14:45 | tensorpudding | which one looks less atrocious |
| 14:45 | dnolen_ | cemerick: if Feb 2010 is considered new ;) |
| 14:45 | ibdknox | cemerick, those are old mockups |
| 14:45 | technomancy | pretty much all the JVM gui options end up deep in uncanny valley territory |
| 14:45 | cemerick | dnolen_, ibdknox hah, didn't notice the post dates :-( |
| 14:46 | technomancy | licenser: care to join #leiningen to discuss this pull request? |
| 14:50 | Raynes | tensorpudding: http://github.com/daveray/seesaw is a good library for working with Swing. |
| 14:50 | loomcore | tensorpudding: check out guiftw, can be used with both swing and swt |
| 14:50 | ibdknox | I need to look more into my embedded webkit idea |
| 14:51 | Raynes | loomcore: FIGHT! FIGHT! FIGHT! |
| 14:51 | cark | how about making a web server with embedded jetty, then run it inside xulrunner ? |
| 14:51 | cark | while we wait for webkit inside the jvm |
| 14:52 | tensorpudding | it was a metaphorical question, i have no desire to add to the list of java gui apps |
| 14:52 | cemerick | cark: that's what I've done via swt most recently |
| 14:52 | brehaut | jvm is getting webkit? |
| 14:52 | tensorpudding | what would jvm do with webkit? |
| 14:52 | cemerick | javafx has a webkit view, no? |
| 14:52 | cark | brehaut: it was supposed to, for 1.7 .... but no webkit =( |
| 14:53 | tensorpudding | which java? |
| 14:53 | cark | cemerick: swt has a webkit ? |
| 14:53 | ibdknox | cark, you can already embed webkit using swt |
| 14:53 | ibdknox | yes |
| 14:53 | cark | mhh and how portable is it ? |
| 14:53 | ibdknox | it requires webkit to already be on the machine |
| 14:53 | dbushenko | tensorpudding, I've found clojure as a really good tool for scientific applications |
| 14:53 | cemerick | cark: it uses the native browser: webkit on mac, IE vN on windows |
| 14:54 | ibdknox | cemerick, you can force it to use just webkit |
| 14:54 | cark | nice i need to investigate that |
| 14:54 | ibdknox | which of course fails if it can't find it |
| 14:54 | cemerick | ibdknox: oh, I didn't know that |
| 14:54 | cark | because swing is so annoying to work with |
| 14:54 | cemerick | good to know. |
| 14:54 | dbushenko | tensorpudding, it allows me to really, really fast check some hypothesis, try new functionality or investigate a java library |
| 14:54 | tensorpudding | it makes sense if your libraries are java i guess |
| 14:54 | dbushenko | yep |
| 14:54 | dbushenko | usually they are |
| 14:55 | tensorpudding | i'd be worried about introducing a java dependencies if they weren't |
| 14:55 | tolstoy | Folks, when I test the first example in: http://clojure.org/concurrent_programming, it seems that all the "tasks" run in the same thread! |
| 14:55 | tensorpudding | dependency, even |
| 14:55 | tolstoy | Does't Executors/newThreadPool actually create a pool of threads? |
| 14:55 | dbushenko | well, that's your choice. Either clojure+java libs, either whatever which won't let you get results as fast |
| 14:56 | tolstoy | newFixedThreadPool |
| 14:57 | ibdknox | cemerick, have you ever used the webview? I'm curious how you interop |
| 14:58 | Raynes | tensorpudding: I wrote a purty swing app once. |
| 14:58 | dbushenko | Raynes, btw, that's what I'm doing right now: a swing app :-) |
| 14:58 | Raynes | https://github.com/Raynes/tallyho |
| 14:58 | Raynes | It actually didn't look terrible. |
| 14:59 | cemerick | ibdknox: sure. Run jetty, have the web view connect to the auto-negotitated port, and you're good to go. IIRC, I didn't do anything fancy for interop aside from having a particular handler that would open up a file browser and such. |
| 14:59 | drguildo | how do i add a jar file to the clojure classpath? |
| 14:59 | ibdknox | aw |
| 14:59 | tensorpudding | there's no way that a swing app could look pretty |
| 14:59 | brehaut | drguildo: use leiningen |
| 14:59 | dbushenko | drguildo, just copy it to your libs/ directory |
| 14:59 | cemerick | SWT allows you to install additional protocol handlers, so you could do clj://(+ 1 2) to do evaluation or something. |
| 14:59 | Raynes | tensorpudding: They're really only as ugly as the look and feel. |
| 14:59 | fdaoud | Raynes: no screen shots? |
| 14:59 | dbushenko | if u are using leiningen |
| 14:59 | ibdknox | cemerick, so I'm still going to have to write a noir app to drive it |
| 14:59 | Raynes | fdaoud: I'm looking for it. |
| 14:59 | ibdknox | cemerick, oooh cool |
| 14:59 | drguildo | i'm not using leiningen |
| 14:59 | tensorpudding | okay |
| 14:59 | drguildo | i want to mess with the classes in the repl |
| 14:59 | cemerick | ibdknox: that's speculative, never bothered with it. |
| 14:59 | tensorpudding | so it's the look&feel that's ugly |
| 15:00 | drguildo | i tried -cp but it doesn't work |
| 15:00 | cemerick | But yeah, it's a ring app in the background in any case. |
| 15:00 | cemerick | I *think* my thick client days are over though. |
| 15:00 | dbushenko | drguildo, but that's the way it should work |
| 15:00 | cemerick | Can't imagine needing to build one again. |
| 15:00 | dbushenko | drguildo, a year ago I did that manually |
| 15:00 | ibdknox | cemerick, well for a dev env... |
| 15:01 | cemerick | ah |
| 15:01 | Raynes | fdaoud: http://raynes.me/hfiles/tallyho1.png The menubar was removed right after that was taken when daveray pointed out that I could throw a native! call in and it would put the menubar where it's supposed to go on OS X. |
| 15:01 | drguildo | i think i know what i might be doing wrong |
| 15:01 | fdaoud | tensorpudding: also, on linux, swing fonts are ugly no matter what the look and feel |
| 15:01 | tensorpudding | didn't think about fonts |
| 15:02 | ibdknox | cemerick, otherwise, I pretty much agree.. that's why I focused on Noir first :) And soon Pinot again |
| 15:02 | cemerick | ibdknox: Ironically, you may end up finding that using Eclipse RCP will be the best prototyping sandbox for your purposes. SWT + executable and packaging settled for all platforms, reasonable utilities, etc. |
| 15:02 | drguildo | yeah, it was my fault |
| 15:02 | cemerick | (that is, the RCP, *not* the IDE) |
| 15:02 | drguildo | i was running it from some batch file i'd created |
| 15:03 | ibdknox | cemerick, yeah, I'll have to look at what the editor in eclipse can support |
| 15:03 | fdaoud | Raynes: no offense, but when you said "purty", I was expecting..something..a little more..elaborate.. |
| 15:03 | drguildo | so i just called java directly and added the jar to the -cp as well as the clojure jar |
| 15:03 | Raynes | fdaoud: I never complained it wasn't simplistic. ;) |
| 15:03 | Raynes | Er... |
| 15:04 | Raynes | I never claimed. |
| 15:04 | drguildo | goodbye computer friends |
| 15:05 | ibdknox | cemerick, do you know if it will support drawing non-text objects? |
| 15:05 | danlarkin | you're too young for coffee! |
| 15:06 | fdaoud | Raynes: fair enough :) |
| 15:06 | danlarkin | it'll stunt your growth |
| 15:06 | ibdknox | cemerick, the code editor that is |
| 15:06 | Raynes | danlarkin: Man. This Conj stuff. I haven't slept longer than 5 hours in like 3 weeks. That's what I'm too young for. |
| 15:06 | cemerick | ibdknox: I don't know yet. That's of prime interest to me given my desire to provide the option to get e.g. images from REPL evaluations displayed inline. |
| 15:07 | ibdknox | cemerick, indeed. |
| 15:07 | Raynes | Too young for so many responsibilities that I have to sacrifice sleep in favor of them. |
| 15:07 | danlarkin | Raynes: staying up is a young man's game |
| 15:07 | fdaoud | s/3 weeks/4.5 years/ |
| 15:07 | cemerick | I almost always want them outside of the IDE, but it's too obvious of a desire elsewhere. |
| 15:07 | fdaoud | s/Conj stuff/having kids stuff/ |
| 15:08 | Raynes | I like to pretend that I have more to do than everybody else. |
| 15:08 | ibdknox | cemerick, I'd want them in, just because I rarely need to do anything fancy with them, I just want to see it real quick |
| 15:08 | Raynes | It makes me feel better about whining about it |
| 15:08 | fdaoud | don't you have a book to write? |
| 15:08 | fdaoud | ;) |
| 15:08 | Raynes | Yep. |
| 15:09 | cemerick | ibdknox: stuff that's 5000px wide isn't friendly in a REPL interaction panel. ;-) |
| 15:09 | fdaoud | so more ammo for you to say you've got more to do than the next guy. |
| 15:09 | ibdknox | cemerick, fiiiiine, I make simple 500px things ;) |
| 15:09 | cemerick | :-P |
| 15:09 | brehaut | cemerick: you need a bigger repl panel :P |
| 15:10 | cemerick | brehaut: was looking at the new thunderbolt LCDs the other day. It just might happen. |
| 15:10 | brehaut | cemerick: awesome :) i need to get one of the non-thunderbolt LCDs before they disappear |
| 15:11 | fdaoud | brehaut: thanks for the articles you posted on your blog. I particularly appreciated the clojure web stack one. |
| 15:11 | brehaut | fdaoud: thanks :) |
| 15:12 | brehaut | fdaoud: it needs to be updated for ring 1.0.0 and clj 1.3 |
| 15:12 | ibdknox | and Noir ;) |
| 15:12 | brehaut | ibdknox: fine |
| 15:12 | brehaut | whats another thousand words |
| 15:12 | ibdknox | lol |
| 15:13 | fdaoud | brehaut: I didn't know ring had a 1.0 release |
| 15:13 | ibdknox | it nearly does |
| 15:13 | brehaut | fdaoud: it doesnt yet; its got 1.0.0RC1 out |
| 15:13 | ibdknox | I think it's still RC |
| 15:13 | TimMc | licenser: Bah, with enough mouse jockeys in India, you can have effective scriptability. :-P |
| 15:13 | licenser | TimMc: teehee |
| 15:14 | licenser | then again they might miscopy and paste, they are sloppy like that |
| 15:14 | fdaoud | ok so I'm not behind in the news |
| 15:14 | fdaoud | ibdknox: is using hiccup required with noir? |
| 15:14 | ibdknox | fdaoud, not at all |
| 15:14 | licenser | any in canter users around? |
| 15:14 | fdaoud | writing html in clojure code just is not for me. |
| 15:14 | brehaut | fdaoud: you can use enlive with noir |
| 15:15 | ibdknox | you can use anything |
| 15:15 | brehaut | ibdknox: but why would you when there is enlive ;) |
| 15:15 | TimMc | s/India/Georgia/ apparently these days |
| 15:15 | licenser | you can use indian mouse jokes that copy and paste your html from frontpage express |
| 15:15 | ibdknox | lol |
| 15:15 | ibdknox | brehaut, I want to make enlive simpler |
| 15:16 | brehaut | ibdknox: i want to remove deftemplate and create a wrap-enlive-render middleware |
| 15:16 | fdaoud | I don't want to use enlive either |
| 15:16 | ibdknox | fdaoud, you can use anything that generates a string |
| 15:17 | fdaoud | I just want to respond in json. ibdknox: I'm sure that's not a problem with noir, right? |
| 15:17 | brehaut | ibdknox: or seq of strings? |
| 15:17 | ibdknox | fdaoud, yeah, no problem (noir.response/json) will even do the work for you |
| 15:17 | arohner | is there a clojure fn for (.isBound (var foo))? |
| 15:17 | fdaoud | ibdknox: great, thanks! |
| 15:18 | tensorpudding | i felt pretty proud of myself when i finally "got" enlive |
| 15:19 | gfredericks | $findfn (var +) true |
| 15:19 | lazybot | [clojure.core/== clojure.core/distinct? clojure.core/boolean clojure.core/var? clojure.core/< clojure.core/= clojure.core/> clojure.core/>= clojure.core/<= clojure.core/bound? clojure.core/ifn?] |
| 15:20 | gfredericks | arohner: clojure.core/bound? looks like a good candidate |
| 15:20 | ibdknox | I don't understand what findfn is doing there? |
| 15:20 | gfredericks | ibdknox: it passes (var +) to a bunch of functions and reports the ones that return true |
| 15:20 | ibdknox | that's awesome |
| 15:20 | gfredericks | ibdknox: yes. |
| 15:21 | Raynes | ibdknox: You tell it what the input will be and what the output should be and it tries every single function until it gets the output you want. |
| 15:21 | arohner | is that in a library anywhere? |
| 15:21 | Raynes | arohner: findfn? No, but I'm moving it to one. Already working on it. |
| 15:21 | gfredericks | it all runs on a VM in Raynes's head |
| 15:21 | Raynes | Unfortunately, amalloy sucks at writing code, so it's a little more difficult than I originally thought. |
| 15:21 | ibdknox | is that a bot only thing? |
| 15:22 | Raynes | But it'll happen. |
| 15:22 | ibdknox | whoops |
| 15:22 | ibdknox | answered |
| 15:22 | ibdknox | Raynes, I want that :D |
| 15:22 | ibdknox | let me know when it's in a lib |
| 15:22 | gfredericks | $findfn 3 6 |
| 15:22 | lazybot | [] |
| 15:22 | Raynes | Kay |
| 15:22 | Raynes | $findfn 3 3 6 |
| 15:22 | lazybot | [clojure.core/+ clojure.core/unchecked-add clojure.core/+' clojure.core/unchecked-add-int] |
| 15:23 | TimMc | Raynes: Let me guess, it is written entirely in juxts? |
| 15:23 | Raynes | Totally. |
| 15:23 | TimMc | $findfn 1 |
| 15:23 | lazybot | [clojure.core/* clojure.core/*'] |
| 15:23 | brehaut | TimMc: im sure theres a handful of to-fix in there too |
| 15:23 | TimMc | hmm |
| 15:23 | gfredericks | $findfn 2 |
| 15:23 | TimMc | $findfn 1 |
| 15:23 | lazybot | [] |
| 15:23 | lazybot | [clojure.core/* clojure.core/*'] |
| 15:23 | TimMc | $findfn 0 |
| 15:23 | lazybot | [clojure.core/+ clojure.core/+' clojure.core/release-pending-sends] |
| 15:23 | ibdknox | lol |
| 15:23 | TimMc | $findfn "" |
| 15:23 | lazybot | [clojure.core/with-out-str clojure.core/print-str clojure.core/pr-str clojure.core/str] |
| 15:24 | gfredericks | $findfn false |
| 15:24 | lazybot | [] |
| 15:24 | gfredericks | $findfn true |
| 15:24 | lazybot | [clojure.core/thread-bound? clojure.core/bound? clojure.core/and] |
| 15:24 | TimMc | aw |
| 15:24 | gfredericks | ,(or) |
| 15:24 | clojurebot | nil |
| 15:24 | gfredericks | ah |
| 15:24 | TimMc | aha |
| 15:24 | TimMc | OK, one more. |
| 15:24 | gfredericks | $findfn nil |
| 15:24 | lazybot | [clojure.core/dosync clojure.core/import clojure.core/prn clojure.core/refer-clojure clojure.core/print clojure.core/with-loading-context clojure.core/newline clojure.core/comment clojure.core/or clojure.core/load clojure.core/shutdown-agents clojure.core/await clo... https://gist.github.com/1349043 |
| 15:24 | TimMc | there we go |
| 15:24 | gfredericks | Raynes: thanks for letting us come over and play with your toys |
| 15:24 | Raynes | :p |
| 15:42 | jcromartie | OT: does anybody here use Adium for IRC? |
| 15:43 | amalloy | brehaut: findfn predates my induction into the cult of Useful |
| 15:44 | amalloy | so no to-fix |
| 15:44 | brehaut | so purely juxt then |
| 15:44 | amalloy | &(nth #(iterate juxt identity) 1000) ;; this is the whole source |
| 15:44 | lazybot | java.lang.UnsupportedOperationException: nth not supported on this type: sandbox6471$eval11065$fn__11066 |
| 15:44 | amalloy | &(nth (iterate juxt identity) 1000) |
| 15:44 | lazybot | ⇒ #<core$juxt$fn__3775 clojure.core$juxt$fn__3775@bbe161> |
| 15:45 | brehaut | lol |
| 15:45 | brehaut | &((nth (iterate juxt identity) 1000) 1) |
| 15:45 | lazybot | java.lang.StackOverflowError |
| 15:45 | di-csuehs | jcromartie: yes. |
| 15:45 | brehaut | lazybot has a small stack |
| 15:46 | brehaut | &((nth (iterate juxt identity) 10) 1) |
| 15:46 | lazybot | ⇒ [[[[[[[[[[1]]]]]]]]]] |
| 15:46 | amalloy | $findarg map % [1 2 3] [2 3 4] |
| 15:46 | lazybot | [clojure.core/unchecked-inc-int clojure.core/unchecked-inc clojure.core/inc clojure.core/inc'] |
| 15:48 | jcromartie | what sorcery is this!? |
| 15:48 | jcromartie | reminds me of Smalltalk's method finder |
| 15:50 | TimMc | amalloy: findarg! That's what I was asking you about a while ago. |
| 15:51 | amalloy | TimMc: well, it exists but i always forget the syntax and/or that it exists |
| 15:51 | amalloy | so now you know |
| 15:52 | amalloy | jcromartie: i wrote it when i heard someone bragging about the smalltalk method finder |
| 15:52 | jcromartie | amalloy: nice |
| 15:52 | jcromartie | amalloy: source? |
| 15:52 | fdaoud | ibdknox: quick yes/no question, does noir have anything to facilitate i18n? |
| 15:53 | ibdknox | fdaoud, not explicitly. seancorfield has post about how he handled it though |
| 15:53 | ibdknox | a post* |
| 15:53 | amalloy | jcromartie: don't judge too harshly. i wrote it only like four months into learning clojure |
| 15:53 | ibdknox | fdaoud, http://corfield.org/blog/post.cfm/real-world-clojure-i18n-resources |
| 15:53 | amalloy | and it's kinda tangled up with the rest of lazybot's clojure plugin (Raynes is working on factoring it out, i think): https://github.com/flatland/lazybot/blob/develop/src/lazybot/plugins/clojure.clj#L147 |
| 15:53 | Raynes | I'll have it pushed to Github and released in like 15 minutes. |
| 15:54 | amalloy | nice |
| 15:54 | fdaoud | ibdknox: thanks! |
| 15:54 | jcromartie | amalloy: I'll be gentle |
| 15:59 | Raynes | ibdknox, TimMc, amalloy, etc: https://github.com/Raynes/findfn |
| 16:00 | TimMc | sweeeeet |
| 16:00 | TimMc | gonna add that to my REPL's default bindings |
| 16:00 | Raynes | I've used a couple of 1.3-only things, fyi. |
| 16:01 | Raynes | Like the new inline def docstrings and ^:dynamic. |
| 16:11 | arohner | what was the name of the library that's all about retrying functions? |
| 16:11 | arohner | named after a person, I think |
| 16:11 | Raynes | walton? |
| 16:11 | scgilardi | robert bruce |
| 16:12 | arohner | scgilardi: thanks |
| 16:12 | gfredericks | what're "inline def docstrings"? |
| 16:13 | Raynes | (def foo "I like bar" 0) |
| 16:13 | gfredericks | well it's about time. |
| 16:13 | Raynes | ;) |
| 16:14 | gfredericks | #^{:doc "why did I have to type four punctuation marks in a row to wah wah wah"} |
| 16:14 | gfredericks | and so instead I leave my defs undocumented :) |
| 16:16 | gabemc | Hey, question about java interop: I have the libvirt jar bindings for java, |
| 16:16 | gabemc | but when I try to import one of the main classes via (import '(org.libvirt Connect)), I get a class not found exception. |
| 16:16 | fdaoud | ok here's a dumbass question: where is clojure 1.3.0 for maven? http://build.clojure.org/releases/org/clojure/clojure/ only has 1.3.0-alpha4 |
| 16:17 | Raynes | fdaoud: http://search.maven.org/#search%7Cga%7C1%7Cclojure |
| 16:17 | gabemc | fdaoud: It's on apache's main repo site. |
| 16:17 | fdaoud | ohh, geez |
| 16:17 | fdaoud | sorry |
| 16:18 | Raynes | fdaoud: I hope it didn't seem condescending to point you at a search page. |
| 16:18 | gabemc | fdaoud: I actually just had the same question myself, not 20 minutes ago. I just knew where to look first. |
| 16:18 | Raynes | I just didn't feel like clicking the top search result and linking you to that instead. |
| 16:19 | fdaoud | so if I was using org.clojure/clojure-contrib/1.2.0 before, now it should be..? |
| 16:19 | gabemc | Does anybody know why the URLClassLoader wouldn't load a particular java class from clojure? |
| 16:19 | brehaut | fdaoud: http://dev.clojure.org/display/design/Where+Did+Clojure.Contrib+Go |
| 16:19 | fdaoud | Raynes: not at all, I'm just grateful for people offering to help |
| 16:19 | gabemc | It does have JNI bindings inside the class, if that matters (never done JNI before, so I don't know). |
| 16:20 | Raynes | fdaoud: clojure 1.3.0 and whatever specific libraries you need from contrib that are still around (but migrated to their own libraries individually, per the link above). |
| 16:20 | fdaoud | gabemc: thanks |
| 16:20 | fdaoud | Raynes, brehaut: thank you, much appreciated |
| 16:21 | Raynes | No problem. We get off on your happiness. |
| 16:21 | fdaoud | awesome, makes me want to pay it forward. |
| 16:22 | brehaut | fdaoud: tangentally related: http://mostlylazy.com/2011/11/08/episode-0-0-1-sean-corfield-clojure-contrib-and-real-world-clojure/ |
| 16:22 | duck1123 | quick, run up to a stranger and tell them where they can find the 1.3.0 release of clojure |
| 16:23 | fdaoud | brehaut: good stuff |
| 16:24 | fdaoud | duck1123: I would but I'm still stuck on trying to convince strangers (ok friends) to even try clojure |
| 16:24 | brehaut | fdaoud: they are pretty strange if they dont want to try clojure |
| 16:24 | fdaoud | not easy when they just can't seem to get past the !@&*?! parens thing |
| 16:25 | duck1123 | fdaoud: if they won't learn clojure for you, then they're not real friends |
| 16:25 | Raynes | Did somebody say… TRY CLOJURE!?!?!?! http://tryclj.com |
| 16:25 | jkkramer | ]\ |
| 16:25 | jkkramer | ] |
| 16:25 | brehaut | fdaoud: the parens are one lexeme to the left! the world is ending! |
| 16:25 | jkkramer | sorry, cat |
| 16:25 | fdaoud | there was the inversion of the sequence of function calls, but that got resolved with -> and ->> |
| 16:25 | fdaoud | so there is some hope |
| 16:27 | brehaut | fdaoud: it takes time, no need to rush them |
| 16:28 | fdaoud | brehaut: yeah. they're just not as excited about fp as I am. |
| 16:29 | gfredericks | Raynes: yes, somebody did. |
| 16:30 | brehaut | fdaoud: then dont go at the FP angle ;) |
| 16:31 | brehaut | fdaoud: what about clojures more flexible approach to objects and polymorphism? |
| 16:31 | amalloy | brehaut: c'mon, like three lexemes |
| 16:31 | amalloy | foo . bar ( vs ( .bar foo |
| 16:32 | brehaut | amalloy: fine. if they are die in the wool java programemrs |
| 16:32 | arohner | what's the best way to figure out why a clojure process isn't exiting? |
| 16:32 | amalloy | heh. die in the wool. i can just see someone suffocating, covered with sheep |
| 16:33 | brehaut | amalloy: the dangers of keggers in shearing season |
| 16:33 | amalloy | arohner: kill -9. you won't find out anything valuable, but you'll have vengeance |
| 16:33 | arohner | amalloy: :-) |
| 16:33 | gfredericks | fdaoud: I'm personally a fan of the data structures and seq abstraction |
| 16:33 | manutter | arohner: hmm, profiler? If you let it sit and spin for a while, I'd think there'd be a noticeable spike wherever it's getting stuck. |
| 16:34 | jkkramer | arohner: tried (shutdown-agents)? |
| 16:34 | jkkramer | assuming you're using agents or futures |
| 16:34 | manutter | well, try shutdown-agents first, of course :) |
| 16:34 | manutter | then the profiler |
| 16:34 | amalloy | yeah, it's probably the agents |
| 16:35 | brehaut | secret agents skulking in the background |
| 16:35 | arohner | I have the profiler running, but what should I be looking for? live, non-daemon threads? |
| 16:35 | fdaoud | brehaut: true, but you know, when they can't get past the parens thing.. I don't insist |
| 16:35 | fdaoud | gfredericks: +1 |
| 16:35 | duck1123 | I'm getting an odd error trying to use langohr. https://gist.github.com/1349315 anyone know what's going on here? |
| 16:36 | brehaut | fdaoud: if they dont have a reason to want to get past them, they likely never will |
| 16:36 | manutter | arohner: I'm just thinking that if you've got something stuck in a loop, the longer you let it hang, the more time it will spend being stuck |
| 16:36 | manutter | so look for code that gets a bigger chunk of the profile the longer you leave it hung up. |
| 16:36 | arohner | manutter: my cpu usage is essentially 0% |
| 16:37 | callen | technomancy: http://www.readwriteweb.com/hack/2011/11/groveio-hosted-searchable-irc.php mother. fuck. |
| 16:37 | duck1123 | calling .getBody outside of the defn works, but not inside |
| 16:37 | amalloy | manutter: seems like blocking is more common than spinning |
| 16:37 | manutter | hrm, well, I'm not a guru debugger, maybe my idea is just not helpful |
| 16:37 | fdaoud | brehaut: probably. after a while I just stop trying. I don't have anything to gain anyway, it's just the urge to share the joy. |
| 16:37 | brehaut | fdaoud: totally familiar with that :) |
| 16:37 | manutter | if the profiler isn't helping then try something else |
| 16:38 | jcromartie | fdaoud: I have a friend who resents it when I post clojure code at him, just because it's clojure |
| 16:39 | fdaoud | gfredericks: along the same lines, I am happy about not having dumb model objects or a !?>#*! orm to mirror every last table in the database. |
| 16:39 | fdaoud | jcromartie: yikes. why the hate? |
| 16:39 | gabemc | so, no thoughts on the loader issue? |
| 16:40 | jcromartie | fdaoud: dunno, he thinks I'm evangelizing when it's really just what I'm writing code in. but I have tried to sell him on persistent data types, concurrency, etc. |
| 16:41 | fdaoud | jcromartie: sounds like he reached the point where you say clojure and he just plugs his ears and says "la la la la la" |
| 16:42 | fdaoud | (like me with scala) |
| 16:43 | jcromartie | fdaoud: hah, I guess so |
| 16:46 | technomancy | callen: huh; interesting |
| 16:46 | technomancy | callen: I was kinda surprised nobody offered that as a hosted service |
| 16:47 | jhixton | clojure noob here.. is there a better way to do this? https://gist.github.com/1349340 |
| 16:49 | amalloy | jhixton: that looks reasonable |
| 16:49 | amalloy | i hate the names args and args-, though |
| 16:49 | gfredericks | fdaoud: yeah I definitely don't miss all the background-oop-magic that the rubyists are fond of. |
| 16:49 | amalloy | something like names and values would be clearer |
| 16:49 | technomancy_ | ,((partial zipmap :thread :posts) [1 2]) |
| 16:50 | clojurebot | #<ArityException clojure.lang.ArityException: Wrong number of args (3) passed to: core$zipmap> |
| 16:50 | technomancy_ | ,((partial zipmap [:thread :posts]) [1 2]) |
| 16:50 | clojurebot | {:posts 2, :thread 1} |
| 16:50 | jhixton | cool |
| 16:50 | technomancy_ | works too |
| 16:50 | jhixton | amalloy: good point on the names |
| 16:50 | tensorpudding | hooray for partial functions |
| 16:50 | amalloy | &((comp (partial zipmap [:thread :posts]) list) 1 2) |
| 16:50 | lazybot | ⇒ {:posts 2, :thread 1} |
| 16:51 | fdaoud | gfredericks: like Uncle Bob said re Rich Hickey's talk: "Rails is easy, it is not simple." |
| 16:51 | gfredericks | indeed |
| 16:58 | fdaoud | later all, thanks for being such an awesome community |
| 17:00 | gfredericks | (inc us) |
| 17:00 | ibdknox | lol |
| 17:00 | gfredericks | dangit lazybot |
| 17:01 | brehaut | gfredericks: i think its confused because 'us' isn't a known symbol; perhaps you should try a keyword if you are jsut going to make stuff up |
| 17:01 | gfredericks | brehaut: it's always let you make stuff up |
| 17:02 | goodieboy | i'm having a hard time getting noir to run in tomcat |
| 17:02 | ibdknox | goodieboy, include your views explicitly at the top of server.clj |
| 17:02 | goodieboy | i cloned this project (https://github.com/rathwell/noir-tomcat-test), created the uberwar, put the warfile in tomcat's webapps dir... and get this: |
| 17:02 | goodieboy | ibdknox: ok let me check on that... |
| 17:02 | callen | technomancy: it'll be paid and proprietary |
| 17:02 | callen | technomancy: should I eat their lunch? |
| 17:03 | callen | technomancy: I could make a fully integrated service that did what they purport to offer. |
| 17:03 | technomancy | callen: dooooo iiiiit =) |
| 17:03 | callen | technomancy: trivially. |
| 17:03 | technomancy | callen: did you see the hubot installer? |
| 17:03 | goodieboy | ibdknox: here's the error: java.io.FileNotFoundException: /var/lib/tomcat6/webapps/tomcat-test-0.1.0-SNAPSHOT-standalone/WEB-INF/classes/public (Is a directory) |
| 17:03 | ibdknox | goodieboy, that happens when there are no routes defined |
| 17:03 | callen | technomancy: I've been poking around hubot's source, not specifically familiar with what you're talking about though. |
| 17:03 | goodieboy | hmm |
| 17:03 | ibdknox | goodieboy, war's are much more complicated than jars |
| 17:04 | ibdknox | goodieboy, at the top just do (:require [my.view.ns1] [my.view.ns2]) |
| 17:04 | ibdknox | goodieboy, and it'll be good to go |
| 17:04 | goodieboy | ibdknox: ok i'll try that |
| 17:04 | callen | technomancy: I'll be honest, I don't like it when people try so hard to "profit" off of what is scarcely a service. |
| 17:04 | clojurebot | Ok. |
| 17:04 | callen | technomancy: and likely doing so by reusing a piped chain of OSS |
| 17:04 | ibdknox | why? |
| 17:04 | clojurebot | http://clojure.org/rationale |
| 17:04 | callen | technomancy: it's most UI :\ |
| 17:05 | technomancy | callen: there's a site where you can click a couple buttons and it'll install hubot on a free heroku dyno |
| 17:05 | ibdknox | I think you dramatically underestimate the difficulty of running a business |
| 17:05 | callen | ibdknox: I work for a startup, try me. |
| 17:05 | ibdknox | lol |
| 17:05 | callen | ibdknox: climbing Mt. Everest is hard, but it doesn't feed anybody. |
| 17:05 | callen | ibdknox: difficulty doesn't define utility. Don't conflate the two. |
| 17:05 | technomancy | not sure why I can't find the link now |
| 17:05 | ibdknox | callen, when did I ever say it did? |
| 17:06 | callen | technomancy: http://visuallounge.techsmith.com/2011/11/dev_corner_-_installing_hubot.html |
| 17:06 | callen | ibdknox: that was the implication. Why would I care otherwise how difficult it is to run a business after what I expressed? |
| 17:06 | ibdknox | callen, you said you could replicate their company trivially |
| 17:06 | ibdknox | callen, you're a designer then? |
| 17:06 | technomancy | callen: no, there's a site where it's all "what would you like to call it, and what's account info" and bam; push-button bot service |
| 17:07 | callen | technomancy: that's pretty impressive. |
| 17:09 | callen | ibdknox: the problem I have, is that they're going to charge for it as if it's some sort of novel business collab application |
| 17:09 | callen | ibdknox: when the only value they've introduced is made a new web IRC client. |
| 17:09 | ibdknox | callen, they're going to charge for it because they did work. |
| 17:09 | technomancy | https://hubot-factory.herokuapp.com/ |
| 17:09 | callen | ibdknox: hosting an ircd has been a commodity service for decades. |
| 17:10 | ibdknox | callen, there's absolutely nothing wrong with that. |
| 17:10 | callen | ibdknox: I repeat, difficulty doesn't translate to utility. |
| 17:10 | ibdknox | ? |
| 17:10 | callen | ibdknox: some people would rather praise every daisy as if it were unique and special. I'd rather cull the useless. |
| 17:10 | ibdknox | callen, repeating a statement that is not related to our current argument is not actually a valid debate tactic. |
| 17:10 | callen | it's pertinent to what you said. |
| 17:11 | callen | your inability to recognize it as such has no bearing on that. |
| 17:11 | ibdknox | rofl |
| 17:11 | callen | labor doesn't mean value. |
| 17:11 | ibdknox | callen, alright man. |
| 17:11 | callen | do you comprehend that? |
| 17:11 | callen | that was the core fault of marxism. |
| 17:11 | technomancy | ~gentlemen |
| 17:11 | clojurebot | You can't fight in here. This is the war room. |
| 17:11 | ibdknox | you're a genius. I'll leave you be. :) |
| 17:11 | cemerick | How did we get on the topic of Marxism? :-P |
| 17:11 | technomancy | I don't think I've gotten a chance to use that one here yet |
| 17:11 | technomancy | ~botsnack |
| 17:11 | clojurebot | thanks; that was delicious. (nom nom nom) |
| 17:11 | ibdknox | cemerick, I'd love to know myself. |
| 17:12 | callen | it shares a fallacy that he was expressing. |
| 17:13 | ibdknox | callen, The only statement I made is that replicating their work is non-trivial, because you underestimated the fact that creating a business of any kind if significant work. |
| 17:13 | ibdknox | callen, you argued an entirely different point |
| 17:13 | ibdknox | this reminds me very much of the NS fiasco the other night. |
| 17:13 | callen | I don't care about the business side |
| 17:13 | callen | I care about product. |
| 17:14 | callen | I don't want to replicate their sales funnel or CRM database or their support infrastructure |
| 17:14 | callen | I want to make them irrelevant and unnecessary to people that know what they're doing./ |
| 17:14 | callen | there's a very simple, easy to understand distinction that I just made |
| 17:14 | callen | if that's too hard grasp, I don't think textual forms of communication are your cup of tea. |
| 17:14 | cemerick | ibdknox: There's a fiasco every night these days. :-/ |
| 17:15 | ibdknox | callen, woah now. |
| 17:15 | callen | ibdknox: in future, if you don't have anything positive to say, don't speak to them. |
| 17:15 | ibdknox | wow |
| 17:15 | callen | ibdknox: I wasn't talking to you originally. |
| 17:15 | brehaut | there was a fiasco about namespaces? |
| 17:15 | ibdknox | you're talking in IRC dude |
| 17:15 | callen | ibdknox: then don't expect me not to react. |
| 17:15 | ibdknox | ... |
| 17:15 | ibdknox | jesus christ man |
| 17:15 | seancorfield | too many negatives :) |
| 17:16 | ibdknox | I'm sorry I hurt your feelings. |
| 17:16 | ibdknox | I'll try to be nicer next time. |
| 17:16 | callen | it's not about feelings, I just find people being intentionally obtuse frustrating. |
| 17:16 | ibdknox | you just completely belittled someone else's work |
| 17:16 | callen | you can't serious suggest you didn't understand the concept of "difficulty/effort != utility", right? |
| 17:16 | ibdknox | ... |
| 17:16 | ibdknox | haha |
| 17:16 | ibdknox | ok |
| 17:16 | cemerick | I've always preferred being acute, myself. |
| 17:16 | ibdknox | I'm done :) |
| 17:17 | callen | I don't care how difficult it was for them to make. |
| 17:17 | ibdknox | I apologize to the rest of the channel for this nonsense |
| 17:17 | callen | I'm slicing off one aspect of the utility they're providing it and reimplementing that. |
| 17:17 | Raynes | gfredericks: I wouldn't bother. |
| 17:17 | Raynes | It isn't a very interesting argument. |
| 17:17 | ibdknox | gfredericks, it really isn't |
| 17:17 | callen | not at all. |
| 17:18 | gfredericks | aw, but it looks like conflict! |
| 17:18 | gfredericks | okay. I'll try to stay positive... |
| 17:18 | ibdknox | hahaha |
| 17:18 | aperiodic | it's not even really a flameway |
| 17:18 | aperiodic | s/flameway/flamewar/ |
| 17:19 | technomancy | Raynes: so the problem with spawn is really about getting a full listing of known genomes? |
| 17:19 | technomancy | not about figuring out the content of any specific genome? |
| 17:19 | gfredericks | man why svn gotta be so slow. |
| 17:20 | amalloy | gfredericks: git-svn, commendations for everyone? |
| 17:20 | gfredericks | amalloy: I don't trust eclipse to know what's going on |
| 17:20 | gfredericks | amalloy: and I'm not sure git-svn is any faster for the checkout-update stuff |
| 17:21 | amalloy | "I don't trust eclipse to know what's going on" - popular sentiment |
| 17:21 | gfredericks | amalloy: I also don't trust eclipse to tell me when it can't figure something out :) |
| 17:23 | Raynes | technomancy: Yes, everything else works fine right now. |
| 17:23 | technomancy | gotcha. yeah, I had to reimplement that for lein help; it was kind of a pain |
| 17:24 | Raynes | It's just listing all of the genomes that is the problem because they can be spread out in a number of jars/not in jars, etc. |
| 17:24 | technomancy | can't you delegate that to the build tool though? does it need to be part of spawn itself? |
| 17:24 | Raynes | I'd like it to be in spawn itself, because it'd mean duplicating code in every build tool that uses it. |
| 17:24 | Raynes | Plus, spawn can be a standalone tool without any build tool intervention. |
| 17:25 | Raynes | Like marginalia and the like. |
| 17:25 | technomancy | oh, didn't realize that |
| 17:25 | technomancy | does tools.namespace still have that annoying warn-on-reflection bug? |
| 17:25 | Raynes | I haven't seen them spew. |
| 17:27 | amalloy | technomancy: so it looks like lein supports some kind of :debug option in project.clj, but i don't immediately see what it does or what its value is supposed to be |
| 17:27 | technomancy | amalloy: stuarthalloway asked me to add it |
| 17:28 | technomancy | he said the compiler may look for that system property at some point |
| 17:28 | amalloy | so you take it and set it as a system property or something? |
| 17:29 | technomancy | yup |
| 17:29 | amalloy | cake recently added a :debug flag (true/false), and i'm findnig that lein blows up if it sees that |
| 17:29 | amalloy | which is reasonable, and i think i argued for cake using a less-global-sounding flag |
| 17:29 | technomancy | o_O |
| 17:31 | amalloy | but whatever value i give for :debug, lein swank fails with https://gist.github.com/1349493 |
| 17:31 | amalloy | and lein repl times out on connecting to the socket, presumably because creating the socket failed with a similar error |
| 17:32 | technomancy | oh bugger, it's looking for a string |
| 17:32 | technomancy | thanks for the heads up |
| 17:33 | amalloy | technomancy: incorrect. even with a string i get the same error |
| 17:33 | TimMc | callen: I think they're selling a *pretty* web interface, as well as support. |
| 17:33 | amalloy | it's not the true in :debug true that fails; it's some other boolean |
| 17:33 | technomancy | amalloy: right, I mean the property-setting function is expecting a string, and get-jvm-args is forcing it to a boolean |
| 17:33 | ibdknox | TimMc, oh god... why?? why would you do that? |
| 17:34 | callen | TimMc: quite right. |
| 17:34 | ibdknox | .... |
| 17:34 | amalloy | k |
| 17:34 | ibdknox | hahahaha |
| 17:34 | callen | TimMc: I'm cherry picking the database access, API, indexing, essential non-necessity of an IRC client per se while maintaining compatibility with the multitude of IRC bots out there, etc. |
| 17:34 | technomancy | nice to catch that kind of thing before people actually start using it =) |
| 17:34 | callen | TimMc: I started with an IRC bouncer that had a database API, it is growing. |
| 17:35 | technomancy | isn't most of what you're paying for with a hosted service like that just someone to blame when it goes down? |
| 17:35 | callen | well, I'm starting with the bouncer. |
| 17:35 | callen | and trying to keep it modular. |
| 17:35 | TimMc | technomancy: Yup. |
| 17:35 | callen | technomancy: you can accomplish the same thing for less money |
| 17:35 | callen | technomancy: by making a re-deployable heroku application |
| 17:35 | TimMc | callen: Make sure to put in some drop-shadows, otherwise you are neglecting a core feature. :-P |
| 17:35 | callen | technomancy: let them blame heroku is if it breaks. |
| 17:36 | Raynes | callen: He works for Heroku. :p |
| 17:36 | callen | Raynes: why do you think I said that? |
| 17:36 | Raynes | I wasn't entirely sure you knew. |
| 17:36 | callen | TimMc: the web client would come last after the core functionality is there, but sure. Hypothetically my conceptualization of it would allow for your own ircd if you desired. |
| 17:36 | amalloy | technomancy: cool beans. in the mean time cake will use a different name so we can support this :debug thing |
| 17:37 | technomancy | amalloy: yeah, presumably you would want :debug to flip this property if it ever gets used. |
| 17:43 | technomancy | Raynes: is defgenome actually necessary? |
| 17:43 | technomancy | it looks like the kind of thing that should either be a defn or just a def map |
| 17:43 | Raynes | technomancy: Not at all. |
| 17:43 | callen | defuniverse |
| 17:43 | callen | [:deities] |
| 17:43 | Raynes | technomancy: We added it because it cut back on a bit of code duplication. It's just a wrapper around the other stuff. |
| 17:46 | technomancy | can't it just be reduced to a defn that calls build-filesystem? |
| 17:46 | technomancy | also, it's not really a filesystem. =\ |
| 17:46 | ibdknox | technomancy, I wanted to start over, but we tried to build into what was already there |
| 17:46 | ibdknox | technomancy, we left most of the names |
| 17:47 | technomancy | understandable |
| 17:47 | Raynes | technomancy: Keep in mind that I didn't write this. |
| 17:47 | Raynes | I just tried to make it usable. |
| 17:49 | technomancy | sure, it's not diplomatic to just rip everything out |
| 17:50 | amalloy | man, filesystem? i don't think i can ever use spawn, now |
| 17:51 | ibdknox | lol |
| 17:56 | aperiodic | technomancy: is there a reason why compilation happens before fetching deps when running `lein uberjar`? |
| 17:59 | aperiodic | technomancy: it'd be convenient if it were the other way around, since then i wouldn't have to run `lein deps` beforehand if there are changes in the dependencies that are needed to get the project to compile |
| 18:26 | technomancy | Raynes: so the main changes have been around using clostache instead of a custom templater? |
| 18:28 | technomancy | aperiodic: for me it always does deps before AOT, can you give a simple repro case? |
| 18:31 | callen | anyone here use a triple-monitor setup with Linux? I have one and I'm trying to put something together that is a little nicer. |
| 18:31 | callen | I ask here because the people here are smarter. :\ |
| 18:31 | technomancy | xmonad? |
| 18:31 | callen | ooh, good call. |
| 18:31 | callen | they're pretty dead though. |
| 18:32 | callen | at least whenever I check in. |
| 18:32 | technomancy | no, I meant to ask if that is what you're using |
| 18:32 | aperiodic | technomancy: will do this evening |
| 18:32 | callen | technomancy: yes. |
| 18:33 | callen | technomancy: the fact that I'm using xmonad isn't totally material to the GPU/driver related problems I'm having, but all the same. The nvidia driver on Ubuntu 11.10 appears to be totally boned for multi-monitor. |
| 18:35 | Raynes | technomancy: It was using stringtemplate before. I switched it over because I didn't want to clone and work on an hg repo to update the library to 1.3 |
| 18:36 | jweiss | is it possible for pr to operate on an object to print something (in my case, i've stored the original form in the meta, which i want to print), without actually evaluating it? i'm thinking a delay object |
| 18:39 | jweiss | bah, clojure.lang.Delay cannot be cast to clojure.lang.IObj |
| 18:45 | dmi3y | Hi, guys! I recently started learning Clojure. Can somebody help me to understand why my 'Hello World' program behaves weird? |
| 18:45 | brehaut | dmi3y: put your code up on a gist or similar |
| 18:45 | dmi3y | sure |
| 18:46 | dmi3y | http://pastebin.com/LBG36Ct6 |
| 18:46 | dmi3y | The question is, why the printed string contains space characters after it got trimmed? |
| 18:46 | amalloy | whenever someone asks for help with hello world, the answer is "you didn't mean to use ((foo" |
| 18:47 | amalloy | though it looks like not in this case |
| 18:47 | amalloy | $javadoc String trim |
| 18:47 | lazybot | http://download.oracle.com/javase/6/docs/api/java/lang/String.html#trim() |
| 18:48 | amalloy | &(.trim "\t\nfoo\t\n") |
| 18:48 | lazybot | ⇒ "foo" |
| 18:48 | brehaut | dmi3y: just to be pedantic, it contains _white_space characters, but no space characters (it contains new lines and tabs) |
| 18:49 | amalloy | dmi3y: if it's printing \n, that's because the text contains the two-character sequence \ followed by n, not the single newline character |
| 18:49 | amalloy | &(.trim "\\t\\nfoo\\t\\n") |
| 18:49 | lazybot | ⇒ "\\t\\nfoo\\t\\n" |
| 18:49 | amalloy | &(println (.trim "\\t\\nfoo\\t\\n")) |
| 18:49 | lazybot | ⇒ \t\nfoo\t\n nil |
| 18:49 | dmi3y | ah, ... I see now |
| 18:50 | dmi3y | not clear why it has doubled backslashes though |
| 18:50 | technomancy | callen: oh, gotcha. yeah I learned to stick with Intel graphics long ago |
| 18:50 | amalloy | dmi3y: that's not what's happening. it has a single backslash and an n |
| 18:51 | amalloy | to write that in a string literal you would have to type two backslashes, because \n is an escape meaning "replace this with a newline character", but input string has actual backslashes and ns, so what would happen in string literals is not relevant |
| 18:52 | dmi3y | ok, that's clear |
| 18:54 | dmi3y | according to javadoc for String the trim() method should return a copy of the string, with leading and trailing whitespace omitted. |
| 18:54 | callen | technomancy: intel graphics works great if you only want one or two monitorsd. |
| 18:54 | callen | technomancy: they don't have anything that supports three. |
| 18:54 | technomancy | callen: I actually use synergy for extra displays these days |
| 18:55 | callen | not...quite what I had in mind. |
| 18:55 | callen | xmonad handles the problem of expanding my workspace |
| 18:55 | callen | it's unified and quite nice |
| 18:55 | callen | I just want to have three "views" into that. |
| 19:01 | naeu | anyone in here at the Sheraton Raleigh Hotel tonight? |
| 19:01 | callen | naeu: yes but I'm busy stashing the body. |
| 19:02 | callen | naeu: I can catch you later for a drink if you want. |
| 19:02 | naeu | callen: do you plan on eating the body? |
| 19:02 | callen | naeu: only if I can find some worcestershire. |
| 19:02 | naeu | good luck with that |
| 19:02 | Raynes | A1. It's that important. |
| 19:03 | naeu | I might head out for some food in a bit |
| 19:03 | naeu | the #clojure_conj twitter stream seems earily quiet |
| 19:03 | callen | Raynes: hahahaha |
| 19:04 | Raynes | naeu: Give it a day or so. |
| 19:04 | alexbaranosky | naeu: I wish! |
| 19:04 | naeu | Raynes: naturally :-) |
| 19:04 | alexbaranosky | naeu: I'm leaving after work tomorrow night |
| 19:04 | naeu | perhaps it's a lull before the storm |
| 19:04 | naeu | but there must be a few stragglers about |
| 19:04 | alexbaranosky | flight's in around 8:33 roughly |
| 19:05 | naeu | alexbaranosky: nice - how many hours is your flight? |
| 19:05 | alexbaranosky | I saw Ambrose tweeting about looking for folks earlier today |
| 19:05 | alexbaranosky | maybe DM him on twitter? |
| 19:05 | alexbaranosky | flight is realy quick... like 1.5 hours or something |
| 19:05 | naeu | alexbaranosky: already one step ahead of you there :-) |
| 19:05 | alexbaranosky | from Boston |
| 19:05 | naeu | alexbaranosky: ah, you're lucky |
| 19:05 | naeu | i was 8 and a bit from London |
| 19:05 | alexbaranosky | flight back is longer |
| 19:06 | alexbaranosky | that'll do it |
| 19:06 | alexbaranosky | do you work in London? |
| 19:06 | naeu | Cambridge |
| 19:06 | alexbaranosky | company I work for is based out of London |
| 19:06 | naeu | (which isn't far from London) |
| 19:06 | naeu | oh nic |
| 19:06 | naeu | e |
| 19:06 | alexbaranosky | (Thanks I had no idea) |
| 19:06 | callen | Cambridge is sorta close to London |
| 19:07 | callen | not exactly an enjoyable bus-ride |
| 19:07 | callen | it's half-way to Bath anyway. |
| 19:07 | technomancy | http://achewood.com/index.php?date=08052004 |
| 19:08 | naeu | ok, Aaron is hacking in the hotel bar |
| 19:08 | naeu | i'll go find him :-) |
| 19:08 | alexbaranosky | take it easy |
| 19:08 | naeu | catch you later |
| 19:08 | naeu | have a good flight everyone |
| 19:09 | callen | technomancy: apropos. |
| 19:10 | technomancy | callen: it's my super power |
| 19:10 | technomancy | ability to find apropos comics |
| 19:11 | callen | ,apropos-comic London |
| 19:11 | callen | hrm. |
| 19:11 | amalloy | technomancy: mine too, but there are so few comics about apropos. really it's just $ man apropos |
| 19:11 | callen | ~apropos-comic London |
| 19:11 | callen | aw come on. |
| 19:11 | technomancy | callen: it's there ^ what more do you want? |
| 19:11 | callen | the bot needs this functionality. |
| 19:11 | technomancy | heh |
| 19:11 | callen | I'm serious. |
| 19:11 | callen | I know how you could make it too. |
| 19:12 | amalloy | clojurebot: apropos-comic is <reply> technomancy, come quick! someone wants a comic! |
| 19:12 | amalloy | i think clojurebot may have passed out |
| 19:12 | callen | that's cheating! |
| 19:12 | amalloy | ~ping |
| 19:12 | technomancy | outsourcing affects everyone these days |
| 19:12 | brehaut | amalloy: perhaps its currently aboard a flight to the conj and has lost wireless? |
| 19:17 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: apropos-comic in this context, compiling:(NO_SOURCE_PATH:0)> |
| 19:17 | tolstoy | Anybody here have experience with CongoMongo? Seems that (destroy! :collection {:key "value" …. }) doesn't delete. No docs. Not sure I understand the code. |
| 19:28 | tolstoy | Phew! User error! $gte is apparently more meaningful than gte$. |
| 19:29 | callen | clojurebot: that was slow. |
| 19:29 | callen | clojurebot: were you GC'ing or what? yeesh. |
| 19:54 | jcrossley3 | technomancy: we needed some immutant-specific files included in a new project. how should we have created them with lein without reinventing a wheel? |
| 19:55 | technomancy | jcrossley3: was just looking at that earlier today |
| 19:55 | technomancy | https://github.com/ibdknox/lein-spawn is the best bet so far |
| 19:56 | jcrossley3 | is there an example of its use somewhere? it's not clear how we would integrate with it. |
| 19:57 | jcrossley3 | i guess i should start with "what is spawn?" :) |
| 19:57 | technomancy | yeah, zero docs and more macro magic than I would like right now unfortunately |
| 20:00 | technomancy | wow, found a crazy bug. |
| 20:00 | technomancy | apparently the reader will happily read spawn genomes with their crazy {{whatevs}} syntax |
| 20:01 | technomancy | and it won't throw an exception until you try to print it (!) |
| 20:02 | technomancy | ,(do (read-string "{{whatevs}}") nil) |
| 20:02 | Raynes | technomancy: Man, there isn't any macro magic. You don't even have to use that macro if you don't want it. |
| 20:02 | Raynes | It's just there because it seemed like an easier way to write quick genomes. |
| 20:02 | brehaut | Raynes, technomancy: what is this project? |
| 20:03 | technomancy | Raynes: sure, but all the examples use it |
| 20:03 | Raynes | Well, why not? |
| 20:03 | technomancy | it just could be more obvious, that's all. |
| 20:04 | Raynes | It definitely needs documentation. And a lot of things. But that's why it hasn't seen a release yet. :p |
| 20:04 | technomancy | brehaut: spawn, for templated project output |
| 20:04 | Raynes | I'll have more time to work on it after the conj. |
| 20:04 | brehaut | ah right |
| 20:05 | Raynes | technomancy: Anyways, I'll iterate through the API and see what I can improve when I get a chance. |
| 20:06 | Raynes | I'll consult with you when I do, because we can probably come up with better ideas together. |
| 20:06 | Raynes | I'm off. Got packing and stuff to do. |
| 20:06 | technomancy | ok, sounds good |
| 20:06 | technomancy | so why is it that the reader happily accepts "{foo}" ? |
| 20:07 | brehaut | ,(read-string "{:foo}") |
| 20:07 | brehaut | wrong bot clearly |
| 20:07 | jcrossley3 | Raynes: where's the source for spawn? |
| 20:07 | technomancy | brehaut: it explodes when you try to print it, but not when read |
| 20:07 | brehaut | technomancy: thats real curious |
| 20:08 | amalloy | &(= (read-string "{x}")) |
| 20:08 | lazybot | java.lang.RuntimeException: Map literal must contain an even number of forms |
| 20:08 | amalloy | technomancy: fixed in 1.3 i think |
| 20:09 | amalloy | cuz lazybot had such an error in his config file, in a setting nobody ever used, and it went unnoticed until Raynes ported to 1.3 |
| 20:09 | technomancy | ah, so it's not my fault then |
| 20:09 | technomancy | whew |
| 20:09 | aperiodic | jcrossley3: looks like https://github.com/levand/spawn |
| 20:10 | jcrossley3 | aperiodic: thx |
| 20:10 | amalloy | i reserve the right to discover you wrote the map-parsing code in 1.2, though, so don't relax just yet |
| 20:11 | technomancy | clojurebot: who is to blame? |
| 20:15 | amalloy | uhoh. i bet you've taught him a meaning for "who" now, technomancy |
| 20:15 | technomancy | amalloy: a while ago he had a feature where he would select a nick at random from the channel residents |
| 20:42 | brehaut | moogatronic: http://brehaut.net/blog/2011/l_systems |
| 20:43 | moogatronic | brehaut: awesome! |
| 20:43 | brehaut | moogatronic: if you have a url you want me to link to, i can update it |
| 20:43 | moogatronic | a url? |
| 20:44 | brehaut | i mentioned you in the first para or something; but i had no url to reference |
| 20:44 | brehaut | (twitter, github etc) |
| 20:44 | moogatronic | ah |
| 20:44 | moogatronic | @damionjunk |
| 20:44 | moogatronic | i see you didn't use comp and partial in this version. |
| 20:45 | technomancy | brehaut: how about some syntax highlighting? |
| 20:45 | brehaut | technomancy: working on it |
| 20:45 | moogatronic | I spent a lot of time reading about those. pretty cool. |
| 20:45 | technomancy | brehaut: squeaky wheel, I know |
| 20:45 | brehaut | technomancy: heh :) i looked into some of the suggestions you made; the js one looks good, but currently breaks all my archives. |
| 20:48 | moogatronic | I appreciate seeing your turtle. I was about to msg you to ask what you'd suggest, regarding state / etc. |
| 20:49 | brehaut | my turtle is pretty poor; im not super sharp on java2d |
| 20:49 | brehaut | but it should provide a starting point |
| 22:02 | eyeris | The clojure-mode README says I can install from the marmalade package repository and provides some emacs lisp to evaluate in order to do so |
| 22:02 | eyeris | I have elpa installed but when I evaluate the clojure-mode installation code I get the error Symbol's value as variable is void: package-archives |
| 22:08 | eyeris | Nevermind -- I have emacs 23. I just pulled package.el from emacs 24 and now it works |
| 22:11 | callen | eyeris: o rerry? |
| 22:12 | callen | eyeris: that would be the first time I've heard of package.el fixing something rather than breaking. |
| 22:13 | eyeris | Well it satisfied that clojure-mode install code |
| 22:14 | eyeris | However the clojure-jack-in command is still not available, despite being in clojure mode |
| 22:14 | callen | eyeris: sounds like an old clojure-mode. |
| 22:14 | callen | eyeris: get an up-to-date one. |
| 22:15 | eyeris | Yeah, for some reason the last time I started emacs it didn't recompile the newly installed clojure-mode |
| 22:16 | eyeris | I think that's probably because I had the traditional slime package installed too |
| 22:16 | callen | hrm. |
| 22:22 | qizwiz | trying to play with some of the web frameworks in clojure. my first exposure to both clj/lein. |
| 22:22 | callen | qizwiz: use Noir. |
| 22:22 | tensorpudding | qizwiz, which ones? |
| 22:22 | qizwiz | noir |
| 22:22 | callen | tensorpudding: it doesn't matter, he should use Noir. |
| 22:22 | callen | See? |
| 22:23 | tensorpudding | noir is pretty good |
| 22:23 | qizwiz | but I'm having a problem getting past the lein plugin install...bit |
| 22:23 | tensorpudding | plugin? |
| 22:23 | qizwiz | per the "Getting Started" in the page |
| 22:24 | qizwiz | lein plugin install lein-noir 1.2.1 |
| 22:24 | tensorpudding | oh |
| 22:24 | tensorpudding | i didn't do that |
| 22:24 | tensorpudding | what does lein-noir do? |
| 22:24 | qizwiz | getting this error: Exception in thread "main" java.io.FileNotFoundException: /Users/jhill/.lein/plugins/lein-noir-1.2.1.jar (No such file or directory) |
| 22:25 | qizwiz | which seems like its something obvious, but given these are the first few minutes I've ever looked at any of it, has me a bit stumped |
| 22:25 | tensorpudding | well, it isn't fetching it first, which is what you probably need |
| 22:25 | tensorpudding | did you run lein deps? |
| 22:25 | qizwiz | no sir. I just installed using homebrew on my mac |
| 22:26 | tensorpudding | oh |
| 22:26 | tensorpudding | what version of lein is that? |
| 22:26 | qizwiz | 1.6.0 |
| 22:27 | qizwiz | here's the complete line: Leiningen 1.6.0 on Java 1.6.0_26 Java HotSpot(TM) 64-Bit Server VM |
| 22:27 | qizwiz | lein deps says "couldn't find project.clj..." |
| 22:27 | qizwiz | so clearly I have some more reading to do :-) |
| 22:28 | brehaut | qizwiz: just to check, you are running the lein deps command in a directly that has a project.clj with read perms right? |
| 22:29 | duck1123 | qizwiz: you might need to do lein new <projectname> |
| 22:30 | qizwiz | ok, just did that |
| 22:30 | duck1123 | now cd into that project and do everything from there |
| 22:30 | duck1123 | you'll want to edit that project.clj file to specify your deps |
| 22:31 | tensorpudding | oh |
| 22:31 | tensorpudding | you need to generate a new project to run lein deps |
| 22:31 | tensorpudding | sorry |
| 22:31 | tensorpudding | i'm somewhat new to this |
| 22:31 | tensorpudding | lein plugin install is supposed to fetch from somewhere |
| 22:31 | tensorpudding | maybe somehow there was a bug that made it think that it had fetched when it hadn't? |
| 22:31 | tensorpudding | oh lag |
| 22:32 | duck1123 | plugin install puts it in a special directory outside of any project, for everything else, you want to have a project to work out of |
| 22:32 | tensorpudding | yes, lein plugin doesn't require you to have done anything |
| 22:32 | tensorpudding | which means that your behavior is a bug |
| 22:33 | tensorpudding | i haven't used lein-noir but you don't need it to use noir in your project |
| 22:33 | tensorpudding | all you need to do is create the project with lein new, then edit the project.clj to include noir as a dep |
| 22:33 | tensorpudding | then run lein deps, and it'll fetch noir for you and put it in your project |
| 22:33 | qizwiz` | I'm not afraid to go spelunking through the code. what exactly is lein? where can I look at its innards? |
| 22:34 | tensorpudding | https://github.com/technomancy/leiningen |
| 22:34 | tensorpudding | i had some issues with using lein from packages too |
| 22:34 | qizwiz` | well, yeah...but its on my machine now, so... |
| 22:34 | tensorpudding | people here told me to just copy the lein script and run it |
| 22:35 | tensorpudding | uh |
| 22:35 | tensorpudding | i guess it could be stored somewhere by homebrew? |
| 22:35 | tensorpudding | the script itself is surely on your path somewhere |
| 22:35 | qizwiz` | well, lein in /usr/local/bin is just a shell script |
| 22:36 | duck1123 | I'd trust homebrew over apt, but still it's easy enough to wget and chmod |
| 22:36 | tensorpudding | but it's just a shell script that calls java with the right arguments on ~/.lein/self-installs/ |
| 22:36 | tensorpudding | where there's a standalone .jar file |
| 22:36 | qizwiz` | would it have mattered that I actually installed lein BEFORE I installed clojure? |
| 22:36 | tensorpudding | installing clojure is not really necessary |
| 22:37 | qizwiz` | really? |
| 22:37 | tensorpudding | when you run lein deps it installs a new .jar of clojure for you |
| 22:37 | tensorpudding | and it allows you to keep disparate versions |
| 22:37 | brehaut | qizwiz`: installing lein _is_ installing clojure; it manages its dependancy on the compiler service itself |
| 22:37 | duck1123 | lein deps == installing clojure |
| 22:37 | tensorpudding | the "system" clojure is totally ignored when you use lein |
| 22:37 | qizwiz` | interesting. so it's just using java behind the scenes? |
| 22:38 | tensorpudding | clojure is written in java |
| 22:38 | tensorpudding | it's just a big .jar |
| 22:38 | tensorpudding | and clojure libraries are just .jars |
| 22:38 | qizwiz` | right |
| 22:38 | tensorpudding | and if you want you can use lein to create an uberjar, which containes clojure and all the libraries and your program, and give it to anyone with /usr/bin/java and they can run it |
| 22:39 | tensorpudding | one of the upsides of write-once-run-anywhere |
| 22:39 | brehaut | qizwiz`: leiningen manages your classpath for you; the classpath is where the jvm goes looking for code. in particular, the classpath for a given lein project only inclludes things in the project.clj's dependancies (and dev dependancies) |
| 22:40 | tensorpudding | lein allows you to be blissfully unaware of java |
| 22:40 | tensorpudding | on the package front, that is |
| 22:40 | qizwiz | the hair and the fire bit :-) |
| 22:41 | duck1123 | what's this... java that you speak of? |
| 22:41 | tensorpudding | good luck getting by without ever directly using java classes |
| 22:41 | brehaut | duck1123: its the dark brown liquid used as fuel for converting specs in to clojure code |
| 22:42 | tensorpudding | lein is actually an uberjar apparently |
| 22:42 | duck1123 | bah! I don't think I've ever naturally called it that. that's coffee |
| 22:42 | qizwiz | just on a whim, I did "lein install noir 1.2.1" and it started downloading a bunch of stuff |
| 22:42 | tensorpudding | java is an island |
| 22:42 | tensorpudding | it's in indonesia |
| 22:42 | brehaut | duck1123: well its coffee of a particular origin; im partial to el salvador myself |
| 22:43 | duck1123 | My coffee comes from Kroger. (or occasionally Meijer) |
| 22:44 | tensorpudding | i'm sure that they get their beans on the same markets that everyone else does |
| 22:44 | tensorpudding | qizwiz, aren't you lucky that lein handles deps for you |
| 22:45 | moogatronic | i've been making espresso lately with Indian Mysore beans. =) |
| 22:45 | qizwiz | well, that was cool and all, but I still don't know where to begin. (apologies for my absolute n00bishness) |
| 22:45 | brehaut | moogatronic: thats quite an uncommon origin |
| 22:45 | amalloy | qizwiz: fwiw, lein install noir isn't going to do anything interesting. it just "pre-fetches" the same stuff lein deps would have |
| 22:46 | qizwiz | where does it put it? |
| 22:46 | moogatronic | brehaut: I was roasting for a while, but in my town now, we have about 5 roasters, one of them a clear notch above the rest. He always has great varietals. |
| 22:46 | amalloy | ~/.m2 |
| 22:46 | moogatronic | I usually just ask him for what's new. |
| 22:46 | duck1123 | qizwiz: using emacs? try lein swank, else lein repl |
| 22:47 | qizwiz | of course I'm using emacs :-) |
| 22:47 | amalloy | i think getting swank configured can wait until he's figured out how to fetch dependencies :P |
| 22:47 | brehaut | moogatronic: i think theres about three main roasters in my town; i live about 100m from the best, and they have a great range of Cup of Excellence single origin roasts :) |
| 22:48 | moogatronic | having access to good coffee is an essential aspect of living! |
| 22:48 | duck1123 | amalloy: I thought he had the dependencies and was looking for the next step |
| 22:49 | tensorpudding | well, once you have your deps installed, you can start writing code, and then building it |
| 22:49 | tensorpudding | but it might be more instructive learning clojure by starting a repl and playing around |
| 22:49 | tensorpudding | repl being short for read-eval-print-loop |
| 22:49 | tensorpudding | what people like calling interpreters nowadays, though clojure isn't interpreted |
| 22:49 | tensorpudding | lein repl gives you one |
| 22:49 | tensorpudding | qizwiz, then you want swank-clojure |
| 22:49 | qizwiz | I'm here now: https://github.com/technomancy/swank-clojure#readme |
| 22:50 | tensorpudding | yes, you just install the plugin, then run M-x clojure-jack-in from inside a clojure-mode buffer |
| 22:50 | qizwiz | bah! same error with "...plugin install" |
| 22:51 | tensorpudding | that's weird |
| 22:51 | tensorpudding | but lein deps works fine? |
| 22:51 | qizwiz | Copying 1 file to /Users/jhill/tmp/myproject/lib |
| 22:52 | qizwiz | that's all it says |
| 22:52 | tensorpudding | yes, that means it's working |
| 22:52 | tensorpudding | but plugin not working is weird |
| 22:52 | duck1123 | remove the homebrew version, and installit as per the readme |
| 22:53 | amalloy | (inc duck1123) |
| 22:53 | qizwiz | yeah, that was my thinking |
| 22:54 | tensorpudding | really a shame though |
| 22:57 | amalloy | the shame is that...to use a program you should install it the way it asks to be installed, instead of by a recipe cooked up by some crazy guy on the internet? |
| 22:58 | callen | I've never understood why people would use homebrew for things that are updated frequently. |
| 22:58 | tensorpudding | package maintainers aren't crazy guys on the internet |
| 22:59 | tensorpudding | maybe you've only used the janky ones that osx has |
| 22:59 | brehaut | evidence points to the contrary |
| 22:59 | callen | tensorpudding: are you aware of how homebrew works? |
| 22:59 | tensorpudding | no |
| 22:59 | tensorpudding | not particularly |
| 23:00 | callen | tensorpudding: if you send a pull request for a new package, they'll accept it, no questions asked. |
| 23:00 | qizwiz | do I need to blow away my .lein and .m2 directories? |
| 23:00 | tensorpudding | that's crazy |
| 23:00 | callen | tensorpudding: so the lein package is likely literally, "some crazy guy on the internet" |
| 23:00 | amalloy | can't hurt, qizwiz |
| 23:00 | callen | tensorpudding: well it's called HOMEBREW |
| 23:00 | tensorpudding | sorry |
| 23:00 | tensorpudding | package maintainers aren't *all* crazy guys on the internet, just the ones for mac |
| 23:00 | callen | tensorpudding: there we go. |
| 23:00 | duck1123 | qizwiz: probably not needed, but it's not like you've customized it. kill it and start anw |
| 23:00 | qizwiz | yep, that was the issue |
| 23:01 | tensorpudding | with respect to the persistance of macports and homebrew, it's just not very good |
| 23:01 | callen | tensorpudding: persistence* |
| 23:01 | amalloy | doesn't homebrew make /usr/local/bin writable w/o privs? gives me the willies |
| 23:02 | tensorpudding | how is that possible? |
| 23:02 | tensorpudding | unless osx itself lets just anyone with admin rights write to /usr/local/bin |
| 23:02 | brehaut | every package management system that does system wide installs freaks me out |
| 23:02 | amalloy | sudo chmod |
| 23:02 | tensorpudding | my god |
| 23:02 | tensorpudding | are you serious |
| 23:02 | tensorpudding | why hasn't this thing been targetted with malware yet |
| 23:02 | amalloy | or actually i think sudo chown |
| 23:02 | amalloy | which is slightly less crazy |
| 23:03 | callen | amalloy: Mac users aren't usually aware of unix conventions. |
| 23:03 | duck1123 | amalloy: Are you sure about that, I thought it put it somewhere user-local |
| 23:03 | qizwiz | and now lein plugin install "just works" :-) |
| 23:03 | callen | duck1123: it can do either way, but the /usr/local/bin install will do what they described. |
| 23:04 | duck1123 | of course, it didn't work for me and I had to install it with sudo |
| 23:04 | callen | the /usr/local/bin is the default last I checked. |
| 23:04 | qizwiz | without even being in a directory with project.clj |
| 23:04 | amalloy | duck1123: https://gist.github.com/323731 line 112ish |
| 23:05 | amalloy | chgrps it to admin (so anyone who *could* sudo is in the group), and gives it g+rwx |
| 23:05 | tensorpudding | it'd be saner if they had some curated free database, with a fancy gui selector which builds and installs for your system, or something |
| 23:07 | duck1123 | The only development I do on my mac is in my ubuntu vm or over ssh |
| 23:07 | tensorpudding | running a vm just to do dev, i tried that |
| 23:07 | tensorpudding | for like a month on my windows laptop |
| 23:08 | tensorpudding | very frustrating |
| 23:08 | brehaut | Some people, when confronted with a problem, think "I know, I'll use a global package manager." Now they have at least two problems |
| 23:08 | tensorpudding | more frustrating than getting windows as a usable dev platform |
| 23:08 | tensorpudding | global package managers are imperfect |
| 23:08 | tensorpudding | but it's better than installing everything by hand, from source |
| 23:09 | qizwiz | alright, alright. I get it. I shouldn't have trusted homebrew |
| 23:09 | brehaut | its system wide installation that is the antipattern, not source or binary distribution |
| 23:10 | qizwiz | holy crap, that's really cool. finally got noir up and running |
| 23:10 | brehaut | qizwiz: congrats :D |
| 23:10 | tensorpudding | i think ideally you'd have the ability to choose |
| 23:10 | qizwiz | is it difficult to hook it up to say mysql? |
| 23:10 | tensorpudding | qizwiz, check out korma |
| 23:11 | tensorpudding | it's by the same guy |
| 23:11 | tensorpudding | isn't it? |
| 23:11 | amalloy | brehaut: a global package manager isn't bad for end-user programs; it's mostly just dreadful for development tools |
| 23:11 | brehaut | qizwiz: its not. you have three main options. clojure.java.jdbc, korma (which is built on top) and clojureql |
| 23:11 | duck1123 | I just started porting my application that uses clj-record over to korma today |
| 23:12 | duck1123 | I think I'm going to like it, but I'm not very far yet |
| 23:12 | amalloy | eg, i'm quite happy to have apt managing the stuff i don't want to care about, like my window manager |
| 23:12 | brehaut | qizwiz: korma is promising but new, its got some pretty major omissions atm and some cracker bugs |
| 23:12 | qizwiz | I have this project that's literally thousands of tiny microsites done in php that I wanted to refactor and since I have a bit of freedom to play with different technologies, I thought I"d try something in clojure |
| 23:12 | callen | cracker...bugs? |
| 23:12 | amalloy | brehaut: $tr nz en cracker? |
| 23:12 | brehaut | serious |
| 23:12 | callen | brehaut: I second that tr. |
| 23:13 | tensorpudding | what exactly do you mean by cracker bugs |
| 23:13 | brehaut | i dont want to scare anyone off korma because i think it has a lot of potential, but it is very young |
| 23:13 | tensorpudding | as in, it's vulnerable to some kind of exploit? |
| 23:13 | amalloy | tensorpudding: given the huge latency you seem to have tonight, you might want to just wait for someone else to ask the questions you come up with |
| 23:13 | brehaut | no i mean that the straight forward operation according to the documentation contains show stopper bugs that will impede your development process. |
| 23:14 | callen | it will not impede |
| 23:14 | callen | it will centipede. |
| 23:14 | tensorpudding | the documentation being the tutorial? |
| 23:14 | qizwiz | hrmm...doesn't compojure promise to be rails-ish in it's ability to server database-backed sites? |
| 23:14 | brehaut | the documentation being the page labled 'docs' on the site |
| 23:15 | brehaut | https://github.com/ibdknox/Korma/issues?sort=created&direction=desc&state=open |
| 23:15 | tensorpudding | which covers a small portion of the actual stuff |
| 23:15 | brehaut | qizwiz: compojure is analogous to sinatra, not rails |
| 23:16 | tensorpudding | i tried using compojure, it was a bit more complex than noir |
| 23:16 | brehaut | qizwiz: perhaps you want to read http://brehaut.net/blog/2011/ring_introduction; it doesn't cover noir but you'll get a good understanding of noir from webnoir.org |
| 23:16 | callen | Compojure tried too hard to lispify everything |
| 23:16 | duck1123 | The problem with clojure web development is it's built up of so many tiny little projects that it's impossible to cite any sing one as what makes clojure web dev awesome |
| 23:16 | callen | the S-EXP => HTML templating system made my eyeballs explode |
| 23:16 | brehaut | (if you can excuse me blowing my own trumpet) |
| 23:16 | callen | duck1123: Noir? |
| 23:16 | tensorpudding | compoure has templating? |
| 23:17 | callen | tensorpudding: go look again. You'll see. |
| 23:17 | brehaut | tensorpudding: your comment about compojure vs noir is absurd; noir is built on compojure. its at a different level of abstraction, not complexity |
| 23:17 | callen | duck1123: web dev isn't necessarily supposed to be a strength for Clojure. It's capable of being great at it, but I don't think the community is trying to cater to people who can't spin their own solution. |
| 23:17 | tensorpudding | brehaut, that sounds better |
| 23:18 | tensorpudding | it was cruder |
| 23:18 | callen | duck1123: impressively facile libraries are for Ruby coders. |
| 23:18 | brehaut | callen: compojure seperated out its templating over a year ago; that is now hiccup and its not tied to compojure |
| 23:18 | callen | brehaut: I'm old, so sue me. |
| 23:18 | duck1123 | I don't use noir because I have my own framework that acomplishes the same function for me |
| 23:19 | callen | brehaut: my initial exposure to it was enough to scare me off. |
| 23:19 | brehaut | callen: medicine used to be drilling holes in peoples heads; i hear thats gotten better too. |
| 23:19 | qizwiz | incidentally, I just realized the irony of criticizing a package manager while being very greatly helped (thank you) to install another |
| 23:20 | callen | brehaut: after that trepanation, I'm staying at home. |
| 23:20 | callen | brehaut: good to know though. |
| 23:21 | cgray | are rationals planned for clojurescript at any point? |
| 23:21 | tensorpudding | what is clojure's strength? |
| 23:22 | duck1123 | concurrency was the original goal |
| 23:22 | tensorpudding | i was watching a video about that, to try and figure out how it works in clojure |
| 23:23 | tensorpudding | but i really don't like videos for learning, and i discovered too late that the video was kinda old |
| 23:23 | callen | tensorpudding: sophisticated backend data processing and machine learning is a common theme, but of course people use it for all sorts of things. |
| 23:23 | callen | tensorpudding: the aforementioned is the primary business-case I see IRL |
| 23:24 | amalloy | duck1123: i would have guessed "minimization and management of state". concurrency falls naturally out of this, but you also get great benefits in single-threaded code |
| 23:24 | callen | tensorpudding: cascalog would be a good canonical example. |
| 23:24 | callen | either way, it's not trying to compete with PHP/Python/Ruby at being a facile way to make yet another CMS> |
| 23:24 | callen | I think that much should be obvious. |
| 23:25 | duck1123 | callen: those will come in time |
| 23:25 | tensorpudding | why do you say facile? |
| 23:25 | callen | tensorpudding: cucumber. |
| 23:25 | tensorpudding | what do you consider a non-facile way to make a web application? |
| 23:25 | callen | I think the whole question is boring. |
| 23:26 | callen | your question is malformed anyway. |
| 23:26 | callen | so the answer to your question is 'mu' |
| 23:26 | callen | cucumber was a serious answer to your question. |
| 23:26 | duck1123 | you think the web is boring? |
| 23:26 | qizwiz | feh. I'm still at the office and want to go home, but I don't want to lose the thread. I've never though of persisting an irc session, but it seems I want to now |
| 23:26 | tensorpudding | cucumber is what? |
| 23:27 | duck1123 | cucumber is a BDD framework for writing "test" in english |
| 23:27 | duck1123 | I use cucumber to test my site |
| 23:27 | callen | duck1123: let him use Google next time. |
| 23:27 | tensorpudding | wait, that ruby framework cucumber? |
| 23:27 | callen | it's not English. |
| 23:27 | qizwiz | tensorpudding: yeah, that ruby framework cucumber |
| 23:27 | callen | duck1123: I've done web dev long enough that it's pretty boring/easy. Only scaling is all that interesting and that's a different problem/question. |
| 23:29 | callen | duck1123: porting bad libraries to Clojure from Ruby is the devil's work. Don't. |
| 23:30 | duck1123 | I didn't port it, it was already done. I just used what was there as an easy way to do full integration tests |
| 23:30 | callen | clearly I need to finish building that flamethrower then. |
| 23:31 | callen | and find the servers holding that repo. |
| 23:31 | amalloy | qizwiz: get a bouncer |
| 23:31 | callen | qizwiz: I'm writing an IRC bouncer. I have a better idea: remote server + GNU Screen + irssi |
| 23:31 | amalloy | or, just leave now while the conversation isn't about anything useful |
| 23:31 | callen | qizwiz: failing that, what amalloy said. |
| 23:31 | qizwiz | :-) |
| 23:32 | qizwiz | I'm sure erc has some way to interact with a bouncer. searching furiously now |
| 23:34 | amalloy | qizwiz: you don't need to "interact with" a bouncer. you just connect to it like any other irc server |
| 23:35 | amalloy | the design is that you start your bouncer as a persistent irc client on some other server, and then you connect to it as a server; it does the forwarding and message-saving |
| 23:36 | jlf | hmm, it'd be nice to populate the backlog upon connection to the bouncer though |
| 23:36 | callen | jlf: my bouncer will do that. |
| 23:36 | callen | jlf: if you want it to. |
| 23:36 | jlf | o rly? |
| 23:36 | callen | jlf: yessir. |
| 23:36 | jlf | link? |
| 23:37 | callen | jlf: in progress ;_; |
| 23:37 | jlf | :) |
| 23:37 | callen | jlf: writing it in Clojure, have logging and connectivity working |
| 23:37 | callen | jlf: working on database backend, indexing/searching, and client-side right now. |
| 23:37 | jlf | nice |
| 23:37 | callen | jlf: started last week, haven't had a lot of time to work on it. |
| 23:39 | callen | jlf: I'm actually having trouble with the client-side because I'm not familiar with what is traditional for IRC Bouncer <=> Client interaction. |
| 23:39 | callen | what would seem simple to me, might not seem simple to others. |
| 23:39 | callen | but it is functionality I want |
| 23:40 | duck1123 | Is there anything I can do (aside from liberal use of printlns) to trace what namespaces are loaded and when? |
| 23:40 | callen | I don't think namespaces are a good subject here. |
| 23:40 | jlf | callen: does erc expose an interface for "put this in your backlog"? |
| 23:41 | callen | jlf: I don't know anything about that, but it doesn't matter, the bouncer acts as an intercept between the server and the client |
| 23:41 | callen | jlf: I can fake it and add timestamps or whatever else and "replay" the backlog into the client. |
| 23:41 | callen | jlf: and let the user set how much backlog they want. |
| 23:41 | duck1123 | On one of my machines, requiring one of my nses doesn't complete, and I'm trying to find out why |
| 23:41 | jlf | oh, the timestamps are specified by the server? |
| 23:41 | callen | jlf: I'll have an "admin" console for business use too. |
| 23:41 | callen | jlf: no, I record local time for the bouncer. |
| 23:41 | callen | jlf: again, optional, but it's there for a reason. |
| 23:41 | callen | jlf: technically, I actually record epoch, it just outputs local. |
| 23:42 | jlf | yeah i meant server from erc's perspective -- iow, do the timestamps come from the bouncer or does erc apply them? |
| 23:42 | callen | jlf: No damn clue, but my understanding of what server output looks like leads me to believe "erc" |
| 23:43 | callen | jlf: if you want a "historical" view of the full logs, you would hypothetically use the bouncer's database API I provide |
| 23:43 | callen | jlf: the backlog is just that, it's not supposed to be a canonical representation. |
| 23:43 | callen | jlf: some people actually hate inline timestamps that double on top of the client's timestamp. |
| 23:43 | callen | jlf: that's why I'm making bouncer provided timestamps optional. |
| 23:43 | hiredman | duck1123: there is a :verbose flag (might not be hwat it is actually called) you can pass to :use and :require |
| 23:44 | qizwiz | znc appears to work well enough |
| 23:44 | qizwiz | I'll be back shortly |
| 23:44 | hiredman | it is :verbose |
| 23:44 | callen | my bouncer is really just one piece of a whole toolchain. |
| 23:44 | callen | I'm not trying to replace ZNC |
| 23:44 | hiredman | (require '[foo :as bar :verbose]) |
| 23:44 | callen | I'm trying to replace Hipchat. |
| 23:44 | duck1123 | hiredman: do you know if it's recursive? |
| 23:44 | jlf | callen: *nod* will your bouncer be able to be deployed on heroku as a free app? |
| 23:45 | callen | jlf: yeah, I'm sure technomancy could help me to that end. |
| 23:45 | hiredman | duck1123: yes |
| 23:45 | hiredman | it sets a binding |
| 23:45 | callen | jlf: the end-game for this is something a lot better than just a bouncer though. :) |
| 23:45 | jlf | that'd be sweet for those of us with flaky dsl |
| 23:45 | qizwiz | well, I just did this: http://www.emacswiki.org/emacs/ErcZNC |
| 23:45 | hiredman | *loading-verbosely* |
| 23:45 | callen | jlf: once I have something useable, I might be tapping you for feedback :P |
| 23:46 | callen | in the meantime, I'm off to worship the Iron God |