#clojure logs

2011-11-09

00:15jlfcallen: looking forward to it
00:18spoon16what is the most appropriate way to make a reference to an external Clojure project? I want to reference https://github.com/alexott/clj-tika
00:21amalloy"reference"? if you want to reference it in a blog post that link is good. if you want to do something with it in a program you probably need to be more specific
00:25spoon16well… in java you put a library on your class path and in C# you create a reference to an assembly that is placed on the executable path… I get that clojure is running on the JVM but I guess I'm not sure how I make the contents of clj-tika available to my own clojure project. Do I need to compile it somehow and take the resulting JAR and reference it in my Leiningen project.clj somehow?
00:26spoon16maybe there is a blog post that I haven't found that describes this
00:28spoon16I guess i can just use lein to build a jar from clj-tika and import that. Is there a way to pull it in automatically by referencing the clj-tika project.clj in my own project.clj?
00:29amalloyspoon16: yes
00:30amalloyjust add [clj-tika "1.0.0-SNAPSHOT"] to your :dependencies
00:30spoon16does that come from clojars?
00:31amalloyyou mean, does that cause lein to download a jar from clojars? usually, but in general it causes it to get downloaded from "somewhere"
00:31leo2007How to develop a noir website using slime?
00:34spoon16if I add clj-tika "1.0.0-SNAPSHOT" to my dependencies it fails to find the library… I installed clj-tika using lein install
00:34spoon16and now it works
00:34spoon16so I guess the best thing to do in a team environment is setup a shared maven repository
00:35amalloywell, he may not have pushed it (or that version) to clojars
00:35amalloywww.clojars.org/clj-tika
00:35spoon16yeah, makes sense
00:36spoon16do you have any recommendations for a self hosted dependency repo like clojars that I could throw up on EC2?
00:36spoon16we use artifactory at work, but that might be overkill for my three person side project
00:39spoon16stackoverflow says a maven repo is just a specific directory structure that may be exposed over http
00:39spoon16and that Nexus is a good choice
00:41zerokarmaleftleo2007: your question is a little vague
00:49leo2007what happens behind the scene when I run `lein swank' in the project root?
00:51leo2007basically, I want `lein swank' to get the website running for an interactive development session using slime.
01:00zerokarmaleftperhaps extending lein-noir might make more sense
01:03duck1123leo2007: what I do is have my application start the swank server, then I fire everything off with lein run
01:04zerokarmaleftduck1123: with an embedded call to swank?
01:04duck1123yes
01:05duck1123it has the benefit that the swank session is always there with my namespaces ready and my environment initialized
01:05duck1123I wouldn't recommend that for a library, however
01:06zerokarmaleftah i see, start-repl...neat
01:14leo2007duck1123: how did you set it up? by changing project.clj?
01:18callen-bottesting
01:18callen-botbwahahahahaha
01:19callen-botjlf: herro.
01:20callen-botleo2007: problem?
01:21leo2007callen-bot: smart guess.
01:21callen-botleo2007: http://www.youtube.com/watch?v=QP_rIAkb_v8 this will improve your day.
01:29duck1123leo2007: If you want to call swank from within your project, then swank-clojure has to be part of your runtime deps
01:31qizwizalready enjoying noir. I like how the concept of routes is defined within a page and isn't convoluted like the rails architecture
01:31qizwizand since I'm just coming back into the conversation, what does swank within a project get you?
01:31leo2007duck1123: If I have lein run, I also want to be able to connect to the swank server for development. But I don't know how to set it up.
01:32duck1123leo2007: Here's how I start my app. https://github.com/duck1123/jiksnu/blob/master/src/jiksnu/core.clj
01:32duck1123qizwiz: calling swank from within your server allows you to call lein run and have swank started
01:34leo2007BTW, anybody annoyed by Ubuntu? I thinking of moving my env to Fedora.
01:34callenleo2007: Debian is fine
01:41qizwizah, that's handy
01:41qizwizwhat are the deploy strategies with noir/compojure?
01:45callenqizwiz: SCP ALL THE FILES
01:50qizwizcallen: alright, I'm in a predominantly rails shop. would there be anything special to setup on the vhost? I presume I'd have to put lein there as well and have all the relevant libraries
01:53callenqizwiz: I was being sarcastic.
01:53callenqizwiz: I am sorry.
01:53callenqizwiz: just have lein and the JVM on the deployment targets, then script the cloning of the appropriate repo and that should get you rolling.
01:54callenqizwiz: I am sure there are more sophisticated ways, but that seems easy enough.
01:54qizwiz:-)
01:54qizwizthank you
01:55qizwizcallen: no worries on the sarcasm. I'm experienced enough with IRC (at least) that I know tough skin is a requirement
01:57duck1123if you want to get fancy, pallet is pretty neat. If you're tied to Tomcat, you can produce a war. If you want dead simple you can produce an uberjar and run that
01:58duck1123put most likely, clone the whole project and use lein run
01:59qizwizthe issue is that if I build it this way, I take sole responsibility for every facet. So any beacons along the way are helpful
02:01qizwizon the other hand, if I use rails, then there are folks I can lean on if I have to
02:07amalloyqizwiz: you might want to try heroku
02:07amalloywhile you're playing around
02:07amalloythey just keep a git checkout of your project, and whenever you push to it it does the whole lein dance to start it up again
02:08amalloyafaik the free tier is sufficient to run a single always-on single-host webapp
02:23tsdhIs there a way to silence reflection warnings in one specifig block of code? I tried wrapping the code in a (binding [*warn-on-reflection* false] code), but that doesn't help.
02:24amalloytsdh: usually you'd rather just fix the reflection
02:24tsdhamalloy: Did you see my answer to your message on the list?
02:25tsdhI have a macro that expands to java calls, and in the expansion the type hints are lost.
02:25amalloyoh, i didn't. thanks
02:25tsdhamalloy: Would your path help in that case, too?
02:25tsdhs/path/patch/
02:26amalloywell, it depends on your issue, i guess. in almost all cases you can work aorund the problem by not type-hinting expressions, and instead hinting let-bindings
02:27amalloya good practice anyway in macros: yours is incorrect regardless of the macro-metadata patch because it evaluates g multiple times
02:28amalloyif you wrapped it with `(let [^Graph g# ~g] (...use g#...)), then g would be evaluated only once and would be hinted appropriately
02:29tsdhamalloy: Yes, but that's ok. A typical macro application looks like (with-traversal-context [g (vsubgraph g #(some-pred))] (do-stuff-with g)), so g is evaluated many times anyway
02:30tsdhamalloy: But I'll try to see if that helps with the warnings.
02:30amalloytsdh: i think you misunderstand my point about g being evaluated multiple times
02:30amalloyconsider (defmacro square [x] `(* ~x ~x))
02:30tsdhamalloy: Yes, I understand your point.
02:31amalloyokay
02:31tsdhamalloy: http://tsdh.wordpress.com/2011/09/28/defmacro-revisited/
02:31amalloyat any rate i'd appreciate an upvote at http://dev.clojure.org/jira/browse/CLJ-865 to make sure this gets some attention, if you have permissions to do that
02:35tsdhamalloy: Hm, using a gensym for ~g indeed erases all reflection warnings. I don't understand why, though...
02:36amalloytsdh: presumably vsubgraph is a macro in your program?
02:36tsdhamalloy: No, a function returning a proxy object.
02:36amalloyhm
02:37amalloy&(let [x '(vsubgraph blah)] (meta (second `(foo ^List ~x))))
02:37lazybot⇒ {:line 1}
02:37amalloy&(let [x '(vsubgraph blah)] (meta (second `(foo ~ ^List x))))
02:37lazybot⇒ {:line 1}
02:38amalloywell. i don't quite understand how it all works, but syntax-quote followed by unquote winds up discarding a lot of metadata
02:39amalloyi suspect my patch wouldn't help you here, given what lazybot is telling me
02:39tsdhOk, I'm happy that it works now.
02:39tsdhAnd you have your upvote.
02:39amalloy*chuckle* thanks
02:40tsdhamalloy: I have an instance of that particular issue as well, where I need to type hint the returned object of a `case'.
02:40amalloyaha. well that would certainly help
02:41amalloytsdh: ping hiredman (after the conj, i guess) if you want an explanation of the case we just discussed - i think he knows what's going on
02:41tsdhamalloy: Ok, thank you.
02:45tsdhamalloy: But using a let doesn't work in all cases, too.
02:45tsdh&(let [^java.awt.Image i (java.awt.image.BufferedImage. 10 10 1)] (.getWidth i))
02:45lazybot⇒ 10
02:45amalloy$javadoc java.awt.Image
02:45lazybothttp://download.oracle.com/javase/6/docs/api/java/awt/Image.html
02:45tsdhamalloy: Hm, here it issues a reflection warning that the call to getWidth cannot be resolved.
02:46amalloytsdh: Image doesn't have a getWidth method
02:46amalloyonly BufferedImage does, apparently
02:46tsdhamalloy: Sure it has.
02:46tsdhamalloy: abstract, thought.
02:46amalloyhttp://download.oracle.com/javase/6/docs/api/java/awt/Image.html#getWidth(java.awt.image.ImageObserver) takes an argument
02:47amalloythere is no (.getWidth foo) method, only (.getWidth foo bar)
02:47tsdhArgh!
02:47amalloytsdh: but you could fix that case simply by removing the typehint altogether
02:47tsdhYes, stupid me. :-)
02:48amalloythe compiler knows without being told that (BufferedImage. foo) will yield a BufferedImage object. it only had trouble because you said "Wait! Be careful! That could be any kind of Image!"
02:52tsdhI see. In the real code, it was infact that getWidth() in Image (and there I really have an Image gotten from ImageIcon.getImage()) has an ImageObserver argument. Now it gets it. Before, I simply was lucky that the underlying instance was in fact some Image subclass.
02:53amalloyImageObserver looks ridiculous to me
02:54amalloybut c'est la vie - you have to live with java's crazy decisions
02:55tsdhYep
04:09ktsuji?
04:09ktsujiexit
04:20jliwrapping "dosync" around atom accesses/updates doesn't do anything, right?
04:20jliwell, doesn't do anything for coordination
04:30Chousukejli: yes. dosync only affects refs and agent sends
04:31jlicool
04:40Blktgood morning everyone
04:49jliwhere IS everyone
04:49jliconj :(
04:54clgvhow can I create a function in a macro and call it in the code the macro returns? something like this: (defmacro bla [x, fname](let [f (fn [args] (println args) x)] `(defn fname [& ~'args] (~f ~'args))))
04:55clgvok. I could literally add the definition of f
04:56clgvok thats working. I asked too early^^
04:57DerGuteMoritzclgv: you should use gensym for the function name though
04:57clgvDerGuteMoritz: actually I should use ~ in front of it ;)
04:59clgvthat works: (defmacro bla [x, fname](let [f `(fn [args#] (println args#) ~x)] `(defn ~fname [& ~'args] (~f ~'args))))
05:01DerGuteMoritzalternatively, what should also work is something like (def foo (let [f (fn ...)] (fn [...] (f ...))))
05:02DerGuteMoritzso you won't clutter the namespace
05:03DerGuteMoritzclgv: ^
05:03clgvDerGuteMoritz: it was a minimal example of something bigger, where the macro is really needed
05:03DerGuteMoritzclgv: I mean expand to something like that
05:04DerGuteMoritzI'm typing from my phone right now so typing all that interpunctuation is a bit hard, thus only the expansion :-)
05:07DerGuteMoritzjust use def instead of defn so you can extend the local scope of your fn with let
05:08DerGuteMoritzhmm thinking about it: doesn't defn always create a top-level binding?
05:09DerGuteMoritzso closing over defn like you originally did should also work, no?
05:10clgvyes defn always creates a root binding
05:10clgvin fact that doesnt matter, since the macro directly expanded in a toplevel defn ;)
05:10DerGuteMoritzhm ok but your original implementation with let over defn didn't work?
05:11DerGuteMoritzoh I missed a quote there
05:12DerGuteMoritzwell try expanding to `(let ... (defn ...))
05:12DerGuteMoritzshould work from what I understand
05:18clgvI said it's already solved ;)
05:18DerGuteMoritzsure, just curious
05:22DerGuteMoritzare you expanding to two defns now?
05:25bobnodeshi
05:26bobnodeshow do I do subqueries in ClojureQL?
05:28clgvDerGuteMoritz: no. It's similar to the defmacro statement I posted last
05:30DerGuteMoritzclgv: ah I see!
05:47DerGuteMoritzto all German users: there is also a #clojure-de channel now. so if you are interested in talking to local Clojurians, feel free to join :-)
06:23DerGuteMoritzsorry German users, I just discovered there already is #clojure.de :-)
06:23clgvright ;)
06:23DerGuteMoritzhehe
06:28kzartechnomancy: I tried what you said last night but it now fails to push to Heroku "Heroku push rejected, error fetching custom build pack". (I did `heroku config:add BUILDPACK_URL=http://github.com/heroku/heroku-buildpack-clojure.git`.)
08:48kephaleis there something like the theading macro that provides a reference to the thing being threaded?
08:48kephale,(let [thing {:a 7} thing (assoc thing :b (dec (:a thing)))] thing)
08:48kephale&(let [thing {:a 7} thing (assoc thing :b (dec (:a thing)))] thing)
08:48lazybot⇒ {:b 6, :a 7}
08:49clgvkephale: there were articles about something like that, but afaik there is nothing in core or contrib
08:49kephaleclgv: aw… i have some ugly let statements like that which have 4-5 steps of updating the same map
08:50clgvkephale: how about 'update-in ?
08:50clgv(-> my-map (update-in [:key1] f param1) (update-in [:key2 :nested-key] g param2 param3)) ?
08:55hugodkephale: if update-in isn't sufficient, you might be interested in arg->> in https://github.com/pallet/thread-expr/blob/develop/src/pallet/thread_expr.clj#L269
08:55hugodor arg-> even
08:55kephaleclgv: i'll keep that strategy in mind. when hacking things together it has been a lot faster to use that re-definition strategy with let. however, i think using -> plus update-in would work in most if not all of the situations
08:55kephalehugod: oOoo
08:57clgvhugod: thats a nice one
08:57kephalethough i must admit, it would be wonderful to be able to use %1 %2
09:15clgvI still wonder why (if-not pred? then else) is defined as (if (not pred?) then else) and not as (if pred? else then)
09:19lucianclgv: probably no particular reason
09:19clgvlucian: would be more efficient, wouldnt it?
09:20luciani'm not sure it matters
09:20clgvwhy introduce a 'not when it's a macro anyway...
09:20lucianit'd be one less function call, maybe. depending on what clojure compiles it to and how the jvm jit decides to inline
09:21kephaleyeah, you'd hope that it is just compile-time overhead
09:21clgvwell, 'not is a function using 'if ^^
09:22lucianclgv: submit a patch
09:23eirosome korma user ? i would like to know if it's possible to deploy a schema defined in clojure
09:23clgvlucian: not that easy with clojure.core ;)
09:24mdeboardeiro: Korma doesn't do any table creation
09:24mdeboard$google clojure lobos
09:24lazybot[budu's Profile - GitHub] https://github.com/budu
09:24eirook thanks
09:24lucianclgv: that's sad
09:24mdeboardeiro: https://github.com/budu/lobos
09:25eirowow. i'll read about it
09:25eirothanks again
09:25mdeboardnp
09:26kephaleclgv: fork clojure, do your fix, rename it clgvojure and tout how it is more efficient than clojure : P
09:27clgvkephale: lol, actually I wanted to know if there is a reason to the current definition :P
09:31lucian:*
09:32lucianwrong window
09:32mdeboardlolll
09:32Iceland_jacklucian: ;* you too
09:32lucianIceland_jack: why, thank you
09:32Iceland_jack:)
09:37lucianbah, i'm almost incapable of using for loops in python anymore
09:38lucianit's clojure's fault that i'm using so many comprehensions now
09:40clgvlucian: you can be glad then that you dont have to use c++ or similar ;)
09:43lucianthree comprehensions and no loops. i'm being convertet, it seems https://bitbucket.org/lucian1900/blag/src/ff43c43bf394/models.py#cl-25
09:50mdeboardlucian: comprehensions are still loops
09:51lucianmdeboard: sure, but they return expressions
09:51lucianinstead of mutating sequences
09:52mdeboardOh, you mean generator expressions
09:52mdeboardnot (list) comprehensions
09:53lucianmdeboard: both list and generator comprehensions are geared towards creating new sequences as expressions
09:53mdeboardList comprehensions return lists, they're just geared toward aping the Haskell syntax for looping
09:54mdeboardgenerator expressions are nice though
09:54luciansure,but they still don't mutate the existing lists. they return entirely new lists
10:00mdeboardYeah but I'm just saying, list comprehensions really aren't functional at all. It's just instantiating a class and populating it from the processed contents of another class instance. it doesn't return an expression that gets evaluated lazily like generator exprs.
10:00zerokarmalefthttps://twitter.com/#!/fakerichhickey <= lol who's doing this?
10:03mytrileHey, guys. Not Clojure question, but I don't know how to find a solution. I'm running Aquamacs, but it seems that when I want to save a file it doesn't do it
10:03clgvzerokarmaleft: lol, what`
10:03mdeboardnice try, fake rich hickey
10:05lucianmytrile: try #emacs
10:05mytrilelucian: ok
10:06mytrilelucian: They'll kill me there
10:06lucianmdeboard: do you only see laziness as a requirement for being functional?
10:08Chousukelazy evaluation has good synergy with functional programming but that's it :P
10:09TimMcngoc?
10:09mdeboardlucian: obviously not, but I completely fail to see how a list object in Python has any relation to a functional paradigm.
10:09lucianChousuke: that's my view as well
10:09lucianmdeboard: not a list object, a list comprehension
10:10lucianmdeboard: in case you didn't realise, list comprehensions don't mutate the original list
10:10zerokarmaleftTimMc: no idea
10:10lucianmdeboard: they are exactly as functional as generator comprehensions, just not lazy
10:11theignoratiwhy is swing so confusing
10:11luciantheignorati: because enterprise. can you afford to use one of the wrappers?
10:11theignoratimaybe, which one should I look at?
10:11mdeboardlucian: List comprehensions are immediately evaluated to an object with mutable state. How is that functional?
10:12lucianmdeboard: because they create a new list from an old list, without mutating the original one
10:12luciantheignorati: there was a thing called seesaw
10:12mdeboardThat is a stretch.
10:13luciantheignorati: this https://github.com/daveray/seesaw
10:14theignoratiI'm mostly having issues with the layout, will that help?
10:14luciantheignorati: it's a DLS-ish thing. probably not without rewriting everything to use ut
10:15lucianmdeboard: i guess i disagree. looks like a map with an optional filter to me :)
10:15mdeboardlucian: It's just syntactic sugar under the hood
10:15lucianmdeboard: i know, but it acts the same way
10:31kzarcemerick: Do you know what clutch's get-database expects when given a string? I'm passing it the cloudant URL with "/dbname" appended but I'm getting this error: "IOException CouchDB Response Error: 400 Bad Request com.ashafa.clutch.http-client/get-response (http_client.clj:70)". The url is structured like this: https://user:pass@server.cloudant.com/dbname. (I never had any problems before when I was passing get-dat
10:31kzarabase a map of the settings.)
10:32cemerickkzar: which version of clutch?
10:33kzarcemerick: [com.ashafa/clutch "0.2.5-SNAPSHOT"] (Reason why I'm trying to use a URL now is that's how Heroku does it.)
10:33cemerickkzar: you should at least be on the 0.2.5 release :-)
10:34kzarcemerick: Oops, let me try that
10:34cemerickkzar: I don't think that'll change anything, just saying.
10:34cemerickit looks like that should work
10:36kzarcemerick: When I put the URL in my browser it works too
10:36cemerickString URLs were sort of 2nd-class citizens in clutch <= 0.2.5
10:36mjwhitttime to travel ... to the conj!
10:36cemerickNot the case in 0.3.0, FWIW.
10:37redingermjwhitt: Happy travels! See you soon
10:37zerokarmaleftmjwhitt: have a safe trip
10:37cemerickkzar: I'm prepping for my conj talk, so can't really try to replicate the issue. Maybe send a message to the ML so I can take a look later/
10:37cemerick?
10:37mjwhittthanks
10:39kzarcemerick: Hmm no worries, sorry to nag you. I figure it's worth trying 0.3.0 snapshot see if that helps
10:40cemerickkzar: No worries. :-) 0.3.0-SNAPSHOT should absolutely work — but there are some API changes compared to 0.2.x http://groups.google.com/group/clojure-clutch/browse_frm/thread/36e3bbe52851c6dd
10:40cemerickkzar: definitely report your experience with 0.3.0-SNAPSHOT there if you have a chance
10:42kzarcemerick: Bugger OK lol, will do!
10:43cemerickkzar: yeah, sorry for that; had to make the break to enable various future enhancements
11:04duck1123bah, korma doesn't allow you to define an entity named databases because it doesn't quote it's names
11:05duck1123ahh, I figured out how to get around that
11:10schnorrerspeaking of korma, does it allow making outer joins?
11:15duck1123I think it might only support left joins via the entities, but I'm sure you could use the bits to construct better queries
11:15duck1123I'm just getting started on porting my clj-record code over
11:16schnorrerI must be doing something wrong then
11:18duck1123I think the biggest problem with korma is it's going to make me want to naked-use it, but that will just take discipline.
11:20kzarcemerick: I've replied but it didn't show up in google groups, not sure why. Anyway here's the gist about my problem with 0.3.0-snapshot https://gist.github.com/1351873 . I know you're busy, not asking you to look at it now!
11:22cemerickkzar: just (get-database "clutch_test_db")
11:22cemerick(proper documentation perpetually 'coming soon' :-P)
11:22pyrmultimethods don't support multiple arities, right ?
11:22kzarcemerick: Well the point was that it fails when you give it a map, what if you want to set more options like a password?
11:23meliponehi! how do I get the classpath in clojure? I recall seeing that somewhere ...
11:23pyr,(System/getProperty "java.clas.path")
11:24pyror something to that effect
11:25cemerickkzar: either have a URL with the authentication info in-line, or do e.g. (assoc (com.ashafa.clutch.utils/url "clutch_test_db") :username "foo" :password "bar")
11:25pyr&(System/getProperty "java.class.path")
11:25lazybotjava.security.AccessControlException: access denied (java.util.PropertyPermission java.class.path read)
11:25pyrheh, figures
11:25kzarcemerick: gotya OK thanks
11:27cemerickkzar: there's a URL record in the utils namespace, but it's a little low-level to create directly. Adding some defaults into its map factory function seems like a good idea.
11:28pyrso yes, multimethods can accept multiple arities
11:30pyri'm still not sure how the best way to interact is with a non-threadsafe java object instance is
11:30pyragents are supposedly fine
11:30pyrbut they can induce race conditions
11:30pyr(between send and deref)
11:30pyrso they're only fine for cumulative operations
11:36schnorreruhm, korma seems ignoring the join type param for now
11:36schnorrerevery time I get a left join
11:38schnorrer(select ... (join :right ...)) results in a left join, too
11:52ADWongQuick question: If I have a data structure that looks like this, [[1 2 3] [4 5 6]] how can I convert it to [1 2 3 4 5 6]?
11:52TimMcADWong: The answer is *not* flatten.
11:52TimMc:-)
11:53TimMcADWong: You can (apply concat ...), or avoid producing such a datastructure.
11:53TimMc(for and mapcat being good at that)
11:55konris there already a (between x 1 10) to avoid using (and (> ...) (< ...))?
11:55ADWongTimMc: Thanks for the quick response. Is there anything inherently wrong with the flatten function?
11:56ADWongOh never mind. I see why it doesn't work. Thanks again.
11:56tensorpuddingyou'll need to vec too
11:57TimMcADWong: flatten is bad if you don't know what the elements of your vectors might be.
11:57TimMcIt's kind of overkill too.
11:58fronxkonr: (find-doc "between") says: "No."
11:58tensorpuddingusing (apply concant ...) will return a list
11:59ADWongtensorpudding: I think apply concat is the way to go. Flatten really flattens everything. I only want to flatten the first "layer".
11:59TimMcADWong:Do you need the result to be a vector, or just any ol' collection?
12:00TimMckonr: Why do you want that?
12:00ADWongTimMc: Any collection will do.
12:01TimMccool, no need for vec then
12:01konrTimMc: to avoid adding more lines. Wrote my own now :)
12:01ADWongEven if I needed it as a vector couldn't I just (vec …. ) it after wards?
12:01TimMckonr: you know that (< 1 x 10) is valid, right?
12:02konrTimMc: oh, i didn't know that! Thanks
12:02TimMckonr: it's pretty fantastic
12:02TimMc(I didn't read your original question properly at first...)
12:03TimMcADWong: Yeah, that's what tensorpudding was saying.
12:14rfgpfeifferclojurebot: seen rfgpfeiffer
12:15hiredman~ping
12:18duck1123Does anyone know if in korma there is a simple way to query across relationships? ie A has many B, i have an A and I just want the sequence of B
12:19rfgpfeifferkonr: are you the konrad who wrote clojure.algo.generic?
12:19konrrfgpfeiffer: nope!
12:19tensorpuddingi'm trying to find that ants demo that rhickey made but i can't find it
12:20tensorpuddingthe links for it seem to all be dead
12:20tensorpuddingprobably because it's from 2008
12:22duck1123tensorpudding: https://gist.github.com/1093917
12:28tensorpuddingis this still valid clojure code?
12:28tensorpuddingthanks for the link
12:28duck1123no idea
12:37gfredericksinterop question: I need to generate a bean-style java class with getters and setters. Is the simplest way to do that with a macro that defs a custom protocol with the getter and setter methods and then a type to go with it?
12:42gfredericksor maybe just gen-class...
12:52duck1123gfredericks: the macro would have to know how you're storing state, that would make it a bit difficult
12:52duck1123if you find something, I'd like to know
13:04TimMcditto
13:10gfredericksduck1123: TimMc: it seems like an easy implementation either way: e.g., for the deftype route the macro caller gives a list of field names, which the macro makes the fields of the deftype
13:10gfredericksfor gen-class you can have a "state" variable; I forget the details of that, but I figure that would work too. Maybe I'm not understanding the difficulty?
13:22TimMcgfredericks: I think the difficulty is that we don't know *why* you need a bean, so it's hard to say what the best implementation is.
13:25gfrederickswell I'm hooking into this java interface that for the most part is just a function wrapper, so I have to implement a method. The bean part comes in because if I want my method to be customizable I have to provider setters for fields, which the java will populate before calling the primary method
13:25gfredericksso as a caller of the macro, I'd supply a list of field names and an implementation of the primary method
13:25gfredericksso as long as the field names are visible from the body of my method, I don't care how the macro accomplishes storing the state
13:26TimMcSo, a bunch of one-time setters.
13:26TimMcin place of a constructor
13:26gfredericksyeah, I think if they were one-time it would probably work
13:26gfredericksTimMc: yep. actually now that you mention it I probably have to provide an empty constructor, so does that rule out deftype?
13:27duck1123I could certainly see a dsl to make defining bean-style objects nicer
13:27TimMcand it will only be hammered on in one thread?
13:27gfredericksTimMc: I would expect so
13:27TimMc,(find-doc #bean)
13:27clojurebot#<ExecutionException java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.ClassNotFoundException: bean>
13:27TimMc,(find-doc #"bean")
13:27clojurebot-------------------------
13:27clojurebotclojure.core/bean
13:27clojurebot([x])
13:27clojurebot Takes a Java object and returns a read-only implementation of the
13:27clojurebot map abstraction based upon its JavaBean properties.
13:28duck1123you need some sort of defbean
13:28TimMcyup
13:28gfredericksand the ability to implement interfaces as well
13:31duck1123Times like this, I wish google wave had worked out, it would be nice to throw up a clojure code block and work out a mock-up
13:31gfredericksI think there's an interactive multiuser pastie somewhere...
13:33TimMcMaybe I should throw up an Emacs server... :-)
13:33gfredericksmaybe this is it: http://collabedit.com/sxm4t
13:33TimMcssh + screen + Emacs + swank
13:34duck1123If you could set it up so that you could re-load the vm at the press of a button, that'd be neat
13:35duck1123and/or just lock down all permissions appropriately
13:35TimMcduck1123: follow the link!
13:37patchworkSo, when I get a compile error, how do I know where that happened? The error is specific, but the stacktrace only shows clojure.lang.Compiler errors
13:38TimMcduck1123, gfredericks: Ugh, buggy
13:39TimMchalf my keystrokes from the Chat Here were ending up in the main edit area
13:40TimMcpatchwork: Usually it tells you what file and line number were at fault.
13:40patchworkTimMc: that is what I would think
13:41gfredericksTimMc: yeah it's definitely not the slickest thing...
13:41TimMcpatchwork: What message are you getting?
13:41patchworkUnable to resolve symbol: this in this context
13:41patchwork [Thrown class java.lang.RuntimeException]
13:41theignoratihow do I transform a list into a Java array of strings?
13:41patchworkI will gist the stacktrace
13:42duck1123(into-array String
13:42theignoratithanks
13:42patchworkhttps://gist.github.com/1352421
13:42TimMcugh this thing is so broken
13:42patchworkThere are two entries from the backtrace that refer to my app, but they both refer to line 1
13:43patchworkwhich does not have anything referencing "this"
13:43gfredericksTimMc: okay, not using chat :)
13:43patchworkIs this because I am using swank possibly? I have run into this before
13:44TimMcgfredericks: The DSL should say ^String foo and be done with it -- get and set can be created by the macro.
13:44TimMcgfredericks: Or... if you have an interface that demands a getX, is that going to be a problem?
13:45gfredericksTimMc: definitely. I didn't write that code
13:45TimMchaha, it was duck!
13:45gfredericksoh that duck
13:45duck1123that was earlier ideas I was throwing out
13:45TimMck
13:46gfredericksI like the metadata for type hints. I personally will just use Objects
13:46duck1123I tried to set up a wave, but am incapable of copying the link and pasting it into emacs, it seems
13:46gfredericksgoogle wave still exists?
13:46duck1123yes
13:47duck1123it's a lot slower now
13:47duck1123they must have taken all the servers away
13:48gfredericksI would have set up a terminal for us by now, but I don't use emacs so I'd be embarrassed
13:48TimMchaha
13:48TimMcalso Emacs isn't multiuser
13:48TimMcby default
13:48gfrederickstmux
13:48TimMcmulticursor, that is
13:49gfredericksoh
13:49gfredericksI've never used a multicursor text editor
13:49gfredericksthat would be nifty.
13:49TimMcyou have now
13:49TimMcThere is a multicursor Eclipse plugin that syncs over XMPP.
13:49gfrederickscollabedit: the way of the future
13:49duck1123it's multi cursor if you each were connected to the same emacs server
13:49TimMcOff to a meeting... :-/
13:49gfredericksTimMc: seeya
13:49TimMcduck1123: Oh, nice. Didn't know that.
13:49gfredericksthx for codez
14:18gfredericks#clojure is boring during conj.
14:19Raynesgfredericks: I'm sitting in Atlanta waiting on my flight. :>:
14:20gfredericksRaynes: I'm sitting in my office not going to clojure conj. Which is ironic because I'm close enough to drive there.
14:20duck1123I wish I was at the conj
14:21gfredericksI was there last year. I'm just too busy at the moment.
14:21duck1123I couldn't talk my boss into paying, and can't afford to send myself
14:21gfrederickswhat's the syntax for accessing a public field on an object?
14:22mefestogfredericks: (.field obj) i think?
14:23gfrederickswell if it doesn't work I'll find out eventually
14:23mefesto,(.x (java.awt.Point. 1 2))
14:23clojurebot1
14:24gfredericks(inc mefesto) ; for knowing an example in the std library
14:24gfredericks(dec lazybot) ; for not handling karma
14:24lazybotYou want me to leave karma the same? Fine, I will.
14:24gfrederickslazybot: go away. nobody wants you here.
14:26bhenryanyone here at the sheraton already?
14:26TimMcdevn: Did you get shelter for the 9th yet?
14:26bhenryi want to know if there's a way for conj goers to get around the 10 dollar per day internet charge
14:27TimMcbhenry: Yeah, go to an Econolodge. -.-
14:27TimMcThe cheap hotels have the best wifi.
14:27TimMc s/wifi/internet access/
14:27bhenrytimmc okay i'll map it.
14:27TimMcheh
14:27bhenrythis entire block is under construction
14:28TimMcSeriosuly though, they should be providing complimentary wireless for a con.
14:29gfrederickshotels are weird.
14:29gfredericksI'm not sure where they got the idea to make internet access really complicated.
14:30gfredericksyou'd think they could at least do it as well as coffeeshops.
14:30TimMcExpensive hotels charge for internet because their clients are mostly suits who can get reimbursed for travel expenses.
14:31gfredericksyeah! we're the 99%!
14:31gfrederickss/yeah! we're the 99%!/good point
14:31TimMcThey nickel and dime all their customers because they *can*.
14:32TimMcCheap hotels don't, so they have to provide some perqs for free.
14:32TimMcalso I am back from my meeting
14:32gfrederickshow'd it go?
14:33TimMcboring
14:33TimMcBut there was some construction work going on outside.
14:48cemerickWho needs hotel wifi when there's 4g and tethered phones?
14:49cemerick:-P
14:50TimMcI need to get a data plan...
14:50gfredericksI only have 200mb/mo
14:50devnI'm grandfathered in still under the unlimited AT&T data
14:51devn+ jailbroken iphone = win
14:51gfredericksthis month I unintentionally used 180mb on the first day
14:51devnI'm surprised. I've heard of people getting nastygrams for using too much data under ATT, but I've done 16GB in the course of a week and never heard a peep
14:55tensorpudding16 GB on your phone?
14:55tensorpuddingthat seems pretty excessive
14:55albinothe jar files are kind of big
14:55TimMcall that IRC'ing
14:56tensorpuddingwhich ones?
14:56tensorpuddingthey do add up
14:57tensorpuddingclojure by itself is 3 megabytes
14:59TimMcBiggest object in my .m2 is a 570 MB SDK.
15:00TimMcbut everything else is way smaller
15:05tolstoygfredericks: So far, I've seen them in webnoir. With the recent update, I only see one, so it's getting better!
15:05gfrederickstolstoy: I'm too lazy to even figure out which library is generating them.
15:06gfredericksbut I'm not too lazy to complain about it!
15:06gfredericksor meta-complain about my own complaints!
15:06tolstoyHeh.
15:06duck1123it's gotten a lot better, I switched to 1.3 really early. I only have like 3 left
15:07duck1123I just wish the var warnings were fully qualified
15:08tolstoyOver in the Scala world, the community seems to have gotten better at dealing with upgrades. More likely, lib writers are tired of complaints. :)
15:08tolstoyThis whole splitting apart of contrib seems really promising.
15:09tolstoyOh, whatever. I just like Clojure a whole lot.
15:09gfredericksis there a list somewhere of what clojure 1.4 is going to be about?
15:09duck1123it's a big pain now, but a good thing in the long run
15:15kencauseyI'm feeling really stupid but I can't figure out how to access something like the javadoc function in 1.3.
15:16TimMcit moved
15:16TimMcrepl utils or something?
15:16TimMcclojurebot: Where did contrib go?
15:16clojurebotwell... it's a long story: http://dev.clojure.org/display/design/Where+Did+Clojure.Contrib+Go
15:17TimMchrm, don't see it
15:17kencauseyAre you sure it's contrib? It is in the offical API docs and I can see it in the clojure.jar
15:18kencauseyOr am I misinterpreting the list of namespaces on the left of http://clojure.github.com/clojure/index.html ?
15:20gfredericksTimMc: duck1123: this seems to work and I believe is sufficient for my needs: https://gist.github.com/1352844
15:30duck1123gfredericks: Make it a library. I might have use for that somewhere
15:30kencauseyOK, I don't quite get this, maybe my problem is something is screwed up either with my lein or swank install or something. If I do the basic java -cp clojure.jar clojure.main startup I can use the doc command. But if I clojure-jack-in (within emacs) while in a buffer that holds a project.clj that references [org.clojure/clojure "1.3.0"] and I try doc in the resulting slime connection I get "unable
15:30kencauseyto resolve symbol: doc in this context"
15:30gfredericksduck1123: come up with a clever name for me
15:31brehaut kencausey:(use 'clojure.repl) ?
15:33duck1123gfredericks: (musical.fruit/defbean) ?
15:33gfredericksduck1123: what's musical.fruit?
15:33kencauseybrehaut: I will try that, out of desperation I just wiped my lein install and am refreshing it, thanks.
15:34brehautkencausey: alternatively i think C-c C-d does the lookup for you
15:34gfrederickswait hmm
15:34kencauseybrehaut: Thanks but this doc reference is just an example of an overall problem and not really my focus.
15:34brehautkencausey: the slime repl is different to a lein repl
15:34kencauseyOK, great, more repl types/contexts ;)
15:34duck1123I'm a big fan of naming projects in Lojban. dembi.core/defbean
15:35brehautkencausey: the lein repl brings in a bunch of useful namespaces by default; the slime one doesnt appear to
15:36hiredmanwell, lein repl uses clojure.main/repl
15:36gfredericksduck1123: would a more broadly scoped class-generation library be more useful?
15:36kencauseyThat's OK, really I was trying to figure out how to refer to the appropriate namespaces and nothing seemed to be working
15:36hiredmanthe sawnk repl doesn't
15:36hiredmanwhich is kind of a drag
15:37duck1123gfredericks: probably.
15:38kencauseyOK, well at least doc is now working in the swank repl, I have no idea what went wrong there before. Continuing...
15:38gfredericksduck1123: thank you for alerting me to lojban.
15:38duck1123.ui
15:39kencauseyOK, so back to javadoc for a moment. Am I wrong in thinking that clojure.java.javadoc is in the clojure.jar?
15:39kencausey(again this is for 1.3)
15:40kencauseyif it is should I not be able to refer to the javadoc function as clojure.java.javadoc.javadoc ?
15:42scottjyou have to require it first I think, then it's clojure.java.javadoc/javadoc maybe
15:42raekkencausey: clojure.java.javadoc/javadoc
15:43raekafter running (require 'clojure.java.javadoc)
15:43raek(it is included in clojure since version 1.2)
15:43kencauseyraek: Thanks, my stupidity, among other things, involved that /.
15:45cemerickdevn, gfredericks: I downloaded xcode over sprint 4g some months ago. Faster than my home wifi. I think it was in the GB area.
15:46scottjI think xcode is ~3-4GB
15:46cemerickwhatever it was; sprint ate it up
15:54kencauseyOK, correction. As I mentioned before I reinstalled lein but I also wiped the previously created project and created it anew. Of course lein set it up for 1.2.1 which I failed to notice so my previous mentioned success was with 1.2.1, not 1.3.0 as intended. Changing it to 1.3.0 now requires that I (use 'clojure.repl) to have doc at hand, but it works once that is done.
17:08gfredericksis maven really slow about downloading stuff, or do I have unrealistic expectations?
17:09brehautgfredericks: its simulating the java experience for you
17:09brehautfor each resource
17:09gfredericksI swear it takes it ten seconds to get an xml file.
17:10brehautgfredericks: exactly. it starts a new jvm
17:10gfredericksbrehaut: it can't really be that dumb can it?
17:10brehautgfredericks: its sad that it wasnt obviously a joke :(
17:10gfredericksinorite
17:11tensorpuddingis maven what lein uses?
17:11gfredericksyeah
17:11gfredericksI'm currently getting a full eclipse treatment
17:13gfredericksfor some reason it's not very straightforward for me to get eclipse to update a snapshot :/
17:13brehauteclipse is a system i want to like and use but never can
17:14gfredericksI never use it unless I have to
17:14gfredericksit's definitely nice for browsing java code.
17:15brehautyeah gigantic doesnt begin to describe it ;)
17:15brehauti have high hopes for ccw though
17:16gfredericksI generally can't get into GUI stuff, since it's never clear how to script things, if it's even possible
17:17brehautgfredericks: i generally cant get into the idea that something that is 25 years old is the highest point for a developers text editor ever ;)
17:17brehaut(i nevertheless use emacs, but still)
17:17gfredericksbrehaut: text hasn't changed all that much in 25 years :P
17:17agumonkeyyesterday I discovered how to create menus in emacs, then I remembered the pain to build the simplest menu plugin in eclipse.
17:17gfredericksit's still strings of characters...
17:18brehautgfredericks: but the text we edit isnt :P
17:18gfredericksbrehaut: as programmers we have less of a need for GUIs because we can automate just about anything we can imagine
17:19TimMcIt's nice to have things automated for you.
17:19brehautgfredericks: im not talking about gui or not, it just suggesting that emacs and vi arent the greats though in text editing ;)
17:19TimMcI suppose you could technically hitch a headless Eclipse to Emacs...
17:20duck1123I'd like to see a clojure-based text editor that copies everything good about emacs as closely as possible
17:20duck1123clooj isn't quite there
17:20gfredericksI suppose "automated" and "graphical" are orthogonal?
17:21brehautgfredericks: probabl
17:21gfredericksso why do GUIs exist? so people can use mice?
17:21gfredericksand have information arranged in complex ways?
17:23gfrederickson second thought, I have to go.
17:25clojurebotCool story bro.
18:03arohnerwith midje, is it possible to specify only some of the arguments when testing called count?
18:05duck1123arohner: you can use the anything checker
18:05arohnerduck1123: right, but I want to specify some of the arguments, but not all of them
18:07duck1123I haven't gotten that advanced with midje yet, but cant you mix and match them?
18:08duck1123(provided (called 2 anything) => 1 :times 1)
18:08arohneroh, didn't try that. I will. Thanks
18:13arohnerduck1123: doesn't appear to work
18:15duck1123drats. I figured that would. What's the error?
18:16arohner"You claim the following was needed, but it was never used"
18:16arohnerthen lists the fn I provided
18:40arohnerhttps://github.com/marick/Midje/wiki/Checkers-within-prerequisites seems to have instructions for how to do this
19:31goodieboycould someone recommend a simple way to get http authentication into my noir/compojure app?
19:33zodiakgoodieboy, ring-basic-authentication ?
19:35goodieboyzodiak: yep exactly, thanks!
19:35zodiakgoodieboy, not a problem. fwiw, I started off doing noir, and then I found that ring is almost as simple :)
19:36goodieboyzodiak: i've had that question/thought in my head too.
19:36duck1123if you don't need the level of abstraction that noir provides, you don't have to use it
19:36brehauteven if you want to stick with noirs level of abstraction, its worth the small amount of time it takes to learn ring and its associated tools
19:37zodiakagreed :)
19:50goodieboyyep, agreed
20:44moogatronichigh latency free hotel wifi. =)
20:49mjwhittwoah woah woah, free hotel wifi?
20:49mjwhittall I found was ones that tried to get me to pay
20:50mjwhittmy android phone with unlimited data = free wifi for me ;)
20:59pdk,(* 40 9)
20:59clojurebot360
21:08TimMc,(+ (* 13 28) 1)
21:08clojurebot365
21:09brehautTimMc: are you an accountant?
21:09TimMcand thus my proposal for 13 4-week months and one holiday
21:09TimMcbrehaut: What?
21:09mjwhittclojurebot's most used as... a calculator
21:10brehautTimMc: bean counters like to use a 13 month year because it makes monthly salary payments more managable
21:11bhenrybrehaut: but then quarters are a pain.
21:11brehautbhenry: thats their problem, not mine
21:11goodieboyhow do i select a random element from a vector?
21:11brehaut,(rand-nth [:a :b :c])
21:12clojurebot:b
21:12brehautgoodieboy: ^
21:12goodieboybrehaut: awesome thanks!
21:12goodieboybrehaut: what about shuffle?
21:13brehaut,(apropos shuffle)
21:13clojurebot()
21:13bhenry,(first (shuffle [:a :b :c]))
21:13clojurebot:a
21:13bhenry,(first (shuffle [:a :b :c]))
21:13clojurebot:c
21:13brehautoh. missed a quote. thanks bhenry
21:14goodieboyperfect
21:17brehautgoodieboy: do you know about apropos ?
21:17brehautand find-doc
21:17goodieboybrehaut: no
21:18brehautgoodieboy: apropos returns a list of symbols that match a query
21:18brehaut,(apropos 'part)
21:18clojurebot(partition-by partition-all partial partition)
21:18brehautyou can pass symbols, strings, regexps etc to it
21:18brehaut(doc find-doc)
21:18clojurebot"([re-string-or-pattern]); Prints documentation for any var whose documentation or name contains a match for re-string-or-pattern"
21:18brehautbut you dont want to run find-doc in irc
21:19bhenrybrehaut: what namespace is apropos in?
21:19brehaut(source apropos)
21:19goodieboybrehaut: nice, very nice
21:19brehaut,(source apropos)
21:19clojurebotSource not found
21:19brehautbah
21:19bhenry,(meta apropos)
21:19clojurebotnil
21:19bhenryhumbug
21:19brehaut,clojure.repl/apropos
21:19clojurebot#<repl$apropos clojure.repl$apropos@1c06a6d>
21:20bhenrycool
21:20bhenrygood to know
21:20brehauti think find-doc is in there too
21:20brehautthe only surprising one is javadoc which is in clojure.java.javadoc
21:21brehautalso, in 1.3 doc knows about special forms (although its documentation is brief)
21:21brehaut,(doc let*)
21:21clojurebotI don't understand.
21:22brehaut&(doc let*)
21:22lazybot⇒ "Special: let*; "
21:22brehautthats particular brief.
21:31brehautwhats up with nthnext, and how does it differ from drop ?
21:31brehaut(aside from argument order)
21:33brehautaha, laziness
21:37TimMc,(doc ffirst)
21:38clojurebot"([x]); Same as (first (first x))"
21:38TimMcIt's caar :-D
21:38brehaut:)
21:38TimMcnaughty
21:38brehautat least theres no ffnfnnfnfirst
21:38TimMcthere had better not be a ##(doc fffirst)
21:38lazybotjava.lang.RuntimeException: Unable to resolve var: fffirst in this context
21:39TimMcgood
22:14mjwhittuser=> (super-first "first" [1 2 3])
22:14mjwhitt1
22:14mjwhittuser=> (super-first "ffirst" [[4 5 6] 2 3])
22:14mjwhitt4
22:14mjwhittuser=> (super-first "fffirst" [[[7 8 9] 5 6] 2 3])
22:14mjwhitt7
22:15mjwhittmuah ah ah
22:15mjwhitt</super lame clojure>
22:15callenmjwhitt: you're sick.
22:15mjwhittI appologize
22:15mjwhitthehe
22:15callenmjwhitt: take some medicine.
22:15brehautmjwhitt: looks like a narrow reinterpretation of zippers?
22:15callenmjwhitt: also, it's a birthday tomorrow!
22:16mjwhittthis is the first day I have ever actually written any clojure myself
22:16mjwhittso it's a "hey I did *something*" day
22:16brehautmjwhitt: congrats
22:16callenmjwhitt: well done sir. too bad you can't make a reader macro to intercept functions of the form [f]+irst
22:17callenso, how often do ex-CL'ers bitch about that here?
22:17mjwhittyeah, that's what I wanted to do at first, especially since I'm used to ruby / method-missing / metaprogramming
22:17callenmjwhitt: Clojure has a way of approaching and doing DSLs
22:17callenmjwhitt: and I think it's fairly elegant, but it ends up looking like arbitrary data modelling your problem in the form of S-Exps
22:18callenmjwhitt: this is as compared to when I wrote a matlab dialect in CL for somebody
22:18callenmjwhitt: and I mean that quite literally. he had a repl where he could enter most valid matlab expressions and get a sensible answer. I bet that code was still faster than R.
22:18callenmjwhitt: I don't like Ruby DSLs, tbqh.
22:18mjwhittheh, interesting
22:18callenmjwhitt: it's not powerful enough to be worth the sacrifice you get in uniformity.
22:19callenmjwhitt: if I'm going to pick one, I'd rather pick Clojure or CL
22:19callenClojure being more uniform, CL being absurdly powerful but nobody can read each others' code.
22:19callennever got the hang of scheme macros.
22:20mjwhittyeah, I'm attempting to warm up to clojure
22:20callenmjwhitt: been learning it for 1.5-2 years. I still feel like a fucking moron. I think you're smarter than me.
22:20mjwhittI use ruby almost exclusively at work
22:20mjwhitthaha
22:20ieureSucks, bro.
22:20callenmjwhitt: my brain was broken by CL and a couple other languages, that combined with my *_* @ invoking Java code has made me slow at getting proficient in Clojure.
22:21callenmjwhitt: I do Python, Java, C/C++, Pig, and JavaScript at work.
22:21callenmjwhitt: most of the Java is hadoop code.
22:21callenieure: I know right?
22:22ieureI've been writing Scala. Language is alright, but the tools are a shitshow.
22:22jodaroi was just getting into some scala today
22:23jodarodigging through finagle
22:23callenieure: that's about what I guessed. I don't like a lot of things about it.
22:27callenthe reason I'm not interesting in Scala is largely the same reason I wasn't interested in Scala
22:28callenbeing an industry standard is going to make me wile away the hours I spend at home on something.
22:28callenis not*
22:28brehauti assume that argument was less circular in your head than when you typed it out
22:28callenthe second scala was supposed to Java
22:28callenthe fact that I equate the two in my head is represented in the mistake.
22:28callenthat was more illustrative than I intended.
22:31callenit...may be tea time...
22:32mjwhittit's bed time for me... time to dream of parenthesis
22:32mjwhittI'm looking forward to talks tomorrow
22:32jodaroheh
22:32callenmjwhitt: parentheses
22:33mjwhittwhoops, see... I need sleep
22:33mjwhitthehe
22:33jodarowill there be stuff on the interwebz streaming from the conj?
22:33callenVerizon claims my iPhone has used 1.7TB this month
22:33callenI...doubt their claims.
22:34jodarofor us poor bastards that couldn't make it?
22:34callenI mean, I know I stream a lot of music, but it's not FLAC.
22:34callenjodaro: I'm sure there will.
22:34brehautjodaro: i havent heard anything about it happening
22:34brehautjodaro: i recall that google chipped in for the clojurescript presentation bandwidth as a special thing
22:35brehautjodaro: but i imagine a number of the presentations will be recorded and posted after the fact (like they were last year)
22:35callenthey support CLJS even though it's going to buttfuck Dart?
22:35callenthat's pretty funny.
22:36jodarolooks like the twitters can't decide behind #clojureconj and #clojure_conj
22:36callenI don't think underscores are all that common in hashtags, not sure why people would do that.
22:37callenCan you pull up a regex of hashtags on Twitter?
22:37ieureBecause people is dumb.
22:40jodaroor at least or them together
22:40callenjodaro: Twitter has smarter coders than most, but I doubt making their fellow coder happy was a high priority for that interface.
22:40callenjodaro: pity.
22:40callenjodaro: I could write a mash-up that implemented the aforementioned :P
22:41jodaroin Scala?
22:41callenHAW HAW
22:41callenyou're hiiiilarious son.
22:41callendon't quit your day job >:<
22:41jodaroheh
22:41callenmore likely, Noir // Flask.
23:19semperosI've been getting my head around logic programming, been converting some "regular" functions into ones that return goals
23:20semperosI'm trying to understand the "right" way to make relations out of simple functions that return boolean values that, unlike nilo or emptyo, can't be unified with a simple Clojure datastructure
23:20semperoshttps://gist.github.com/1354083
23:20semperosis an example, where I have a function that depends on a call to Java function which returns a boolean
23:21semperosI do (== (visible? foo) true) to return a goal, but I've not seen any examples of unifying on true