2013-10-14
| 00:01 | marco1 | Anyone use the worker option in a pedestal aspect? Their example uses regex pattern objs, but I don't think edn supports #"regex" |
| 00:07 | Roxxi | cd .. |
| 00:07 | Roxxi | ls |
| 00:07 | lazybot | bin boot data dev etc proc selinux sys tmp usr |
| 00:07 | Roxxi | >.< |
| 00:11 | marco1 | cd /bin |
| 00:34 | muhoo | irc shell |
| 00:35 | muhoo | ~aot is Ahead Of Time compilation |
| 00:35 | clojurebot | Ok. |
| 00:36 | muhoo | ~aot |
| 00:36 | clojurebot | http://i.qkme.me/3vb225.jpg |
| 00:36 | muhoo | fack |
| 00:36 | brehaut | ~aot |
| 00:36 | clojurebot | http://i.qkme.me/3vb225.jpg |
| 00:36 | muhoo | ffs |
| 00:36 | brehaut | ~aot |
| 00:36 | clojurebot | http://i.qkme.me/3vb225.jpg |
| 00:36 | muhoo | ~aot is chese |
| 00:36 | brehaut | hah |
| 00:36 | clojurebot | Alles klar |
| 00:36 | muhoo | ~aot |
| 00:36 | clojurebot | http://i.qkme.me/3vb225.jpg |
| 00:36 | muhoo | ~aot is Ahead Of Time compilation |
| 00:36 | clojurebot | 'Sea, mhuise. |
| 00:36 | muhoo | -_- |
| 00:37 | brehaut | muhoo: you just have to accept that clojurebot is enterprise ready, and no one person can understand how any a feature works ;) |
| 00:38 | muhoo | it's on github somewhere, i thought |
| 00:38 | brehaut | it is |
| 00:38 | muhoo | is that factoid hardcoded or something? |
| 00:38 | brehaut | https://github.com/hiredman/clojurebot/ |
| 00:38 | muhoo | ~hardcoded is aot |
| 00:38 | clojurebot | c'est bon! |
| 00:38 | muhoo | ~hardcoded |
| 00:38 | clojurebot | hardcoded is aot |
| 00:38 | brehaut | no, its just a very complex system |
| 00:38 | muhoo | ~hardcoded is not aot, says yoda |
| 00:38 | clojurebot | Ok. |
| 00:38 | brehaut | factoids are a multimap |
| 00:39 | brehaut | and theres an inference engine |
| 00:39 | brehaut | the command pipeline is also built on Arrows |
| 00:39 | brehaut | and its parser is only documented in the fnparse rules |
| 00:40 | muhoo | i actually have no idea what you're talking about |
| 00:40 | muhoo | how do you send a message to someone? |
| 00:40 | muhoo | in this bot? |
| 00:40 | muhoo | it has a store-and-forward capability IIRC |
| 00:40 | brehaut | i think thats lazybot's $mail |
| 00:41 | brehaut | just to confuse things ;) |
| 00:42 | brehaut | muhoo: http://ro-che.info/ccc/12 |
| 00:45 | muhoo | wow, that is the geekiest comic i've ever seen |
| 00:45 | brehaut | pretty much yeah |
| 00:45 | brehaut | ~arrows |
| 00:45 | clojurebot | arrows is http://ro-che.info/ccc/12.html |
| 00:45 | brehaut | well lol |
| 00:46 | muhoo | http://ro-che.info/ccc/21 |
| 00:46 | muhoo | like... talk about a niche audience |
| 00:46 | brehaut | hah yeah |
| 00:46 | brehaut | turns out yes, applicative is now a superclass of monad |
| 01:02 | lynaghk` | hugod: ping |
| 02:21 | frozenlock | Cljs version 0.0-1909 and higher break the domina function node. :-/ |
| 02:55 | logic_prog | in datomic free edition's in memory databse -- does it somehow survive machien reboots, or is all data lost when the machine reboots? |
| 02:58 | rhg135 | one small question, for serversockets, i have a series of clients which arent known till runtime and isn]t mutable in a conventional sense (you can]t change it) but its not static either (it depends on who connects), is there an interface more appropriate than ISeq? |
| 02:59 | marcopolo2 | rhg135: how are you going to be interacting with it? |
| 03:00 | rhg135 | just loop on it with doseq and dispathing a thread on the new sockets |
| 03:00 | rhg135 | since it's .accept returns a socket to the client |
| 03:01 | rhg135 | and it blocks till a connection |
| 03:01 | rhg135 | something like (repeatedly #(.accept this)) |
| 03:02 | marcopolo2 | yeah ISeq sounds fine to me |
| 03:03 | rhg135 | ok |
| 03:03 | francis | logic_prog: I belive you can persist to disk with free |
| 03:03 | rhg135 | i wasn't sure since it's indeterminate |
| 03:11 | marcopolo2 | rhg135: well you could have it wrapped in an atom if you are going to update it's value |
| 03:11 | rhg135 | i'm thinking of of having a fn that returns (repeatedly #(.accept socket)) since i see no way to implement Seqable on ServerSocket |
| 03:11 | marcopolo2 | and then calling a thread on each fn? |
| 03:12 | rhg135 | marcopolo2: i can]t change it (save closing the socket) from the server, only who connects, and yes |
| 03:12 | rhg135 | threads |
| 03:13 | marcopolo2 | why do you need to do multiple accepts on the same socket? |
| 03:13 | rhg135 | .accept opens a new socket |
| 03:14 | marcopolo2 | ah okay |
| 03:14 | rhg135 | thats how servers work, open a new socket per client |
| 03:15 | marcopolo2 | I wasn't familiar with that interface |
| 03:15 | rhg135 | in python i used a generator but threading is a pita and it was ugly |
| 03:21 | rhg135 | here]s the code https://bitbucket.org/rhg135/jimpy/src/b9f81cf11bb736f5f48d96f8dcabbf39a9516db3/jimpy/server/utils.py?at=newserver#cl-123 |
| 03:21 | rhg135 | thats essentially the idea |
| 03:22 | rhg135 | but id like that server on the jvm |
| 03:23 | rhg135 | i don't really like python, but i started writing the client part and the jvm is too slow to start for a client-side lib |
| 03:29 | Foxboron | rhg135: i could go like "Hey! There is a LISP on python that complies down too Python AST!" |
| 03:31 | rhg135 | i did try nodejs, but clojurescript failed me and when i asked here i got no help twice so i just went with python (which i used before clojure and haskell) |
| 03:31 | Foxboron | rhg135: check out Hy :) |
| 03:31 | rhg135 | Foxboron: i saw it but it seemed abandoned |
| 03:32 | rhg135 | oh |
| 03:32 | rhg135 | Hy? |
| 03:32 | TEttinger | check out Shen then |
| 03:32 | Foxboron | rhg135: yeah Hy.https://github.com/hylang/hy |
| 03:34 | rhg135 | Foxboron: the main issue i've had with python is concurrency not syntax |
| 03:35 | Foxboron | rhg135: yeah, it is a hell :/ |
| 03:35 | rhg135 | that said, it looks interesting |
| 03:35 | rhg135 | any easy way to run a repl? |
| 03:35 | Foxboron | "Hey lets make a thread! Just gotta subclass threading.Thread, rewrite run...then..hmm..make it a deamon so it dosnt fuck up..hmm...oh bugs!" \o/ |
| 03:35 | Foxboron | rhg135: pip install hy |
| 03:35 | Foxboron | hy |
| 03:36 | rhg135 | and i can connect to it from, say, vim? |
| 03:36 | Foxboron | rhg135: Sadly no vim plugins yet. I'm actually suppose to be fixing that, along with a nrepl for hy D: |
| 03:37 | rhg135 | yeah an nrepl'd be nice |
| 03:37 | rhg135 | but no biggie |
| 03:37 | rhg135 | python is worse for that |
| 03:37 | Foxboron | rhg135: it runs, compiles and works along side python code :) |
| 03:38 | Foxboron | so its awesome anyway IMO |
| 03:38 | rhg135 | so it]s just a lisp dialect? |
| 03:38 | Foxboron | rhg135: yeah it is. |
| 03:38 | rhg135 | any special features? |
| 03:39 | Foxboron | ayou can import hy directly into python, and vica versa |
| 03:39 | Foxboron | and macros |
| 03:39 | rhg135 | hmm, macros |
| 03:39 | Foxboron | been talks about trying to implement some TCO'ish things using generators |
| 03:39 | Foxboron | but i am not sure what the status on that is |
| 03:39 | rhg135 | but concurrency still would be a pita |
| 03:40 | Foxboron | rhg135: its still python :/ concurrency is a living hell. |
| 03:40 | rhg135 | but anyway for the server i do want it on the jvm |
| 03:41 | rhg135 | it]s looking as i have to seperate client and server |
| 03:42 | rhg135 | idk, but the python vm doesnt feel as if it is meant to run a chat server |
| 03:42 | rhg135 | think like freenode, but based on JIM not iRC |
| 03:43 | TEttinger | JIM? |
| 03:43 | TEttinger | jabber IM? |
| 03:43 | rhg135 | JIM.HACKPAD.COM |
| 03:43 | rhg135 | JIM{ JSON IM |
| 03:43 | rhg135 | grr |
| 03:43 | rhg135 | caps |
| 03:44 | TEttinger | rhg135, looks nice |
| 03:45 | rhg135 | Nathan is writing one on nodejs |
| 03:45 | rhg135 | im not sure whether to trust itll work |
| 03:46 | rhg135 | for one the guy likes c++ |
| 03:47 | rhg135 | and my python one is broken mysteriously |
| 03:53 | rhg135 | actually i do know why; it isn't launching new threads until i interrupt the main thread; again python concurrency is a pita |
| 03:58 | echo-area | Leiningen told me two checksums about an artifact, but none of which is the same as the on in the maven repo, what could be the reason? |
| 03:59 | echo-area | Could not transfer artifact XYZ from/to REPO (ADDRESS): Checksum validation failed, expected CHECKSUM1 but is CHECKSUM2 |
| 03:59 | echo-area | This is the error I get |
| 03:59 | TEttinger | well they may have incorrectly hashed their file, or used the wrong checksum for the file |
| 04:00 | TEttinger | try a different version? |
| 04:00 | TEttinger | which artifact, I can check? lein dependency line? |
| 04:00 | echo-area | Of leiningen or what? |
| 04:00 | TEttinger | no, the artifact |
| 04:00 | echo-area | No, it's a private artifact here |
| 04:00 | TEttinger | oh |
| 04:01 | TEttinger | well ask whoever made it, he may have done something wrong |
| 04:01 | echo-area | And another guy tried maven, got similar warnings about checksums, but one of them at least was correct |
| 04:02 | echo-area | Okay, thanks |
| 04:56 | echo-area | Is it possible to make process of leiningen finding dependencies verbose? |
| 04:59 | hyPiRion | echo-area: you could try `DEBUG='y' lein deps :verify` |
| 04:59 | echo-area | Thanks |
| 05:28 | logic_prog | is there any implementation of frp (functional reactional programming) in clojurescript? |
| 05:28 | logic_prog | I'm not looking for a javascript wrapper, I'm looking for a clojurescript codebase to read / learn from |
| 05:28 | piranha | logic_prog: http://github.com/tailrecursion/javelin |
| 05:29 | logic_prog | ha, was just looking at it |
| 05:29 | logic_prog | be nice it was tied into dom elmenets too :-) |
| 05:29 | logic_prog | s/it/if it |
| 05:29 | piranha | logic_prog: github.com/tailrecursion/hoplon |
| 05:29 | piranha | :) |
| 05:29 | piranha | look at the 'dox' branch right now |
| 05:29 | piranha | there are some docs |
| 05:30 | logic_prog | wait what? |
| 05:30 | logic_prog | i have to read the examples |
| 05:31 | logic_prog | I don't understand https://github.com/tailrecursion/hoplon/tree/dox |
| 05:31 | logic_prog | how ishe embedding clojurecript into a web html file? |
| 05:32 | logic_prog | this is fucking insane |
| 05:32 | logic_prog | by insane I mean genius |
| 05:32 | ro_st | at bottom, it's all just text |
| 05:33 | logic_prog | https://github.com/tailrecursion/hoplon/blob/master/doc/Design.md is genius |
| 05:33 | logic_prog | who is tailrecursion? |
| 05:34 | ro_st | Alan Dipert and co |
| 05:34 | logic_prog | this person should be renamed michangelo-davinchi-raphael |
| 08:39 | maris` | why does clojure print strings from maps without quotes around them ? |
| 08:40 | maris` | (print {:s "hi"}) |
| 08:41 | maris` | omg pprint does it correctly :-) |
| 08:41 | augustl | is there a way for a multimethod to have the same body for different dispatch values, other than extracting the body to a separate function? |
| 08:42 | hoeck | maris`: (prn {:a "hi"}) |
| 08:43 | hoeck | maris`: print prints for human consumption, prn prints `readably` (for the clojure reader) |
| 08:45 | hoeck | augustl: you could also modify you dispatch function |
| 09:04 | mpenet | I just upgraded to the latest nrepl and it now wont launch. Anyone had issue recently? |
| 09:04 | mpenet | issues* |
| 09:05 | mpenet | jack in works but I end up in a broken repl (I also use nrepl-ac btw, I ll try without it) |
| 10:02 | CookedGr1phon | hey, I'm building an app on android and midje doesn't work properly on the device, so I want to exclude all my test files from the build which goes onto my device |
| 10:03 | CookedGr1phon | I made a separate midje profile in my project.clj |
| 10:03 | CookedGr1phon | but I can't seem to stop it trying to build the test/* folder's contents |
| 10:03 | CookedGr1phon | I have set :source-paths and test-paths appropriately, but it's still doing it. Any ideas? |
| 10:04 | mdrogalis | CookedGr1phon: Not sure, sorry. :/ |
| 10:13 | CookedGr1phon | mdrogalis: very odd. I have moved them to another directory not named test/ and it works fine |
| 10:13 | mdrogalis | CookedGr1phon: Huh, interesting. |
| 10:30 | Morgawr | does anybody know of any academic papers/studies on clojure and its concurrency models? Some references I could have that aren't just Hickey's talks on youtube or clojure.org articles or random blog posts? (not that they aren't interesting, it's just that I read them all already :P ) |
| 10:35 | mdrogalis | Morgawr: Maybe look up some stuff on Multiversion Concurrency Control and Snapshot Isolation? Obviously not exactly Clojure, but the underlying stuff is the same. |
| 10:36 | Morgawr | mdrogalis: yeah, thanks. I was mostly looking for Clojure-related stuff but that's certainly a good stepping stone. Gotta write a position paper about an academic study/paper I wanted to write about clojure performance and concurrency model |
| 10:37 | Morgawr | so I gotta find good excuses to present to my tutor :P |
| 10:38 | CookedGr1phon | I feel I should probably plug my colleague's new book at this point :P http://pragprog.com/book/pb7con/seven-concurrency-models-in-seven-weeks |
| 10:39 | CookedGr1phon | which should give a nice overview, and a lot of the examples are clojure based |
| 10:44 | mdrogalis | CookedGr1phon: Looks worth a read. :) |
| 10:44 | si14 | lynaghk: ping |
| 10:44 | Morgawr | CookedGr1phon: will check it out ;) |
| 11:00 | scape_ | Little confused by simpledateformat parsing: (.parse (java.text.SimpleDateFormat. "mmddyyyy") "04121985") ;results in #inst "1985-01-12T05:04:00.000-00:00" |
| 11:01 | scape_ | (.parse (java.text.SimpleDateFormat. "yyyymmdd") "19850322") ;results in #inst "1985-01-22T05:03:00.000-00:00" |
| 11:01 | scape_ | what am I doing wrong with month? |
| 11:03 | andrewmcveigh|wo | scape_: months are usually MM |
| 11:03 | andrewmcveigh|wo | scape_: mm = minutes |
| 11:04 | scape_ | aha |
| 11:04 | scape_ | thank you |
| 11:04 | andrewmcveigh|wo | np |
| 11:20 | hardliner_ | scala or clojure? |
| 11:20 | bbloom | surely you must realize that's trolling in either #scala or #clojure, right? |
| 11:22 | drguildo | does anyone have any idea what would prevent the nrepl prompt appearing when i do nrepl-jack-in? |
| 11:23 | drguildo | i've tried disabling all the hooks in my init.el but it didn't help |
| 11:24 | gfredericks | bbloom: your last night fipp idea that I just saw is quite interesting; thanks :) |
| 11:24 | AimHere | drguildo, might you have a (-main) function in your project and it's trying and failing to compile it? |
| 11:27 | RoboClaudio | Hello hello everyone! |
| 11:27 | drguildo | AimHere, i doubt it, it's done it with every project i've tested including "lein new test" |
| 11:27 | hardliner_ | hello |
| 11:27 | RoboClaudio | I'm having a blast learning clojure right now, and I'd like to introduce the language to a friend of mine who is not a programmer |
| 11:27 | hardliner_ | is it true that the creator of clojure is hikki? |
| 11:27 | gtrak | gfredericks: did you ever write up those macro-generating macros you were messing with somewhere? |
| 11:27 | francis | R |
| 11:28 | RoboClaudio | any recommendation for a resource? Something like "clojure for non programmers" |
| 11:28 | francis | RoboClaudio: Clojure was the first language I learned. I reccomend 4clojure |
| 11:28 | RoboClaudio | I do believe that clojure would be a good first language, this friend is smart, and he would like to contribute to my clojure projects |
| 11:28 | RoboClaudio | francis: oh great |
| 11:29 | francis | Sorry for misspelling ect. ect. Not on my native keyboard layout right now |
| 11:29 | hardliner_ | francis: do you use qwerty? |
| 11:29 | francis | hardliner_: colmak |
| 11:29 | RoboClaudio | francis: you really never had any sort of C, or ruby or anything like that before? How much to you use Clojure now? |
| 11:30 | francis | RoboClaudio: I program clojure everyday |
| 11:30 | francis | RoboClaudio: I tried out other languages first, but settled on clojure. It was the first language I learned beyond some VERY basic programs. |
| 11:31 | RoboClaudio | That's very comforting. I personally use Haskell, Go and JS for work, but Clojure (with some love for core.typed) for personal stuff, and I think it's great. |
| 11:32 | francis | RoboClaudio: How do you like haskell? |
| 11:32 | RoboClaudio | francis: which sort of applications do you work on? |
| 11:32 | francis | RoboClaudio: Webapps |
| 11:32 | francis | RoboClaudio: nothing fancy |
| 11:33 | RoboClaudio | francis: I really like haskell, especially within teams. The purity and type safety make very good guards for large programs. |
| 11:33 | tbaldridge | have you tried using Clojure for "large programs" ? |
| 11:34 | RoboClaudio | francis: great, thanks so much for the feedback, you're comforting my feeling that clojure is good for beginners. |
| 11:35 | RoboClaudio | tbaldridge: I didn't have the chance, I only use Clojure within side projects, and haven't wrote anything bigger than a few thousands loc :( |
| 11:36 | endou | RoboClaudio: I feel think you can do pretty much in a few thousands loc with clojure, what's your opinion on that? |
| 11:37 | tbaldridge | RoboClaudio: it might be something to investigate. I've found that the claims of "type safety guard against poor programming" to be a fairly weak argument. In practice, I very, rarely hit problems that typing would help with. |
| 11:38 | RoboClaudio | endou: true, but working alone removes my ability to judge how it is with teams. So far I'm personally very satisfied, especially because of the readability of my programs. I don't have to go through beautifiers and the like, it's just clear. |
| 11:38 | tbaldridge | And I find that the restrictions (even) Haskell's type system put on the programmer are bit restrictive. |
| 11:38 | xeqi | tbaldridge: I like it as a set of unit tests I don't have to write |
| 11:39 | tbaldridge | xeqi: perhaps, but with Haskell, can you have the option to use these "tests" on only half your code? |
| 11:40 | pandeiro | how do i get nrepl to show eldoc-like documentation inside a clojure buffer? |
| 11:40 | RoboClaudio | tbaldridge: I understand, but I found this (& purity) to be quite helpful when I could jump in a project without spending too much time making sure I don't break everything. I'm far from being a Haskell guru but I could get up and running very fast at work |
| 11:40 | pandeiro | and how do i kill a lein repl :headless process? |
| 11:41 | xeqi | tbaldridge: Haskell's type system can affect the semantics of the program, so no |
| 11:41 | RoboClaudio | typed clojure seems to be a very good middleground between the funny language for hacking and the tough thing you can use at work |
| 11:42 | RoboClaudio | convincing my previous boss of using clojure on a project was incredibly hard |
| 11:43 | RoboClaudio | tbaldridge: do you have the chance to use clojure at work? |
| 11:44 | tbaldridge | Yes I do, and I only have a passing familiarity with Haskell, so I am biased. |
| 11:44 | tbaldridge | Perhaps someday I'll go and learn me some Haskell for great good. |
| 11:45 | RoboClaudio | haha this is the book that got me into it! |
| 11:45 | RoboClaudio | tbaldridge: did you have to convince your boss or was it a clojure shop? |
| 11:46 | scriptor | RoboClaudio: how did you convince your boss in the end? |
| 11:46 | tbaldridge | RoboClaudio: I work for Cognitect, so I was hired to work on Clojure in the first place. |
| 11:47 | bbloom | tbaldridge: surely somebody had to convince relevance back when they were predominently a rails shop ;-) |
| 11:48 | francis | RoboClaudio: Is there any reason that haskell isn't a lisp other than some ill-defined notion of readability. Or, is there anything to be gained by using syntax other than sexps? |
| 11:48 | RoboClaudio | scriptor: I lamentably failed, because of the lack of static typing and the sources of help in the local language (I live in Japan) |
| 11:48 | RoboClaudio | tbaldridge: that sounds great! |
| 11:49 | tbaldridge | bbloom: well the full story is here: http://www.infoq.com/presentations/Clojure-tips Basically Stu went out looking for a language that solved his complaints with Ruby and Java. |
| 11:49 | scriptor | francis: it's a descendant of ML, so you'll have to ask why that didn't use sexp's |
| 11:49 | bbloom | tbaldridge: cool |
| 11:50 | francis | scriptor: You wouldnt happen to know the answer to that would you? |
| 11:50 | scriptor | part of the reason may be that it's heavily based on mathematical notation |
| 11:50 | RoboClaudio | scriptor was faster |
| 11:50 | ambrosebs | RoboClaudio: hopefully Typed Clojure is good ammunition for next time. |
| 11:51 | RoboClaudio | ambrosebs: I left that company since then, and I do believe it's going to be way easier with the current one. |
| 11:52 | ambrosebs | RoboClaudio: good :) |
| 11:52 | RoboClaudio | oh yeah :) |
| 11:52 | mdrogalis | ambrosebs: You should take your $30k and put it all on black. |
| 11:52 | mdrogalis | What could go wrong? |
| 11:53 | ambrosebs | mdrogalis: what does that mean? |
| 11:54 | RoboClaudio | he's probably referring to the gamble of using something as new as typed clojure |
| 11:54 | RoboClaudio | * in a corporate environment |
| 11:54 | mdrogalis | ambrosebs: A patently bad idea. 'putting it all on black' means betting all your money on a 50/50 chance in Roulette. |
| 11:54 | ambrosebs | heh |
| 11:54 | mdrogalis | RoboClaudio: Nope. Just being dumb. D: |
| 11:54 | RoboClaudio | mdrogalis: got me :p |
| 11:54 | mdrogalis | I literally meant you should gamble with it. |
| 11:54 | mdrogalis | :) |
| 11:54 | ambrosebs | you will never see me in a casino ;) |
| 11:55 | scriptor | imagine how much good one night in vegas could do for clojure |
| 11:55 | mdrogalis | I went in one once. Good God, I wanted to hand out flyers about the odds on slot machines. |
| 11:55 | mdrogalis | Do you people even know what you're doing?! |
| 11:55 | mdrogalis | Hah, scriptor |
| 11:58 | RoboClaudio | I was in a hospital last week, and as I was in emergency room, I had no access to my computer & cell phone. I wrote some clojure code on paper for some side project to kill boredom. |
| 11:58 | RoboClaudio | When I got home, I just typed my code in, and it just worked. That thing made my coworkers laugh and wonder about how cool is clojure. |
| 11:58 | mdrogalis | Your parens balanced? |
| 11:58 | RoboClaudio | F*CK YEAH |
| 11:59 | mdrogalis | Human-paredit mode. |
| 11:59 | RoboClaudio | trust me, you have time in the hospital |
| 11:59 | RoboClaudio | I had to stay in the same bed all day, couldn't even walk |
| 11:59 | RoboClaudio | well, I still can't, but now I'm at home |
| 12:00 | scriptor | I never close my parens when I'm coding on paper |
| 12:00 | scriptor | it's like a god-awful mishmash of python and lisp |
| 12:00 | RoboClaudio | coworkers tell me I could have done this with Haskell, and I wouldn't have to worry about those parens |
| 12:00 | RoboClaudio | scriptor: Aww |
| 12:00 | RoboClaudio | :) |
| 12:02 | tbaldridge | I have to admit, talks like this scare me away from Haskell http://www.infoq.com/presentations/molog It's a 30 minute talk about all the nasty hacks they had to do to get a half-working version of miniKanren. Something that's about 200 lines of scheme. |
| 12:05 | RoboClaudio | well I have to say Haskell is far from being a convenient language for everything. I'm lucky enough to have used it only in projects where it made sense |
| 12:05 | bbloom | tbaldridge: part of the problem is trying to get the logic variable hackery past the type checker |
| 12:05 | bbloom | tbaldridge: the result is very limited type checking :-/ |
| 12:05 | RoboClaudio | ohh |
| 12:06 | bbloom | tbaldridge: I enjoyed the "Oleg's permission" bit. If Oleg says you can bypass the type system, then you're good! |
| 12:07 | ambrosebs | bbloom: that's gold |
| 12:07 | scriptor | can typed clojure do any sort of type inference yet? |
| 12:08 | bbloom | ambrosebs: did you see that thing about "rational types" with negative & fraction types to go along with sum & product types? |
| 12:08 | ambrosebs | bbloom: no what is that? |
| 12:09 | ambrosebs | scriptor: it never will |
| 12:09 | scriptor | gotcha |
| 12:09 | bbloom | ambrosebs: www.cs.indiana.edu/~sabry/papers/rational.pdf |
| 12:10 | ambrosebs | bbloom: wow! |
| 12:10 | arrdem | RoboClaudio: welcome to #clojure, where you get to lurk with library & tool developers :D |
| 12:11 | RoboClaudio | arrdem: Right, or the people making my life better. |
| 12:11 | tbaldridge | That's the nice thing about #clojure, all the cool kids hang out here. |
| 12:11 | bbloom | ambrosebs: i haven't managed to make any sense of it yet. what makes you say wow so quickly? :-P |
| 12:11 | scriptor | I think rich hickey even shows up here from time to time |
| 12:11 | ambrosebs | bbloom: it's more "wtf"! |
| 12:11 | bbloom | haha |
| 12:12 | arrdem | scriptor: Rich I think is 2nd or 3rd for all time messages sent to #clojure |
| 12:12 | ambrosebs | bbloom: what the hell is a fractional type |
| 12:12 | scriptor | interesting |
| 12:12 | ambrosebs | :) |
| 12:12 | scriptor | must've had a ton of discussion here in the olden days |
| 12:12 | arrdem | scriptor: but I haven't de-aliased for away nicks yet |
| 12:14 | bbloom | ambrosebs: i dunno but sabry is generally worth attempting to understand :-) |
| 12:15 | indigo | http://fc04.deviantart.net/fs70/f/2012/229/a/6/rich_hickey_by_emareaf-d5bevsm.png wat |
| 12:17 | benmoss | indigo: apparently drawn with https://github.com/ema-fox/artengine |
| 12:17 | benmoss | thus the tribute |
| 12:18 | rishisadhir | Can someone let me know why (use 'seesaw.core) brings up a FileNotFoundException? All the code examples online seems to just be able to 'use it without any issues. |
| 12:18 | xeqi | does anyone know any oss projects using clj-webdriver? |
| 12:18 | indigo | Haha |
| 12:19 | clgv | rishisadhir: that definitely works if you have specified the dependencies in your project.clj correctly before you fired up the repl |
| 12:19 | rishisadhir | Thanks clgv |
| 12:23 | seangrove | xeqi: We use it for some functional tests |
| 12:23 | srruby | I'm transforming a parse tree created by instaparse. So far I've been using postwalk to "edit" the tree. I'm thinking maybe I should use refs as some of the nodes need to be pointers to other nodes. I'm also looking at zippers. Currently I've been able to do what I want with postwalk, but some of my code looks clumsy. Any advice ? Thanks, John |
| 12:26 | xeqi | seangrove: do you start a jetty server as part of your test suite to run against? |
| 12:27 | arrdem | srruby: what are you trying to get out of the parse tree? |
| 12:27 | xeqi | I've got example of doing that using clj-http and some libs that only talk http. Was hoping to find one that did it for clj-webdriver |
| 12:28 | xeqi | writing a blog entry, so collecting references |
| 12:30 | srruby | arrdem: The source is a textual dsl for music notation. I need to transform the parse tree to a similar legacy json format. There are some calculations involving assigning rhythms to beats and notes. I also need pointers in a few places. |
| 12:37 | noidi | xeqi, we're using clj-webdriver as well. we deploy the application to a production-like environment and then run the tests against it. |
| 12:38 | noidi | so there's no special test server. the end-to-end tests test server provisioning and the deployment process as well as the application itself. |
| 12:43 | Morgawr | how do I use clojure.core.reducers? I tried using (require '[clojure.core.reducers]) in my repl just to test stuff but it says "cannot find the namespace" or something like that |
| 12:43 | Morgawr | do I need to import something specific with lein? I thought they were shipped with the clojure core |
| 12:43 | Morgawr | like strings |
| 12:44 | Morgawr | okay |
| 12:44 | Morgawr | I'm an idiot |
| 12:44 | Morgawr | I wrote "reuducers" instead of reducers |
| 12:44 | Morgawr | nevermind =_= |
| 12:44 | unsymbol | :3 |
| 12:46 | hardliner_ | is clojure for hikkikimories? |
| 12:46 | wedr | hardliner_: yep |
| 12:48 | hardliner_ | wedr: when you go out from home last time? |
| 12:49 | unsymbol | til : hikikomori :) |
| 12:50 | arrdem | is there a better way to achieve this sort of result? https://www.refheap.com/19800 |
| 12:51 | wedr | hardliner_: today, cause im working as consulter |
| 12:51 | hardliner_ | wedr: so you are not hikkikimori |
| 12:51 | wedr | hardliner_: no, im not |
| 12:51 | hardliner_ | wedr: they are sitting at home |
| 12:51 | hardliner_ | all the time |
| 12:51 | wedr | im wannabe hikkimori |
| 12:51 | hardliner_ | he-he |
| 12:52 | hardliner_ | why? |
| 12:52 | clojurebot | hardliner_: because you can't handle the truth! |
| 12:52 | hardliner_ | why? |
| 12:52 | clojurebot | why is startup slow is busy compiling the `for` macroexpansion |
| 12:52 | wedr | hardliner_: cause i hate consulting |
| 12:52 | wedr | hardliner_: i want work remotely |
| 12:52 | hardliner_ | wedr: go software development |
| 12:52 | wedr | hardliner_: im software developer |
| 12:52 | hardliner_ | and consultant? |
| 12:53 | wedr | hardliner_: yes, java enterprise and so on |
| 12:53 | wedr | you know |
| 12:53 | Morgawr | mm.. weir |
| 12:53 | Morgawr | weird |
| 12:53 | Morgawr | I did (reduce + (map inc (range 1 1000000))) and it took like 14 seconds |
| 12:53 | mtp | what is enterprise |
| 12:53 | Morgawr | then I did (reduce + (r/map inc (range 1 1000000)) and it didn't complete, not sure if I ran into a deadlock or it was just very slow |
| 12:53 | Morgawr | (waited like 10 minutes) |
| 12:54 | Morgawr | this is not normal, is it? |
| 12:54 | hardliner_ | wedr: i'm c++ monkey |
| 12:55 | rasmusto | arrdem: (if (pred map) (update-in map path arg ...) map) ? doesn't seem like you'd have to wrap it in a function |
| 12:55 | wedr | mtp: http://en.wikipedia.org/wiki/Enterprise_software |
| 12:55 | arrdem | rasmusto: the reason to wrap it is so that I can use it in -> |
| 12:55 | arrdem | rasmusto: that's the real question.. mid -> conditional updates. |
| 12:55 | rasmusto | arrdem: okay, looks reasonable then |
| 12:55 | rasmusto | arrdem: see also cond-> |
| 12:56 | hardliner_ | wedr: do you have dress code? |
| 12:56 | arrdem | rasmusto: oh right. we have that as of 1.5... |
| 12:56 | Morgawr | http://www.morgawr.eu/p/1381767636.png the last command seems to either block or explode in computational time to something very unreasonable... |
| 12:56 | rasmusto | arrdem: seem better than making a function that works only for -> (and not ->>) |
| 12:57 | rasmusto | arrdem: 1.20 is NOT the latests: warning!, use 1.30 docs instead |
| 12:59 | Morgawr | http://www.morgawr.eu/p/1381767851.png oh well, looks like it finished :D .... :( |
| 13:06 | llasram | Morgawr: FYI, you might consider using a text paste service like refheap.com instead of images... |
| 13:07 | arrdem | llasram: but he's trolling for our IPs... |
| 13:07 | Morgawr | arrdem: lol |
| 13:07 | Morgawr | llasram: I find it easier when I'm not pasting code |
| 13:07 | Morgawr | sorry |
| 13:07 | Morgawr | (I have a script that takes screenshot and uploads it automatically) |
| 13:08 | arrdem | Morgawr: refheap.el? |
| 13:08 | Morgawr | arrdem: I know I could use a paste service but using paste tool for structured text that doesn't have anything directly to do with code feels weird to me |
| 13:08 | Morgawr | but yeah, I'll do that in the future, sorry |
| 13:09 | mtp | reading a screenshot of text is weird to the rest of us |
| 13:10 | arrdem | mtp: <fighting pants> SPEAK FOR YOURSELF SAH </fighting pants> |
| 13:10 | Morgawr | mtp: point taken |
| 13:11 | mtp | flashbacks to tech-support days, with Word docs full of screenshots of terminals |
| 13:11 | Morgawr | sounds like PTSD :P |
| 13:12 | mtp | maybe |
| 13:12 | mtp | :) |
| 13:27 | bitemyapp | technomancy: I enjoyed your OCaml write-up, thanks for doing that :) |
| 13:28 | bitemyapp | technomancy: how would you feel about a Haskell compare-contrast for grench? (not your labor, mine) |
| 13:37 | technomancy | bitemyapp: that'd be interesting. I wonder if it would create confusion for users though. |
| 13:38 | bitemyapp | technomancy: it'd be a semi-private/quiet experiment. Between the two of us, I think I've done more Haskelling and I want to compare contrast. |
| 13:38 | bitemyapp | technomancy: I look at either potential result as a win, either Haskell does well and that's cool or I get a new cudgel for tormenting puffnfresh with. |
| 13:39 | technomancy | seems like a lot of work to go to for just a throw-away program, even though I'd certainly be interested in reading a write-up. but if it's something you'd have fun with then go for it =) |
| 13:40 | bitemyapp | technomancy: I wanted something not-Clojure to do. my head rattles from the parens inside if I turn too quickly. |
| 13:51 | technomancy | you forgot the firstworldproblems hashtag there buddy =) |
| 13:52 | bitemyapp | technomancy: haha, too true. |
| 13:52 | bitemyapp | technomancy: the reason for the head-rattling is I've been doing Clojure at work and at home, so I'm more clj-inundated than usual. |
| 13:53 | rasmusto | I really like pprint/print-table, but I want to make it parsable, is there something in edn for me? |
| 13:58 | bitemyapp | Alright Timbre, this shit: "java.lang.NullPointerException: null" is getting old. |
| 13:58 | Morgawr | mm.. I'm trying to write a map with some heavy computation and I want it to be realized (non-lazy), I try (time (doall (map myfunction mycoll) nil)) in the repl because I don't want it to print any values (too cluttered) and it finishes right away |
| 13:59 | Morgawr | isn't doall supposed to enforce realization? |
| 13:59 | technomancy | bitemyapp: did you try the paaaaaatch? |
| 13:59 | Morgawr | oh |
| 13:59 | bitemyapp | technomancy: oh frick. |
| 13:59 | Morgawr | nvm I realized the problem |
| 13:59 | rasmusto | Morgawr: what was the problem? |
| 13:59 | Morgawr | (doall (myfun) nil) means that it doesn't actually enforce (myfun) |
| 13:59 | bitemyapp | technomancy: let me give it a whirl. What's the most direct way, checkout? |
| 13:59 | rasmusto | oh, the nil was returned right away? |
| 13:59 | Morgawr | rasmusto: yea |
| 14:00 | rasmusto | gotcha |
| 14:00 | Morgawr | because the second form of doall takes [n coll] |
| 14:00 | Morgawr | to realize 'coll' n times |
| 14:00 | technomancy | bitemyapp: lein install from a checkout |
| 14:00 | Morgawr | but it was seeing 'coll' as 'nil' :P |
| 14:00 | Morgawr | (do (doall (mymap)) nil) is what I needed |
| 14:00 | Morgawr | (I know it's ugly but it's just some quick repl hacking to test stuff) |
| 14:00 | llasram | Morgawr: Or `dorun`? |
| 14:00 | rasmusto | Morgawr: uh, I thought doall just took a lazy seq in an implicit do? |
| 14:01 | bitemyapp | technomancy: the good news is, I have my repro because I just nailed this error in production, so I have a regression I can poke at. |
| 14:01 | bitemyapp | well, fake production. Not real production. |
| 14:01 | bitemyapp | you get my meaning -_- |
| 14:02 | Morgawr | llasram: derp |
| 14:02 | Morgawr | llasram: thanks for the tip, I didn't even know that :P |
| 14:02 | Morgawr | rasmusto: you can pass a number to doall to specify how much of the sequence you want to realize |
| 14:03 | rasmusto | Morgawr: ah, didn't see that |
| 14:10 | Raynes | bitemyapp: I don't see the problem. |
| 14:10 | Raynes | bitemyapp: Obviously null. |
| 14:11 | Raynes | What part of null do you not understand? null. |
| 14:11 | bitemyapp | Raynes: the hilarious part is it swallows all my logging information from Timbre, making it impossible to know what broke. |
| 14:11 | bitemyapp | thanks Obama. |
| 14:12 | Raynes | I bet it's running better than the convernemtn. |
| 14:12 | Raynes | wat how did that happen |
| 14:12 | Raynes | government |
| 14:12 | scriptor | interesting typo |
| 14:19 | llasram | Raynes: You may want to get that stroke looked at |
| 14:19 | Raynes | llasram: Indeed. |
| 14:20 | llasram | Raynes: Do you happen to use the Dvorak keyboard layout? |
| 14:20 | Raynes | llasram: I barely use the qwerty layout. |
| 14:20 | llasram | hah |
| 14:21 | Raynes | I'm the second fastest typist in Geni at the moment, yet nobody understands how I even manage to produce words given that I type with like two fingers on each hand. |
| 14:21 | scriptor | what's your typing speed? |
| 14:21 | Raynes | 110-115ish |
| 14:21 | technomancy | the supple fingers of youth |
| 14:22 | arrdem | yall type so fast... |
| 14:24 | dnolen | this is a pretty tricky/fun performance enhancement ticket for ClojureScript http://dev.clojure.org/jira/browse/CLJS-619 |
| 14:25 | bitemyapp | technomancy: yes, that fixed it. |
| 14:25 | bitemyapp | Raynes: I do 80-90 WAM typically, 100-105 if I'm paying attention. |
| 14:26 | bitemyapp | technomancy: now I have useful stacktraces again. |
| 14:26 | Raynes | bitemyapp: My typical speed is something like 85-95. |
| 14:26 | Raynes | bitemyapp: But if I care, I can hit 110-115 pretty easily. |
| 14:26 | bitemyapp | welp. pushin' this to quasi-prod so I can know wtf is going on. |
| 14:26 | bitemyapp | Raynes: I don't think I could crack 110 unless I practiced. I don't type properly (home row) |
| 14:27 | Raynes | bitemyapp: What I was just saying is that I don't do that either. |
| 14:27 | Raynes | I don't do anything even remotely resembling that, in fact. |
| 14:27 | Raynes | My hands literally hover above the keyboard. |
| 14:27 | Raynes | I hunt and peck, but at 200 miles per hour. :P |
| 14:27 | Raynes | (and without looking at the keyboard, of course) |
| 14:28 | technomancy | isn't that just pecking then? |
| 14:28 | Raynes | Sure. My fingers still hunt. |
| 14:28 | noncom | when you do that does it look like that? : https://www.youtube.com/watch?v=8T7FKrJvgCk |
| 14:28 | bitemyapp | my fingers hunt some, but they hover in orbits on the left and right-hand sides so that I have easier access to symbols. |
| 14:29 | jonasen | dnolen: I don't really understand what you mean in CLJS-619. What do you mean with IFn implementations for different arities? Doesn't IFn already support that? |
| 14:29 | Raynes | noncom: Not really. |
| 14:30 | dnolen | jonasen: it does not, IFn is a fiction at this point - it just emits .call and .apply methods |
| 14:30 | technomancy | bitemyapp: thanks for the report; will try to get a release out today. |
| 14:30 | dnolen | jonasen: with the obvious perf hits around & args |
| 14:31 | jonasen | dnolen: what's the alternative? |
| 14:31 | dnolen | jonasen: IFn implementors have .cljs$core$IFn$_invoke$arity$ for each arity |
| 14:32 | dnolen | jonasen: since it's a bear to implement all 20 arities, I think it may be ok to use JS prototypes here to get default implementations |
| 14:32 | dnolen | jonasen: this means calls collections as functions will get much, much, much faster |
| 14:32 | dnolen | jonasen: and it would be possible for multimethods to not be so slow |
| 14:32 | bitemyapp | technomancy: aweeeessssooome. Thank you :) |
| 14:34 | pandeiro | how can i kill a repl process started with lein repl :headless? |
| 14:34 | jonasen | so ([42 43] 1) would emit <persistent-collection>..cljs$core$IFn$_invoke$arity$1(1) |
| 14:36 | jonasen | dnolen: instead of cljs.core.PersistentVector.fromArray([42, 43], true).call(null, 1); |
| 14:36 | dnolen | jonasen: yep |
| 14:36 | jonasen | dnolen: I think dart does this? |
| 14:37 | dnolen | jonasen: and that will get even faster when we emit constant tables w/ pre-allocated data structures |
| 14:37 | dnolen | so (if (#{1 2 3} 1) ...) could be very fast |
| 14:38 | Raynes | bitemyapp, noncom, technomancy: https://www.youtube.com/watch?v=5ZWxIyxxtis |
| 14:38 | Raynes | In case you care. |
| 14:39 | dnolen | jonasen: re: multimethods, currently 100X slower than Clojure JVM |
| 14:39 | bitemyapp | Raynes: yeah, you type a lot like I do. |
| 14:39 | jonasen | dnolen: I haven't really looked at how multimethods work... But I'm a happy user of them :) |
| 14:40 | Raynes | bitemyapp: But on a better keyboard! :D |
| 14:40 | Raynes | :p |
| 14:40 | jonasen | so making them faster +1 from me |
| 14:40 | bbloom | dnolen: is anything blocking the constant tables any more? we have the :constant? flag and we have the keyword table. can't we just glue those together pretty easily? |
| 14:42 | bitemyapp | Raynes: I type on a fairly flat wired apple keyboard. I've grown accustomed to these things. |
| 14:43 | dnolen | jonasen: they are pretty simple, at least the ClojureScript implementation - skimming the source, there's a lot of room for improvement. |
| 14:44 | dnolen | bbloom: we never actually merged in the :constant? work in your branch |
| 14:52 | bbloom | dnolen: *scratches head* really? it's been a while, i forgot heh |
| 14:53 | Raynes | bitemyapp: I'm fairly accustomed to my macbook keyboard, but I <3 my das. |
| 14:53 | bbloom | dnolen: ooooh yeah, heh |
| 14:53 | arrdem | upvotes for the das! |
| 14:53 | Raynes | bitemyapp: You should consider getting a CM quickfire rapid. |
| 14:53 | bbloom | ok, well i guess i need to bring that up to date at some point |
| 14:53 | Raynes | It's super cheap (if you care about that), but is mechanical and doesn't suck. |
| 14:53 | Raynes | My flatmate got one of those recently. Enjoys it quite a bit, I hear. |
| 14:53 | bitemyapp | Raynes: I've gotten so used to the low-travel Apple keyboards that I don't know if I'd want to do that except as a gaming keyboard. |
| 14:54 | bbloom | dnolen: ah but f80956 did make it in |
| 14:54 | technomancy | I'm kind of afraid that once my mechanical keyboard arrives I'll just be filled with disgust at everything else |
| 14:55 | Raynes | bitemyapp, technomancy: It's really easy to go from a good keyboard to a shitty apple keyboard. |
| 14:55 | bitemyapp | technomancy: which did you get? |
| 14:55 | Raynes | In my experience anyways. |
| 14:55 | arrdem | technomancy: it isn't so much disgust at anything else.. you just miss the feel when not using it. |
| 14:55 | bbloom | dnolen: https://github.com/brandonbloom/clojurescript/commit/b02b07fe888ffc8554469148cb35afdceabcd348 doesn't seem too scary if that would help :-P |
| 14:55 | technomancy | bitemyapp: ergodox |
| 14:55 | bitemyapp | I've owned mechanical keyboards before, I just don't own one right now. |
| 14:55 | bitemyapp | technomancy: too hardcore for me. |
| 14:55 | dnolen | bbloom: yep, that's the bit that's missing |
| 14:56 | technomancy | arrdem: going from my thinkpad to a macbooklike chicklet filled me with disgust though |
| 14:57 | arrdem | technomancy: idk. I can still type on my friends macbooks and my Samsung Series 9, I just miss the clicking feeling to the point that I've been known to lug a Das around campus with me. |
| 14:57 | technomancy | I got rid of my series 9 =( |
| 14:57 | arrdem | Q_Q |
| 14:57 | arrdem | technomancy: you traded up to a Crackbook Air didn't you, trator. |
| 14:58 | technomancy | arrdem: not a chance. got my old thinkpad repaired. |
| 14:58 | jonasen | dnolen: bbloom: I read the log from a couple of days back when you were discussing cljs "static fields" with cemerick... I just want to mention that I support your side of the argument: https://groups.google.com/d/msg/clojure-dev/Ge5uEqlUcJk/E-PnFQ9lefoJ |
| 14:59 | bbloom | jonasen: ::thumbs up:: |
| 15:00 | dnolen | jonasen: yes I remember |
| 15:00 | dnolen | jonasen: that's why I pinged you when I changed it, I realized you were right because otherwise identifying namespaces is more complicated in CLJS. |
| 15:01 | dnolen | jonasen: we can special case the convention for deftypes, but it just seems like a JVMism to me, not a Clojure-ism. |
| 15:02 | jonasen | dnolen: I think it's important to follow clojure semantics as close as possible but _not_ interop semantics |
| 15:02 | bbloom | dnolen: i get a test failure on master right now |
| 15:02 | jonasen | interop is obviously different between platforms |
| 15:02 | bbloom | dnolen: Error: Assert failed: (= (-> s reader/read-string .valueOf) (-> s reader/read-string pr-str reader/read-string .valueOf)) |
| 15:03 | bbloom | under V8. out/core-advanced-test.js:1090 |
| 15:03 | dnolen | bbloom: hrm, running them, tests pass for me. |
| 15:03 | bbloom | i did a clean & a bootstrap, then ran them & get that |
| 15:04 | dnolen | bbloom: trying |
| 15:06 | dnolen | bbloom: no failing tests, clean + bootstrap |
| 15:06 | bbloom | on 09488be2? |
| 15:06 | dnolen | bbloom: yes |
| 15:06 | bbloom | odd.... |
| 15:07 | dnolen | bbloom: or a bug, that's an #inst test |
| 15:09 | bbloom | dnolen: #_ing it out: all the other tests pass for me |
| 15:09 | gphilippart | hi |
| 15:09 | jonasen | dnolen: bbloom: I haven't been able to run the test suite for a long time and I have not been able to figure out what the problem is. I've got a special testing branch where I have commented out https://github.com/clojure/clojurescript/blob/master/test/cljs/cljs/core_test.cljs#L1725-L1726 |
| 15:10 | dnolen | jonasen: so that line causes tests to not run for you? |
| 15:10 | gphilippart | Can anyone give me a hand on a simple atom probem ? |
| 15:10 | bbloom | dnolen: run ${V8_HOME}/d8 and tell me what version you've got |
| 15:10 | bbloom | gphilippart: don't ask to ask. just ask |
| 15:10 | dnolen | version 3.22.11 (candidate) |
| 15:10 | dnolen | I built a couple of days ago |
| 15:10 | gphilippart | yeah, right |
| 15:10 | bbloom | dnolen: hmm, i've got 3.10.2.1 |
| 15:11 | gphilippart | I expect reset! to respect lazyness but (reset! commands (cycle (concat (repeat 6 "UP") (repeat 6 "DOWN")))) realizes the lazy seq that comes out of (cycle x) |
| 15:12 | jonasen | dnolen: core_test.cljs doesnt compile for me with #queue literals. But the weird thing is that #queue [1 2 3] works in script/repljs |
| 15:12 | gphilippart | where commands is an atom of course |
| 15:12 | bbloom | jonasen: have you run script/boostrap ? |
| 15:12 | jonasen | bbloom: yes |
| 15:12 | bbloom | and script/clean? :-) |
| 15:13 | jonasen | bbloom: yep, several times :) |
| 15:13 | bbloom | *shrug* |
| 15:13 | bbloom | i'm updating my v8 now |
| 15:13 | bbloom | seeing if that helps my issue |
| 15:14 | amalloy | gphilippart: no it doesn't |
| 15:14 | bbloom | dnolen: anyway. i remembered the other thing that is blocking the constants table for data structures.... |
| 15:14 | amalloy | perhaps your repl is realizing the sequence in order to print it for you |
| 15:14 | dnolen | jonasen: seems like a reader problem maybe? what version of tools.reader is in your lib directory? |
| 15:14 | bbloom | dnolen: it's the fact that all the deftypes get mixed in with their implementations. we'd have to sort all the deftypes to the top, basically |
| 15:14 | bbloom | b/c the fields/constructor needs to come before the constants table |
| 15:14 | jonasen | so #queue [1 2 3] works in script/repljs but _not_ script/repl |
| 15:14 | bbloom | which is needed throughout the bootstrapping process |
| 15:15 | dnolen | jonasen: seems like a classpath thing? |
| 15:15 | dnolen | bbloom: we already emit constant_table.js in the right place |
| 15:15 | dnolen | after the standard lib, before all user libs |
| 15:16 | dnolen | oh |
| 15:16 | jonasen | dnolen: Yes, probably. Does #queue literals work for you in script/repl? |
| 15:16 | gphilippart | amalloy : seems I'm bitten by the repl realizing lazyseqs. |
| 15:16 | gphilippart | how do you know it's still lazy ? |
| 15:17 | dnolen | bbloom: oh you're talking about making it work for user deftypes too ... lower priority I think. |
| 15:17 | amalloy | gphilippart: because it would be absurd for it not to be. that is just not how things work |
| 15:17 | amalloy | reset! doesn't have any magical properties that reach inside of objects and somehow make them non-lazy; it just sets a pointer |
| 15:18 | bbloom | dnolen: hmmm… i didn't consider differentiating core and user deftypes… |
| 15:18 | dnolen | jonasen: yes #queue [1 2 3] works for me in repljs |
| 15:19 | gphilippart | amalloy : yeah it sounded absurd to me as well, yet my ring handler blocks on this call. I might have missed something. |
| 15:19 | jonasen | dnolen: it works for me to in repljs, but not in repl (i.e., script/repl) |
| 15:20 | dnolen | jonasen: which is the Clojure repl, why should it work there? |
| 15:20 | jonasen | dnolen: ok, just wanted to check |
| 15:21 | dnolen | jonasen: compile-file* in compiler.clj binds reader/*data-readers* to tags/*cljs-data-readers* |
| 15:21 | dnolen | jonasen: where reader is tools.reader |
| 15:23 | pandeiro | anyone use ring-middleware-format? besides setting the Accept: header what must a request do to trigger the automatic response serialization? |
| 15:24 | noonian | pandeiro: you should get response serialization on any route that you wrapped with wrap-format-response, if you don't specify one it should default to json I think |
| 15:32 | bitemyapp | If I find the person responsible for putting this: ["[]"] - in my schema, I'm going to beat them to death with a banana. |
| 15:33 | pandeiro | noonian: i am doing something like (-> (site (context root [] my-routes)) (wrap-restful-format)) - do i need to call wrap-format-response? i thought it was included in wrap-restful-format |
| 15:34 | jonasen | dnolen: I can compile core_test.cljs from the repl using cljs.compiler/compile-file*. I can also read #queue literals in script/repljs. But I can not read #queue literals when running script/test.. |
| 15:34 | noonian | pandeiro: wrap-restful-format does both, but if you wrap routes with wrap-response that are supposed to return html and not json I've encountered problems |
| 15:35 | noonian | so I switched to using wrap-restful-params for everything, and only wrap-restful-response on the actual routes I am returning non-html data from |
| 15:35 | dnolen | jonasen: hmm weird ... maybe we need to setup that binding around analysis as well? |
| 15:35 | bbloom | dnolen: jonasen: ugh. v8 takes forever to compile. how do people actually write software like this? |
| 15:36 | dnolen | bbloom: yeah forever |
| 15:36 | bbloom | IMO, 1 second is the upper bound for how long ANYTHING should take to compile |
| 15:36 | gphilippart | amalloy: I put a very simple ring app (20 lines) here : https://github.com/gphilipp/gilles-elevator/blob/master/src/gilles_elevator/core.clj. When I go to localhost:8081/reset, the browser returns the whole realized list, and the CPU goes wild. It's just a reset!. What's the issue ? |
| 15:36 | dnolen | bbloom: trying compiling Mercury sometime, 8 hours or something like that |
| 15:37 | dnolen | erg updated nrepl, stopped worked |
| 15:37 | dnolen | nrepl.el |
| 15:37 | amalloy | ring is trying to interpret the result of your reset! as a valid ring response |
| 15:37 | technomancy | bitemyapp: https://github.com/mmcgrana/clj-stacktrace/tree/0.2.7 |
| 15:37 | arrdem | dnolen: yeah melpa's nrepl is b0rken |
| 15:37 | noonian | pandeiro: for instance you can return a sequence of strings and ring renders it as html, if you call wrap-restful-response that will be converted to a json array, at least if its a vector |
| 15:37 | dnolen | arrdem: how to fix? |
| 15:38 | arrdem | dnolen: idk. I wound up pulling nrepl from my packages and `git clone`ing the master. that worked. |
| 15:38 | arrdem | dnolen: another fix is to use the marmalade version. |
| 15:38 | pandeiro | noonian: gotcha.. and the middleware should work fine with (context "foo" [] foo-routes), right? right now i'm getting 0-length responses for some reason |
| 15:38 | arrdem | dnolen: but that's only 0.2.0, not 0.2.3 which is Master ToT |
| 15:38 | amalloy | try reading the ring SPEC to see what a ring handler is supposed to return |
| 15:39 | amalloy | $google clojure ring spec.md |
| 15:39 | lazybot | [ring/SPEC at master · mmcgrana/ring · GitHub] https://github.com/mmcgrana/ring/blob/master/SPEC |
| 15:39 | technomancy | melpa =\ |
| 15:39 | bbloom | dnolen: ok, on latest V8: tests run |
| 15:39 | bitemyapp | technomancy: thank you :) |
| 15:39 | noonian | pandeiro: that usually means you need to wrap it in ring.util.response/response |
| 15:39 | dnolen | bbloom: ok good to know |
| 15:39 | dnolen | bbloom: all the JS engines on the bleeding edge are crazy finicky |
| 15:39 | pandeiro | noonian: huh b/c the ring-middleware-format README says just return a clojure data structure |
| 15:40 | dnolen | bbloom: they've on failed inexplicably at one time or another |
| 15:40 | dnolen | they've all |
| 15:40 | bbloom | heh |
| 15:40 | noonian | pandeiro: basically, handlers need to return maps, otherwise format-response is looking in the :body key presumably, and getting nil for the value |
| 15:40 | pandeiro | noonian: ah ok |
| 15:40 | pandeiro | compojure magic confused me there |
| 15:40 | noonian | pandeiro: yeah, the :body should contain a clojure datastructure, maps to json objects, vectors to arrays, etc |
| 15:41 | gphilippart | amalloy : thx, I wrapped my call into a do block, and return a "reset everything" string. |
| 15:41 | gphilippart | seems to do the trick |
| 15:41 | gphilippart | I get it now |
| 15:44 | dnolen | arrdem: grr, still not working for me, I get a hung process when using nrepl.el |
| 15:44 | arrdem | dnolen: the brand new one from github? |
| 15:46 | dnolen | arrdem: yeah, HEAD is busted, I git reset back to the 0.2.0 commit |
| 15:46 | arrdem | dnolen: ... weird that's not the behavior I'm seeing. I'm sitting at a4f90f2d25985396e760e6c889d9dcb19deddeca happily. |
| 15:47 | dnolen | arrdem: yeah, well at least it's working for me now, thanks for the help |
| 15:47 | arrdem | ugh someone is gonna have to figure out what's going on here eventually... |
| 16:15 | al-maisan | hello there! I get "Exception in thread "async-dispatch-916" java.lang.AssertionError: Assert failed: No more than 1024 pending puts are allowed on a single channel. Consider using a windowed buffer." when using core.async with a lot of go routines .. ist this a hard limit..? |
| 16:16 | BobSchack | pretty much https://github.com/clojure/core.async/blob/master/src/main/clojure/cljs/core/async/impl/channels.cljs#L57 |
| 16:17 | tbaldridge | al-maisan: yep, pending puts/takes create a unbounded buffer (a bad thing), Use a larger buffer, or use a windowed one. |
| 16:18 | tbaldridge | or at least without that assert they create a unbounded buffer. |
| 16:18 | al-maisan | will try a larger buffer .. thanks tbaldridge and BobSchack ! |
| 16:20 | amalloy | i wouldn't just increase the buffer size without at least examining why you need more than 1024 buffered writes. it seems more likely to be a bug in your code than a limitation you're really bumping up again |
| 16:21 | amalloy | like, two thousand different go blocks all writing to the same place? doesn't sound good |
| 16:26 | pepijndevos | Should I use core.monad or protocol-monads? |
| 16:28 | al-maisan | amalloy: I actually forgot to set the buffer size in first place |
| 16:28 | amalloy | pepijndevos: i don't think core.monad exists. algo.monad? |
| 16:28 | al-maisan | amalloy: I have a program that spawns 50K go routines that all write results to the same channel |
| 16:29 | pepijndevos | amalloy, yes. |
| 16:29 | tbaldridge | al-maisan: that's going to be a bit of a problem for several reasons. but, what do you need 50k go blocks for? |
| 16:29 | pepijndevos | everyone at eeuroclojure seems to tak about the state monad |
| 16:30 | pepijndevos | so while I'm in my place with proper wifi, I though i'd check it out |
| 16:30 | lynaghk | si14: pong |
| 16:30 | amalloy | pepijndevos: i would for sure not use algo.monad. i probably would learn haskell rather than try to use protocol-monads, but at least protocol-monads is conceptually sound; last i checked, it doesn't violate the monad laws |
| 16:30 | pepijndevos | haha |
| 16:31 | pepijndevos | I did some haskell actually |
| 16:31 | pepijndevos | but yea, the prevailing opinion seems to be that most advanced monads only make sense with a type system |
| 16:32 | pepijndevos | I just have some clojure code that I think could benefit from the state monad, so I want to try that |
| 16:32 | amalloy | i'm inclined to agree, but don't have enough experience that you should take my opinion seriously |
| 16:32 | al-maisan | tbaldridge: just kicking the tyres of core.async .. I have similar code working in golang |
| 16:32 | pepijndevos | what a stunning amount of documentation... |
| 16:33 | amalloy | that's jimduey for you, pepijndevos |
| 16:33 | amalloy | monads also suffer from lack of TCO, because you end up with a lot of nested calls to bind that could be optimized but aren't on the jvm |
| 16:33 | al-maisan | tbaldridge: what is a more "reasonable" number of go routines to be used with core.async? |
| 16:33 | tbaldridge | al-maisan: yeah, the reasoning for the limitation is that a) it's mostly pointless. Very few people need to do that in production. 2) it normally indicates a flaw in the logic of the program. |
| 16:34 | al-maisan | tbaldridge: err .. how about embarrassingly parallel problems? |
| 16:35 | tbaldridge | al-maisan: use reducers. core.async is a concurrency library, not a parallelism library. Or just spin up X number of threads/gos where X is the number of CPUs. Any more than that, and you're going to kill performance due to book keeping. |
| 16:35 | pepijndevos | amalloy, ouch... that *might* be a problem |
| 16:35 | pepijndevos | meh, probably not |
| 16:35 | tbaldridge | Notice how very few (if any) raytracers spin off a thread for every pixel. They spin up CPU+2 threads and then process the pixels in blocks |
| 16:35 | al-maisan | ok, will look at reducers .. thanks tbaldridge !! |
| 16:38 | bitemyapp | pepijndevos: I like that people use the opportunity to go to a Clojure conference and be surrounded by Clojurians to talk about things Haskellers do :) |
| 16:38 | AimHere | Isn't gossipping about people of other languages exactly what Clojurians do? |
| 16:38 | AimHere | At least in conferences |
| 16:39 | AimHere | They get some Scala dude in to talk about Scala. They get Byrd and Friedman to talk about Kanren and Prolog, they all bitch about Java |
| 16:39 | muhoo | there's been a weird envy/cross-pollination between haskell and clojure for a while |
| 16:40 | al-maisan | tbaldridge: yeah, ideally I'd like to fire up all the tasks in separare go routines and let the run time take care of things |
| 16:40 | al-maisan | tbaldridge: the golang runtime is handling huge numbers of go routines just fine |
| 16:40 | scriptor | muhoo: both ways? |
| 16:40 | muhoo | scriptor: mostly one way AFAICT |
| 16:40 | dnolen | al-maisan: the problems you'll encounter with your approach is no different than in core.async, Erlang, Haskell sparks, etc |
| 16:40 | tbaldridge | al-maisan: so does core.async, the problem is putting all the values into the channel. But like I said, you'll get better performance by doing things slightly differently |
| 16:41 | tbaldridge | al-maisan: for instance, spin up 10 gos to do processing, then use one more go to spool items into the channel. |
| 16:42 | al-maisan | thanks for the suggestions tbaldridge .. will try that |
| 16:42 | dnolen | al-maisan: here's a simple go program that breaks down |
| 16:42 | dnolen | https://gist.github.com/swannodette/6981382 |
| 16:42 | dnolen | easily portable to core.async, Erlang, Haskell where it will also ... break down |
| 16:46 | pepijndevos | the tests and source code arn't terribly helpful to understand how to use the state monad. |
| 16:46 | al-maisan | dnolen: I am clojure rookie and just trying to replicate what I had working in golang very nicely (https://github.com/freizeit/exercises/tree/master/cj-a-store-credit/golang) |
| 16:47 | al-maisan | dnolen: just experimenting with core.async at this point .. |
| 16:49 | al-maisan | dnolen: when I spawned 50K go routines (all writing to the same result channel) in golang the runtime handled that just fine .. hence my questions whether that would be the case in core.async as well |
| 16:49 | al-maisan | but never mind |
| 16:51 | dnolen | al-maisan: yes I understood what you're trying to do. But my gist shows precisely where allowing unbounded queues behind the scene allows things to fall apart. |
| 16:51 | al-maisan | sure .. point taken |
| 16:51 | dnolen | al-maisan: core.async could also allow it, but it does not - different philosophy |
| 16:51 | al-maisan | gotcha |
| 16:52 | tbaldridge | al-maisan: since it's an artificial limit, we don't mind removing it at some point, but we haven't seen a good use case yet. |
| 16:56 | coventry | bitemyapp: "git blame --retribution=banana-beat-down" |
| 16:56 | mercwith1mouth | lol |
| 16:56 | bitemyapp | coventry: it's unconscionable. |
| 16:57 | bitemyapp | meanwhile, I'm knee-deep in nested-reduce-hell. |
| 16:57 | bitemyapp | can't figure out how a root binding got ghosted out of existence by all my (next (reduce ...)) calls. |
| 17:00 | bitemyapp | Somewhere out there a Haskeller is mocking me mercilessly. |
| 17:01 | muhoo | i saw a post recently by a guy who listed all the reasons why using a queue is a bad idea. |
| 17:01 | muhoo | googled, haven't been able to find it. but it was basically "yeah, nice hammer, too bad that's not a nail" |
| 17:02 | tbaldridge | muhoo: WHERE!?! someone is wrong on the internet.... |
| 17:02 | Morgawr | man, I just read http://swannodette.github.io/2013/07/12/communicating-sequential-processes/ this... hell, I've always seen you guys talk about core.async but never really cared about it... it's amazing :V |
| 17:02 | bitemyapp | muhoo: in what use-case? |
| 17:02 | bitemyapp | muhoo: RabbitMQ has solved a goodly number of problems for something I'm working on right now. |
| 17:02 | dnolen | Morgawr: it's pretty cool |
| 17:03 | Morgawr | dnolen: yes |
| 17:03 | muhoo | tbaldridge: bitemyapp: wish i could find it. there was a list of cases where, if you are doing x, y, or z, you don't want a queue |
| 17:03 | bitemyapp | there are some aspects of queues I find awkward/annoying, I can't say I'd be upset if it just turned into a lazy-job-processing database coll instead. |
| 17:03 | Morgawr | definitely going to use this for my next gamedev challenge in clojurescript :P |
| 17:03 | tbaldridge | bitemyapp: the more I use RabbitMQ the more I love it. |
| 17:03 | bitemyapp | muhoo: that sounds...really useful. Please save the links you find next time :P |
| 17:03 | bitemyapp | tbaldridge: I'm...not really there with you on that. More like familiarity breeding contempt. It's still useful though. |
| 17:04 | bitemyapp | RMQ technically does its job fine, I just find the semantics of how AMQP based queues work annoying at times. |
| 17:04 | tbaldridge | explain? |
| 17:05 | bitemyapp | tbaldridge: listing my grievances is more like a blog post or a skype call than a drive-by on IRC. |
| 17:05 | bitemyapp | it might elucidate the matter quickly that I'm using it as a job queue, not a message queue though. |
| 17:06 | tbaldridge | bitemyapp: well let me know when that happens. For what I use it for (durable, reliable, messaging) it seems to work well, but there are many tasks I would not use it for. |
| 17:06 | bitemyapp | usually whenever I mention that I'm using RMQ as a job queue, people go, "ohhhh" at my grumpiness surrounding it. |
| 17:10 | bitemyapp | I'm just going to start adding types to my program until it makes sense. |
| 17:11 | tbaldridge | rofl, that's going on twitter. |
| 17:11 | dnolen | Morgawr: this is a pretty cool writeup of using core.async to do a Dots clone http://rigsomelight.com/2013/08/12/clojurescript-core-async-dots-game.html |
| 17:12 | dnolen | Morgawr: a good one a pong variation http://ragnard.github.io/2013/10/01/clojurecup-pong-async.html |
| 17:12 | dnolen | Morgawr: and I heard weavejester was talking about core.async for games at EuroClojure |
| 17:13 | Morgawr | dnolen: daamn so much to read, thanks! :P |
| 17:15 | bitemyapp | tbaldridge: you laugh, but it'll probably help. |
| 17:16 | bitemyapp | I hope. |
| 17:18 | hfaafb | is there a web interface that compiles cljs to js |
| 17:18 | hfaafb | to sate curiosities |
| 17:18 | muhoo | hfaafb: cljsfiddle? |
| 17:18 | scriptor | to see the resulting js? |
| 17:19 | dnolen | hfaafb: http://cljsfiddle.net |
| 17:19 | hfaafb | thanks :) |
| 17:19 | dnolen | hfaafb: http://himera.herokuapp.com/index.html also |
| 17:20 | dnolen | hfaafb: note neither are particularly informative since the JS we generate is optimized for further processing by Google Closure Compiler |
| 17:20 | scriptor | how do you check the version of cljs you're running? |
| 17:20 | dnolen | scriptor: there's no way to do that at the moment |
| 17:20 | scriptor | is the herokuapp one otherwise up-to-date? |
| 17:20 | hfaafb | ahh do any of these show the resulting js? |
| 17:22 | xeqi | does cljsfiddle let you write macros? |
| 17:22 | jonasen | xeqi: no |
| 17:23 | dnolen | hfaafb: in Himera you can always just wrap your expression in an (fn [] ...) |
| 17:24 | jonasen | xeqi: with some sandboxing and custom cljs it would probably be possible |
| 17:24 | dnolen | hfaafb: so (fn [] some-expr) |
| 17:24 | jonasen | xeqi: but I haven't experimented with that at all yet |
| 17:24 | xeqi | jonasen: np, I was just going to raise concerns about sandboxing |
| 17:26 | hfaafb | much appreciated dnolen |
| 17:26 | benmoss | hfaafb: also no, not really. you can sorta see it if you look at the EDN response on cljsfiddle |
| 17:27 | benmoss | oh, better answer :) |
| 17:28 | jonasen | I could (should?) add a tab where you can see the generated js... that would probably be a useful feature |
| 17:28 | jonasen | in cljsfiddle that is |
| 17:28 | dnolen | jonasen: it would be useful for debugging yes, I had to use the DOM inspector to debug |
| 17:33 | dnolen | hfaafb: the CLJS version Himera uses is pretty cold now, cljsfiddle very up to date. |
| 17:34 | bitemyapp | Okay, so today's lesson was: maintain symmetry in nested reductions. |
| 17:34 | bitemyapp | tbaldridge: done without types ^^ just thinking :P |
| 17:36 | dnolen | jonasen: oh rad, you keep improved cljsfiddle, console much appreciated |
| 17:36 | dnolen | s/improved/improving |
| 17:37 | jonasen | dnolen: yes, its not finished yet :) |
| 17:37 | letslearn | hello, i hope it is ok to ask n00b questiosn here. I am going through the clojure koans series and am kinda tripped up with the functions portion. The one i am having trouble with is this one specifically |
| 17:37 | letslearn | "Higher-order functions take function arguments" (= 25 ((fn [f] (f 5)) (fn [n] (* n n)))) |
| 17:38 | letslearn | I am not certain what is happening here. It is that - ((fn [f] (f 5)) is returning 5 ? |
| 17:40 | letslearn | So, to prove that, I tried (= (fn [f] (f 5))5) in the repl and it gave me false. So, I am confused |
| 17:41 | AimHere | letslearn, (fn [f] (f 5)) takes a function and applies it to 5 |
| 17:41 | letslearn | applies it to 5? |
| 17:41 | AimHere | letslearn, So ((fn [f] (f 5)) inc) would increase 5 |
| 17:41 | letslearn | oh |
| 17:42 | jonasen | dnolen: I'm also planning to implement C-x-e (etc) key bindings so you can do "emacs-like" interactive development... Paredit is another thing I'd like to add but I'm hoping idbknox will implement that (and release it) for lighttable. |
| 17:42 | AimHere | The function being passed happens to be one that squares the number that's passed to it |
| 17:42 | scriptor | applies it = called with |
| 17:42 | AimHere | Yes |
| 17:42 | AimHere | Sorry |
| 17:42 | scriptor | f applied to 5 = f is called with 5 |
| 17:42 | dnolen | jonasen: C-x-e would be slick |
| 17:42 | letslearn | aah ok |
| 17:42 | scriptor | just clarifying |
| 17:42 | letslearn | thank you! AimHere and scriptor |
| 17:42 | dnolen | jonasen: did kovasb do a stand alone paredit thing? or least bits of it? |
| 17:43 | dnolen | s/did/didn't |
| 17:43 | AimHere | ,(apply #(* x x) 5) |
| 17:43 | jonasen | did he? |
| 17:43 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: x in this context, compiling:(NO_SOURCE_PATH:0:0)> |
| 17:43 | AimHere | ,(apply #(* % %) 5) |
| 17:43 | jonasen | for codemirror? |
| 17:43 | clojurebot | #<IllegalArgumentException java.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Long> |
| 17:43 | AimHere | Gah |
| 17:43 | dnolen | jonasen: oh I was thinking of this - http://github.com/achengs/subpar |
| 17:43 | hyPiRion | ,(apply #(* % %) [5]) ;? |
| 17:43 | clojurebot | 25 |
| 17:44 | jonasen | dnolen: Thanks! I'll definitely take a close look at that! |
| 17:44 | letslearn | ok |
| 17:46 | letslearn | , ((fn [f] (f 5)) -) ; ? |
| 17:46 | clojurebot | -5 |
| 17:46 | letslearn | thanks Aimhere, i think i get it now |
| 17:47 | bitemyapp | core.typed ended up being too noisy to be helpful in my use-case. Look forward to seeing it improve though. |
| 17:54 | mgaare | nrepl.el is broke |
| 18:54 | technomancy | why does lein-cljsbuild tell everyone to use hooks? |
| 18:58 | Raynes | technomancy: Too much phonics? |
| 19:00 | technomancy | undoubtedly |
| 19:03 | bitemyapp | I love it when I forget to comment my cond/case :elses so I remember what the fuck I was assuming at that point in time about the :else case |
| 19:47 | Morgawr | mm.. I'm trying to connect to an nrepl from lighttable and it's not working :( |
| 19:48 | Morgawr | I open the connect bar, add connection to nRepl (started from lein repl in my project), input localhost:<port> where port is the one provided by lein nrepl |
| 19:48 | rasmusto | Morgawr: is the project using clojure 1.5.X? |
| 19:48 | Morgawr | yes |
| 19:48 | Morgawr | 1.5.1 |
| 19:48 | Morgawr | it just says "connecting...." forever |
| 19:48 | rasmusto | that was the first thing that I ran into, idk what you're seeing, hm |
| 19:53 | rasmusto | can I use edn/read-string and (with-out-str (clojure.pprint/pprint somestuff)) safely? |
| 19:53 | Morgawr | uff, can't get it to connect ;_; |
| 19:54 | bitemyapp | Morgawr: I've never had any trouble in Emacs :) |
| 19:54 | rasmusto | well, if lighttable can't connect, can nrepl.el connect at least? |
| 19:54 | Morgawr | mmm.. I don't think it's an LT problem... when I kill the nrepl from the command line the "connecting..." is dropped |
| 19:54 | Morgawr | so maybe it's a problem from leing, idk |
| 19:55 | Morgawr | do I need to add some special flag to lein or somethnig? |
| 20:02 | Morgawr | does it have to be started in :headless mode from lein in order to be able to connect locally from LT? |
| 20:03 | rasmusto | Morgawr: that shouldn't matter. |
| 20:04 | rasmusto | Doesn't LT fire up its own repl if there isn't one running? |
| 20:04 | Morgawr | yes it does |
| 20:04 | Morgawr | but I want to connect to my own nrepl |
| 20:09 | rasmusto | i wonder if its a leiningen .nrepl-port thing |
| 20:09 | technomancy | if .nrepl-port gets written, you should be able to connect |
| 20:10 | technomancy | you can always test with `lein repl :connect` to see whether it's a client issue or not |
| 20:15 | Morgawr | technomancy: ehh, I did "lein repl :connect <port>" and it worked |
| 20:15 | Morgawr | but inside LightTable it doesn't |
| 20:16 | Morgawr | I really don't know why, it's so annoying |
| 20:17 | technomancy | yeah, no idea, sorry |
| 20:24 | rasmusto | Morgawr: what version of leiningen are you using? |
| 20:26 | Morgawr | 2.1.3 |
| 20:28 | rasmusto | I'm on 2.2.0, and I can connect to a new repl using LT |
| 20:29 | Morgawr | that might be the thing, how do I update lein? |
| 20:29 | rasmusto | lein upgrade |
| 20:30 | rasmusto | hmm, it looks like .nrepl-port and target/repl-port are both created with this version, I'm not sure what 2.1.3 did |
| 20:30 | Morgawr | rasmusto: ok, trying now :) |
| 20:32 | Morgawr | nah, still no good :( |
| 20:32 | rasmusto | you restarted the repl, right? |
| 20:33 | Morgawr | rasmusto: yeah ofc |
| 20:33 | rasmusto | :) just making sure. I've missed doing that personally |
| 20:33 | rasmusto | hrm, and you have both a .nrepl-port and target/repl-port file? |
| 20:34 | bitemyapp | arrdem: you watch SC2!? |
| 20:34 | Morgawr | rasmusto: where should I look for them? |
| 20:35 | rasmusto | Morgawr: on the machine that you're running the repl on |
| 20:35 | Morgawr | yeah but which folder :P in the lein project or in lein root? |
| 20:35 | rasmusto | oh, I guess I didn't understand, how are you attempting to connect to the repl with lt? |
| 20:35 | rasmusto | the root of the project where you run `lein repl` |
| 20:35 | Morgawr | I just run LT -> connections -> add connection from nRepl -> localhost:port |
| 20:36 | rasmusto | ah, okay. hrm |
| 20:36 | Morgawr | but yeah, it's not a big deal, I found a better way with dealing with this |
| 20:36 | Morgawr | by using the integrated LT repl |
| 20:36 | Morgawr | I was having a problem with an infinite loop (main game loop) so I just spawned that in another thread |
| 20:36 | Morgawr | and now it works perfectly :P no need for remote repl |
| 20:39 | rasmusto | Morgawr: hm yeah, I'm having some issues with the remote repl thing too |
| 20:40 | arrdem | bitemyapp: you bet your drones I do |
| 20:41 | bitemyapp | arrdem: do you play too? |
| 20:42 | arrdem | bitemyapp: I'm not competitive but I do play. |
| 20:42 | bitemyapp | arrdem: I've been thinking about getting back into it. |
| 20:42 | rasmusto | that game stresses me out |
| 20:42 | bitemyapp | rasmusto: that sounds about right. |
| 20:42 | arrdem | bitemyapp: I had a lot of fun back in HS playing 2v2s with a Masters buddy of mine |
| 20:42 | bitemyapp | arrdem: want to do 2v2s sometime? |
| 20:42 | arrdem | bitemyapp: but I never really enjoyed 1v1s |
| 20:42 | arrdem | bitemyapp: I'm down. |
| 20:42 | bitemyapp | I love 2v2s. |
| 20:42 | bitemyapp | arrdem: what region do you play on? |
| 20:43 | rasmusto | i need too much coffee to sustain 100+ apm, and my strategy goes out the window at that point |
| 20:43 | arrdem | bitemyapp: NA |
| 20:43 | arrdem | rasmusto: lol I've made 116 before, but I _feel_ like I'm flying at that point. |
| 20:43 | bitemyapp | arrdem: how should I ping you to play later? |
| 20:43 | arrdem | rasmusto: my normal max is about 85-90 |
| 20:43 | rasmusto | i have inflated zerg apm too, so I cheat |
| 20:44 | bitemyapp | I have the most experience with Zerg, but playing Z really burns my tail. |
| 20:44 | arrdem | zerg APM is _not_ inflated. |
| 20:44 | bitemyapp | I need to finish switching to something else. |
| 20:44 | arrdem | bitemyapp: please please please be Protos |
| 20:44 | arrdem | muta/ling/bling is my specialty |
| 20:44 | arrdem | hydra/roach is my alternate |
| 20:44 | rasmusto | arrdem: its not? I thought that auto-repeat on unit building counted |
| 20:44 | bitemyapp | arrdem: P is my second best race an the one I was trying to transition to. We can do ZP 2s. |
| 20:44 | bitemyapp | and* |
| 20:45 | bitemyapp | arrdem: what tier are you? |
| 20:45 | bitemyapp | technomancy: kekekekekekeke |
| 20:45 | arrdem | bitemyapp: sounds good. I just finished midterms as you can tell by my ranting about church numerals. email me later and we can get something going. |
| 20:45 | arrdem | bbl lock picking |
| 20:45 | scriptor | time to make a clojure lounge channel |
| 20:45 | arrdem | technomancy: my appologies |
| 20:46 | rasmusto | scriptor: clounje |
| 20:46 | bitemyapp | rasmusto: ew |
| 20:46 | arrdem | scriptor: #clojure is the #clojure-offtopic |
| 20:46 | technomancy | arrdem: no this is legit; I just had a bad pattern match |
| 20:46 | scriptor | though I guess #emacs is pretty loungy |
| 20:46 | rasmusto | #emacs is where I go for politics |
| 20:46 | rasmusto | it hasn't worked out too well so far... |
| 20:47 | arrdem | technomancy: you should explain that in english... IRC modes are one of the many things I don't grok yet. |
| 20:48 | bitemyapp | arrdem: http://www.dslreports.com/faq/8037 |
| 20:48 | rasmusto | bitemyapp: what isn't on dslreports.com? |
| 20:48 | arrdem | bitemyapp: ah. that's what I thought it meant. |
| 20:48 | technomancy | arrdem: just that I thought for a moment it was that "everyone in this room is terrible. please help me write a starcraft clone in clojure" troll |
| 20:49 | technomancy | and I was getting an itchy trigger finger |
| 20:49 | bitemyapp | LOL |
| 20:49 | bitemyapp | I actually totally forgot about that guy. |
| 20:49 | arrdem | HUEUEUEUE |
| 20:49 | bitemyapp | arrdem: wrong game, that BRs ruined Dota/Dota2/HoN/LoL not SC2. |
| 20:49 | rasmusto | he's probably laughing on the way to the bank as we speak |
| 20:49 | arrdem | bitemyapp: I think in his 48hrs chord equaled my cloutjure score... |
| 20:49 | bitemyapp | in SC2 they can't hide behind their teammates so they get face-smashed back into the MOBAs. |
| 20:50 | bitemyapp | arrdem: http://cloutjure.com/ ? |
| 20:50 | scriptor | I wish EE/RoN style RTS's |
| 20:50 | scriptor | someone should make one in clojure |
| 20:50 | arrdem | bitemyapp: yeah... the DB has scores but the website doesn't |
| 20:51 | arrdem | ok. phew. |
| 20:52 | arrdem | { "#clojure" : { "nick" : "chord", "posts" : NumberLong(719) } } |
| 20:52 | bitemyapp | wtf is a NumberLong? |
| 20:52 | arrdem | bitemyapp: mongodb weirdness |
| 20:52 | arrdem | bitemyapp: hey. we didn't have time to get neo4j working. |
| 20:53 | arrdem | bitemyapp: I practically DDoS'd our server and was still looking at 8hrs too slow to input the data. |
| 20:54 | technomancy | oh dear; is that to get around JSON's being coupled to JS broken numerics? |
| 20:54 | technomancy | wait no; I actually don't want to know the answer |
| 20:54 | bitemyapp | arrdem: you know I work on Korma, got a RethinkDB client started, and have been doing Datomic at work right? |
| 20:54 | bitemyapp | technomancy: the answer is yes, btw. |
| 20:54 | arrdem | technomancy: yeah... sadly that answer is yes. |
| 20:54 | bitemyapp | arrdem: there are a number of things you could do to avoid using MongoDB :( |
| 20:54 | arrdem | bitemyapp: no I did not. you should teach me to use a DB that sucks less. |
| 20:55 | bitemyapp | arrdem: I would be happy to. I should actually finish the Korma Clojure Cookbook chapter |
| 20:55 | bitemyapp | arrdem: then you could be one of my test subjects for the chapter. |
| 21:47 | dobry-den | I read that you should only throw Exceptions for external catastrophies, not for known hazards like user-input error. |
| 21:47 | dobry-den | Then what do you do when your library user's input was invalid? |
| 21:48 | technomancy | dobry-den: IMO there are places it's fine to throw for user error |
| 21:48 | technomancy | stuff like users trying to access things they don't have permissions for |
| 21:49 | technomancy | I wouldn't do it for badly formatted input though |
| 21:50 | dobry-den | technomancy: Compass' compiler produces an error "Cannot determine position of: <user-input>" and I'm wondering how that translates. Do you generally subclass your own Exception named after your library? |
| 21:50 | hyPiRion | I think Instaparse throws, actually. |
| 21:51 | technomancy | dobry-den: no; definitely don't subclass exception |
| 21:51 | technomancy | use ex-info |
| 21:51 | hyPiRion | In general, you just throw ExceptionInfo or RuntimeException. |
| 21:52 | dobry-den | thanks |
| 22:57 | scanlonman | Hey everyone, I just began 4clojure.com and am on problem 23 (http://www.4clojure.com/problem/23). Basically, the question wants me to reverse a sequence without using reverse or rseq |
| 22:57 | scanlonman | My question is -- is that possible to do in a method with only one argument? |
| 22:57 | scanlonman | All of the solutions I was thinking of had two arguments with a bootstrap method containing one argument |
| 23:03 | Raynes | It is indeed possible. |
| 23:05 | brehaut | ,(partial reduce +) |
| 23:05 | clojurebot | #<core$partial$fn__4190 clojure.core$partial$fn__4190@23578d> |
| 23:05 | brehaut | ,((partial reduce +) [1 2 3]) |
| 23:05 | clojurebot | 6 |
| 23:06 | brehaut | ,((partial reduce + 0) [1 2 3]) |
| 23:06 | clojurebot | 6 |
| 23:10 | brehaut | scanlonman: ^ is a hint for you |
| 23:10 | scanlonman | Thank you! |
| 23:11 | brehaut | you might also find http://clojure.org/data_structures contains useful information |
| 23:15 | scanlonman | Are there any other recommended guides to learning Clojure? I've mostly just been using 4clojure and googling some methods when I need to find something out |
| 23:15 | scanlonman | I've googled around a bit and found the Clojure cheat sheet and Clojure in 15 minutes which were pretty useful |
| 23:15 | brehaut | that is the recommended method |
| 23:15 | scanlonman | Okay thanks! |
| 23:15 | scanlonman | Just need to get in the functional programming mindset :) |
| 23:15 | brehaut | the clojure.org website contains a lot of useful information but many beginners find it a bit overwhelmingly terse |
| 23:17 | danlentz | brehaut: just like clojure :) |
| 23:17 | brehaut | danlentz: i dont buy it. i have to type partial out in full! |
| 23:18 | danlentz | I have the hardest time remembering to shorten substring to subs |
| 23:18 | brehaut | you can jsut use .substring if you prefer |
| 23:18 | Raynes | Nothing wrong with it, in fact. |
| 23:28 | danlentz | i come from common-lisp where long symbols like 'multiple-value-bind are the norm |
| 23:29 | danlentz | nice when reading code, excruciating at times to type |
| 23:30 | brehaut | doesnt CL also have caaddaaddr |
| 23:31 | danlentz | with clojure's terse syntax I find I am able to make mistakes much more efficiently than in C |
| 23:31 | danlentz | CL |
| 23:31 | brehaut | i suspect that is familiarity more than anything |
| 23:32 | danlentz | y it was a dumb joke I was just kidding |
| 23:32 | brehaut | oh ok |
| 23:34 | danlentz | regarding CXXX..R I forget how many are defined by the standard. I think it is up to 10 A's and D's |
| 23:34 | brehaut | oh really? i thought it was jsut a reader macro expanding it out |
| 23:35 | danlentz | You'd have to be quite insane to actually use them, but at times there are a few notable ones like CADDR CDADDR that you find turning up more frequently |
| 23:36 | danlentz | nope they are functions |
| 23:36 | brehaut | thats something of a relief |
| 23:38 | danlentz | there is a book called let-over-lambda by doug hoyte that goes over the implementation of a very elegant macro that will define the CXR functions to any depth you want |
| 23:39 | danlentz | is really just an example of the macro writing technique, not a suggestion you them in practice |
| 23:39 | brehaut | right |
| 23:39 | brehaut | i think ive read a bit of that book. it gets very macros very fast |
| 23:40 | danlentz | hoyte does things with macros I never even imagined |
| 23:41 | danlentz | really strange new concepts like 'sub-lexical scope' is one off the top of my head |
| 23:42 | danlentz | it took me several years to digest the whole book -- starting at "I don't understand a damn thing in this book!" |
| 23:56 | tsantos | Is there an equivalent to (some pred coll) where it's sorta the opposite so it would be more like (matches? item pred-1 pred-2…)? I'm not sure I'm making this clear... |
| 23:57 | coventry | tsantos: Something like (some (every-pred p1 p2 ...) coll)? |
| 23:57 | danlentz | tsantos: any? |
| 23:58 | tsantos | well, I'm just interested to see of item passes any of the predicates |
| 23:59 | tsantos | (or (string? elem) (keyword? elem) (symbol? elem)) works but I was wondering if there was a simpler way of putting it. |