#clojure logs

2011-10-27

00:00sdeobaldduck1123: Awesome. Thanks.
00:02mrh0057cemerick: I really don't like the closure set of libraries but I bet closure api is probably not going to change munch with google heavy investment in GWT and Dart.
00:16mdhany reason why clojurescript wouldn't compile this: (defn f [x] (case x true (recur false) false nil))
00:18michaelr525,(defn f [x] (case x true (recur false) false nil))
00:18clojurebot#<Exception java.lang.Exception: SANBOX DENIED>
00:19mdhdenied!
00:19michaelr525err
00:19michaelr525does clojure compile this?
00:19mdhnicely
00:20michaelr525what
00:20michaelr525's
00:20michaelr525the syntax
00:20michaelr525for the other bot?
00:20michaelr525&(defn f [x] (case x true (recur false) false nil))
00:20lazybotjava.lang.SecurityException: You tripped the alarm! def is bad!
00:21RaynesNeither one of them are stupid enough to allow that, unfortunately.
00:21michaelr525you mean smart enough to be stupid enough?
00:25michaelr525there has to be M-x clojure command that just starts a repl
00:28duck1123michaelr525: this is what I use https://gist.github.com/1318774
00:28duck1123I by no means claim the binding is good
00:32amalloyduck1123: C-c <single letter> is reserved for your personal use
00:32amalloyi use C-c s for slime-connect
00:33amalloymichaelr525: you can easily test this by not using defn
00:33amalloy&((fn f [x] (case x true (recur false) false nil)) true)
00:33lazybot⇒ nil
00:33duck1123I know, the <f9> is a historical thing. I've tried binding it to other letters, but I'm used to it now
00:34duck1123I have C-c s bound to slime selector. C-c s r ir my repl
00:35michaelr525for this to work there has to be a swank instance running, no?
00:35amalloymichaelr525: yes, which is what M-x clojure-jack-in is for
00:36duck1123yes, if you want it to start swank for you, that's what clojure-jack-in is for. I always have a screen session bound to F12
00:36amalloyduck1123: a screen session of what?
00:37duck1123I have GNU screen running in a terminal in Guake. (hides shows on F12)
00:37amalloyi was getting more at: what does this have to do with slime/swank
00:38duck1123My point was more that I almost always have a running swank session in the terminal
00:38duck1123I guess it really all depends on what type of apps you're writing
00:42michaelr525amalloy: but to run clojure-jack-in you have to be in a project
00:43michaelr525and i just want to start a repl - see what i mean?
00:43amalloymeh
00:43michaelr525probably not so hard to implement
00:43duck1123but it's one of those things that really shouldn't be encouraged
00:44michaelr525why?
00:44clojurebothttp://clojure.org/rationale
00:44duck1123it causes people too many problems that they wouldn't have if they just created a project
00:46michaelr525i guess you are right but this is an implementation detail :)
00:46duck1123"just create a repl" raises the question of which version? Any contrib libraries, any other libraries. lein new does 90% of it anyway
00:46michaelr525and i just want to start a repl
00:46duck1123classpaths are hard. let's go shopping
00:47amalloyclojurebot: The classpath is hard. Let's go shopping!
00:47clojurebotIk begrijp
00:49technomancymichaelr525: if you don't want any deps you can do ~/.lein/bin/swank-clojure followed by M-x slime-connect
00:50technomancyas soon as you want to add deps you should start a project though
00:50michaelr525cool
00:51michaelr525how do i bind it to F12 in emacs?
00:51duck1123(global-set-key (kbd "<f12>") 'slime-connect)
00:51Iceland_jackmichaelr525: (global-set-key (.. damn
00:51duck1123fair warning, F12 don't go through ssh
00:52duck1123err.. fkeys
01:49lancepantzis anyone aware of any comet / long polling implementations in clojure?
01:52michaelr525lancepantz: maybe websockets with aleph
01:53lancepantzi actually already have a websocket implementation
01:53lancepantzthey don't support websockets
01:53lancepantzfair enough though, those details are just getting ironed out
02:47KnekkebjoernI have a list (a b c) . Is there a simple way to stringify it into "(a b c)" ?
02:47Knekkebjoernalternatively, how can I serialize and deserialize code/data easily?
02:48raekKnekkebjoern: use pr-str and read-string
02:48Knekkebjoernraek: thanks!
02:48raek,(pr-str (range 5))
02:48clojurebot"(0 1 2 3 4)"
02:48raek,(read-string "(0 1 2 3 4)")
02:48clojurebot(0 1 2 3 4)
02:49raek(as you might have discovered, 'str' does not do the right thing if you want to serialize data)
02:52Knekkebjoernit does not
03:02sploopbefore I implement a redundant fn, I wanted to check with you guys to see if there is a library fn for extracting values from a nested map, where the keys form a path. Anyone know if that exists?
03:03sploopsomething like (get-path {:people {:name "bill"}} [:people :name])) -> "bill"
03:05ejacksonsploop: try (-> mymap :k1 :k2 :k3)
03:05sploopthrush it through
03:06ejacksonyup
03:06terom,(get-in {:people {:name "bill"}} [:people :name])
03:06sploophadn't thought of that, nice.
03:06clojurebot"bill"
03:06sploopawesome, thanks. I knew there had to be something in core already...
03:23amalloysploop: there's not much redundant to implement, though. get-in is just (reduce get m ks)
03:30Blktgood morning everyone
03:31sploopamalloy: yeah, that's basically what I did on the first cut, but I'm real sticky about trying to use what appears to be idiomatic. If the concept of tracing a path through a nested associative data structure is agreed tobe (get-in), then I'll defer
03:32sploopBlkt: good morning
03:49mindbender1please what problem does parallel programming and concurrency solve?
03:50Chousukemindbender1: the problem of being able to utilise multiple separate processing units.
03:50Fossimindbender1: was that a rethorical question?
03:50Chousukemindbender1: and/or being able to perform tasks simultaneously without interrupting either one.
03:51mindbender1I've read stuart's book, chouser's book , etc I can't just get my head around it
03:51mindbender1Chousuke: that's in a multi processor enviroment
03:51mindbender1?
03:52Chousukemindbender1: it can be, but it's not limited to just that.
03:52mindbender1So do I have to worry about not implementing it in my codes?
03:53Chousukedepends on the problem you're solving. Though in general it's good to at least consider concurrency issues when you code
03:53mindbender1Where can I get good materials on dead brain examples of concurrency application?
03:53Chousukeand since individual processors are unlikely to get significantly faster, not writing parallel code is ignoring a source of performance
03:54mindbender1ok
03:54Chousukeconcurrency and parallelism are not easy, but Clojure provides you with good tools... At least better than most languages :P
03:55mindbender1Chousuke: I'll be glad to experience those first hand
03:55ChousukeI think nowadays the most common example of concurrency is in UI code though
03:55raekmindbender1: clojure was designed to make the step from non-concurrent to concurrent simple. basically, the style you are forced to write code in in clojure makes it fairly simple to make that step
03:55mindbender1Chousuke due to multiple events?
03:56mindbender1raek: ok
03:56Chousukeyou want to be able to update the UI and react to input while doing processing on some data without interrupting the data processing
03:56Chousukeso you need concurrency
03:56Chousukeif you have a single thread then your UI simply will not work while any processing is going on
03:56Chousukeand your users will complain
03:57mindbender1But I rarely see that happening with most UIs I've experienced
03:57raekin "traditional" programming languages, programs do not "just work" after adding more threads the way they can in Clojure
03:57Chousukethat's because most UI toolkits nowadays force you to do UI operations on a separate thread
03:58mindbender1raek: So Clojure makes multi-threading easy with concurrency tools?
03:58Chousukethere's concurrency going on though the inattentive programmer might not notice (and consequently is likely to write broken code due to false assumptions.)
03:59pyrhi
03:59Chousukemindbender1: multi-threading is never easy, but Clojure's tools are powerful
03:59pyrare there release notes for sub libraries
03:59pyri wonder what's changed in tools.logging 0.2.3
03:59mindbender1Chousuke: so that means clojure makes it easy?
03:59Chousukemindbender1: and immutable data structures remove the main worry in writing concurrent code, which is accidental modification of global state
04:00Chousukemindbender1: I'm wary of the word "easy"
04:00Chousukemindbender1: I don't think it can ever be easy no matter how good your tools are
04:00mindbender1Chousuke: not as in not thinking
04:01raekmindbender1: Clojure makes the concurrency bit (multiple "actors" that need to modify common resources) simpler by eleminating unrestricted mutation
04:01mindbender1Chousuke: what are the kind of things you worry about when doing concurrency?
04:02Chousukemindbender1: two concurrent threads accessing the same (mutable) data without synchronisation mainly
04:02mindbender1raek: please just a real life example will do
04:02raekmindbender1: traditionally: locking. Clojure as another approach than locking
04:03raekmindbender1: say you want to modify multiple collections in a complex manner atomically
04:03raekthis is hard to get right with locks
04:03mindbender1raek: ok
04:03Chousukemindbender1: Clojure has several datatypes called references that are mutable containers for immutable data.
04:04mindbender1Chousuke: yes I'm following
04:04Chousukethe difference between references and plain mutable data is that references have strictly defined APIs/behaviour for concurrent access
04:05raekthe most basic example would be to have two accounts and an operation that moves money from one to the other. when you observe the account you want the amount of the transfered money to either be in account A or B, but never in both or none
04:05Chousukedifferent references have different semantics (for different usecases)
04:06mindbender1Chousuke: understood
04:07Chousukemindbender1: in most languages, all you have is a single kind of "reference" (direct access to the object) which is unmanaged and can be mutated at any time
04:07raekin traditional programming languages you have to remember to lock the accounts. if you forget it your program just behaves strangely *sometimes*.
04:07mindbender1raek: ok
04:08raekin clojure, it's as simple as (def a1 (ref 100)) (def a2 (ref 200)) (defn transfer [src dest amount] (dosync (alter src - amount) (alter dest + amount)))
04:09raekevery access (read or write) to a ref in a transaction will happen atomically
04:09sploopnot unlike a database
04:09ChousukeI prefer not putting dosyncs inside functions
04:09Chousukekeeps them explicit at the top level
04:10mindbender1raek: (dosync) takes care of that right?
04:10raekmindbender1: yes
04:11mindbender1raek: so what are the selling point for refs
04:12Chousukemindbender1: it establishes a transaction that lasts until its scope ends. if you do (dosync (transfer foo bar 50) (transfer bar zonk 50)) then both of the transfers must succeed or neither does
04:12mindbender1Chousuke: where would you rather have (dosync)?
04:12Chousukemindbender: outside the transfer function
04:12raekmindbender1: Rich Hickey (the creator of Clojure) gave a presentation on why these things matter and what problem Clojure solves: http://blip.tv/clojure/clojure-concurrency-819147
04:13Chousukemindbender1: it's dynamic so having a dosync inside transfer won't affect my example, but if you forget the dosync and it's not in transfer, you get an error
04:13raek(I agree with Chousuke about the dosync placement)
04:14Chousukemindbender1: if you know anything about sql, refs give you similar transactions except for data in memory.
04:14mindbender1Chousuke: exactly what I was thinking
04:15mindbender1more like constraints
04:15Chousukemindbender1: in addition to refs there's another reference type called atom that just gives you an atomic read operation and atomic update. no synchronisation
04:16Chousukeit's good for eg. incrementing counters without worry about race conditions
04:16mindbender1Chousuke: please code sample
04:16mindbender1for atom
04:17Chousuke(def a (atom 0)) then do from as many threads as you want: (swap! a inc) ; a's value will stay correct even if two threads do the inc operation exactly at the same time
04:18Chousukewhich is not true for uncontrolled mutation :)
04:18Fossii guess it's harder to understand these solutions if you don't understand the problems
04:18Chousukemaybe
04:18ChousukeI don't really know a good tutorial to issues with concurrency :/
04:19mindbender1Chousuke: that's why I had to ask here
04:19ChousukeAt one point I envisioned starting a blog or something where I write short essays/tutorials about various problems and how Clojure helps solve them
04:19Chousukebut I never got around to it :P
04:19mindbender1I want to see the problem and I want to see the solution according to Fossi
04:20Fossibasically if you don't have locks and such thread A reads for example 0
04:20mindbender1Chousuke: I'll be glad about that
04:20Fossithin the threads get swapped and thread B is on
04:20Fossiit reads 0, increases, so the counter is 1
04:21Fossithen the other thread will write 1 as well
04:21Chousukesince it has already read "0"
04:21Fossithere's gotta be some graphs about this on the intertubez, but i also lacked the mojo to find them :>
04:21Chousukeand in the end you end up with the value 1 in the counter instead of the correct 2
04:23mindbender1Chousuke: did such problems burn you at any point in time?
04:24Chousukenot yet, fortunately. I haven't written very complicated multithreaded code.
04:26Chousukebut if I ever have the need to, I hope I'll be able to use Clojure :P
04:27mindbender1What language do you use mostly?
04:28raekmindbender1: you might want to browse around for explanations of race condition bugs. this class of bugs is especially nasty... :-)
04:28ChousukeLately I haven't written much code at all. :/ need to get back into programming
04:28Chousukeas well as finish my studies :P
04:29mindbender1raek: ok
04:29mindbender1Chousuke: ok
04:30mindbender1raek: I remember looking up something on race conditions but couldn't get the hang of it..
04:30Fossimindbender1: even though most problems here at my work are inherently easy to paralellize (webpage requests) you sometimes need to deal with such problems
04:30Fossiand *yes* they are a big pain in the ass
04:30mindbender1I'll try again... I need to be sure I leave no stones unturned
04:31Fossibecause they alse happen "randomly"
04:31Fossiand are veary hard to find
04:31mindbender1Fossi: what kind of issue does it result in.. downtime?
04:31Fossiall kinds of things, sometimes downtimes
04:32Fossiif the state of your application gets thrown into a state you didn't expect, that could happen
04:32raekmindbender1: race conditions often result in incorrect behaviour of the code and are especially hard to reproduce in tests
04:33Fossimostly it's things like wrong orders, screwed up data in the database, all kinds of things really
04:33raeksince they depend on timing
04:33mindbender1raek: please more example situation
04:33Fossiit can happen that a process begins to run wild of not programmed defensively enough and fill up the harddrive or such
04:33mindbender1Fossi: ok
04:33Fossithen you can be in trouble as well
04:34Fossitake a logging system for exampre
04:34Fossiif you have 2 shop instances and write values into them that you wannt to aggregate
04:34Fossiif you do that in a bad way and screw up a downtime could occur
04:35Fossior at least you could loose all your data
04:35raekmindbender1: here is an article about race conditions from a security perspective: http://www.ibm.com/developerworks/linux/library/l-sprace/index.html
04:35clgvI have a collection of items that I parsed from a file that represents a table with 4 columns. it's a really ugly copy so I used string/split with \n\t and space. if all columns would be filled I could use (partition 4 %) to get the table. but some rows have only the first column filled. what is the easiest way to do that with standard clojure operations? is there one? otherwise I have to fall back to loop-recur...
04:36Chousukemindbender1: traditional bugs are "easy" because they're just some part of the program not doing what it's supposed to do. race conditions are nasty because all parts of the program might be completely correct by themselves, but because of concurrency they might end up doing their thing on some bit of data *at the same time*, and you end up with the wrong result.
04:37mindbender1Fossi: do you think clojure helps avoid these problems completely or to some degree?
04:37Fossithe biggest problem arising from such bugs is most of the time imho not the direct result, but also the aftermath it causes
04:38Fossibecause if such a bug leaves your application in a state you didn't expect to ever occur lots of other things go to hell
04:38Fossiespecially with mostly mutable languages like java
04:38mindbender1Fossi: that sounds scary
04:38Fossiand it's very hald to find out what caused the problem in the first place
04:38Fossisince it's most likely not reproducible
04:39Chousukemindbender1: immutable data does away with most of those problems. if you work with immutable data there is no way you will ever modify it concurrently and thus you can run as much concurrent code as you want :P
04:39raekFossi: functional programming with immutable data is always threadsafe
04:39Fossiit is. there is lots of safeguarding you have to do to avoid that in a classical business java app
04:39mindbender1Fossi: because such things may be triggered by complex events which may not be repeatable?
04:40Fossiyes, and not all the time. take for example the counter problem above
04:40Chousukemindbender1: immutable data also removes worry from single-threaded programming too
04:40Fossiit might be the counter for your database connection
04:40raekmindbender1: yes, they are triggered by certain complex interleavings of events
04:40Chousukemindbender1: you will never have to worry about what a function does to your data :)
04:40Fossiso if you only have 5 connections to the db at any time, you loose connections one by one
04:40Fossiso what happens next, is that the webservers have more traffic
04:40mindbender1Chousuke: that sounds interesting
04:41Fossibecause they have to wait longer for the database
04:41mindbender1I'm such a believer in modular programming
04:41Fossithen the loadbalancer fails or something and your site is down
04:41Chousukemindbender1: a pure function is the ultimate in modular programming
04:41Fossinow try to find that error that caused the problem in the first place
04:41Chousukemindbender1: it depends only on its arguments and nothing else.
04:41mindbender1Fossi: I'm following
04:41Fossiyou wan't be looking in your db code
04:41Fossi*won't
04:42mindbender1Chousuke: exactly.. that how functions should behave.. like slaves
04:42Fossithen even if you somehow find out that that must have been the problem, you don't know why it happened
04:42Fossibecause most of the time everything is fine
04:43Fossiit only happens if two webserver try to make/release a new connection to your database
04:43Fossiwhich will of course be mostly during deployments
04:43mindbender1Chousuke: but it seems not everyone share such views
04:43Fossithen you start questioning your new features nistead etc pp
04:43Fossiso it can take days to find such a problem
04:44mindbender1Fossi: that leads to been inefficient with time
04:44mindbender1which I hate
04:45Fossiand downtime might be worse
04:45Fossi:)
04:45mindbender1hmmm
04:46Fossiclojure makes it easier to get things like this right in the first place
04:47Fossiand having mostly immutable objects helps much as well
04:47Fossibecause errors/bad state don't spread so wide
04:47mindbender1Fossi: I see the point
04:47Fossithen, i haven't coded nearly as big systems with clojure as i have with java
04:47Fossibut it feels much better
04:48mindbender1raek: any link to where I could download that hickey's presentation?
04:55raekmindbender1: I don't know if blip.tv have download links...
04:56raekI'm not aware of any other locations for that video
04:56mindbender1raek: they don't
04:56mindbender1I need to get this video on my hard disk
04:59AWizzArd|workAnyone here who works with Artifactory + Leiningen?
05:04ibdknox_~anyone
05:04clojurebotJust a heads up, you're more likely to get some help if you ask the question you really want the answer to, instead of "does anyone ..."
05:07thorwili recently switched to ubuntu 11-10. trying to run my appengine-magic project, i get http 500, "Directory does not exist: /media/sda4/app_engine/tlog-clj-gae/file:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/pulse-java.jar!/../war"
05:08thorwila search so far suggests that pulse-java.jar has to do with pulseaudio
05:11thorwili have no need for pusleaudio support. any ideas how i either get that missing jar / get it to be found if present, or make it work without?
05:11AWizzArd|workibdknox_: this "anyone" does not apply in this case. What the bot replied is just personal experience of some people, not a law of nature.
05:11ibdknox_AWizzArd|work: huh?
05:12thorwillaws of nature are just personal experiences of a whole lot of people
05:13ibdknox_Seems to apply... you didn't ask a question that has any useful answer
05:13ibdknox_the best you'd get is "yes"
05:14Fossimaybe that's what he wanted to know :>
05:15ibdknox_perhaps :)
05:18thorwil/usr/lib/jvm/java-6-openjdk/jre/lib/ext/pulse-java.jar does exist
05:19thorwili have not the slightest clue how that monstrosity of a path "/media/sda4/app_engine/tlog-clj-gae/file:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/pulse-java.jar!/../war" comes into being
05:44thorwilso on starting the server, the following hierarchy is created in my project dir, if not already present: http://paste.pocoo.org/raw/498911/
06:39fliebelTo those of you writing books in LaTeX: is that MacTeX really the way to go? It looks old and big.
06:41ejacksonfliebel: i just emacs it
06:41ejacksonC-c C-c compiles w/ pdflatex, open that in Preview and it keeps up to date with the pdf. Happy Days.
06:42fliebelejackson: emacs? it really is an complete os
06:42fliebelso you do need to install pdflatex.
06:42ejacksoni do, but you can get away without, the C-c C-c will turn it into a dvi
06:43ejacksonemacs can view that inline, but ultimately you want a pdf anyway so I don't muck about
06:44fliebelthe thing is, pfdlatex is part of that 1gb mactext thing.
06:45ejacksonhmm, I'm sure there are other ways to get it, can't recall offhand though
06:45ejacksonpdflatex way precedes mactex
06:49fliebeleverything seems to point back to mactext or tex live
06:52ejacksonugh... just install the hairball to get Mac working binaries, but work in emacs. Whats a gig between friends ?
06:52ejacksonor at least, that's what my lazy self would do
06:57fliebelejackson: Yea, I'm downloading the gb now. I wish I had fiber internet.
06:58ejacksonHah. raw nerve with me right now, been unable to convince my ISP to lay it down my driveway. Its on the road, but I'm too far from that road...
06:59ejacksonright now enjoying fabulous 1Mbps intertweets.
07:01ejacksonfliebel: whatcha writing ?
07:02fliebelejackson: I have a friend who worked for my ISP. He said that if I;d dig a hole from Deventer to Loenen, he'd but a cable in it. :(
07:03fliebelejackson: I'm trying to compile thinking forth for kindle.
07:03ejacksonnice one.
07:03ejacksonyou been reading Fogus' blogs then :P
07:03fliebelejackson: Yes, but I learned about Forth pre-perlis
07:04fliebelThe trouble is that I emailed the maintainer, and he was like "yea, lets make a kindle version", but then he did it with very small print.
07:05ejacksonI guess doesn't compile to .mobi ?
07:05fliebelEither I don;t understand LaTeX or we don;t understand each other.
07:05fliebelno, PDF
07:05ejacksoncrapola
07:05fliebelso i said I read about latex2html, bt he said it wasn;t possible.
07:05ejacksonoh no, you don't want to do that, ugliness results
07:06fliebelAnd in his signature, it says "If you want it done right, you have to do it yourself"
07:06ejacksonlol
07:06ejacksononce you have TeX setup it'll be trivial to increase the font size for the pdf
07:06fliebeloh, so what do you suggest? Just make the PDF work?
07:07fliebelhe muttered something about the text size being connected to some other things that'd break, but I'll see
07:08ejacksonsounds like you're on the right track. Get Latex, alter the font size tag, and see what happens :)
07:08ejacksonLaTeX is one of my favourite things, its fabulous.
07:09fliebelI probably don't do it justice by looking at it as verbose markdown.
07:10ejacksontrue statement.
07:48andrewcleggis there a clojure equivalent of python's defaultdict?
07:48andrewcleggi.e. a map that will instantiate a key with a default value on first read on an unknown key?
07:49andrewcleggI guess that's hard to reconcile with immutable structures
07:50ejacksonandrewclegg: only in the special case of nil :P
07:57licenserhmm anyone familiar with clojureQL here?
07:59ejacksonlicenser: somewhat
07:59licenser:) I noticed that I start running into huge problems as soon as I get past a very simple query and I wonder if it is me doing something wrong or clojureql just not being that mature yet?
08:00ejacksonthere are some niggles, but I have got some pretty huge queries working.
08:02licensermy main problem is 'in' and functions in general it makes a huge mess I needed to write half my query with hand which kind of takes the fun out of clojureql :(
08:03licenserhttps://gist.github.com/f8a9496b3173dffc62c2 <- that is what I run into
08:05ejacksonhmm, I construct those as where ... or ... or ... or....
08:05ejacksonnot the nicest
08:07ejacksona la https://gist.github.com/1319377
08:08licenserbut that isn't really nice :P
08:08ejacksoni know
08:09licenserI think I stick with my in
08:10ejacksonnot really nice either :p
08:11clgvis there no (in ... [min max])?
08:11licenserno not in the clojure way but the SQL that comes out is likely a good bit more performant
08:11licenserclgv: in does not work with functions
08:11clgvI meant, that you dont have to enumerate every value but specify only the min and max value
08:12licenserbetween I think
08:12licenserat least in SQL not sure if there is in sql
08:12clgvoh you skip the 17 in your example ;) didnt see that before^^
08:13licenser:)
08:13licenserokay I feel silly (disj {:a 1} :a) does not work
08:14licenserdissoc ah dissoc
08:16clgv;)
08:41licenseris there something like a seq product function? as in (* [1 2] [:a :b]) == [[1 :a] [1 :b] [2 :a] [2 :b]]?
08:42clgvlicenser: yeah that looks like a cartesian product
08:43ejacksonjust for I guess
08:43licenseryap but I don't find that, there is supposed to be in contrib combinatorics but I don't find that sadly
08:43clgvlicenser: there is an implementation of that in contrib
08:43ejackson,(for [a [1 2] b [3 4]] [a b])
08:43clojurebot([1 3] [1 4] [2 3] [2 4])
08:43licenserejackson: nice!
08:44clgvlicenser: there as well http://clojure.github.com/clojure-contrib/combinatorics-api.html#clojure.contrib.combinatorics/cartesian-product
08:44clgvbtw: is there any comprehensive survey page for "the new contrib"?
08:44licenserclgv: so I did not manage to call that
08:49duck1123clojure.algo.combinatorics
08:50duck1123s/algo/math/
08:50clgvduck1123: yeah thats the new standalone project of the previously mentioned^^
08:51duck1123clgv: right, I was just mentioning that there was a new version
08:51clgvgood :)
09:21snurmineshould i use javacc for parsing "sql"-queries or is there some more preferable way to do it in Clojure?
09:25AWizzArd|worksnurmine: you could have a look at fn-parse.
09:36babilenHi all ... I find myself to be using something like "(filter (comp not nil?) xs)" once in a while. It doesn't feel completely right. Are there better ways to deal with nil in sequences? is this idiomatic?
09:43duck1123babilen: identity should be better for you
09:43duck1123but you want false to pass, don't you
09:44hugod,(doc keep)
09:44clojurebot"([f coll]); Returns a lazy sequence of the non-nil results of (f item). Note, this means false return values will be included. f must be free of side-effects."
09:47babilenhugod: yay! That looks good
09:48ejacksonhugod: nice one !
09:49joegallodoes anybody here have the @ClojurePgh twitter handle?
09:49joegalloIf so, the pittsburgh clojure users group would like to get in touch with you.
09:50dpritchetttechnomancy: installing emacs24 from github solved my packaging issues unsurprisingly. thanks for the help yesterday
09:51babilenduck1123: Thanks for the identity trick, I'll use that. (I don't have another predicate I want to filter by)
09:52duck1123for being somewhat useless on it's own, identity is great as a predicate
09:54snurmineAWizzArd|work: thank you
09:55hugodsnurmine: also https://github.com/cgrand/parsley
09:56fdaoud,(keep identity [1 false 2 nil 42])
09:56clojurebot(1 false 2 42)
09:58snurminehugod: thank you
10:01dpritchettanyone in here happily using a vim mode for emacs?
10:01dpritchettthe last time i tried e.g. viper it was too slow to bother with
10:02dpritchettthat might be my fault of course
10:03AWizzArd|workYes, parsley is also very nice I must say, and currently maintained.
10:04babilendpritchett: evil is quite OK
10:04AWizzArd|workThe thing is that fnparse can work on arbitrarily token sequences, while parsley can work only on Strings.
10:05dpritchettthanks babilen
10:07babilendpritchett: http://gitorious.org/evil/pages/Home (The query "evil vim emacs" is certainly not optimal)
10:21ejacksonfliebel: :)
10:24fliebelejackson: TeX worked, btw. But the guy was right, some smamples fall of the page if you make the text bigger of the page smaller.
10:24ejacksonrats.
10:24ejacksonTeX is very arsy about where it puts figures, you really cannot tell it "put it here dammit"
10:25ejacksonusually they don't vanish though...
10:25ejacksonjust get moved to where TeX things they should go
10:25fliebelnu, just overflow of the page
10:26fliebelBut he said he would decouple the scale of the figures and the text, and hten it'd work
10:26fliebelBut now I can at least start reading.
10:27fliebel&(javax.quantum.Universe.)
10:27lazybotjava.lang.ClassNotFoundException: javax.quantum.Universe
10:27fliebelI bet it's singelton.
10:28ejackson:D
10:58bhenrybest SMTP library… go!
11:02andrewcleggbhenry: guess that wasn't the torrent of responses you were hoping for
11:02bhenryandrewclegg: haha
11:02TimMcI am fairly sure I saw someone using something clled "smteepee" in here yesterday. It has a funny name...
11:02bhenrysfteepee
11:02bhenrybut if there is an equivalent of that i'm all for it, because sfteepee is great
11:03bhenryTimMc: aww doesn't look like it
11:04fliebelejackson: I see what you mean. TeX moved all figures to the end of the chapter :(
11:04TimMcsfteepee, right
11:04TimMcnever mind
11:05TimMcjavax.mail.smtp.oh.god.shoot.me.now
11:05ejacksonfliebel: yup, you can put in modifiers, like [htb], around the figures, but TeX scorns them :(
11:06fliebelTimMc: What are you doing with javax.mail?
11:06fliebelejackson: Oh, interesting...
11:07TimMcfliebel: Nothing! I was just suggesting that there is probably a standard (and terrible to work with) Java lib for SMTP.
11:08fliebelTimMc: https://github.com/manutter51/nonomail/
11:37PPaulcan i use js libraries with clojurescript?
11:38lucianPPaul: yes
11:47zackmarilHow does one force a LazySeq to eval?
11:47mefestozackmaril: doall or dorun
11:48mefestozackmaril: doall when you want all the results, dorun for forcing side-effects but no need for results
11:48RaynesOr avoid getting a lazyseq in the first place, if possible.
11:49RaynesFor example, use ##(doseq [x [1 2 3]] (println x)) rather than ##(map println [1 2 3]).
11:49lazybot(doseq [x [1 2 3]] (println x)) ⇒ 1 2 3 nil
11:49zackmarilNot entirely sure where the lazyseq is getting induced actually.
11:49lazybot(map println [1 2 3]) ⇒ (123nil nil nil)
11:50dnolenzackmaril: most of the sequence fns produce lazy sequences (map, filter, interleave, concat etc.)
11:50zackmarilThen I am working mostly with lazy sequences then.
11:51zackmarilCan you have nested lazy sequences?
11:52zackmarilI am running doall on a variable and the result is of type LazySeq
11:55zackmarilSolved. I had some weird nesting of maps going that resulted in strangeness
12:05andrewcleggI'm using (:name (meta func)) to get the name of a function
12:06andrewcleggbut this returns null for multimethods
12:06andrewclegganyone know the right way?
12:07Raynesandrewclegg: You can look up the metadata on the var.
12:08Raynes&(meta #'print-method)
12:08lazybot⇒ {:ns #<Namespace clojure.core>, :name print-method, :line 3253, :file "clojure/core.clj"}
12:08Raynes^ print-method is a multimethod.
12:09andrewclegghmm, maybe it's the particular one I've got that's the problem
12:09andrewcleggexpt in clojure.contrib.math
12:09andrewclegg(meta expt) returns nil
12:38jcrossley3is there a recommended clojure test mocking lib?
12:39technomancyjcrossley3: binding is popular =)
12:39danlarkinclojure.core/binding
12:39technomancydanlarkin: oooooh
12:39technomancyo/
12:39danlarkingah you beat me by a second
12:40jcrossley3technomancy: danlarkin: thanks. like this? http://blog.n01se.net/?p=134
12:41technomancyjcrossley3: that blog post references working around a feature of Clojure that has thankfully been removed.
12:41hiredmannot true, :static still exists
12:42technomancyis it the same thing?
12:43hiredmanyes
12:43hiredmanit's use is just frowned on(a lot)
12:43technomancyand it's not automatically applied to a bunch of useful functions
12:44hiredmanit is, actually, a lot of core is :static
12:45technomancyhuh; I guess it's been a while since I did any core reading
12:45hiredmanmy bad, it does look like it is commented out in the compiler
12:46dnolenhiredman: yeah :static doesn't do anything anymore.
12:46hiredman(thank god)
12:53jcrossley3technomancy: binding works much better than i thought mocking would. :)
12:54hiredmanwell, binding only sort of works in 1.2 and will fail in 1.3+
12:54hiredmanyou want with-redefs
12:57jcrossley3hiredman: regardless, i like having a "built in" solution
12:59hiredmanwith-redefs in 1.3 came about as a response to someone asking rhickey about mocking now that vars aren't dynamic by default, "he said what do you mean?" they said "well we can't use binding to mock anymore" he said "are you crazy? you shouldn't be using binding for that" (all paraphrased of course)
13:02gtrakha, hiredman do you have a reference for that? I always enjoy those kinds of responses from him
13:04hiredmanit was at the conj
13:29mefestoin noir, what benefit does defpartial have over just a normal function that returns elements for hiccup to process?
13:30mefestoi see that the macro wraps the body in `(html ~@body) ... just wondering if this is better?
13:35mefestowell not "if it's better" but more the why of it
13:45bhenryis there a class that will catch any errors? i could use a finally, but want to capture the class of the exception in E so i can use it in the expr*
13:46bhenryno matter what the exception is
13:47fliebelbhenry: reflection?
13:47raekbhenry: Throwable
13:47raekit is the superclass of Exception and Error
13:48bhenrycoool.
13:49bhenryso if i replace Exception here https://gist.github.com/98aaad781edaee81ab81 with java.lang.Throwable it will catch everything?
13:49bhenryraek: ^^
13:49raekbhenry: yes
13:49bhenryraek very nice. thank you
13:50raekyou don't need the java.lang. prefix
13:51bhenryhmm. it's not emailing and it's not doing what it's supposed to. i think it's missing that catch, but i don't know why
14:28jodarooff topic and thoroughly entertaining: http://gizmodo.com/5853729/
14:29fdaoudfollowing Rich's "Simple made Easy" talk, I'm trying to tease apart this ball of mud into nice straight unbraided strings, but I don't know where to start
14:29fdaoudhttps://gist.github.com/1320378
14:29fdaoudthere has to be a nice way to isolate the conditions from the function calls, and chain everything together in a nice way
14:29amalloyfdaoud: i don't think mud is composed of strings :P
14:30jodarowell unless you are talking quantum physics
14:30fdaoudamalloy: sorry, got my analogies mixed up ;)
14:30jodarobut as nice as clojure is, i don't think it has quite reached that point
14:31Squee-Dexcuse my very sensational newbiness, but when i do ([1 2 3] 2) i get the last entry in the collection, because as i understand it, this particular list type also acts as a function
14:31Squee-Dbut (`(1 2 3) 2) is a cast error because PersistantList doesn't behave as a function
14:32fdaoudSquee-D: [] is a vector
14:33Squee-Dfair enough, makes sense mathematically too. but why is a PersistantList not functionally similar?
14:34amalloybecause lists don't have fast random access
14:34Squee-Dthat makes sense
14:35Squee-Dbut they are sequences right?
14:35Squee-Dthat is i can use the sequence functions on them
14:35amalloyyes
14:35Squee-Dta
14:35amalloysuch as nth, if you don't mind slow random access
14:35Squee-Dsorry, really am very new to this...
14:35Squee-DI'll worry about speed later, I'm just trying to come to terms with the syntax first.
14:36Squee-Dbut its useful information, thankyou :D
14:37Squee-Dhttp://www.4clojure.com/problem/19 I was doing this practice question
14:39Squee-Dand the golf thing i think makes it rather poor, it needs scoring for things like optimisation i think.
14:39Squee-Di look at other solutions and of course i see how to use the least chars, not how a veteran may approach the problem.
14:40TimMcamalloy: Could you set it up to say "Golf League" next to usernames when showing solutions?
14:40amalloyTimMc: what do you mean?
14:41Squee-Dto identify people who are solving for 'in least char count'
14:41TimMcexactly
14:41Squee-DStill, I think a discuss page or a 'the experts say' might be helpful to newbs, especially for those 'easy' questions
14:42amalloythere's not really a way to identify that? for the non-trivial problems i usually don't maximize for brevity, but for the trivial ones i do. what would you put next to my name, TimMc?
14:42Squee-Dnonetheless, it's great to have problems to solve, makes me research
14:43TimMcamalloy: I think it might still help.
14:43amalloySquee-D: fwiw i just changed my solution to #19 to how i would write it if the last function didn't exist
14:43TimMcamalloy: How many of the (say) Top 50 users are not in the Golf League?
14:43amalloyTimMc: no idea
14:43drewris clojure.contrib.duck-streams/slurp* somewhere in 1.3 contrib world yet? I'm failing at finding it
14:43amalloynot that easy to find out, either
14:44TimMcdrewr: clojure.java.io I think...
14:44technomancydrewr: clojure.core/slurp does what slurp* used to do
14:44hiredmandrewr: I believe slurp can do most of what slurp* could do now
14:44amalloyslurp is in core. what does slurp* do?
14:44technomancyI think they forgot to document that though
14:44TimMcdrewr: duck-streams didn't make the transition to 1.3, so it is a bit scattered.
14:45Squee-Damalloy that's quite a function :D
14:45drewrtechnomancy, hiredman: ah yes, I knew I was missing something obvious
14:45amalloySquee-D: eh?
14:46Squee-Damalloy for an easy question, it introduces heaps of new ideas to me. especially if-let.
14:46Squee-DNot complaining, just proves my point i think. the solutions page can be a bit of mix bag of good and bad.
14:47fdaoudperhaps my question was too vague
14:47hiredmanSquee-D: mixed bag by what criteria?
14:47TimMcSquee-D: Also note that amalloy has shadowed rest with a local. Potential pitfall.
14:47hiredmanI dunno that I would ever use code I found on 4clojure for anything in practice
14:48amalloyTimMc: i introduce pitfalls on purpose so that i have practice leaping over them (only half-joking here)
14:48hiredmanso it that sense it is all bad
14:48Raynesamalloy: Guess everybody is at his mercy.
14:48hiredman(no mix)
14:48Squee-Dhiredman yeah and it's a great learning tool if i remember to not consider the solutions as 'common' or 'good' practice
14:49hiredman*shrug* it's a great learning tool up to a point, beyond which you are better of writing real code that solves a real problem
14:49hiredmanoff
14:49TimMcSquee-D: It's a good way to find out about core functions.
14:49Squee-DTimMc if it's not too annyoing. 1. what's shadowing and 2. whats the pitfall?
14:49Squee-DTimMc yeah
14:50Raynes&(let [rest identity] (rest [1 2 3]))
14:50lazybot⇒ [1 2 3]
14:50Raynes^ That is shadowing.
14:50TimMcSquee-D: "rest" is a function in clojure.core. By creating a local binding called "rest", you are making it impossible (well difficult) to use the clojure.core version in the enclosed code.
14:51TimMcSquee-D:You are also setting up a situation where you might accidentally call the local where you intended the clojure.core version.
14:51fdaoudMaybe this could be a starting point. How would you chain together several function calls such that the result is the first function that returns a non-nil result?
14:51TimMcfdaoud: some
14:51Squee-Dhiredman yep well my first real code project is to replace a reactive system written with ruby eventMachine, pub/subbing with amqp, storing in redis/memcache or similar, and ocassionally talking to psql... I'm still quite a ways from using that as a practical project.
14:51RaynesBut if you know you aren't going to do that, then I wouldn't worry about it. Just keep it in mind if you ever have a chance of calling it. If I didn't shadow in my code, I'd kill myself trying to name locals.
14:52Squee-DOnly been at clojure for one day :D
14:52amalloyfdaoud: chain them? that implies passing the result of one to the next, but if they're returning nil there's nothing to chain
14:52TimMcfdaoud: Oh wait, you want the function...
14:52Squee-DTimc now i get shadowing. thanks.
14:53TimMcSquee-D: Like Raynes said, it's fine to do, just be mindful.
14:53hiredmanSquee-D: and you think rewriting functions in clojure core in the least amount of characters is going to get your to that place?
14:53Squee-Dhiredman no. that was actually my point.
14:53hiredman(seems unlikely)
14:53fdaoudTimMc: I think you're right. something like (some identity [(f1 x) (f2 y) ...])
14:54amalloyfdaoud: no, then you're calling them all regardless, which it sounds like you don't want to
14:54hiredmanso what is the problem with the ruby evenmachine version that you are going to solve with clojure?
14:54fdaoudamalloy: perhaps chain isn't the correct term. each function is independent, but in a certain order and when one returns nil, go on to the next
14:54Squee-DI was saying the golf league attitude causes a lot of those solutions to be terse to the exclusion of good practice. but i think we've covered the topic now :D
14:54amalloy(some #(%) [#(f1 x) #(f2 y) ...])
14:54amalloySquee-D: i agree, and i wish it weren't that way. but characters are easy to measure, so we measure them :P
14:55fdaoudamalloy: that will make it lazy?
14:55TimMcfdaoud: But you want f2, not the result of (f2 y)...
14:55fdaoudTimMc: actually I do want (f2 y)
14:55antares_Squee-D: just curious, are you replacing an amqp/Ruby system with amqp/Clojure? I maintain AMQP clients for both :)
14:55TimMcOh! OK.
14:55amalloyfdaoud: you'll probably be happier if you read the code and understand it rather than having me answer whether it's lazy
14:56Squee-Dhiredman I am taking clojure into consideration for 2 reasons. 1. i can live debug. 2. Our current code is cumbersome and innellegant. it needs a heavy refactor (the previous team did not have the same standards around elegance that this team does)
14:56fdaoudamalloy: you are absolutely right
14:56Squee-Dantares_ considering it.
14:56fdaoudamalloy, TimMc, thanks
14:56hiredmanamalloy: maybe some kind of distance from a the clojure.core implementation, or some kind of mean
14:57antares_Squee-D: ok. Then maybe take a look at https://github.com/michaelklishin/langohr if you decide to go with Clojure.
14:57fdaoudamalloy: so really you are telling _me_ not to be so lazy. :D
14:57amalloyhah. indeed
14:58Squee-Dantares_ a previous dev wrote https://github.com/visfleet/pipeline_toolkit which seemed nice on paper, at the time. but it's a nightmare to orchestrate
14:58fdaoudI definitely need to sit down and figure this stuff out. I think I got overwhelmed from listening to both Rich's and Jim's talks back-to-back.
14:58Squee-Dantares_ rather than patch it up with dsl's for orchestration, i figure at the very least we should just have full ruby process per 'pipeline' rather than this chaing of piped processes
14:59Squee-Dfdaoud that's pretty much the command pattern in fp?
14:59antares_Squee-D: with Clojure the chaining part will be significantly easier. I kind of do chaining with just functions and threads, much more manageable than processes.
15:00Squee-Dantares_ i also expect a boon from being able to attach the repl to the process.
15:00Squee-Dbecause debugging evented code in ruby is pretty difficult.
15:01Squee-DI prefer not to have to debug, but the system has a lot of open ends that could be abused, and are routinely abused.
15:01antares_Squee-D: absolutely, that was another change I personally am very happy about. And tools like VisualVM will help, too.
15:01amalloyhaha sounds kinda like 4clojure, Squee-D
15:02Squee-Dit's quite strange to be able to talk like a modern architect at one level with you fellows, and like a complete gumby when it comes to anything clojure related.
15:03Squee-DI love the days you feel both reasonably intelligent and drooling-special-needs in the same breath.
15:03Squee-DI dont get enough of them
15:03mdeboardTrade bodies with me, that's my every day
15:04Squee-DI spend considerably more time mentoring than being mentored. It's not a good balance.
15:05Squee-Dantares_ so whats the several layers of DSLs that langhor is avoiding?
15:05fdaoudSquee-D: to me the command pattern in fp is just a function
15:06timvishercould anyone tell me how to add a file to the classpath in leiningen?
15:06amalloytimvisher: usually the answer is "don't do that"
15:06timvisheri'm trying to add log4j.properties
15:06antares_Squee-D: it is just a small layer of Clojure on top of the Java client. I am also incorporating good things from amqp gem into it over time. The goal is to make error handling & recovery great (Java client does not really offer much by default, like many other clients) and provide ways to implement common patterns by *just* function composition.
15:06timvisheri like asking these sorts of questions lately, it would seem. :)
15:06raektimvisher: put it in resources/
15:06amalloyi keep my .properties files in ./resources
15:07Squee-Dfdaoud wait isn't anything not a type 'just a function' :P
15:07antares_Squee-D: so my code that uses Langohr pretty much has no macros or DSLs in them. But heavily uses clojure.core/comp and a couple of other small libraries of mine that compose functions.
15:07Squee-Dantares_ when did you first start with fp?
15:08antares_Squee-D: 1.5-2 years ago, with Scala. I have been using functional-ish idioms in Ruby and Java since 2006 or so.
15:08raektimvisher: that directory is not created by default, but leiningen will include it if it exists (you may need to restart the process after creating the dir, though)
15:08antares_Squee-D: it is much easier to pick up than you think. Much easier than get really good at DSLs, for example.
15:08timvisherraek, amalloy: working on that. :)
15:09Squee-Dantares_ im pretty tight with ruby meta
15:09antares_Squee-D: and certainly the cost of experimenting is lower compared to DSLs
15:09Squee-Dantares_ i'm sure i'll change my tune, but i guess what scares me is i feel like im reaching the top of my imperitive game
15:10timvisherhmm, I'm just seemingly incapable of setting up tools.logging...
15:10Squee-Dantares_ so fp feels like a very steep climb at the moment
15:11Squee-DSo is there such a thing as 'Clean Code' for functional programmers?
15:11antares_Squee-D: I know what you mean. I also know a few people who kind of grew out of Ruby/DSLs and found Clojure very worth using because they have a ton of additional options to choose from (in addition to DSLs) without going through all the Scala/ML type system jazz even when it does not help much.
15:11Squee-DScala,i think, has an even worse leaning curve, its TIMTOWTDI on steroids whenever i look at it.
15:12antares_Squee-D: I think learning about Haskell is the best way to absorb FP ideas. And I have no plans to use Haskell at work, just learning many things from it. Apparently it influenced Clojure more than people think.
15:12Squee-DI did start with haskell, but ditched it for Clojure as soon as i saw the jvm .
15:13amalloyis there something wrong with there being more than one way to do it? clojure heavily encourages functional programming and sequences, but often there are a number of ways to express the same idea
15:13antares_Squee-D: haskell has many ideas about function composition that you can use from Clojure. But in haskell they are very much at the core so you absolutely cannot not notice them.
15:13Squee-Damalloy it can get burdensome. conventions, obvious patterns and recognizable patterns assist the programmer
15:14dnolenantares_: Squee-D: I think Standard ML is a better place to start IMO. In Haskell you have to deal w/ ubiquitous laziness and monads.
15:14Squee-Ddsl's are nice in that it's code for programmers. if you approach DSL writing with a strong ethos of high-usability, you can make daily tasks much less arduous
15:14antares_amalloy: I think Scala has a bit of a bad reputation in this regard, often undeserved.
15:14antares_dnolen: agreed. OCaml or F# are "smaller" yet many ideas are basically the same.
15:15amalloyeg, a little toy in that neighborhood: you can write (foo (bar (baz sam))), (-> sam baz bar foo), or even something like (foo (-> (baz sam) bar)) depending on what you want to emphasize - they're semantically identical
15:16Squee-Dthe same is true of a lot of languages. like python. But the 80/20 rule is to find a readily readable pattern for a desired outcome. composing functions and dsls are both means to that end.
15:16Squee-Dthe example you give i can read fairly easily, as a novice.
15:17Squee-Dand omg in ruby you can do things in a lot of different ways. What I found with Scala tho, is a lot of projects that were not showing any care for the next guy to read the code.
15:18Squee-Dantares_ and i could be giving Scala undeserving flack here.
15:18Squee-Dit just felt that way whenever i tried to accomplish something.
15:18antares_Squee-D: to get a feeling of how function composition can make your code drastically simpler and shorter, take a look at https://github.com/michaelklishin/validateur. It is by no means finished but it is like 6-7 times shorter than the original Ruby version. And Ruby is considered a concise language.
15:19antares_Squee-D: and also you can add any kind of validator you want, each validator is just a function. So they are trivial to test, compose and reuse.
15:19fdaoudantares_: what's with the French in naming Clojure projects? (not that there's anything wrong with that)
15:19fdaoudValidateur, Noir, Moustache, et quoi encore?
15:20antares_fdaoud: I am out English names for just about anything. Langohr is German and I have a bunch of libraries named after Italian drinks (like Limoncello) ;)
15:20bhenrymoustache was written by a french guy right?
15:20chouserI think cgrande is German
15:20Squee-Doh i cant wait for chinnoto
15:20fdaoudI'd guess Christophe Grand is Fernch
15:20fdaoud*French
15:21fdaoudJ'en suis presque certain.
15:21redingerYeah, I thought he was French, too
15:21bhenrycgrand.net is in french
15:21Squee-Dantares_ yeah so im still so un-lispy that i'd rather read ActiveRecord::Validations right now :D
15:23fdaoudhe's not impressed with GWT; "the Maven presentation was well done despite the PC spontaneously rebooting" hehe
15:23fdaoudjcromartie, the man
15:23jcromartiehey
15:24jcromartieyou flatter
15:24chouserI don't think cgrande.net has anything to do with our cgrande
15:24bhenryour cgrande got cgrand.net
15:24chouserour cgrande is actually cgrand :-)
15:24bhenryhaha
15:25chouseroh, I see. cgrand.net is also french. Hm.
15:25redingerHe's definitely flying to the Conj from France. :)
15:26chouserSee, I originally assumed he was Franch, but thought I was disabused of that notion at the previous Conj. Hm.
15:26fdaoudyeah it's Grand not Grande
15:26Rayneschouser: Isn't cgrande.net spanish?
15:26fdaoudGrand means Tall
15:26RaynesI'm not much for languages.
15:26RaynesSpoken languages, anyway.
15:26fdaoudGrande means Tall woman
15:26TimMcantares_: I'm going to start naming things after the scientific names of plants and animals
15:26redingerRaynes: Now that's funny
15:26antares_Raynes: looks like Catalan to me
15:26bhenrycgrande.net is catalan according to google
15:27TimMcWhy not cgrande.cat, then? :-)
15:27Squee-DReading validateurs code, I find myself looking for classifications and local state for anchor points. It feels like snow crash.
15:28raekI find it amusing that the two of the most famous french clojurians are called "Grand" and "Petit"
15:28Squee-DAnyone remember having a "a-ha i'm no longer decoding the code, i'm reading it" moment? I want that
15:28antares_raek: hahaha
15:29antares_Squee-D: you will be there in a couple of weeks. Clojure Programming from O'Reilly is the best place to start, I think. The Joy of Clojure is your ultimate destination ;)
15:29Squee-Dokeedokes
15:30Squee-Dthanks for your time guys
15:31Squee-DI go do some 9-5 stuff now :D
15:31Raynesredinger: I'm all about funny. I plan to tape a whoopie cushion to my back so that I can even be funny when I faint before giving my talk at the conj.
15:32fdaoudantares_: I don't do rough cuts so impatiently waiting for its release, still a month or two to go..
15:32redingerRaynes: Sounds like a riot. Hopefully the other Geni guys are brining smelling salts
15:32RaynesHopefully.
15:32RaynesI'll just call amalloy up to hold my hand if I get scared. <3
15:33redingerhe should prepare some kind of magic show act to entertain the crowd
15:35amalloyi'll reimplement some of the clojure.core functions in as few characters as possible
15:35amalloythe crowd goes wild
15:54gtrakis it possible to steal the counter-clockwise repl and use it as a external tool on normal java projects, with auto-complete and such?
15:55gtrakI managed to do it manually with just the clojure jar, but the repl is very lacking
15:58amalloygtrak: cake repl has autocomplete
15:58amalloyotherwise, rlwrap probably does most of what you need
15:59gtrakyea, i'm working in eclipse, it's console is full of suck
15:59gtraki'll check out rlwrap
16:00gtrakit sucks working in java-land
16:16Squee-Dantares_ you sure you meant the oreilly book? Its yet to be published. There's a prag bookshelf one
16:18fdaoudSquee-D maybe he got the rough cut
16:18fdaoudthe prag one has a second edition coming up btw
16:18Squee-Dperhaps. just wanted to be certain of what he was recommending
16:18fdaoudalso clojure in action is coming out in about a month
16:19Squee-Dyeah i might just dive in with the other manning one
16:19Squee-DJoy
16:19fdaoudI'm about halfway through Joy, it's excellent
16:25moominHi, I'm hoping someone can help me with another variable resolution problem.
16:25moominThis may be seriously leiningen specific.
16:25chouserI personally recommend Joy. You can probably guess why. ;-)
16:25moominI've got a variable called handel.config/port-override
16:26moominI've got a hook that attaches to ring
16:26moomin(a prepend)
16:26moominThis then changes the value of the variable.
16:27moominIf I check the value within the hooks file, it's changed.
16:27moominBut when it actually runs, it's unchanged.
16:29moominCould anyone explain to me what I'm doing wrong here?
16:31bloopThis is probably the most common question here, so I'll ask carefully: What's the best link on list vs vector? :)
16:33moominDon't know of one, I'm afraid. Biggest observations are that vectors have fast nth access and conj puts values at the end.
16:33Squee-Dchouser: i hope you got at least 50cents from my purchase
16:34Squee-DPublishers are notoriously cheap
16:34fdaoudchouser: you and fogus did a fantastic job
16:35fdaoud(cue chouser to say "it was all me, fogus just piggybacked") ;)
16:35fdaoudSquee-D: actually it's 25cents because he has to split it with Fogus
16:36Squee-Dnah i hear fogus get's $1.10
16:36Squee-Dbut dont tell chouser
16:38moominMore generally, is there a way to detect whether or not your code is running within leiningen?
16:41antares_Squee-D: I sure meant the O'Reilly book. The pragprog one is outdated and has low signal/noise ration in my opinion. It was the 1st book on Clojure so it caters to absolute noobs heavily.
16:41antares_*ratio
16:42Squee-DThe O'Reilly one is due in december
16:43redingerantares_: The prag one has a rewritten second version in beta right now
16:43mefestomoomin: this may not be the best way but when run in leiningen the env var LEIN_VERSION is set
16:44fdaoudthere's one more book in the works I believe
16:45antares_redinger: I know. I feel that it won't change its target audience, though. I may buy it either way :)
16:45fdaoudno starch press?
16:45antares_Squee-D: I have O'Reilly Safari subscription so I read the rough cut version :)
16:45amalloyfdaoud: Raynes's book?
16:45redingerfdaoud: There's Raynes book and Amit's book
16:45Squee-DOh i havent had a safari sub in a long while, it was a money sync, i kept ordering books and not having time to read them
16:45fdaoudAmit's is Manning's Clojure in Action, so yeah amalloy I think you're right. That one is meant for beginners, yes?
16:46Squee-Dsink*
16:46dpritchettDo I need to do anything to emacs24 to get really detailed colors with clojure-mode?
16:46antares_Squee-D: there is also Practical Clojure from apress that I like. Clojure in Action, I did not finish reading.
16:46dpritchetti seem to remember there being more variety the last time i used this
16:46Squee-Dgoing to see how i get along with Joy, although it's aimed hi
16:46fdaoudhttp://meetclj.raynes.me/
16:46RaynesI really need to rewrite that text.
16:47RaynesJust a big ol' block of long-windedness.
16:47dpritchettmine looksl ike this http://i.imgur.com/63jzy.png and its not too exciting
16:47fdaoudRaynes! How's your book coming along?
16:47RaynesSmoothly.
16:47RaynesStill far, far from being done.
16:47Squee-Doh i want.
16:50Squee-DLearn you haskell made me feel ok to feel dumb
16:51amalloydpritchett: you want to customize your faces
16:51bhenrydpritchett: http://i.imgur.com/7W7MF.png
16:51dpritchettyeah bhenry that's more like what i had in mind
16:51amalloythough i don't care for rainbow parens, personally
16:52dpritchetti don't really need rainbows either, but the string literal is the same color as defn and all the other stuff
16:52bhenryamalloy: they don't matter if you have paren-highlighting on, but i imagine you want at least one of those things.
16:52dpritchetti have paredit on too fwiw
16:52amalloybhenry: nope, no thanks
16:53amalloyhaving it highlight the matching paren when i close one is enough for me
16:53amalloywith paredit, at least
16:53bhenryamalloy: what are you a robot?
16:53amalloybhenry: http://i.imgur.com/d63Op.png is mine, but perhaps a bit too high-contrast for some
16:53dpritchettin other news, newlines are for sissies
16:53Squee-DThat i can read
16:54dpritchettthat looks nice amalloy!
16:54brehautamalloy: your terminal is a window into 1992!
16:54Squee-Di code for sissies, like me
16:54amalloydpritchett: i started with color-theme and installed tty-dark, then customized the colors for several of the faces
16:55Squee-Dwhats the font, looks like anonymous
16:55dpritchetti'll need to mess with the faces i guess, amalloy
16:55amalloyit's uh, whatever is default on linux
16:55dpritchetti just typed in your abort-transaction function
16:55dpritchettand my exception didn't get a special color like yours does
16:55amalloyDejaVu Sans Mono apparently?
16:55hiredmanMensch!!!
16:55Squee-Dyeah that sounds like a default
16:56hiredman(we are talking about fonts right?)
16:56brehautincidentally, the ubuntu mono is quite nice. maybe not quite as good as inconsolata, but it has bold and oblique faces
16:56Squee-Dhiredman oooh not bad
16:57amalloydpritchett: clojure-mode sets faces for a bunch of different semantic things (eg, classes), but the default colors for many of those are the same
16:57RaynesI <3 DejaVu
16:57dpritchettwhere would i go to recolor the faces?
16:57amalloydpritchett: M-x customize-face
16:57hiredmanhttp://robey.lag.net/2010/06/21/mensch-font.html <-- look at those huge angle brackets
16:58dpritchettthats cool hiredman
16:58fdaoudRaynes: don't change your book cover :)
16:58amalloydpritchett: if point is on a form, customize-face defaults to customizing whatever is in control of that form
16:58dpritchettsweet, you read my mind
16:58amalloyfor java interop, it's apparently font-lock-preprocessor-face
16:58fdaoudI'd love to write a book focused on clojure web development
16:59RaynesMy book will have a chapter on web development with noir.
16:59brehauthiredman: mensch is good. thanks for the pointer
16:59fdaoudgreat to hear Raynes
17:00fdaoudI'm hoping there's some good web stuff in cemerick's book too
17:01brehautfdaoud: i understand that there might be some good SQL stuff from brian carper, which is tangentially web stuff
17:02fdaoudbrehaut: that might be interesting
17:02brehautfdaoud: otherwise, what sort of web stuff do you want? theres a wide range of good material available for free
17:04aperiodictaking the discussion back 8 minutes, I have never wanted for another monospace font since discovering inconsolitas
17:05fdaoudbrehaut: what do you use for serious clojure web development?
17:06brehautfdaoud: i use the ring ecosystem. particularly moustache and enlive (although there are times when i think hiccup might be more appropriate)
17:06brehautfdaoud: i pick and choose other libs as needed
17:08fdaoudbrehaut: cool. so typically it's ring, then either compojure or moustache, and finally enlive or hiccup, yes?
17:08brehautfdaoud: yes. if you want some more handholding, webnoir collects things together and is a little more prescriptive, but its just a layer on top
17:10brehautfdaoud: webnoir also has a strong set of docs and tutorials on its project's website
17:10fdaoudbrehaut: thanks.. the tools have evolved since I last wrote a webapp with clojure, back then it was pretty much just ring and compojure, and I used Velocity for templating
17:10TimMcaperiodic: Inconsolata
17:11TimMc(to be precise)
17:11dpritchetti just use consolas
17:11TimMcdpritchett: THat's the MS one, right?
17:11dpritchettit's not *perfect* but it's good enough to not bother looking further afield
17:11dpritchetti think so TimMc
17:11dpritchetti guess i'm using a different one at home on my mac
17:11brehautdpritchett: does consolas have true bold and oblique faces?
17:12dpritchetti am not enough of a typesetter to be able to answer that brehaut
17:12dpritchettmaybe i use menlo on my mac, not sure. it's running snow leopard and i poked around til i found one
17:12dpritchettmaybe inconsolatas
17:12fdaoudbrehaut: on linux anyway, the answer is yes
17:12dpritchettinconsolata i mean
17:15aperiodicTimMc: ah, thanks. I've never heard it out loud so it's hard to remember how it's pronounced, thus spelled.
17:15TimMcIt's pretty nice.
17:16aperiodicI really like it
17:17aperiodicI am using the variant with straight quotes and apostrophes, though
17:17fdaoudI keep going back and forth between consolas and monaco
17:18fdaoudsometimes droid sans mono
17:21technomancyno terminus fans?
17:22fdaoudused to be, but it doesn't work well on large monitors
17:23technomancylarge monitors or high DPI?
17:23fdaoudboth I guess
17:23fdaoud2x27" 1980x1080
17:24hiredmanhah!
17:25hiredman2560x1440 is nicer, I mean
17:25fdaoudmy favorite in the terminus days was vt100
17:25technomancyI don't think it has much to do with the display size, just the density.
17:26fdaoudI'm sure you're right
17:27fdaoudhiredman: how much do those go for?
17:28hiredmanit was $800 or $900
17:28fdaoudok.. over my budget, I paid $500 for the pair!
17:29fdaouddual monitors are a must
17:36fdaoud$2500 on monitors?
17:36fdaoudwhat exactly are you hired for? ;)
17:37srididiomatic way to call a function N times and accumulate the results in a collection?
17:37sridthis doesn't work - (map #(rand-nth choices) (range 100))
17:37amalloyrepeatedly
17:38brehautfdaoud: http://fishbowl.pastiche.org/archives/pictures/matrix-architect.jpg
17:38amalloyfdaoud: software. if you hire someone for (say) $100k a year, and can increase their productivity by 25% at a cost of $2500, that's a thousand percent return on investment
17:38srid,(repeatedly 10 #(rand-int [1 2 3]))
17:38clojurebot#<ExecutionException java.util.concurrent.ExecutionException: java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to java.lang.Number>
17:39amalloyit's silly to skimp on those things
17:39hiredmanoh, I paid for the monitors my self, they are not matching
17:39technomancyI'd buy a number close to 25% for the second monitor. the third and fourth... meh.
17:39srid,(take 10 (repeatedly #(rand-int [1 2 3])))
17:39clojurebot#<ExecutionException java.util.concurrent.ExecutionException: java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to java.lang.Number>
17:39fdaoudamalloy: I'm not talking about skimping on # of monitors, but for $250/monitor is decent, no? is it necessary to get a $900 monitor?
17:39TimMc,(doc rand-int)
17:39amalloytechnomancy: fortunately i have a 900% margin for error in my calculations :P
17:39clojurebot"([n]); Returns a random integer between 0 (inclusive) and n (exclusive)."
17:40hiredmanmy 17" and 23" predate my current gig
17:40technomancyeven with a second monitor it depends on what you're doing
17:40srid,(repeatedly 10 #(rand-nth [1 2 3]))
17:40TimMc,(take 10 (repeatedly #(rand-int 3)))
17:40clojurebot(2 1 2 3 3 ...)
17:40hiredmanI work from home so it falls under home improvement
17:40clojurebot(2 2 2 0 2 ...)
17:40technomancyI don't miss external monitors nearly so much when I'm not doing web work
17:40TimMcclojurebot: Out Of Order!
17:40clojurebotPraetor: The ordering is usually such that (partial ...) is useful. :-)
17:41amalloyi just use one monitor because i'm not very good at utilizing the second
17:41chewbrancafdaoud: depends on how big of monitors you want, 30" monitors are just now getting into the $900-$1100 range
17:42TimMcamalloy: I have a standing workstation and a 1920x1200 monitor. Where would I *put* another one?
17:42amalloyTimMc: arrange them in a V shape
17:42chewbrancapersonally I can't stand even numbers of monitors, because then they aren't symmetrical, as your center of vision would be at the border where the two monitors connect
17:42TimMcI guess I could put them in portrait mode.
17:42fdaoudchewbranca: ok. I have 2 computers, one with 2x21" and one with 2x27". Personally I find the 27" too big. The 21" have the same resolution so are nicer IMO.
17:43fdaoudall were in the $250 range
17:43chewbrancafdaoud: ahhh nice
17:43llasram`chewbranca: Oh god. Thanks a lot. It's never bothered me before, but now I can't unsee it!
17:43chewbrancafdaoud: oh I agree, I picked up 3 24" monitors from costco (btw best place to get monitors) for $199 each
17:44technomancymy external monitor is too heavy to go in portrait orientation
17:44hiredmanhttp://www.biscade.com/office/ (not me, I live in envy)
17:44technomancyoh, uh... #firstworldproblems
17:44chewbrancallasram`: hahaha yeah that's why odd numbers of monitors are key
17:44jweissclojure.data/diff is nice, but i'd like to be able to reverse it to get the path i gave to update-in to make the change in the first place. i am sure it is possible, but having trouble figuring it out
17:44chewbrancaonly problem with multi monitors now is that they're all widescreen, so you end up with extra triple wide wide screen
17:44dnolenany opinions about the following for high-performance property access? http://dev.clojure.org/jira/browse/MATCH-4
17:45fdaoudchewbranca: you're right, I'd prefer 3 "not wide" monitors
17:45chewbrancaI'm currently sitting on 5940x1080 res, which don't get me wrong, I love the horizontal screen space, but it lacks on vertical space for code
17:45dnolenfor core.match
17:45chewbrancafdaoud: yeah tough to find these days
17:46fdaoudgotta go, later all
17:46aperiodicchewbranca: mount your monitors sideways?
17:46chewbrancafdaoud: I managed to find a cheap 19" dell 4:3 monitor on craigslist for my standing desk, but I think everything has gone widescreen now
17:46chewbrancafdaoud: later
17:46fdaoudchewbranca: yes that's the mainstream I guess
17:46fdaoudciao
17:47cemerickdnolen: .-bar hurts, but this is bikeshed territory
17:47chewbrancaaperiodic: the thought as crossed my mind, but, if you watch any movies or tv shows on your computer, then vertical monitors are rough
17:47chewbrancaaperiodic: I'm trying to find a balance
17:47technomancyalso many monitors don't have good vertical viewing angles
17:47chewbrancaor better yet: http://www.amd.com/us/products/desktop/graphics/ati-radeon-hd-5000/hd-5870-eyefinity-6-edition/pages/overview.aspx
17:47technomancyso you get a slightly different color in your left eye vs your right eye, which will drive you nuts
17:48chewbranca:D
17:48chewbrancawould be hilarious to have emacs full screen across 6 monitors
17:48chewbrancatechnomancy: oh interesting, I'll have to keep that in mind
17:48moogatronicNoob question: I have emacs 24/Swank/Slime working. Do most people remap their evaluate last expression key stroke? My pinky is already getting tired. =)
17:48chewbrancatechnomancy: is that common for vertical monitors?
17:48technomancychewbranca: yeah, be sure to test it by turning your head sideways before you invest in anything =)
17:49technomancymoogatronic: most people make caps lock their ctl
17:49chewbrancatechnomancy: will do
17:49aperiodicoh, good point
17:49chewbrancamoogatronic: I have caps lock and ctrl set to 'ctrl' so I can use whichever is more comfortable
17:50moogatronictechnomancy: I do have my keyboard mapped that way, but if I'm treating my buffer like a repl, i'm hitting that keystroke all the time. Maybe my question should be is there a repl in emacs that you can just type sexps and hit enter to have them evaluated?
17:50technomancymoogatronic: sure, are you currently using slime without slime-repl?
17:50aperiodicthe only time i've used vertical monitors was with crappy dell ones, and i chalked it up to their build quality rather than orientation
17:50amalloymoogatronic: isn't that M-p anyway? meta isn't usually a pinky key for me
17:51moogatronictechnomancy: That's a good question - I don't know the answer. =)
17:51amalloyoh, you mean C-x C-e. i see
17:51moogatronicamalloy: yeah
17:52moogatronicwhoa
17:52moogatronicnice.
17:52moogatronic=)
17:52moogatronicI thought about getting their completely separated keyboard
17:52moogatronicbut dollars won out and I ended up with a MSFT natural 4k.
17:53amalloyanyway, yes, you probably want to use the slime repl
17:53chewbrancaahhhh yeah I can tell right nowby looking at my monitors sideways, looking at them horizontally, I have a wide angle of viewing where I can move left or right and still see it cleary, but vertically I can see a noticable difference with how centrally I need to be looking
17:53chewbrancaamalloy: nice, how useful have you found that?
17:53moogatronictechnomancy: is slime-repl something I need to install separately from slime et al ?
17:53technomancymoogatronic: if you are installing manually, yeah
17:54technomancyif you use M-x clojure-jack-in you get it all for free
17:54moogatronicI can work the google.. now that I know what i'm looking for. =)
17:54moogatronicI like the sound of free.
17:54technomancymoogatronic: the swank-clojure readme should get you what you need
17:54technomancyclojurebot: swank?
17:54clojurebotswank is try the readme. seriously.
17:54amalloychewbranca: eh. i've had them for a month or two now. i don't think it will ever be as *fast* as using the modifier keys, but it's nice to give my fingers a break when i'm just editing or reading, rather than typing
17:54technomancythere ya go; clojurebot wouldn't lie to you.
17:54chewbrancaamalloy: I've been toying around with the idea of picking up the kinesis advantage pro, I'm concerned with the keyboard being too small though as I'm pretty big, but I saw they have a 60 day return policy so I might have to check it out
17:55amalloychewbranca: people who use the kinesis swear by it. personally i don't get it
17:55chewbrancaamalloy: yeah don't always need speed
17:55moogatronicdidn't know about the 60 day return policy. a few guys in my lab have the kenesis freestyles
17:55chewbrancaamalloy: I've typed on it for maybe 30s, it feels potentially very comfortable
17:56chewbrancaamalloy: I use an ergo keyboard and a trackball and still have issues, so looking to go more ergonomic than the microsoft natural keyboard
17:56technomancychewbranca: I have the kinesis solo if you want to try it
17:56moogatronicI converted from the apple tiny kbd to this msft monstrosity. wrists are happy, but it takes so much space on my desk.
17:56technomancyyou don't get the cupped shape, but you get to hold your arms straight out, which I think is of equal importance
17:56amalloymoogatronic: under-desk keyboard tray
17:56chewbrancatechnomancy: nice, yeah that would be cool, been struggling with the keyboard lately
17:56technomancytake a hacksaw to the numpad. show it who's boss
17:57moogatronicamalloy: I'm not allowed to attach stuff to the desk i've been assigned. lol
17:57amalloyi have vision problems, so i keep my keyboard entirely under the desk. means it costs me no desk space, and i can get the monitor right on the edge of the desk
17:57moogatronicbut at home, my desk is glass… i'm pretty tall, most keyboard trays annoy me due to my knees ramming into them all the time. wrist comfort wins over appearance though.
17:57aperiodici just got a Das Keyboard about a month ago, which i've been loving
17:58moogatronicchew: do you swap right and left hand mousing?
17:58moogatronicthat helps me a bit.
17:58mtmmaybe not ergonomic but I love the feel of the keys: http://matias.ca/tactilepro3/index.php
17:59chewbrancahiredman: I can use laptop keyboards for decent stretches, but I have to be more concious about sitting properly and keep my hands in correct posture
17:59chewbrancamoogatronic: ahhh interesting, no I haven't tried that, good idea
17:59moogatronicI was drooling over this for a while: http://www.getsmartfish.com/Reflex-Keyboard-w-Anti-Fatigue-Comfort-Motion_p_8.html
17:59chewbrancamoogatronic: I just ordered a bigger trackball mouse yesterday that is symmetric, so I'll have to give that a shot
17:59moogatronicit's windows only. no mac release yet.
17:59moogatronichas magic drivers or something for the key mappings, or some such nonsense.
17:59chewbrancamtm: I would love a tactile ergo keyboard
17:59moogatronicbut the keyboard moves and adapts to the amount of time you've been typing.
18:00chewbrancamoogatronic: oh crazy, wonder how noticable the movement is
18:01moogatronicthe video was full of convincing propaganda about how it will make every aspect of your life more fulfilling, etc. =)
18:01chewbrancalol
18:02moogatronicif I don't have M-x clojure-jack-in, that probably means something on my system is out of date I'm assuming. =)
18:03amalloymoogatronic: it'd mean you're using a clojure mode from like 1995
18:03moogatronictime travel shit! i knew my computer was special.
18:04dpritchetti spent half the day yesterday trying to get m-x clojure-jack-in moogatronic
18:04dpritchetti wound up nuking emacs23, building emacs24 from source, and then install clojure-mode to get it
18:04dpritchettthese are only the steps that worked, i'm leaving out all the hours of aborted attempts
18:04moogatronic… I'm really trying to learn clojure and overtone, but i don't want to eat up half a day screwing up my configuration in the process
18:05moogatronici suppose its what is needed.
18:05dpritchetti didnt have anything in my emacs configs to begin with so i aws happy to start over
18:05dpritchettare you on v24 at least?
18:05moogatronicgod knows i've spent multiple days getting my org-mode babel R and xelatex exporting all working
18:05moogatronicyeah, i'm on 24, but i'm running an old emacs starter kit
18:05Raynescp -r ~/.emacs.d ~/.emacs.d.backup
18:06moogatronicemacs configuration is still in the voodoo-state with respect to my conceptual model, and everything i have working now is essential to completing required work.. =)
18:06moogatronicRaynes: good call.
18:09moogatronicunrelated: anyone aware of the taxi cost for late night rides in Raleigh, NC? (due to late booking, etc, I missed all the good/deal/prices for the conj venue hotel)
18:09moogatronicalso, can you safely navigate the streets of downtown after midnight on foot?
18:18hiredmannot if there are conj goers about
18:20Raynesmoogatronic: Well, I certainly didn't get raped last time I did that.
18:20RaynesThough I wasn't exactly in a secluded dark alley.
18:22moogatronicYou can usually tell by the frequency of cop cars per normal car in a neighborhood as to whether or not you should be walking on that street. =)
18:23moogatronichiredman: my only concern is that my hotel is around 1.5 miles from the conference hotel. not a big deal, i'm a decently big guy, but avoiding the tempting of random criminals is always good.
18:23moogatronic(speaking from experience -- have been attacked on the street before)
18:23moogatronicjiu jitsu comes in handy..
18:23hiredmanwhich hotel?
18:23moogatroniceh, I took the price line gamble, i'll look
18:24moogatronicHoliday Inn Raleigh-Brownstone Downtown
18:24hiredmanactually if the conj is in the same hotel as last year (I think it is, not sure) the area around it is very empty/office park
18:24iris1Dear experts, I have run into what I assume is a minor problem, but I am having trouble figuring it out. I would like to start a SWANK server from leiningen, but when I type "lein swank", it tells me "That's not a task". In order to install SWANK, I have previously typed "lein plugin install swank-clojure 1.3.3" and "lein deps", which seemed to not fail. (Ultimately I am trying to get SLIME working in emacs but I think my problem is that
18:24iris1swank" does not work, rather than something on the emacs side.) Please advise. Thank you!
18:24hiredmanI was in the area for the week following the conj too, walked around a little
18:24moogatronicI couldn't afford the full price and i missed the pre-reservation price, because i only found out that I could attend very recently.
18:25hiredmanoh
18:25hiredmanno, different hotel
18:25hiredman(last year was the hilton)
18:25hiredmanso I dunno what the area is like
18:25moogatronicI suppose we'll find out. =)
18:25moogatronicI centered all around atlanta last year at pycon. No muggings. =)
18:26moogatronicThis fantastic vegan soul food restaurant was in a questionable neighborhood.
18:26moogatroniclots of foot-patrol police, squad cars, and shady characters dodging in and out of alleys
18:26moogatronicThe food was worth it. =)
18:26moogatronicgah.. auto-spell correct fail… centered == wandered
18:28brehautmoogatronic: if this is mac os x lion, system preferences > lanuage & text > text > correct spelling automatically
18:29iris1lein swank
18:29iris1(ah sorry, wrong prompt...)
18:29moogatronicbrehaut: awesome. i was just under the assumption that the latest version of this client added terrible auto-correct.
18:30brehautmoogatronic: what client? if its colloquay i'd love to know about a new version
18:30moogatronicthat client, but i've not ran it for a while, so I figured maybe it auto-updated or something.
18:30moogatronicprograms sometimes have a mind of their own. =)
18:31brehautmoogatronic: haha i wish. i dont think theres been a new release build in 2 years
18:35moogatroniclike magic. clojure-jack-in and slime-repl.
18:35moogatronic=)
18:35moogatronicmuch better
18:37Raynesbrehaut: Textual is excellent.
18:38brehautRaynes: thanks
18:39brehautRaynes: it looks a lot more like IRC than colloquay ;)
18:39RaynesYeah, I couldn't tolerate colliwhatever.
18:40moogatronicohh nice
18:40RaynesIt can't handle bouncers over multiple servers properly either.
18:40RaynesTextual is fantastic.
18:40RaynesAlso free if you build it yourself, I think. Cheap if you don't.
18:40brehautRaynes: looks that way; BSD FTW
18:41moogatronicthat's an interesting way to release software.
18:45amalloyisn't that basically how (eg) red-hat works? the code is free, but for $N we'll bundle it up for you and provide some support
18:45moogatronicwell, i got my emacs24/new clojuremode/latest starter kit working with swank and slime-repl, but now i'm not sure if my libraries are loading.
18:46technomancyfor a while it was the only way to get gimp on macs
18:46moogatronicdoes clojure-jack-in start a server based on what's in project.clj ?
18:46amalloymoogatronic: yes
18:47moogatronicit looks like its probably working, but i'm seeing stacktraces when trying to load overtone, I guess its debug time. Was working in my old setup though.
18:47manutterhey, has anybody heard from the guy that does jark? His site has been down for a few days.
18:47manuttericylisper.in
18:51moogatronicthanks for the help wrt my swank/slime/repl setup! dinner time… =)
19:19zerokarmaleftoh snap, no rooms left at the sheraton :(
20:30archaicjuxting zipper fns on a single node is really really nice
20:34amalloy~juxt
20:37amalloyclojurebot: you okay over there?
21:36moogatronictwo wins today. new irc client, thanks Raynes for the tip, and my emacs setup has been updated to modern times. =)
21:38nappingwhich client?
21:39moogatronicTextual
21:39moogatronicosx… i guess it's for sale, OR you can just compile it yourself which was easy enough.
21:39ibdknoxlooks a lot like limechat
21:39moogatronici like that it's not occupying as many pixels as possible
21:40moogatronicthough, I still wish you could run alternate window managers in osx, like xmonad or something.
21:40nappinglately I've tried ERC a bit
21:40nappingIf only for the TeX input method
21:40moogatronici'm slowly coming up to speed on various emacs things.
21:41moogatronici use emacs/org-mode/babel/r daily.
21:41brandelmoogatronic: there are some utils that give you window snapping in os x.. not quite xmonad, but better than the defaults
21:41moogatronicfantastic for the tex output / literate programming
21:41moogatronicbrandel: i have a divvy license, it's pretty nice
21:41moogatronicbut it's not automatic.
21:42moogatronici can quickly tile a few arrangements with some quick key tapping. =)
21:42moogatronicnapping: does ERC interpret TeX from others in the chat window?
21:42brandelyeah I know what you mean, I do like xmonad
21:43brandelyou could check out SizeUp - it gives you bindings for moving windows around
21:43archaicmoogatronic: are you using clojure in babel?
21:44moogatronicarchaic: not yet. currently all of my babel use is for course assignments.
21:44moogatronicarchaic: have you?
21:45archaicahh just wondering - its easy to setup in emacs 23 but 24 is real painful
21:45archaici was hoping to copy your 24 config if you were :)
21:45moogatronicI do have one little problem with my LaTeX output… When I generate my document, it specifies the language syntax as R, capital R, but pygments expects lowercase r...
21:46moogatronicWell, my config for generating xelatexable docs from org worked in 24, but it was only running R.
21:46moogatronicjust this evening tho, i refreshed my configs and upgraded to the latest emacs starter kit, clojuremode, etc..
21:46moogatronicso i have to backport all of my customizations.
21:46moogatronicusing the ugly default color scheme even.. but i was too excited to get going with some Overtone hacking
21:46moogatronic(to the dismay of my wife)
21:47archaici was using default color scheme fairly long time, then i found https://github.com/sellout/emacs-color-theme-solarized
21:47brandelwives often seem to be a in state of dismay I find.
21:48brandelat least mine is.
21:48moogatronicbrandel: haha! mine gets cranky when my studio monitors are cranked and I am generating random saw waves.
21:48moogatronicbrandel: but I know what you mean. =)
21:49brandelyou should give her brief respites with sine waves
21:49moogatronicshe's been trained a bit.. sometimes I make beats and play with samples… and sometimes the same 3 seconds for hours.
21:49moogatronicthen there's the moog voyager.
21:49moogatronic=)
21:49moogatronici've been commanded to wear headphones.
21:51brandelI've done some composition in logic - worth exploring Overtone? it's more geared towards generated/algorithmic music right?
21:51moogatronicwell, that's how I am planning to use it anyway. =)
21:51nappingmoogatronic: It's just for typing in unicode
21:52brandelcan you wire up midi triggers?
21:53moogatronicI wanted a really solid reason to learn clojure that I could justfiy time wise… so it's now a course project to use bioinspired computing (evolutionary and other algorithms) to build something fun.
21:53moogatronicbrandel: not sure yet.
21:53moogatronicbrandel: I'm a major noob on many fronts at current moment.
21:54brandelsounds neat. meh everyone is a noob at most things.
21:54moogatronicyeah, you have to be a noob at everything at some point in time. i've just been admiring clojure from afar for too long now.
21:55moogatronici naively thought that leaving full time employment and starting a PhD would free up time for explorations like this.
21:55moogatronicLOL.. wrong.
21:55moogatronicthough, as long as I work it in somehow, it is no longer "playing".. it's "working". =)
21:57moogatronicarchaic: everyone loves solarized it seems. I should give it a shot. I do prefer any non-white background. and inconsolata.
23:55hiredman~ping
23:55clojurebotPONG!