2013-11-18
| 00:08 | dnolen | seantallen: that's fixed in master as far as I can tell |
| 00:08 | dnolen | seangrove: oops, that was for you ^ |
| 00:08 | seangrove | Ok, just checking |
| 00:08 | dnolen | seangrove: re, Keyword stuff |
| 00:08 | seangrove | Still on 2014, haven't updated to 2030 |
| 00:12 | Raynes | SeanCorfield: lol |
| 00:12 | Raynes | Er, seangrove ^ |
| 00:12 | Raynes | Too many seans. |
| 00:12 | seangrove | We're a prolific bunch. |
| 00:19 | SeanCorfield | three seans... i'm just not used to that... back in england i was pretty much always the only sean in any group... |
| 00:20 | SeanCorfield | jetlag is beginning to get to me... I was up early Eastern time for my flight back from the Conj and now it feels like it's after midnight... but I don't want to give in and go to bed at just 9:30pm :( |
| 00:33 | Lajjla | Raynes, are you there? |
| 00:36 | danneu | I only get this when I attempt to `lein uberjar`: clojure.lang.Var cannot be cast to java.lang.Class, points to myapp.util$loading__invoke(util.clj:1) |
| 00:36 | danneu | anyone happen to know what would be |
| 00:37 | TEttinger | well the error is in your code, are you using :aot in the project file on any classes you use gen-class with? |
| 00:38 | TEttinger | I'm just guessing here, I have no idea without at least seeing the project.clj on a pastebin |
| 00:52 | danneu | TEttinger: my uberjar compiles unless my aot namespace requires any namespace that requires the file that has this ns form: https://www.refheap.com/21009 |
| 01:01 | TEttinger | danneu, is sandbox.cli listed in the project.clj as one of the :aot namespaces (or just use :aot :all) |
| 01:01 | TEttinger | :aot can be a vector or :all |
| 01:01 | danneu | yeah, it's in :aot |
| 01:02 | TEttinger | common problem because of a breaking change: is the :main namespace listed under :aot (it isn't implicit in some recent lein versions) |
| 01:02 | TEttinger | (but it used to be) |
| 01:04 | TEttinger | also, I would try :aot :all and see if it gives a different error or fixes it, which is always possible |
| 01:04 | TEttinger | occasionally you end up with difficult-to-reproduce bugs because lein clean hasn't been run |
| 01:05 | TEttinger | (old versions of a compiled class might be used without realizing it) |
| 01:05 | TEttinger | (lein clean removes all old compiled .class files) |
| 01:13 | danneu | TEttinger: nothing seems to change. but the stacktrace seems to consistently point to that ns form wherever i put it. at least it points to the file it has it, line 1 |
| 01:14 | TEttinger | hm, the one you linked to was cli.clj , not util.clj |
| 01:15 | TEttinger | are the ns names different than the file names? because that is another possible issue |
| 01:15 | danneu | oh, i copied util.clj's ns into cli.clj |
| 01:15 | ddellacosta | sometimes emacs just stops parsing a .clj file correctly and parens don't get automatically matched |
| 01:16 | ddellacosta | what is up with that? I can't tell why it stops working |
| 01:16 | ddellacosta | is there something I can set to re-start the parsing of a file in emacs? |
| 01:17 | danneu | ddellacosta: is paredit-mode getting toggled off or something |
| 01:18 | ddellacosta | danneu: no, it just sorta kinda works... it will do weird stuff like say "no matching paren found." And then it works again sometimes. Like, right now the same exact chunk of code is suddenly working for me. |
| 01:19 | ddellacosta | whatever, restarted it. *sigh* |
| 01:19 | ddellacosta | also, I would really like to have nrepl automatically save history...gotta set that up |
| 01:20 | justin_smith | ddellacosta: (setq nrepl-history-file "~/.emacs.d/nrepl-history.eld") |
| 01:20 | justin_smith | |
| 01:21 | justin_smith | that's literally all it takes |
| 01:21 | justin_smith | (in your emacs config, of course) |
| 01:21 | ddellacosta | justin_smith: thanks...that will tell emacs to automatically record the nrepl history? I really have to learn more about how nrepl + emacs works. :-( |
| 01:21 | clojurebot | I don't understand. |
| 01:22 | ddellacosta | no, I don't understand. |
| 01:22 | justin_smith | ddellacosta: yeah, if the variable is set, it gets saved to |
| 01:22 | justin_smith | the file name is totally up to you, if you want it in a different directory or whatever |
| 01:22 | ddellacosta | justin_smith: gotcha. Very good, thanks very much! |
| 01:28 | danneu | TEttinger: oh god |
| 01:29 | TEttinger | hm? |
| 01:29 | danneu | TEttinger: clojure.core.typed :refer :all imported `Keyword` which conflicted with `(import clojure.lang Keyword)` |
| 01:29 | TEttinger | it was the cli namespace in util.clj? |
| 01:29 | TEttinger | oh haha |
| 01:29 | danneu | fuck that error message |
| 01:29 | danneu | seriously |
| 01:29 | TEttinger | seriously |
| 01:30 | TEttinger | that's really confusing! |
| 01:30 | danneu | it clearly knows what symbol is causing the problem |
| 01:30 | TEttinger | I think it changed the meaning of... everything |
| 01:30 | TEttinger | by changing what keyword meant |
| 02:43 | danneu | it defined Keyword so that by the time (:import [clojure.lang Keyword]) happens, Keyword was a Var and couldn't be resolved into a class |
| 02:49 | abaranosky | have any of you setup your Emacs with tags, to search for Java symbols? |
| 02:51 | danneu | i've had to bring in a .java file recently. i just let myself suffer. |
| 02:51 | danneu | indentation formatting didn't even work |
| 02:51 | abaranosky | no need to suffer though. Emacs can handle it, I just happen to not have it setup right to do so. |
| 02:53 | abaranosky | danneu: it does require more skillz with elisp though... But I figure that figuring this out would help me "level up" my Emacs fu :) |
| 02:54 | danneu | dunno, this channel is home to some of the greatest yakshavers of all time. |
| 02:55 | danneu | bringing java to emacs is very... unyak |
| 02:56 | logic_prog | is there a way in clojure to get a "repl that cna go up/down stack frames" on an exception? |
| 02:57 | logic_prog | the ritz/nrepl stuff seems to only get _one frame_ rather than allowing me to go up/down all the frames |
| 03:48 | sveri | Hi, Neil Ford was giving a talk at WJAX this year, there he showed some code: http://pastebin.com/MHn4YBKt now, when i enter this in the repl i get a runtimeexception that indexed cannot be found. Do i have to import some functions to make this work? |
| 04:09 | amalloy | sveri: i've seen this function recently, and right above it was a definition of indexed |
| 04:12 | sveri | amalloy: ok? |
| 04:13 | amalloy | i assume it's in his talk somewhere |
| 04:13 | clgv | how was clojure/conj? |
| 04:14 | sveri | amalloy: hm, i have not found it yet -.- |
| 04:15 | sm0ke | where do i find clojure conj videos? |
| 04:17 | sveri | it seems to be in the clojure.contrib libraries |
| 04:28 | clgv | sveri: what are you looking for? |
| 05:50 | logic_prog | i've finally decided to learn datomic -- where can I read up on how to install datomic with riak as the backend? |
| 06:03 | nonuby | reviewing clojure style guide (again), i have a function that scrapes (simple call to clj-http and minimal bastardization) events for today, do you tend to prefix with get i.e. get-todays-events or just today-events? |
| 06:05 | clgv | nonuby: IMHO you omit the "get-" there |
| 06:19 | xsyn | nonuby: let the HTTP verbs do the GET and then make the functions names nouns |
| 06:19 | logic_prog | is there any good reason to use positional arguments rather than keyword arguments? |
| 06:21 | pjstadig | logic_prog: apply doesn't work so nicely with keyword arguments |
| 06:21 | logic_prog | this seems rather easy to fix |
| 06:22 | pjstadig | define "easy" |
| 06:24 | logic_prog | can be fixed with a < 10 line macro |
| 06:39 | nonuby | a 10 line macro is kinda of complicated in my opinion |
| 06:45 | clgv | nonuby: why? |
| 06:46 | nonuby | from the perspective of someone relatively new to clojure.. must macros I've seen are just a few lines and the rest delegate to functions that can be called a runtime |
| 06:46 | clgv | logic_prog: pjstadig: an approach to keyword arguments where apply works as well and transitive documentation is provided can be found here https://github.com/guv/clojure.options |
| 06:46 | clgv | nonuby: yeah, if that is possible that is better style |
| 06:47 | clgv | nonuby: although number of lines is not really apropriate for lisp anyway |
| 07:56 | dsrx | sorry if this is too vague a question - might anyone know why i can tab-complete a qualified classname in the REPL but when I try to instantiate it or call static methods on it I get a NoClassDefFoundError ? |
| 07:56 | dsrx | the jar containing that class is on the classpath |
| 07:57 | ucb | dsrx: have you :import the class? |
| 07:57 | ucb | dsrx: (maybe a silly question) |
| 07:57 | Jarda | dsrx: sometimes I have to restart the repl process when I get such errors |
| 07:58 | dsrx | if I :import the class in my core.clj file I also get the NoClassDefFoundError |
| 07:58 | dsrx | it just seems bizarre to me that I cannot import/use the class, and yet the REPL is able to tab-complete its fully qualified name |
| 08:00 | dsrx | oh, neat, i shut down all my cider processes and repl and now i'm getting a different (JNI) error. progress! :) thanks |
| 08:01 | ucb | heh |
| 08:01 | justin_smith | completion isn't just possible from the clojure process' info - there is also a method that completes based on the text in other buffers for example |
| 08:31 | augustl | https://github.com/paulirish/browser-logos :) |
| 08:31 | augustl | another thing we don't have to maintain anymore |
| 08:31 | augustl | wrong channel.. |
| 08:32 | augustl | there's ponies! |
| 09:14 | brainproxy | jury duty ... at least there's WiFi this year |
| 10:11 | dnolen | two things I would like to see wrapped up before cutting the next CLJS release - http://dev.clojure.org/jira/browse/CLJS-681, http://dev.clojure.org/jira/browse/CLJS-674 - help welcome! |
| 10:16 | makkalot | hi, i'm writing a lein plugin, when i run it inside the development project it runs ok, when run on some sample project i'm getting that criptic error : Could not locate leiningen/core/eval__init.class or leiningen/core/eval.clj on classpath |
| 10:16 | makkalot | any ideas ? |
| 10:18 | tcrawley | makkalot: do you have `:eval-in-leiningen true` in your project.clj? |
| 10:19 | makkalot | tcrawley, yes i have |
| 10:19 | TimMc | brainproxy: You get to bring in electronic devices?Lucky. |
| 10:24 | tcrawley | makkalot: try asking in #leiningen |
| 10:24 | makkalot | tcrawley, thanks will do |
| 10:55 | seangrove | Wow, like the lighttable integration going on here https://metaphysicaldeveloper.wordpress.com/2013/11/18/idiomatic-clojure-with-lighttable/ |
| 10:56 | seangrove | Although the code, while short, seems a bit strange... https://github.com/danielribeiro/LightTableKibit/blob/master/user.keymap.clj#L2 |
| 10:59 | coventry | What's the right way to get a jar produced by "lein install" into the right place in ~/.m2? |
| 10:59 | joegallo | lein install already does that |
| 10:59 | joegallo | that is, it's in the correct place. |
| 10:59 | coventry | Sweet, thanks. |
| 11:02 | brainproxy | TimMc: can only use them in the selection pool area - place you sit for max 3 days waiting for them to call your name for an actual court case selection process |
| 11:02 | brainproxy | I'd like to give a macro an "alias" within the same namespace |
| 11:02 | brainproxy | right way to do that? |
| 11:03 | brainproxy | e.g. suppose I have macro abc, naive attempt: (def also-abc abc) |
| 11:03 | learner__ | Hi a newbie question here. I am seeing a weird compilation exception on lein repl. Not sure what's going wrong. code is on refheap @ https://www.refheap.com/40b0869b10044388f62c69db7 thanks for your help |
| 11:05 | coventry | ,(do (defmacro foo2 [] (println "foo")) (def ^{:macro true} bar #'foo2) (bar)) |
| 11:05 | clojurebot | #<Exception java.lang.Exception: SANBOX DENIED> |
| 11:05 | coventry | (works in a non-crippled repl. :-) |
| 11:14 | newblue | coventry: that just blew my mind, especially how it handles arguments: |
| 11:15 | newblue | (do (defmacro foo2 [x y] (println "foo" x y)) (def ^{:macro true} bar #'foo2) (bar 5 10)) |
| 11:17 | TimMc | What surprises you about the arguments? |
| 11:18 | brainproxy | found `defalias`, that works :) |
| 11:19 | ToBeReplaced | i've got two questions for the collective IRC knowledge today! |
| 11:19 | TimMc | juxt, and map is lazy |
| 11:19 | ToBeReplaced | 1) does anyone have a recommendation for clojure/clojurescript windows automation tooling? anything like pywinauto, autohotkey, autoit, etc. |
| 11:20 | newblue | TimMc: when they weren't referenced in the #'foo2 part it's when I was like 'Oh this is what's going on' |
| 11:21 | TimMc | Ah, OK. |
| 11:22 | newblue | I was trying to figure out the exact problem a few days ago so that got me excited too |
| 11:22 | nDuff | ToBeReplaced: I'd probably consider writing a wrapper for Maveryx |
| 11:23 | newblue | wait no, it just pushed the problem somewhere else....:/ |
| 11:25 | coventry | brainproxy: If I understand what defalias is, it's a bigger hammer than you need for this problem. Just adding {:macro true} to the alias metadata works fine. |
| 11:37 | brainproxy | coventry: but it wasn't working fine, not sure why |
| 11:39 | coventry | brainproxy: Huh. Was this in a jvm-clojure context? |
| 11:39 | aconbere | hey folks, I'm new to clojure (started last night) I'm working on a little irc library in clojure to learn with. And I'm having some trouble with tests. |
| 11:39 | aconbere | I have the following test I've written |
| 11:39 | aconbere | to test the parse output |
| 11:39 | aconbere | https://github.com/aconbere/clojure-irc/blob/master/test/irc/core_test.clj#L66-L68 |
| 11:39 | aconbere | and it doesn't seem to actually be looping through the inputs and asserting anything about the messages |
| 11:39 | S11001001 | aconbere: use doseq instead of for |
| 11:40 | nDuff | aconbere: for just returns a lazy sequence |
| 11:40 | aconbere | oooooooooooo |
| 11:40 | S11001001 | aconbere: for is list-monadplus syntax, not a "looping" construct, per se |
| 11:40 | aconbere | brilliant |
| 11:40 | srruby | I want to use a jar in clojure. I put the jar in lib. How can I make it accessible to Clojure? ps I'd prefer not to use Maven |
| 11:40 | S11001001 | srruby: use maven |
| 11:41 | S11001001 | really :) |
| 11:41 | srruby | S11001001: OK, thanks. I thought that it would be simple to use a jar... |
| 11:42 | jlfn | Any other emacs users unable to connect to nrepl with today's CIDER from melpa? |
| 11:46 | zerokarmaleft | jlfn: works fine here with 20131118.1754 |
| 11:47 | srruby | I understand that I use maven like RubyGems to install and manage Java components. There seems to be a Maven repository at mvnrepository.com where I can pull in jar files. How does this all fit in with leiningen ? |
| 11:48 | joegallo | srruby: what dependency do you want to pull in? |
| 11:48 | joegallo | that is, give me one example, please |
| 11:48 | gtrak | srruby: lein uses maven repos (remote and local) for its artifacts. The particular repos used are specific to a project, but a few are included by default. |
| 11:48 | srruby | joegallo: Texhyphj |
| 11:49 | srruby | joegallo: It is on http://mvnrepository.com |
| 11:49 | joegallo | srruby: i searched mavenrepository for it, and found this http://search.maven.org/#artifactdetails|com.googlecode.texhyphj|texhyphj|1.2|bundle |
| 11:49 | srruby | joegallo: Right. Now how do I integrate it with Clojure/Leiningen |
| 11:49 | joegallo | so you would put [com.googlecode.texhyphj/texhyphj "1.2"] in your project.clj file under :dependencies |
| 11:50 | joegallo | and then run lein deps |
| 11:50 | srruby | cool |
| 11:50 | joegallo | and it'll download it |
| 11:50 | joegallo | http://i.imgur.com/DgtYV.gif |
| 11:50 | srruby | joegallo: Thanks very much! |
| 11:50 | joegallo | you're welcome |
| 11:51 | zerokarmaleft | srruby: https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L39 |
| 11:52 | zerokarmaleft | the sample project is well-commented, and it's worth scanning the whole thing just to see what options are available |
| 11:52 | joegallo | inc zerokarmaleft |
| 11:52 | srruby | Thanks everyone. Perhaps I should write a tutorial to cover this. The google search results were not that useful. |
| 11:54 | jlfn | zerokarmaleft: that's good to hear, though I'm getting stuck at "Connecting to nRepl..." even with all my customizations removed |
| 11:54 | S11001001 | srruby: https://github.com/technomancy/leiningen/blob/stable/doc/TUTORIAL.md#dependencies |
| 11:57 | jlfn | uh ok cider-jack-in works, but connecting to an nrepl server hangs :( |
| 12:03 | myguidingstar | hi all, I'm going to learn core-logic and I think learning through koans is the best way. But https://github.com/sritchie/core.logic-koans seems to be old. Should I use it? Or any notice? |
| 12:06 | zerokarmaleft | myguidingstar: that should be sufficient, most of the basic stuff hasn't changed in a long time |
| 12:06 | myguidingstar | zerokarmaleft thanks a lot |
| 12:08 | zerokarmaleft | if you hit a wall, someone in here will be happy to help with a specific koan |
| 12:10 | myguidingstar | thanks, and I will update it, at least with new lein and dependencies when I finish my learning |
| 12:11 | rasmusto | ,() |
| 12:11 | clojurebot | () |
| 12:11 | rasmusto | ##() |
| 12:11 | lazybot | ⇒ () |
| 12:12 | sritchie | myguidingstar: it is old; probably not the best resource |
| 12:12 | brainproxy | coventry: here's where the (def ^{:macro true} my-alias #'something} wouldn't work and I used defalias instead: |
| 12:13 | brainproxy | https://gist.github.com/michaelsbradleyjr/7509505#file-cljs-debug-macros-clj-L141 |
| 12:13 | brainproxy | what's happening is that without the defalias, the resulting form is being evaluted w/in the namespace invoking the aliased macro |
| 12:14 | brainproxy | note that the invoking namespace is a cljs namespace |
| 12:14 | myguidingstar | well, can you give me ones you think the best? |
| 12:16 | technomancy | gfredericks: I just added hyperlink support to nrepl-discover a few days ago |
| 12:18 | schmir | if I call from a go block into a function, and that function waits with <!! for a message, is this fine or is this more like calling Thread/sleep ? |
| 12:20 | hyPiRion | gfredericks: how would that work? |
| 12:21 | hyPiRion | I mean, how would you like to browse large data structures? |
| 12:23 | TimMc | with style and grace |
| 12:24 | justin_smith | for my recent experimentation with implementing quad-trees, I found generating an object in an svg for each data structure, and loading the whole thing in inkscape was an awesome way to debug my code |
| 12:24 | justin_smith | since I could quickly see if there were extraneous or missing subdivisions of the tree |
| 12:24 | justin_smith | it made me think that an svg based data structure visualizer (or maybe a 3d one?) may be useful in other situations |
| 12:30 | technomancy | TimMc: botsnack |
| 12:34 | tbaldridge | schmir: yeah, you don't want to do that. It'll block the thread in the fixed thread pool go blocks use |
| 12:35 | schmir | tbaldridge: thanks. that's what I assumed. |
| 12:40 | coventry2 | brainproxy: Oh, I bet the clojurescript context is the key factor, there. |
| 12:53 | TimMc | justin_smith: If nothing else, it would at least bring a touch of Hollywood to real-world programming. |
| 12:54 | TimMc | I strap on my VR goggles, don haptic gloves, and settle in to investigate a core dump... |
| 12:55 | technomancy | TimMc: oculus rift + keyboard pants and you're halfway there |
| 12:55 | coventry2 | Is Rich Hickey's pods prototype publically available? |
| 12:56 | TimMc | Oh man, patentable idea: A projector with eye-tracking software that can black out the portions of the projected image that would stke the eyes of anyone walking in front of the projected image. |
| 12:57 | TimMc | That would save presenters from being quite so blinded, and as a bonus you could project colorful geometric imagery on your face while pretending to be from the movie Hackers. |
| 12:58 | TimMc | (Concept for patent hereby released to public domain.) |
| 12:59 | technomancy | contact the Free Infrastructure Foundation; sign some papers |
| 12:59 | technomancy | oh, huh. there actually sorta is such a thing. |
| 12:59 | technomancy | I thought it was just from a Stross novel |
| 13:00 | rasmusto | technomancy: no, you're thinking of the nanomachines that convert the entire mass of Jupiter into a supercomputer |
| 13:01 | technomancy | how silly of me |
| 13:01 | slpsys | yay |
| 13:01 | clojurebot | yay is sweet |
| 13:02 | slpsys | derp, wrong window |
| 13:04 | tupi | hello, i still have problems, and it seems random, when executing clojure which uses imagej [no dialog, no window opening, just in memory 'scripts'] and launched through the following kind of command: |
| 13:05 | tupi | java -cp clojure.jar:ij-core.jar -Djava.awt.headless=false clojure.main my.clj my-arg1 my-arg2 ... |
| 13:05 | tupi | throiugh an ssh -CX session, i have this error: |
| 13:05 | tupi | java.lang.InternalError: Can't connect to X11 window server using 'localhost:11.0' as the value of the DISPLAY variable. |
| 13:05 | tupi | |
| 13:05 | tupi | any hint ? |
| 13:06 | justin_smith | tupi: ssh and then having the remote use localhost? |
| 13:06 | justin_smith | that seems odd |
| 13:06 | tupi | justin_smith: i just exited my ssh session, enter again and it did work |
| 13:07 | tupi | ssh -CX chatotorix |
| 13:07 | tupi | cd /usr/lpdi/projects/clojure/jars; java -cp clojure.jar:ij-core.jar -Djava.awt.headless=false clojure.main /usr/lpdi/projects/clojure/measures/me-step4.2.clj /tmp/t1-rc185/tiles-650x515-step-650x515 tile_5_75.bin png |
| 13:07 | tupi | 97.514,39.856,7.573,0.708,0.550,0.768,1.081,0.550,0.459,0.817 |
| 13:07 | tupi | |
| 13:07 | tupi | but a second ago, it failed |
| 13:07 | tupi | echo $DISPLAY |
| 13:07 | lazybot | $DISPLAY |
| 13:07 | tupi | localhost:11.0 |
| 13:08 | tupi | it was the same in the previous session that failed |
| 13:08 | tupi | why is it random ? and also wanted to know if the position of the -D is important ? [please excuse my stupid quiz, i don't know java] |
| 13:09 | nDuff | tupi: -D arguments need to be given before the name of the class to be invoked. |
| 13:09 | tupi | nDuff: thanks |
| 13:09 | nDuff | tupi: anything after that point is passed to the invoked main as an argument. |
| 13:10 | danneu | Is it reliable to use `:uberjar-name "../myapp.jar"` to compile uberjar to project root? |
| 13:10 | nDuff | tupi: ...I haven't been paying enough attention to know what you mean by "random". |
| 13:10 | nDuff | tupi: ...if you're asking why DISPLAY changes, that's because ssh -X finds the first free port when setting up the proxy. |
| 13:11 | tupi | nDuff: sometimes it work, sometime not, the exact same code. |
| 13:11 | nDuff | tupi: ...that issue is unlikely to be java-specific, and much more likely to be something about your X and/or X-forwarding configuration. |
| 13:11 | nDuff | tupi: try running something like xclock, and you'll probably see the same behavior. |
| 13:12 | tupi | it is a very serious problem to us because the computer does calculus for hours before it starts to call clojure scripts, and brakes ... |
| 13:12 | nDuff | tupi: does this code actually need to do anything GUI-related? |
| 13:12 | nDuff | tupi: if it doesn't, just tell the JVM to turn off its windowing subsystem. |
| 13:12 | tupi | nDuff: how, this is what i asked and friends answered the -D option ... |
| 13:12 | nDuff | tupi: -Djava.awt.headless=true |
| 13:13 | nDuff | tupi: headless=false is telling it that it *should* use X |
| 13:13 | nDuff | tupi: ie. that it has a head. |
| 13:13 | nDuff | tupi: ...so, your friend had the right option, but the wrong value for it. |
| 13:13 | tupi | oh damned, let me try that now! |
| 13:14 | tupi | that did not work either |
| 13:14 | tupi | cd /usr/lpdi/projects/clojure/jars; java -Djava.awt.headless=true -cp clojure.jar:ij-core.jar clojure.main /usr/lpdi/projects/clojure/measures/me-step4.2.clj /tmp/t1-rc185/tiles-650x515-step-650x515 tile_5_75.bin png |
| 13:14 | tupi | Exception in thread "main" java.awt.HeadlessException |
| 13:14 | tupi | at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207) |
| 13:14 | tupi | |
| 13:14 | tupi | ... ... |
| 13:15 | nDuff | tupi: then the code you're running is built to try to talk to X11. |
| 13:15 | nDuff | tupi: if you don't mind my asking, *why* does it need to do that? |
| 13:16 | tupi | nDuff: i sware it his not |
| 13:16 | nDuff | tupi: look at the stack trace. |
| 13:16 | nDuff | tupi: it'll tell you which code is trying to talk to the GUI. |
| 13:16 | nDuff | tupi: ...if you follow it further than the part of it you gave us here. |
| 13:17 | nDuff | tupi: anyhow, if you can't do a code fix, run a 1-pixel-by-1-pixel display with Xvfb and point your DISPLAY variable to that, but the better answer is to read the stack trace, figure out where the code is, and fix it. |
| 13:17 | tupi | nDuff: slow down, i don't follow |
| 13:17 | tupi | i don't know java |
| 13:17 | tupi | don't know where and how to interpret the stack |
| 13:18 | nDuff | tupi: ...well, if you posted the full stack trace somewhere we could see it... |
| 13:18 | tupi | but let me paste the code i run and the complete error. |
| 13:18 | tupi | yes! |
| 13:18 | tupi | :) |
| 13:18 | tupi | give me a sec |
| 13:18 | nDuff | tupi: ...btw, no pastebins with ads, please. |
| 13:19 | TimMc | refheap.com and gist.github.com are good options |
| 13:20 | tupi | http://paste.lisp.org/display/139990#1 |
| 13:26 | nDuff | tupi: well, that's pretty obvious; ij.Menus invokes a GUI. |
| 13:26 | nDuff | tupi: ...and (IJ/run) sets that up. |
| 13:27 | nDuff | tupi: I'd suggest complaining loudly to the folks who built that library, and then setting up Xvfb to provide an immediate workaround. |
| 13:27 | coventry | In emacs, how do you catch an error from nrepl-send-string-sync? E.g., how do I get this to work? (condition-case foo (nrepl-send-string-sync "(throw (Throwable.))" "user") (error (message (format "Error! %s" (pp-to-string foo))))) |
| 13:27 | tupi | nDuff: ok |
| 13:27 | tupi | i did complain already actually, but the original design of imagej was all wrong |
| 13:28 | tupi | never mind, i'll find a solution |
| 13:30 | coventry | Oh, I think the problem is that nrepl-send-string-sync is an async call pretending to be synchronous. If that's the case I need to make a request using my own handler. |
| 13:30 | tupi | i did ask here because although using (IJ/run bin-imp ... ) it is really not obvious at all that the menu must be instatiated elsewhere then in memory |
| 13:31 | tupi | nothing is actually opened on the screen at anytime, but let's forget this, i'll complain with them ... or not [they are not very friendly :)] |
| 13:32 | dsabanin | hey guys |
| 13:32 | dsabanin | having problems with recur: https://gist.github.com/dsabanin/7532909 |
| 13:32 | dsabanin | what seems to be a tail position to me, doesn't seem like it to clojure |
| 13:32 | dsabanin | am I missing something? |
| 13:34 | cemerick | dsabanin: you can't recur out of a catch, unfortunately |
| 13:35 | zilti | dsabanin: Recurring out of a catch? Are you insane or something? |
| 13:35 | dsabanin | why? :) |
| 13:36 | dsabanin | cemerick thanks |
| 13:36 | cemerick | dsabanin: the compiler won't allow it. :-P It's possible to implement, but is a impl. complication that the powers-that-be didn't want to wade into IIRC. |
| 13:37 | dsabanin | thanks for the explanation |
| 13:37 | hiredman | catch is a dynamic scoping thing, dealing with dynamicly scoped things and loop/recur's contract of fixed stack size is tricky |
| 13:37 | hiredman | so generally you cannot/should not recur across dynamic scopes |
| 13:38 | hiredman | if you have (defn foo [x] (binding [...] (recur (inc x)))) you can change it to (defn foo [x] (binding [...] (loop [x x] (recur (inc x))))) |
| 13:39 | hiredman | recursive calles from catch tend to end up as a trampoline |
| 13:41 | dsabanin | I guess I can imlement this as a trampoline, thanks for the idea |
| 13:41 | hiredman | dsabanin: have you seen robert bruce? https://github.com/joegallo/robert-bruce |
| 13:43 | dsabanin | yeah, seen it, but I need more control |
| 13:43 | dsabanin | trampoline solution just worked, thanks for the help everyone |
| 14:03 | danneu | What's the main reason a jar seems to hang once it should return from whatever you called in -main? |
| 14:03 | technomancy | danneu: active threads |
| 14:03 | justin_smith | danneu: are you using agents? |
| 14:06 | Raynes | (System/exit 0) ;; DIE!!! DIEEEEE!!!! |
| 14:10 | kendallbuchanan | Anyone know how I might restrict the compiled dependencies in my project to a specific version of Clojure? One of the project's dependencies (can't avoid using it) uses a version range (beginning with Clojure 1.2), and now Heroku is compiling 1.2, 1.3, 1.4, 1.5, and 1.5.1 into my slug. |
| 14:11 | technomancy | kendallbuchanan: wait for the next version of leiningen, and `lein deps :tree` will show you the proper :exclusions vector to use =) |
| 14:12 | technomancy | kendallbuchanan: more seriously, if you have isolated the problematic dependency, put :exclusions [org.clojure/clojure] inside the vector |
| 14:12 | kendallbuchanan | technomancy: Hehe, so, [org.clojure/clojure :exclusions "1.2" …] or something along those lines? |
| 14:13 | technomancy | kendallbuchanan: more like [org.problems/i-use-version-ranges-boo "1.8.1" :exclusions [org.clojure/clojure]] |
| 14:13 | kendallbuchanan | technomancy: Okay, I see now… the :exclusions key should be added to the dependency that's introducing the wrong versions. |
| 14:14 | technomancy | aye |
| 14:14 | kendallbuchanan | technomancy: Perfect, thank you! |
| 14:14 | technomancy | seriously one day away from releasing a version of leiningen that tells you this =) |
| 14:14 | kendallbuchanan | Is that likely to bring my slug size down substantially? |
| 14:14 | kendallbuchanan | That's awesome. |
| 14:14 | technomancy | kendallbuchanan: no, it won't affect size. it doesn't include those versions in your slug, it just downloads the poms for them. |
| 14:15 | kendallbuchanan | Okay, then I'm on the wrong track. |
| 14:15 | technomancy | kendallbuchanan: switching to an uberjar deploy will drop the slug size a bit though |
| 14:15 | kendallbuchanan | K, somehow I've got a slug over 300MB, with a fairly small codebase |
| 14:15 | kendallbuchanan | Is this common? Like, is it possible the number of dependencies I have are adding up? |
| 14:16 | technomancy | kendallbuchanan: it's possible if your deps have changed a lot that old versions aren't getting properly cleaned out. I recommend switching to an uberjar deploy and seeing if that helps. |
| 14:16 | technomancy | kendallbuchanan: if it doesn't let me know the app name (/msg is fine) and I can check it out |
| 14:17 | kendallbuchanan | Okay, perfect, lemme try that |
| 14:23 | augustl | anyone happen to know why https://github.com/clojure/data.fressian isn't in clojars or maven central? |
| 14:25 | dnolen | cemerick: results of the survey are very interesting |
| 14:25 | cemerick | dnolen: yup, there's some gems in there |
| 14:25 | cemerick | dnolen: you read too fast to have actually read it tho! :-P |
| 14:26 | dnolen | cemerick: heh I read the post :) still looking over the graphs |
| 14:26 | seangrove | I didn't participate. |
| 14:26 | cemerick | seangrove: wat? |
| 14:26 | bbloom | dnolen: i'd read it but google groups' "sign in" button is broken |
| 14:26 | bbloom | weee |
| 14:27 | cemerick | bbloom: results are on my blog |
| 14:27 | mdrogalis | Interesting. I see a lot of "I want core.async IN the language" |
| 14:27 | technomancy | eep |
| 14:27 | mdrogalis | In the "what feature do you want in Clojure" question |
| 14:28 | joegallo | sigh... |
| 14:28 | seangrove | Wonder why people would want it in the language... |
| 14:28 | Glenjamin | oh, results out? |
| 14:29 | cemerick | I guess this is what happens when you ask people for language feature suggestions. |
| 14:29 | dnolen | cemerick: interesting the number of people using ClojureScript, but the uptake seems relatively recent |
| 14:29 | Apage43 | that's why I had trouble with that box |
| 14:29 | technomancy | cemerick: people too shy to put "dunno; it's all good" in? |
| 14:29 | hyPiRion | seangrove: probably because you can't send messages from functions. It's a bit more constrained than Go's message passing style |
| 14:29 | mdrogalis | Types, user reader macros, debuggers, TCO from eyeing it up |
| 14:29 | Apage43 | I couldn't think of anything that couldn't be "just" a library |
| 14:29 | hyPiRion | I see like that ~5% who answered that question answered "Faster startup time" |
| 14:29 | seangrove | cemerick: In our cose, we were exclusively a cljs shop, and we only late (~7-8 months later) adopted jcm-clj. So we fit your rosier model. |
| 14:30 | cemerick | technomancy: there are some |
| 14:30 | dnolen | the number of CLJS Node.js users is significant |
| 14:30 | mdrogalis | Hm. "Transactional namespaces". I haven't heard of that before. |
| 14:30 | mdrogalis | What do you think that might mean? |
| 14:31 | technomancy | mdrogalis: if you run into an error these days you can have a half-compiled namespace |
| 14:31 | dnolen | cemerick: lein-cljsbuild mostly won, but 145 people using some other means is interesting |
| 14:31 | cemerick | mdrogalis: long-standing wishlist item for many |
| 14:31 | technomancy | mdrogalis: whereas what you want is atomicity |
| 14:31 | mdrogalis | From nrepl.el? Or in Clojure itself? |
| 14:31 | bitemyapp | I would like this. |
| 14:31 | mdrogalis | I never knew that could even happen. |
| 14:31 | cemerick | dnolen: yeah, I haven't gone through all the freeform bits yet. I'll bet that a large part of that is "configuration overload sucks". |
| 14:32 | technomancy | mdrogalis: from anywhere; either completely compile or completely fail |
| 14:32 | bitemyapp | mdrogalis: no difference, if it's implemented in Clojure then it's obv available through nRepl. |
| 14:32 | mdrogalis | I use Clojure an awful lot, and I never noticed that. Huh. |
| 14:32 | technomancy | mdrogalis: it's easy to do if you're OK making var lookup involve an extra layer of dereferencing =) |
| 14:32 | mdrogalis | Then again, I never write errors, sooo.. |
| 14:32 | hyPiRion | Well, most people don't tend to require errored namespaces |
| 14:32 | bitemyapp | mdrogalis: happens to me all the time :( |
| 14:32 | mdrogalis | I probably saw it and didn't know what it was. |
| 14:33 | technomancy | namespaces now are a mutable map that gets bashed in place, which is sadface |
| 14:33 | cemerick | dnolen: oddly, those targeting node.js *still* report using both Clojure and ClojureScript. |
| 14:33 | Glenjamin | i wonder if lower response means answers are skewed to hardcore clojurists |
| 14:34 | dnolen | cemerick: good to see we're working on the right stuff w/ respect to top 3 CLJS frustrations |
| 14:34 | bitemyapp | Glenjamin: I'm pretty sure they are, Hacker News would've brought in more muggles. |
| 14:34 | ToBeReplaced | cemerick: i use CLJS on node.js for scripting, clojure for everything else, for example |
| 14:34 | cemerick | ToBeReplaced: noted, thanks |
| 14:35 | joegallo | fwiw, technomancy, i said that leiningen needs to be in clojure |
| 14:35 | pjstadig | joegallo: haha wat? |
| 14:35 | joegallo | jk |
| 14:35 | technomancy | joegallo: you monster |
| 14:35 | bitemyapp | yes because contributors to Leiningen want to sign a CA and use JIRA. |
| 14:35 | pjstadig | consolidate all the things! |
| 14:36 | cemerick | dnolen: yeah; going to make Austin bulletproof over the next year. |
| 14:36 | bitemyapp | joegallo: you are trying to kill Clojure, aren't you? :P |
| 14:36 | joegallo | i just, you know, it doesn't feel "official" enough to me right now |
| 14:36 | joegallo | i also think it needs a clarifying rename |
| 14:36 | technomancy | joegallo: I'll try to post more pics of me coding with a suit and tie |
| 14:36 | technomancy | ahaha |
| 14:36 | hyPiRion | hahaha |
| 14:36 | hyPiRion | On second thought, that would've been a scary sight |
| 14:37 | bitemyapp | technomancy coding in a suit and tie means the doom of the universe. |
| 14:37 | ToBeReplaced | i'm surprised so little commercial services/products |
| 14:39 | Glenjamin | >> It is still very difficult to find a good, simple "Quick-start" guide to point interested parties at. |
| 14:39 | Glenjamin | this |
| 14:39 | Glenjamin | oh |
| 14:39 | Glenjamin | that was me |
| 14:39 | Glenjamin | i stand by it |
| 14:40 | Glenjamin | unsure what this means? "Namespaces are a horrible, broken mess. They are a wildly complected nightmare." |
| 14:40 | coventry | I think you could fake transactional namespace loading pretty easily by using the code-loading functions in ztellman's sleight library to run remove-ns on any load which raised an exception. |
| 14:41 | technomancy | hm; interesting |
| 14:41 | technomancy | assumed it was only possible inside the compiler, which is why I haven't taken a shot at it yet =) |
| 14:41 | technomancy | but maybe not |
| 14:42 | Glenjamin | surprised to not see people complaining about dependency versions much |
| 14:42 | Glenjamin | hah: "Lack of static typing." |
| 14:42 | Glenjamin | tools, hiring and docs seem to be a theme though |
| 14:43 | mdrogalis | I put down proper predicate dispatch |
| 14:43 | Glenjamin | polldaddy doesn't keep your per-page choice when you change pages :( |
| 14:44 | Glenjamin | lots of complaints about lisp syntax - which seems unhelpful |
| 14:46 | cemerick | nDuff: those comments are in there. Until something equivalent/better shows up, I just point at cljx. |
| 14:46 | coventry | "why would you need to add a feature? I thought that's what macros are for." |
| 14:46 | technomancy | coventry: ifn regexes! |
| 14:47 | Glenjamin | could tagged literals do feature expressions? |
| 14:47 | nDuff | coventry: if everyone agreed on those macros (and support for them were universal across build systems), we'd be fine. Not _everyone_ can use lein. :( |
| 14:48 | technomancy | lots of people want CL conditions, which is understandable |
| 14:48 | coventry | nDuff, technomancy: Not my line, it's a quote from the desired-language-features list. :-) |
| 14:48 | technomancy | ah right |
| 14:48 | cemerick | Glenjamin: Yes, though it's be an absurd hack. Go look at cljx. |
| 14:48 | ToBeReplaced | i remember seeing JIRA discussion on platform-dependent code (a la cljx or others) -- where is the discussion at now? |
| 14:49 | cemerick | ToBeReplaced: Linked from the cljx readme. |
| 14:49 | cemerick | Come on, someone else ask a question, I'll find a way to work cljx into it. :-P |
| 14:50 | xcthulhu | I have a scrip that spawns a process using lein, but when I kill lein the underlying java process is still running |
| 14:50 | Glenjamin | based on this it seems like a kickstarter to fund a decent documentation site would do well |
| 14:50 | xcthulhu | How do I stop this behavior? |
| 14:51 | technomancy | xcthulhu: have you tried trampolining? |
| 14:51 | xcthulhu | Yeah, doesn't work :( |
| 14:51 | technomancy | oh? |
| 14:51 | hyPiRion | huh |
| 14:51 | hyPiRion | you using `lein exec` or something like that? |
| 14:52 | Glenjamin | what did you do to kill lein? |
| 14:52 | Glenjamin | interesting note: "Who's actively driving the vision now - is Rich focusing on Datomic?" |
| 14:53 | xcthulhu | I spawn lein in a shell with |
| 14:53 | xcthulhu | (cd repo ; lein trampoline ring server-headless ) & |
| 14:53 | xcthulhu | And I have in the same script |
| 14:53 | xcthulhu | trap 'kill $(jobs -p)' EXIT |
| 14:53 | xcthulhu | So all of the child jobs get kill when I exit the script |
| 14:55 | xcthulhu | @Glenjamin Something like hoogle for clojure would be awesome... |
| 15:00 | bitemyapp | lolque @ lighttable's nil for something that threw an exception |
| 15:00 | TimMc | "lolque"? |
| 15:00 | bitemyapp | TimMc: lolwut |
| 15:00 | bitemyapp | but en Español |
| 15:01 | bitemyapp | I'm not actually sure how people get work done in LT. |
| 15:01 | bitemyapp | I can't even run my tests and see the exception they threw. |
| 15:05 | xcthulhu | Okay, so the problem was that I was running everything in a child shell |
| 15:05 | bitemyapp | xcthulhu: greetings elder one |
| 15:05 | xcthulhu | So if someone ever comes across this IRC log on google some day, they should know: don't use lein in child shells |
| 15:06 | xcthulhu | You can do the same thing as ( cd <dir> ; blah blah ) with popd |
| 15:06 | xcthulhu | ...and pushd |
| 15:06 | xcthulhu | Hey bitemyapp |
| 15:06 | bitemyapp | xcthulhu: I listen to music about you. |
| 15:06 | xcthulhu | I develop in LT |
| 15:07 | bitemyapp | xcthulhu: so you don't write any tests? |
| 15:07 | xcthulhu | Yeah, I write tests |
| 15:07 | bitemyapp | ...and how do you know if they worked or not? |
| 15:07 | xcthulhu | lein test |
| 15:07 | bitemyapp | what a cop out. |
| 15:07 | xcthulhu | haha |
| 15:07 | bitemyapp | so what you're actually saying is, "I edit text in LT, but leiningen from the command line does all the heavy lifting" |
| 15:08 | bitemyapp | I will say this though, it's very responsive and presents text nicely. Wish the AA was a little better tho. |
| 15:08 | coventry | What's AA? |
| 15:09 | bitemyapp | coventry: antialiasing |
| 15:09 | coventry | Ah. |
| 15:09 | bitemyapp | the text is kinda janky on my Mac. |
| 15:09 | bitemyapp | actually, I can side-by-side the same code and you'll see what I mean. |
| 15:09 | bitemyapp | sigh, of course LT doesn't remember what files/folders I had open ;_; |
| 15:09 | bitemyapp | ...or it did and it just lagged? dafuq |
| 15:10 | xcthulhu | I thought it used webkit for display? |
| 15:10 | bitemyapp | coventry: http://i.imgur.com/WQ4VEmo.png |
| 15:10 | coventry | Also, using "lein test" in a conjunction with a tool like lighttable sounds a bit like driving a flying car which you have to get out and push every so often. :-) |
| 15:11 | bitemyapp | xcthulhu: it does but you can set the AA of your fonts. |
| 15:11 | bitemyapp | coventry: that's how I reacted! |
| 15:11 | bitemyapp | coventry: left is Emacs, grey weirdness on the right is LT |
| 15:11 | bitemyapp | looks like a shitty courier font or something |
| 15:12 | bitemyapp | it is seriously responsive though |
| 15:12 | bitemyapp | leveraging webkit was a really good idea. |
| 15:13 | mtp | "a shitty courier font" is redundant |
| 15:13 | mtp | ;) |
| 15:14 | bitemyapp | I'm willing to believe in the hypothetical non-shitty courier font. |
| 15:14 | TimMc | s/courier/monospace/ |
| 15:14 | TimMc | Courier is a specific font. |
| 15:14 | xcthulhu | bitemyapp: Anonymous Pro is nice |
| 15:15 | TimMc | Consolas is pretty good. |
| 15:15 | xcthulhu | Yeah, I like that one too |
| 15:15 | TimMc | Or Inconsolata, I can't remember which is which |
| 15:16 | TimMc | Ubuntu's default monospace is decent. "Ubuntu Mono", I think. |
| 15:16 | bitemyapp | TimMc: yeah I like Ubuntu Mono. |
| 15:16 | bitemyapp | I use Monospace on Linux and Menlo on Mac. |
| 15:17 | bitemyapp | happy with both. |
| 15:25 | blr | cemerick: enjoyed reading the results of the survey. Just a comment from a co-worker that I felt was worth mentioning, he was looking for a javascript alternative, but didn't consider clojure as he felt it was just for 'alpha-hackers'. Do you think that's a common perception? |
| 15:25 | blr | and if so, what can we do to change that perception? |
| 15:25 | ToxicFrog | "alpha-hackers"? |
| 15:25 | blr | ToxicFrog: right, his perception was that clojure was inaccessible and hard |
| 15:26 | blr | ToxicFrog: also see people adopting Golang without any consideration of clojure (or erlang) and also wonder why that is |
| 15:27 | ToxicFrog | Aah. |
| 15:30 | bitemyapp | blr: alpha hackers? lol no. |
| 15:30 | blr | I mean, there must be things we can be doing as a community to make it clear that clojure makes things much easier in many respects. I guess part of the problem is that there are so many innovative (and potentially challenging) things worth talking about like core.logic and core.async that might be intimidating |
| 15:31 | blr | bitemyapp: I know it's silly, but if that's the impression most software developers have of clojure it's a problem |
| 15:31 | bitemyapp | I've been teaching Clojure to Python programmers for awhile. |
| 15:31 | bitemyapp | Nobody perceives Pythonistas as being alpha anything, let alone alpha hackers. |
| 15:31 | blr | bitemyapp: the perception isn't correct, I'm just saying that I think it's there |
| 15:31 | bitemyapp | blr: then correct it, it's silly. |
| 15:32 | blr | I'm a totally mediocre programmer that does python professionally - if I can get my head around it anyone can :P |
| 15:32 | bitemyapp | Clojure is not a difficult language to learn by any means. There are almost no non-trivial prerequisites at all |
| 15:32 | blr | bitemyapp: I know this, but I don't think most programmers do. I think the general perception is that it is 'academic' and too hard |
| 15:33 | nDuff | The language isn't hard to learn. But if you've had your head wrapped around OOP for the last decade, it can take a pretty substantial while before one feels comfortable. |
| 15:33 | TimMc | bitemyapp: Wait, you mean you *don't* need to understand how to use monad assembly language to use Clojure? |
| 15:33 | upwardindex | Was 'format' |
| 15:33 | bitemyapp | agghhhhhhh fucked by laziness again |
| 15:33 | upwardindex | oops |
| 15:33 | bitemyapp | I knew that wasn't going to work. |
| 15:33 | amalloy | brb inventing monad assembly language |
| 15:33 | bitemyapp | fuckity fuck |
| 15:34 | upwardindex | Was 'format' removed for cljs? I just updated and it won't find the function anymore? |
| 15:34 | cemerick | blr: I'm not sure I can comment on that usefully. ClojureScript is definitely undocumented, so you do need to know what you're doing to use it. Ease of use and round edges aren't really a development priority at the moment. Honestly, there's bigger fish to fry. |
| 15:34 | amalloy | upwardindex: did it ever exist? jvm format is based on String/format, and i didn't think there was a cljs port to begin with |
| 15:34 | dnolen | upwardindex: format no longer exists was removed some time ago, you can just use goog.format directly - that's all it ever did anyway |
| 15:34 | TimMc | It's for alpha-hackers, in the sense of programmers who like using alpha-stage languages. :-P |
| 15:35 | upwardindex | dnolen: ok that explains it thanks! |
| 15:35 | blr | cemerick: I understand that entirely, I'm just concerned that many people I work with are making new language choices without any consideration of clojure and clojurescript |
| 15:35 | solidus_ | I can't connect using nrepl from emacs to "lein repl" - its just saying "Connecting to nREPL on 127.0.0.1:38689" |
| 15:35 | cemerick | That said, who doesn't want to be an "alpha hacker", whatever that means? AFAICT, the other big languages targeting JavaScript are, in relative terms, duller tools that I'd rather not spend mental capital working around. |
| 15:35 | dnolen | blr: fwiw, I don't think learning core.logic is all that important/interesting, as much as it gets name dropped. |
| 15:36 | dnolen | blr: and if people are adopting go, core.async is the same CSP concepts, you're going to have a learning curve regardless |
| 15:36 | blr | dnolen: oh right, but things like core.logic are typically what you see on hackernews, not how easy it is to build a web application in clojure |
| 15:36 | cemerick | blr: well, Clojure is *very* mature, works well, and has tonnes of books, blog posts, etc written about it, not to mention very comprehensive official documentation. I have little sympathy with anyone that thinks it's "too hard". |
| 15:36 | bitemyapp | you don't really have to use core.async for most things anyway |
| 15:36 | bitemyapp | it's only if you want to go STRAIGHT TO PLAID with something concurrent |
| 15:37 | bitemyapp | oddly I see people freaking out a lot less about the equivalent tooling in Haskell with forkIO, MVars, and the rest. |
| 15:37 | dnolen | blr: huh, I think Clojure + web gets decent play on HN |
| 15:37 | cemerick | dnolen: fair point, but you have to admit, braces and = signs are awesome |
| 15:37 | cemerick | :-P |
| 15:37 | solidus_ | any good recent tutorial on how to work with emacs/lein? can't seem to get nrepl to work.... |
| 15:37 | bitemyapp | blr: your mistake was reading hacker news. |
| 15:38 | bitemyapp | solidus_: can't seem or can't? |
| 15:38 | bitemyapp | because if you're mistaken in your perception of non-functionality and incapability to rectify the situation we might end up in a rabbit hole. |
| 15:38 | blr | bitemyapp: this is from my coworkers perspectives |
| 15:39 | bitemyapp | blr: well tell them not to read Hacker News either. |
| 15:40 | glosoli | Hacker News has too much crap in it lately |
| 15:40 | solidus_ | bitemyapp: nice man, using big words and everything |
| 15:40 | solidus_ | Need help on getting emacs/nrepl/lein working plz |
| 15:40 | bitemyapp | solidus_: https://github.com/bitemyapp/dotfiles/ |
| 15:40 | bitemyapp | solidus_: nice man, using "plz" and everything. |
| 15:40 | Glenjamin | i showed my co-workers some of my clojure, they said "wtf loads of parens", I looked, and suddently saw parens i hadn't been seeing |
| 15:40 | bitemyapp | solidus_: look at the repo. Figure out what you fucked up. |
| 15:41 | bitemyapp | Glenjamin: whining about parens reminds me of when you give a 10 year old kid their first taste of beer |
| 15:41 | bitemyapp | "YUCK I'LL NEVER DRINK THIS!" |
| 15:41 | Glenjamin | yes, but social pressure makes you |
| 15:41 | Glenjamin | but there's less social pressure to embrace lisps |
| 15:41 | Apage43 | i have coworkers walk over to my monitor and point "AGH! PARENS!" |
| 15:42 | Apage43 | It's a bit exasperating |
| 15:42 | Glenjamin | it was really odd that i didn't even notice until they went argh |
| 15:42 | bitemyapp | Apage43: I'm surprised I haven't seen you perp-walked out of your office for murder. |
| 15:42 | blr | anyway, I'm giving an introductory talk about clojurescript at my local tech meetup. I guess that's the best thing we can do? |
| 15:42 | clojurebot | excusez-moi |
| 15:42 | Glenjamin | i think a really good "here's how you get started with clojure" guide would be great |
| 15:43 | coventry | solidus_: Does M-x nrepl-jack-in work for you? |
| 15:43 | solidus_ | coventry: nope |
| 15:43 | Apage43 | what do you get when you try nrepl-jack-in |
| 15:43 | solidus_ | Starting nREPL server... |
| 15:43 | bitemyapp | solidus_: don't use nrepl-jack-in. |
| 15:43 | solidus_ | and its stuck |
| 15:43 | bitemyapp | solidus_: start lein repl from the terminal in the project you want to use |
| 15:43 | Apage43 | huh |
| 15:44 | bitemyapp | solidus_: connect to the port directly from Emacs. |
| 15:44 | llasram | bitemyapp: WHat? |
| 15:44 | llasram | bitemyapp: Why would you suggest people do that? |
| 15:44 | bitemyapp | llasram: because then we can find out which part is breaking. |
| 15:44 | solidus_ | Exception Unsupported option(s) supplied: :headless clojure.core/load-libs (core.clj:5408) |
| 15:44 | llasram | Oh, for testing, I see |
| 15:44 | bitemyapp | why the fuck else would I suggest that? |
| 15:44 | llasram | Haha |
| 15:44 | solidus_ | I did that too, doesn't work |
| 15:44 | tolitius | Glenjamin: I hooked several people on Clojure via 4clojure. It has all the right properties: challenging, addictive and "game competitive" |
| 15:44 | llasram | bitemyapp: I don't know. Because you'd gone mad? :-) |
| 15:44 | bitemyapp | solidus_: you don't need headless |
| 15:44 | bitemyapp | solidus_: type in, "lein repl" |
| 15:44 | bitemyapp | solidus_: no more, no less |
| 15:44 | bitemyapp | solidus_: in the project you want to start |
| 15:45 | bitemyapp | solidus_: when you've done that let me know so I can provide the next instruction |
| 15:45 | bitemyapp | because I didn't say, "lein repl and some other bullshit like :headless" |
| 15:45 | bitemyapp | I said, "lein repl" in the project you're trying to load. |
| 15:45 | Glenjamin | tolitius: i like 4clojure, but i think it lacks a companion piece that tells you what's available to solve the problems |
| 15:45 | solidus_ | lein repl => nrepl from emacs => got a *nrepl-connection* buffer with "user=>" but I can't do anything |
| 15:46 | solidus_ | i mean i etner numbers and press enter nothing happens |
| 15:46 | bitemyapp | solidus_: I said to wait my next instruction |
| 15:46 | bitemyapp | solidus_: okay, first off, in the lein repl, what port does it say? |
| 15:46 | bitemyapp | close emacs |
| 15:46 | bitemyapp | reopen it. |
| 15:46 | solidus_ | 5014 same one i entered in emacs |
| 15:46 | bitemyapp | solidus_: stop jumping ahead of my instructions. |
| 15:46 | coventry | solidus_: Can you interact with the repl in the terminal where you ran "lein repl"? |
| 15:46 | solidus_ | yes |
| 15:46 | bitemyapp | coventry: thanks, I was about to get there |
| 15:46 | bitemyapp | coventry: you know what, he's all yours. |
| 15:46 | bitemyapp | coventry: solidus_ good luck to both of you. |
| 15:47 | tolitius | Glenjamin: yes, I see this side of it, however it is engaging enough for people (read interested in problem solving, programming) to find the way (read clojure docs with examples) |
| 15:47 | Glenjamin | mm |
| 15:47 | mdrogalis | Hadoop just rained all over my parade. Escaped Java polymorphism problem by calling into Clojure protocols. Hadoop hated that. D: |
| 15:47 | Glenjamin | the cheatsheet is pretty good, but clojure.org links to an old version |
| 15:47 | coventry | solidus_: Can you telnet to the port lein repl opened? |
| 15:47 | Glenjamin | and google throws up clojuredocs which only does 1.2 and 1.3 |
| 15:47 | Apage43 | o.0 |
| 15:48 | Glenjamin | http://www.braveclojure.com/getting-started/ seems like it might be good though |
| 15:48 | solidus_ | ahmmm telnet 127.0.0.1:5014 hangs... |
| 15:48 | tolitius | Glenjamin: that "old" version is 99% good for all the problems (I only say 99%, since I have not seen a problem that required something other than what's already in the docs) |
| 15:48 | tolitius | Glenjamin: a 4clojure problem, I mean |
| 15:48 | coventry | solidus_: Probably a firewall issue. |
| 15:48 | solidus_ | telnet: could not resolve 127.0.0.1:5014/telnet: System error |
| 15:48 | Apage43 | no :, space |
| 15:49 | Apage43 | but also |
| 15:49 | Apage43 | that's a weird thing to do |
| 15:49 | Glenjamin | tolitius: telnet is odd and wants a space between the host and port instead of a colon |
| 15:49 | coventry | Oh, Apage43 is right. "telnet localhost 5014" (space rather than colon.) |
| 15:49 | solidus_ | oh right, with space it works |
| 15:49 | Glenjamin | the problem is, i'm past that beginner stage, so i'm not in a position to evaluate intro guides very well |
| 15:49 | glosoli | Glenjamin: http://aphyr.com/ |
| 15:49 | solidus_ | i get the user=> prompt |
| 15:49 | Glenjamin | 4clojure is how i got into it |
| 15:50 | glosoli | Glenjamin: this is pretty decent imo |
| 15:50 | coventry | solidus_: You get a "user=>" prompt from the telnet command? That's weird. |
| 15:50 | solidus_ | yea i do |
| 15:50 | Apage43 | ( I think he might have a very old leiningen guys ) |
| 15:50 | Glenjamin | glosoli: oo, looks good from a quick skim - seems similar in structure to the python tutorial - which is excellent |
| 15:51 | Glenjamin | solidus_: what output does `lein version` get you? |
| 15:51 | Apage43 | solidus_: make sure you have the latest lein; https://raw.github.com/technomancy/leiningen/stable/bin/lein |
| 15:51 | coventry | Well, if Apage43 is right, you might try "lein upgrade" and starting over. |
| 15:51 | Apage43 | or that |
| 15:51 | Apage43 | it should upgrade itself. But I believe he's actually on 1.X |
| 15:51 | glosoli | Glenjamin: also you should follow Planet Clojure RSS |
| 15:51 | Apage43 | which may or may not require updating the script |
| 15:52 | arrdem | bitemyapp: how goes |
| 15:52 | bitemyapp | arrdem: resisting the urge to strangle bitches. |
| 15:52 | blr | Glenjamin: looking to python for guidance around documentation is generally not a bad idea |
| 15:52 | bitemyapp | arrdem: working on brambling. |
| 15:52 | solidus_ | oh shit i wasn't using the right command, got Leiningen 2.1.2 on Java 1.7.0_25 OpenJDK Client VM |
| 15:52 | solidus_ | and this version doesn't give user=> prompt on telnet |
| 15:52 | Apage43 | oh, 2.1.2's not that old |
| 15:52 | Glenjamin | blr: mm, the python core docs are really excellent |
| 15:52 | Apage43 | hm |
| 15:52 | Apage43 | oh |
| 15:52 | solidus_ | but it does connect |
| 15:52 | Apage43 | 2.1.2 is what you have *now* |
| 15:53 | blr | Glenjamin: a lot of the docs for popular projects are generally very good too |
| 15:53 | Apage43 | right, so now you actually do *have nREPL* |
| 15:53 | bitemyapp | arrdem: turns out, laziness in Clojure isn't just a matter of s/reduce/reductions/g - whodathunkit? |
| 15:53 | tolitius | Glenjamin: it seems that you are not looking for sources that make people understand how to get started, but for "why would they need to bother", and that is not something that can be solved by a single tutorial.. "it's inside, Luke".. |
| 15:53 | aconbere | do people have a preferred way to read off a socket in clojure? I can just pull in some java libraries, but wondering if there's something a little more native that's preferable" |
| 15:54 | Glenjamin | tolitius: "why" = watch "Simple made easy" |
| 15:54 | ibdknox | is anyone aware of someone working on a code formatter for clojure? |
| 15:54 | Glenjamin | it's more: I'm a programmer and i've decided to learn clojure. Walk me through it |
| 15:54 | Glenjamin | the aphyr link from glosoli looks pretty good |
| 15:54 | blr | ibdknox: something like gofmt? |
| 15:54 | coventry | solidus_: I would try "lein upgrade" and "lein repl" then telneting to the new port. See if you still get a repl prompt in the telnet session then. |
| 15:54 | bitemyapp | aconbere: https://github.com/bitemyapp/revise/ |
| 15:55 | bitemyapp | ibdknox: why do unit tests that fail just show "nil" in an instarepl'd buffer? |
| 15:55 | bitemyapp | fail meaning an exception was thrown. |
| 15:55 | ibdknox | blr: yep |
| 15:56 | bitemyapp | Which is indistinguishable from the test succeeding. |
| 15:56 | ibdknox | bitemyapp: anything in the console? |
| 15:56 | bitemyapp | I have no idea |
| 15:56 | bitemyapp | I was so disgusted I closed LT |
| 15:56 | ibdknox | lol |
| 15:56 | blr | ibdknox: sure wouldn't hurt, would nicely compliment kibit |
| 15:56 | bitemyapp | kibit with side effects? ick, plz no. |
| 15:57 | ibdknox | it's actually necessary for a number of things |
| 15:57 | bitemyapp | make code formatting its own plugin. |
| 15:57 | blr | bitemyapp: wasn't suggesting that kibit change :P |
| 15:57 | ibdknox | I was just asking if anyone was aware of a project like that already being worked on |
| 15:57 | blr | looks like you are now ibdknox! :D |
| 15:57 | ibdknox | lol |
| 15:58 | Glenjamin | the closest i've got is https://github.com/odyssomay/sublime-lispindent |
| 15:58 | Glenjamin | which does a sort-of ok job if you do the linebreaks |
| 15:58 | ibdknox | yeah, indenting is already taken care of |
| 15:59 | Glenjamin | deciding when to newline seems non-deterministic though |
| 15:59 | Glenjamin | especially when you include things like GET and POST from compojure and with-* |
| 15:59 | Glenjamin | well, if it was just with-* thats a fairly easy rule |
| 15:59 | ibdknox | I imagine there's a fairly straightforward set of rules you could follow to get most of the way there |
| 16:00 | ibdknox | the use case would be for formatting generated code |
| 16:00 | Glenjamin | it would have to be easily tweakable so it doesn't undo your nice work when you want to step outside the existing rules |
| 16:00 | coventry | ibdknox: What about clojure's pprint? |
| 16:00 | solidus_ | i updated lein to [Leiningen 2.3.3 on Java 1.7.0_25 OpenJDK Client VM] still no luck connecting from emacs |
| 16:00 | hyPiRion | Problem is comments |
| 16:01 | coventry | hyPiRion: Ah, right. |
| 16:01 | coventry | solidus_: What about the telnet response? |
| 16:02 | solidus_ | connecting, without "user=>" prompt |
| 16:02 | ibdknox | coventry: also pprint doesn't do a very good job with code |
| 16:03 | coventry | solidus_: No idea, then. |
| 16:03 | solidus_ | oh jesus fuck, i had some auto-complete related shit in my .emacs |
| 16:03 | solidus_ | removed it now it connects just fine |
| 16:03 | solidus_ | thanks for the help anyways |
| 16:04 | ibdknox | bitemyapp: exceptions are caught by the clojure.test and it prints them out to the console. |
| 16:04 | ibdknox | bitemyapp: not much I can do about that |
| 16:04 | bitemyapp | Indeed. |
| 16:05 | blr | has anyone made the jump from vim to emacs and found it valuable? |
| 16:05 | arrdem | bitemyapp: that isn't surprising in the least... |
| 16:05 | ibdknox | once plugin authoring is in, presumably someone will write a nice clojure.test plugin :) |
| 16:06 | blr | as in genuinely worth the mental anguish... |
| 16:06 | TimMc | bitemyapp: I still think beer is yucky. :-P |
| 16:06 | hyPiRion | ibdknox: `emacs --batch -l ~/.emacs.d/init.el --eval='(clojure-mode)' --eval='(indent-region (point-min) (point-max) nil)' -f save-buffer myfile.clj` can indent files properly :) |
| 16:06 | glosoli | blr: VIM lacking proper integration with nREPl was the case for me of ditching it |
| 16:06 | glosoli | :) |
| 16:06 | hyPiRion | Although I have high doubts that was what you're looking for |
| 16:07 | arrdem | glosoli: I agree... but at least they have fireplace now |
| 16:07 | blr | glosoli: I'm finding vim-fireplace good, but then I don't really know what I'm missing in emacs |
| 16:07 | glosoli | arrdem: I did use fireplace it's inferior to what emacs provide |
| 16:07 | ibdknox | hyPiRion: wait, emacs has true code formmating? |
| 16:07 | ibdknox | formatting* |
| 16:08 | glosoli | last time I checked it does :) |
| 16:08 | blr | glosoli: I've been using vim for 15 years though, so it's going to be a painful process... |
| 16:08 | TimMc | ibdknox! |
| 16:08 | glosoli | blr: Well, if you don't feel like VIM fireplace is uncomfortable, don't switch |
| 16:08 | TimMc | Good to see you around. |
| 16:09 | coventry | ibdknox: M-x c-guess even does a fairly decent job of inferring the formatting rules for clojure's java code. It's pretty sweet. |
| 16:09 | arrdem | glosoli: it's better than nailgun tho... |
| 16:09 | blr | arrdem: yes, that wasn't great. |
| 16:09 | arrdem | glosoli: nailgun is what drove me to transition to Emacs this past Christmass |
| 16:09 | technomancy | emacs won't break long lines for you though; I don't think anyone's attacked that problem algorithmically in the general case |
| 16:10 | technomancy | (meaning outside ns) |
| 16:10 | hyPiRion | ibdknox: That invokation just performs proper indentation |
| 16:10 | blr | arrdem: and you've found it generally worthwhile? (presumably using evil-mode?) |
| 16:10 | glosoli | arrdem: I wasn't around Clojure at that time, but switching to Emacs meant doing most of the stuff in it for me lol |
| 16:11 | arrdem | blr: nope I've never run evil-mode. I actually find modal gets in my way and that keychords are nice. personal perfference. |
| 16:11 | arrdem | blr: I totally use vim when I need to change users and work in a terminal, but Emacs is my IDE |
| 16:11 | blr | ah ok, I'm not sure I can ever part from modal editing.. kind of like a brain lesion. |
| 16:12 | arrdem | it's really cool when I :wq in an Elisp file and Emacs bitches "Could not evaluate symbol wq" |
| 16:12 | glosoli | blr: I had problems with nREPL buffer when I used evil mode, it jumped cursor in some weird way |
| 16:16 | technomancy | llasram: re the "Batman is very much a child’s fantasy" conversation from the conj: http://comicsalliance.com/ask-chris-96-why-spider-man-is-the-best-character-ever-yes/ |
| 16:16 | blr | wonder if anyone has been working on codemirror's vim support... |
| 16:17 | bitemyapp | working on codemirror means writing JS. Tough sell. |
| 16:19 | pbostrom | blr: I use evil-mode, I was never a VIM power user but I like VIM's modal editing and motions too much |
| 16:19 | solidus_ | nrepl is still being developed or now CIDER has completely replaced it? |
| 16:20 | glosoli | solidus_: they renamed project |
| 16:20 | glosoli | :) |
| 16:20 | solidus_ | btw anyone used lightable or managed to get emacs shortcuts to work there? |
| 16:21 | coventry | solidus_: I would stick with nrepl for now (vs cider. No opinion on LT.) |
| 16:21 | glosoli | solidus_: https://groups.google.com/forum/#!msg/light-table-discussion/KE-qSBjfRxA/lgC5l3ykjGcJ |
| 16:21 | blr | solidus_: the editor that lighttable uses (codemirror) will have emacs bindings, but if it's anything like the vim support will be woefully incomplete |
| 16:23 | solidus_ | coventry: why do your prefer nrepl? |
| 16:23 | glosoli | solidus_: More stable :) |
| 16:23 | coventry | solidus_: What glosoli said. |
| 16:24 | coventry | solidus_: Until there are new features I want in cider, I don't see the upside. https://github.com/clojure-emacs/cider/issues |
| 16:24 | TimMc | reply -> nrepl -> cider? |
| 16:25 | TimMc | Or is cider just the new name for the Emacs side of things? |
| 16:25 | glosoli | emacs side of things |
| 16:25 | coventry | TimMc: Yep. |
| 16:25 | dnolen | nice https://news.ycombinator.com/item?id=6757031 |
| 16:27 | blr | dnolen: I'm maintaining a large angular project now and it is getting hairy |
| 16:28 | teslanick | blr: Anything specific to look out for? I've been advocating moving a big app toward Angular |
| 16:29 | dnolen | blr: I don't think it's actually and either/or thing, CLJS + Angular.js seems like a combination people like |
| 16:29 | coventry | lazybot's findfn should try permuting the arguments if it comes up empty the first time. |
| 16:30 | Raynes | http://github.com/Raynes/findfn |
| 16:30 | Raynes | On one hand that pull request would be mighty useful. On the other, findfn is already amazingly slow. |
| 16:30 | Raynes | But hey, if you're in it you might as well be in it for the long hall. |
| 16:30 | Raynes | haul* |
| 16:31 | Raynes | Or a long hall. Doesn't matter to me. Whatever you're into. |
| 16:31 | blr | dnolen: you don't find that clojure and MVC are at odds with eachother? Have been investingating frp approaches as an alternative, but it requires a fairly major shift in thinking |
| 16:32 | blr | teslanick: angular is just very agnostic about how you structure your project, you just have to be disciplied about reuse through directives and make sure you're putting logic in services rather than controllers... nothing specific to angular |
| 16:33 | upwardindex | Recommendation for a notification library that is a pleasure to use from clojurescript? |
| 16:33 | TimMc | &(keep :foo [{:bar 6} {:foo 7} {} {:foo 9}]) |
| 16:33 | lazybot | ⇒ (7 9) |
| 16:34 | dnolen | blr: not saying CLJS+Angular.js is something I would personally use, I think CLJS offers some cool opportunities to rethink how client side apps are done, but this will take some time to shake out. |
| 16:34 | dnolen | upwardindex: core.async? |
| 16:34 | coventry | Raynes: You're right, if it's doing that it should send periodic messages back so you know it's not just that it's died. And because that's potentially a lot of spam, it should probably only do that when it's /msg'ing, not when it's broadcasting to the channel. |
| 16:34 | upwardindex | dnolen: I mean growl type of thing |
| 16:34 | logic_prog | what is the inverse of .getBytes? (I have taken a string, encoded it with .getBytes, stuffed it in a db, read it back out, now I need to convert it back to a string) |
| 16:35 | Raynes | (String. (.getBytes "foo")) |
| 16:35 | dnolen | upwardindex: oh not that I know of, shouldn't be too hard to leverage a JS lib if one exists. |
| 16:35 | Raynes | &(String. (.getBytes "foo")) |
| 16:35 | lazybot | ⇒ "foo" |
| 16:35 | Raynes | logic_prog: ^ |
| 16:35 | logic_prog | Raynes: exactly what I needed. Thanks! |
| 16:36 | upwardindex | dnolen: there are tens of libraries luckily |
| 16:36 | Raynes | logic_prog: Keep in mind that this uses the default charset. You can specify another if necessary. |
| 16:36 | blr | upwardindex: https://github.com/CodeSeven/toastr seems popular (haven't used it myself) |
| 16:37 | teslanick | &(-> "foo" .getBytes String.) |
| 16:37 | lazybot | ⇒ "foo" |
| 16:37 | teslanick | Raynes: wouldn't that be easier to read? |
| 16:37 | upwardindex | blr: that is a pretty one! |
| 16:38 | Raynes | teslanick: Not really, no. |
| 16:38 | Raynes | In larger, more complex examples, sure. |
| 16:43 | stompyj | Is there an IRC channel for caribou / Are there any caribou users/authors in here? |
| 16:44 | coventry | stompyj: justin_smith is affiliated with caribou. |
| 16:47 | stompyj | coventry: thanks! |
| 16:48 | gfredericks | hyPiRion: I would like to browse large data structures by having some top-level stuff shown, and being able to expand |
| 16:48 | gfredericks | like a tree, yunno |
| 16:48 | gfredericks | if a map has lots of keys, only show a few of them |
| 16:48 | stompyj | trying to decide if it's worth using as purely a REST API |
| 16:48 | hyPiRion | hmm, okay |
| 16:48 | stompyj | it seems like that's not it's intended use case, but it also seems like it may work that way |
| 16:49 | TimMc | gfredericks, hyPiRion: Further request: Interactively map different functions across certain parts of the tree. |
| 16:50 | gtrak | anyone have an idea how to tune lein for a smaller heap? -server just gets out of hand once I get past a few project repls. |
| 16:50 | gfredericks | TimMc: oh dang now we're getting advanced |
| 16:50 | technomancy | gtrak: -server is a no-op |
| 16:50 | technomancy | unless you have a 32-bit JDK |
| 16:50 | gfredericks | hyPiRion: in particular it should work without sending all the data back to emacs |
| 16:50 | gtrak | technomancy: right, I mean the implicit -server that's run on a 64-bit box. |
| 16:51 | TimMc | E.g. "Run #(String. %) on all the byte arrays" or perhaps on certain paths. |
| 16:51 | hyPiRion | gfredericks: sending or printing? |
| 16:51 | technomancy | gtrak: you mean beyond -Xmx? |
| 16:51 | Raynes | cemerick: "(is-this-element-in-this-collection? nil [1 2 nil]) ; And no, the (some #{x} coll) hack doesn't work for nil" is one of the responses for missing Clojure features. |
| 16:51 | gfredericks | hyPiRion: sending; e.g., a 20GB data structure |
| 16:51 | gfredericks | so it has to maintain a reference to the data back in the jvm process |
| 16:51 | Raynes | cemerick: If you ever find out who that was by some miracle of fate, tell them about (some nil? coll) |
| 16:52 | TimMc | It would also be nice to e.g. show the first element of each collection by default (down to a certain depth). |
| 16:52 | gtrak | technomancy: I can limit the heap, but looking at jvisualVM it seems like it's just keeping a massive heap allocated and not using all of it, I'd like for the max to grow down dynamically instead of relying on OS paging. |
| 16:52 | gtrak | the heaps get thrown into swap eventually, is what I mean, I'd like to avoid the swap. |
| 16:52 | hyPiRion | TimMc: *print-depth* and *print-length* can already do that to some extent, no? |
| 16:53 | enquora | can anyone point to sample code using core.async to manage simultaneous network requests and local persistence to disk? Just finished debugging a viper's nest of callbacks in a javascript implementation of CouchDB - both network access and local persistence use asynchronous apis. Need to get my head around doing this in a some fashion that clearly exposes intent in code. Alternative seems to be a formal statechart/statemachine |
| 16:53 | cemerick | Raynes: heh, sure; though, (some nil? ...) doesn't help if you want to generically check for some value in a sequential, and don't know the type or nil-ness of that value |
| 16:53 | technomancy | gtrak: I know stuff like certain IO buffers are allocated off the main heap; native libs can allocate there as well |
| 16:53 | egosum | did clojuredocs.org get abandoned? |
| 16:54 | egosum | And does anyone know/can anyone guess why? And is there a replacement? |
| 16:54 | bitemyapp | egosum: yes |
| 16:54 | bitemyapp | egosum: I'm considering starting a wiki. |
| 16:54 | gtrak | I'll play with it :-), thanks |
| 16:54 | gfredericks | bitemyapp: who owns it? not interested in transferrinc? |
| 16:54 | bitemyapp | egosum: I'll do it today if I can get at least one person to commit to helping me make content for it. |
| 16:54 | bitemyapp | gfredericks: zachary kim. I don't know. |
| 16:54 | hyPiRion | cemerick: (some #(= % my-value) ...) does work though |
| 16:55 | bitemyapp | I'm rather envious of Haskell.org and EmacsWiki. |
| 16:55 | hyPiRion | That was probably to Raynes as well |
| 16:55 | technomancy | gfredericks: they've been looking for someone to help for like two and a half years or something |
| 16:55 | technomancy | no one ever does |
| 16:55 | technomancy | the circle of rage continues |
| 16:55 | egosum | technomancy: what sort of help? and who? |
| 16:55 | gfredericks | okay so it's not abandoned by somebody, it's abandoned by allo f us? |
| 16:55 | bitemyapp | technomancy: nobody wants to work on a Rails app. |
| 16:55 | Raynes | hyPiRion: nil? |
| 16:55 | technomancy | gfredericks: exactly |
| 16:55 | bitemyapp | technomancy: and they have a team that is supposed to be working on it, but hasn't. |
| 16:55 | Raynes | &(some nil? [1 2 nil 3 4]) |
| 16:55 | lazybot | ⇒ true |
| 16:55 | gfredericks | oh it's a rails app |
| 16:55 | Raynes | &(some nil? [1 2 3 4]) |
| 16:55 | lazybot | ⇒ nil |
| 16:55 | bitemyapp | gfredericks: they started a team to maintain it but the team didn't do anything |
| 16:56 | bitemyapp | gfredericks: the team said they had it in hand and that we didn't need to do anything. |
| 16:56 | cemerick | hyPiRion: true, true; perhaps not obvious tho |
| 16:56 | bitemyapp | so it's not entirely on us. |
| 16:56 | technomancy | bitemyapp: everything's done except the html front-end, which no one on the team is qualified to write |
| 16:57 | technomancy | egosum: https://github.com/clojuredocs/web |
| 16:57 | bitemyapp | technomancy: link it in the channel so people can see what we're talking about, please. |
| 16:57 | cemerick | I love how the survey always manages to spur the vitriol here :-P |
| 16:57 | bitemyapp | yes. |
| 16:57 | gtrak | technomancy: this looks like what I want: -XX:+UseAdaptiveSizePolicy 'if both the pause time goal and the throughput goal are being met, then the size of the generations are decreased to reduce footprint' |
| 16:57 | bitemyapp | sigh, that's just an API. |
| 16:57 | technomancy | cemerick: you asked for opinions, you get an opinionfest =) |
| 16:57 | cemerick | mmm, so I hear |
| 16:57 | technomancy | bitemyapp: right; that's the problem. the API is done, the HTML isn't |
| 16:58 | egosum | technomancy: thank you, technomancy |
| 16:58 | bitemyapp | technomancy: it's not just HTML, it's structuring the whole site and content. |
| 16:58 | technomancy | bitemyapp: ok, sure |
| 16:58 | bitemyapp | aka, actually making the thing we actually need |
| 16:58 | bitemyapp | we didn't need an API |
| 16:58 | bitemyapp | we needed up to date content |
| 16:58 | technomancy | you can access all the data from the repl |
| 16:59 | logic_prog | [org.apache.zookeeper/zookeeper "3.4.5"] |
| 16:59 | logic_prog | fuck ... how do I installa zookeper in lein |
| 16:59 | logic_prog | lein deps Could not find artifact javax.jms:jms:jar:1.1 in central (http://repo1.maven.org/maven2/) Could not find artifact javax.jms:jms:jar:1.1 in clojars (https://clojars.org/repo/) |
| 17:00 | bitemyapp | logic_prog: maven install |
| 17:00 | logic_prog | bitemyapp: maven install -what- ? |
| 17:00 | blr | technomancy: is that todo in the README complete? doesn't mention any frontend tasks |
| 17:00 | nDuff | bitemyapp: that doesn't really help for code that isn't distributed in Maven Central for licensing reasons. |
| 17:00 | nDuff | logic_prog: you can use a :exclude for javax.jms:jms and then add a 3rd-party implementation. I think Apache has one. |
| 17:01 | technomancy | blr: «website [not started]» under Progress |
| 17:01 | logic_prog | nDuff: I'm new to maven; is there a website I can read up on ? |
| 17:01 | logic_prog | something like "how to install zookeper/clj for idiots" |
| 17:01 | nDuff | logic_prog: ...though, well, yes, you can download JMS from Sun, and then use ''mvn install'' to put that jar in your local cache. |
| 17:02 | technomancy | nDuff: you can actually do that with lein now |
| 17:02 | technomancy | needs better docs though =\ |
| 17:02 | logic_prog | technomancy: please enlighten us and teach me how to install zookeeper with lein |
| 17:02 | nDuff | logic_prog: *shrug*. I'm at a shop where we have the Ivy packager task set up to build a package of JMS for our local repo (which we can't legally distribute on account of Oracle being unhelpful). |
| 17:02 | zilti | 3 |
| 17:03 | logic_prog | nduff: http://search.oracle.com/search/search?start=1&search_p_main_operator=all&q=jms <-- where do I even get jms? |
| 17:03 | technomancy | logic_prog: if you have a jar file you need, you can use `lein deploy` to get it into ~/.m2 |
| 17:03 | nDuff | logic_prog: have you tried just excluding them? |
| 17:03 | technomancy | logic_prog: I have no idea how zookeeper works |
| 17:03 | blr | technomancy: ah okay. will keep an eye on it |
| 17:03 | nDuff | logic_prog: they may not be strictly necessary. |
| 17:04 | nDuff | logic_prog: ...alternately, legalities notwithstanding, it looks like it's available in https://repository.jboss.org/nexus/content/groups/public |
| 17:04 | nDuff | logic_prog: ...so you can just add that repository to your project.clj |
| 17:04 | logic_prog | nDuff: where is the docs on how to adding a repo to lein? |
| 17:05 | nDuff | logic_prog: the leiningen README links to a sample project.clj that uses every possible option. |
| 17:05 | nDuff | logic_prog: "every possible option", by its nature, includes adding extra repos. |
| 17:05 | logic_prog | https://github.com/technomancy/leiningen/blob/master/sample.project.clj ? |
| 17:05 | nDuff | logic_prog: *nod*. See :repositories |
| 17:06 | technomancy | `lein help sample` |
| 17:07 | egosum | well, i pinged #clojure-doc — I'm looking through their repos now. I don't understand why new tags/whatever they call them weren't just introduced for 1.4 and 1.5, though. Seems a shame to let the site become stale for a rewrite? Unless it was somehow necessary? |
| 17:07 | bitemyapp | egosum: clojure-doc is somebody else. |
| 17:08 | bitemyapp | pretty sure that's the clojurewerkz people not the clojuredocs API people |
| 17:08 | egosum | bitemyapp: from ://github.com/clojuredocs/web the README refers me to #clojure-doc |
| 17:08 | egosum | on freenode |
| 17:09 | bitemyapp | egosum: sigh, then that's a namespace collision. |
| 17:09 | bitemyapp | egosum: clojure-doc the website is the friggin' github wiki the clojurewerkz guys started. |
| 17:09 | bitemyapp | the offer still stands, I'll launch the wiki if I can get at least one person to commit to helping me put the content up. |
| 17:10 | egosum | bitemyapp: somehow, they're connected. That clojure-doc.org -> the same repo that hosts the web repo for clojuredocs.org |
| 17:10 | technomancy | bitemyapp: it's the same folks |
| 17:10 | egosum | So somehow clojurewerkz are involved as well |
| 17:10 | egosum | there you go |
| 17:10 | technomancy | there's just a lot of overlap |
| 17:11 | egosum | bitemyapp: I'm going to wait to hear back from them, first; if they're really just some HTML away from re-launching, I may find some time to help in the coming weeks. Though I'd love to hear why it all went dead? |
| 17:11 | bitemyapp | "just HTML" |
| 17:12 | bitemyapp | yeah good luck with that. |
| 17:12 | bitemyapp | "just HTML" yet that's the part we're stalling out on. |
| 17:12 | egosum | bitemyapp: We'll see :) I'm optimistic. Rather not reinvent the wheel, at the very least. |
| 17:12 | bitemyapp | that's not the point |
| 17:12 | bitemyapp | the API isn't enough |
| 17:12 | bitemyapp | you need community created examples underneath the raw docs themselves |
| 17:12 | bitemyapp | that means you need a wiki |
| 17:12 | bitemyapp | but if you have a wiki, integrating the API after the fact is not a big deal at all. |
| 17:13 | bitemyapp | but until the structure and ability to add community created content is in place, you don't have much to work with. |
| 17:13 | bitemyapp | I don't know why others cannot see that. |
| 17:13 | egosum | bitemyapp: i don't know what they have in mind, but what they have now on clojuredocs.org is a wiki, essentially. Right? |
| 17:14 | bitemyapp | egosum: in Rails |
| 17:15 | blr | bitemyapp: any existing resources worth looking to for inspiration? wiki.python.org? |
| 17:15 | egosum | bitemyapp: I don't have a problem with that. Rails works. Less fun, sure, but this is a CRUD app |
| 17:15 | technomancy | clojure-doc.org is basically a wiki where edits are pull requests |
| 17:16 | bitemyapp | blr: haskell.org + Haddock and EmacsWiki are stand-outs in my opinion. |
| 17:16 | bitemyapp | egosum: I have a problem with working on a rails app in a community that supposedly has good web tools. |
| 17:16 | bitemyapp | something that the Haskell community somehow sidestepped. |
| 17:16 | bitemyapp | egosum: I am not going to perpetuate the use of Rails on my free time. |
| 17:16 | bitemyapp | I'd rather suck fruit wax. |
| 17:17 | egosum | bitemyapp: Then go ahead and write one in Clojure :) I'd be happy to contribute once it looks like it's as close to working at clojuredocs.org is |
| 17:18 | blr | bitemyapp: any way you could collaborate with clojurewerkz? there's a lot of good content on clojure-doc.org |
| 17:18 | blr | the default bootstrap theme isn't doing much for me though |
| 17:19 | bitemyapp | blr: I don't like the pull request workflow and I think it discourages contributions. |
| 17:19 | gtrak | technomancy: seems like -XX:+UseG1GC is much more aggressive about releasing mem, from what I've read, that's expected. |
| 17:19 | bitemyapp | blr: I really just want something like Haskell.org or EmacsWiki. |
| 17:19 | bitemyapp | blr: I've already discussed this with them, they refuse to acknowledge how irritating it is to PR contributions to a wiki. |
| 17:19 | technomancy | gtrak: but yeah, unpredictable memory usage is a huge source of support issues for JVM users on Heroku |
| 17:20 | egosum | blr: the problem (insofar as you'd call it one) with clojure-doc is that they don't want to cover the API with it. Just use it for guides/tutorials. According to the README |
| 17:20 | bitemyapp | egosum: you're not understanding me. |
| 17:20 | bitemyapp | egosum: I'm not doing a damn thing until I get at least one person besides myself who is interested in having a wiki. Doesn't necessarily mean writing one. |
| 17:20 | danneu | I started writing a clojuredocs clone like everyone else probably has in their neglected ~/oldcode folder, and used the gist api for contributions |
| 17:20 | bitemyapp | egosum: I own clojurewiki.com, I'm just waiting. |
| 17:20 | blr | bitemyapp: are there any wiki projects in clojure atm? |
| 17:20 | blr | as in wiki softwrae |
| 17:21 | bitemyapp | blr: I've written a micro CMS in Clojure that runs bitemyapp.com |
| 17:21 | gtrak | technomancy: this bug was informative: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6498735 . You're probably not going to futz with it for heroku until G1 is default, but check it out :-). |
| 17:21 | bitemyapp | it could be turned into a wiki, but I don't think that's necessary. |
| 17:21 | danneu | i own... wait for it... docjure.com |
| 17:21 | bitemyapp | mediawiki + wrapper site for the API would probably be sufficient. |
| 17:21 | egosum | ah, perpetuating the use of PHP ;) |
| 17:22 | bitemyapp | there's a difference between deploying a mediawiki and *hacking* on a Rails app. |
| 17:22 | bitemyapp | I am not going to replicate everything mediawiki does in Rails. |
| 17:22 | bitemyapp | I'm open to writing a wiki, but my point is that you don't *HAVE* to write a goddamn wiki. |
| 17:22 | technomancy | I'm not going to do any significant editing in a browser |
| 17:23 | danneu | you should probably write a documentation archive in the language it's documenting |
| 17:23 | danneu | audience are people that could commit |
| 17:24 | bitemyapp | I would tend to agree. |
| 17:24 | egosum | The salient questions are "what do people want?" and "what are people looking for?". I still get people hitting my many-years-old introductions to Clojure articles, searching with general keywords like "doing IO in clojure" |
| 17:24 | blr | bitemyapp: seems like something that should be discussed with clojure core? |
| 17:24 | bitemyapp | blr: lol no. |
| 17:24 | bitemyapp | they're the last people you should talk to about documentation. |
| 17:24 | technomancy | heh |
| 17:26 | blr | just seems a pity to have people independently duplicating documentation efforts, and it's confusing for new people |
| 17:26 | egosum | blr: agreed |
| 17:27 | egosum | It would be nice to get a group of people together interested in creating a canonical wiki |
| 17:27 | technomancy | wikis are easy to create |
| 17:27 | egosum | clojure and canon don't go well together, though |
| 17:27 | technomancy | maintaining over years is far more difficult |
| 17:28 | danneu | wiki is overkill. you just want a low-barrier code-formatted comment box |
| 17:28 | danneu | for a clojuredocs clone |
| 17:29 | bitemyapp | I want a wiki. |
| 17:29 | technomancy | TBH I don't see why people don't just use it from the repl |
| 17:29 | blr | technomancy: that's not so intuitive for someone new to clojure |
| 17:30 | blr | need both ideally |
| 17:30 | technomancy | blr: people gotta learn to get over their browser-addiction same as getting over the instinct to modify arrays in-place |
| 17:30 | egosum | technomancy: blr: coming from a guy who uses lynx from tmux :P some of us like a little more GUI in our lives |
| 17:31 | blr | egosum: as a tmux user, sometimes I'm tempted myself.. |
| 17:31 | egosum | blr: I use tmux, too. But god no not lynx. |
| 17:31 | egosum | Actually, you use konqueror, don't you technomancy |
| 17:31 | mtp | i use w3m and elinks |
| 17:31 | technomancy | egosum: nooooo |
| 17:31 | technomancy | egosum: conkeror! |
| 17:31 | technomancy | totally different =P |
| 17:31 | blr | hah, yeah, that's a whole different kind of techno-luddism (no offense technomancy :) ) |
| 17:31 | technomancy | haha |
| 17:32 | technomancy | I just added in-emacs HTML rendering to nrepl-dicsover though |
| 17:32 | hiredman | technomancy: nice! |
| 17:32 | egosum | technomancy: seriously? that's awesome. I feel like I miss out on a lot using iterm2 instead of X |
| 17:32 | technomancy | I should add support for https://github.com/dakrone/clojuredocs-client though |
| 17:33 | bitemyapp | arrdem: what is scc/sc13? |
| 17:33 | technomancy | hiredman: I'm hoping to port Javert to it \m/ |
| 17:34 | technomancy | egosum: well it's not webkit; it's basically the equivalent of w3m's renderer, but without the dependency on an external binary |
| 17:34 | arrdem | bitemyapp: http://sc13.supercomputing.org/ |
| 17:34 | technomancy | perfect for an inspector though |
| 17:34 | TimMc | &((->> (?) lazy-seq (fn ? []))) |
| 17:34 | arrdem | bitemyapp: I'm on the UT team for http://sc13.supercomputing.org/content/student-cluster-competition |
| 17:34 | lazybot | Execution Timed Out! |
| 17:35 | technomancy | dakrone: would that make sense? creating M-x nrepl-cdoc that could use clojuredocs-client? |
| 17:35 | bitemyapp | technomancy: seems reasonable to me. |
| 17:35 | dakrone | technomancy: makes sense to me |
| 17:35 | technomancy | dakrone: also, does your client support submitting or just reading? |
| 17:35 | arrdem | bitemyapp: it's a high performance, power management based timed devops challenge |
| 17:35 | TimMc | &(->> ? trampoline lazy-seq (fn ? []) trampoline) ;; ah, much better |
| 17:35 | dakrone | technomancy: just reading |
| 17:36 | lazybot | Execution Timed Out! |
| 17:36 | technomancy | I wonder if I could do a clojure/west talk on nrepl and nrepl-discover |
| 17:36 | pjstadig | technomancy: yes |
| 17:36 | technomancy | gotta get the word out =D |
| 17:37 | egosum | I'm confused re: Cider v. nrepl. There's nothing on the nrepl repo pointing to cider (https://github.com/clojure-emacs/cider) |
| 17:38 | joegallo | egosum: i think you'll find that the project rename made it impossible for you to be confused |
| 17:38 | joegallo | (jk, man, i'm just messing around, you can totally ignore me) |
| 17:38 | technomancy | geez; you scraed scared him off? |
| 17:39 | joegallo | some people scrae easily |
| 17:39 | hiredman | joegallo: kings ignore jesters at their own peril |
| 17:40 | joegallo | i can't tell if you're calling me a fool or not, but the shoe fits |
| 17:40 | joegallo | :) |
| 17:40 | Glenjamin | is cider a fork or a rename? |
| 17:40 | hiredman | the big shoe :) |
| 17:40 | technomancy | Glenjamin: rename with a new maintainer |
| 17:41 | Glenjamin | oh, i thought nrepl.el was still under active dev |
| 17:42 | arrdem | bitemyapp: we have a total of a 26 amp power budget and we've got the hardware tuned so tight we're french kissing the line. suddenly there's a word of the law dispute that may totoally screw us... I'm stressed :/ |
| 17:42 | Glenjamin | ah, found the issue tracker |
| 17:42 | bitemyapp | arrdem: :( good luck! |
| 17:42 | gtrak | technomancy: for comparison, notG1: http://imgur.com/C7r5hFa , G1: http://imgur.com/tuk8ilV . |
| 17:43 | technomancy | nice |
| 17:43 | gtrak | that massive cliff in the first is just unnecessary |
| 17:44 | technomancy | it is super annoying that there's no "never use more than $MAX mb of RAM" setting |
| 17:44 | gtrak | it would be inconsequential in a dedicated server setting, so I see why it's like that. |
| 17:45 | mtp | terom, what about ulimit? :p |
| 17:45 | mtp | err |
| 17:45 | mtp | technomancy* |
| 17:45 | seangrove | Ah, ffs heroku... |
| 17:45 | gtrak | technomancy: there's MaxHeapFreeRatio and MinHeapFreeRatio, I was going to try that, but just flipping on G1 worked well enough. |
| 17:46 | gtrak | '-XX:MaxHeapFreeRatio=70, Maximum percentage of heap free after GC to avoid shrinking.' |
| 17:46 | seangrove | Addon got removed, but I never got an email, whole site is busted, didn't get an email because I don't have the original domain I signed up with years ago, can't update my email because I have to confirm an email from the original email |
| 17:47 | technomancy | mtp: is that visible from inside the affected process? |
| 17:47 | seangrove | Gave up on it before out of frustration, and now it has come back to haunt me. |
| 17:48 | mtp | technomancy, there are syscalls to get it, so "not sure" :) |
| 17:48 | technomancy | seangrove: for clojars what we did when the original email account was locked was make a request signed with the SSH key we have on file |
| 17:49 | technomancy | (I only recently learned that you could do that with SSH) |
| 17:50 | seangrove | technomancy: ... to the heroku api? |
| 17:50 | technomancy | seangrove: no, in a manual support request |
| 17:50 | seangrove | Or are you talking about the design of clojars specifically,? |
| 17:51 | seangrove | Ah, ok |
| 17:51 | seangrove | That's a nice idea. I'll see if I can open another security ticket and get it taken care of this time. |
| 17:51 | seangrove | Err, suport ticket* |
| 17:51 | seangrove | "The cloud is great, as long as it doesn't fall out from underneath you." |
| 17:53 | Glenjamin | was there an announcement about the nrepl.el->cider thing on the clojure mailing list? i don't remember seeing anything |
| 17:54 | technomancy | no idea; still using nrepl.el |
| 17:54 | technomancy | works great |
| 17:55 | Glenjamin | mm, fair enough |
| 17:55 | Glenjamin | btw technomancy, someone told me you had a hack that would allow loading multiple versions of a dependency into the same app - was that heresay, or is there some code floating around somewhere i could poke at? |
| 17:56 | technomancy | Glenjamin: it's basically a proof-of-concept https://github.com/technomancy/metaverse |
| 17:56 | technomancy | 2-hour hack night project; do not use; feel free to read |
| 17:56 | Glenjamin | mm, it's an idea i'm very keen on |
| 17:56 | Glenjamin | i claim it's best, if not only reason to use node.js |
| 17:56 | technomancy | I don't think it's a good idea actually |
| 17:57 | Glenjamin | in java-land, or in general? |
| 17:57 | technomancy | if you want something like that it's almost surely a sign that your codebase is too big |
| 17:57 | Glenjamin | it's the dependency hell problem |
| 17:57 | technomancy | so that's like taking painkillers to "solve" a broken leg |
| 17:57 | Glenjamin | if i include a library in my library, consumers shouldn't have to care |
| 17:57 | Glenjamin | B depends on utilA-1.0, C depends on utilA-2.0 |
| 17:57 | Glenjamin | now D can't use B and C |
| 17:58 | seangrove | Glenjamin: But loading them both doesn't help... |
| 17:58 | Glenjamin | seangrove: unless you could keep them separated |
| 17:59 | technomancy | it's easy to do with clojure namespaces for the most part, but as soon as you involve classes it gets hard |
| 17:59 | seangrove | Glenjamin: I suppose, sounds like a time bomb |
| 17:59 | Glenjamin | so B gets what it wants, and C gets what it wants, and unless you expose types over public interfaces you're fine |
| 17:59 | Glenjamin | which is where it falls down, of course |
| 17:59 | technomancy | in practice incompatibility usually comes from underlying java libs |
| 17:59 | Glenjamin | mm |
| 18:00 | Glenjamin | but java peeps have gotten used to not using small dependencies |
| 18:00 | Glenjamin | i think it would be a shame for clojure to have to follow that path |
| 18:00 | Glenjamin | "just copy that fn from the source into you app" shouldn't be the accepted solution in 2013 :) |
| 18:01 | technomancy | clojure is still small enough that you can shame authors of misbehaving libs into compliance though; it's great |
| 18:01 | Glenjamin | yeah, but that doesn't scale |
| 18:01 | gtrak | Glenjamin: seen codec? it's a start. |
| 18:01 | gtrak | codeq, excuse me |
| 18:02 | Glenjamin | thats an interesting way of thinking about it |
| 18:02 | Glenjamin | i'm familiar with the concept of codeq, but not played with it properly |
| 18:02 | technomancy | yeah, when clojure gets too big for that to work you gotta find another niche |
| 18:02 | technomancy | factor, ocaml, elixir, etc =) |
| 18:02 | seangrove | hah |
| 18:02 | Glenjamin | basically, I'm convinced that the node.js approach to dependency loading is onto something - and in theory clojure's namespaces would support the same model |
| 18:03 | Glenjamin | but as you say, java complicates things |
| 18:03 | seangrove | Could be a good troll talk. "If the language is soo large I can't personally shame a library author into doing the right thing, I don't want to use it." |
| 18:03 | gtrak | my dream someday :-). clojure-in-clojure -> environment-as-a-value -> distributed-versioned-repls |
| 18:04 | Glenjamin | but yeah, i don't want to live in a world where "this project has no dependencies" is a plus point |
| 18:04 | bitemyapp | gtrak: environment is a value already in Haskell |
| 18:04 | bitemyapp | gtrak: monads gg. |
| 18:04 | gtrak | bitemyapp: hmmmmmm |
| 18:04 | Glenjamin | because for any non-trivial project, that either means you did lots of copy-pasting, or you reinvented a bunch of wheels |
| 18:04 | bitemyapp | Glenjamin: sometimes yes, sometimes no. |
| 18:05 | bitemyapp | the only dependencies brambling has are datomic-pro, clj-time, and clojure itself. |
| 18:05 | bitemyapp | that's probably my lowest-number-of-dependencies library. |
| 18:05 | bitemyapp | there are some datomic wrapper utils that could get split out, but I don't have enough of them to bother yet. |
| 18:06 | Raynes | It's like he knows I'm waiting... watching... |
| 18:06 | technomancy | Raynes: it wasn't in the most flattering context |
| 18:06 | Raynes | It wasn't a horrible contxt. |
| 18:06 | Raynes | context* |
| 18:06 | Raynes | One day I'm gonna get used to the keyboard on this macbook, bitemyapp. |
| 18:07 | bitemyapp | the fuck did I do? |
| 18:07 | bitemyapp | oh right |
| 18:07 | bitemyapp | technically that is my fault. |
| 18:07 | Raynes | It makes no sense. The keyboard on a macbook air is the exact same size as the one on the macbook pro, right? |
| 18:07 | bitemyapp | I don't know. |
| 18:07 | blr | Raynes: he didn't compare it to ruby at least |
| 18:07 | bitemyapp | I own both and have no idea. |
| 18:07 | Glenjamin | bitemyapp: it seems fairly well factored to me - although there's some scary reduce calls in there! |
| 18:07 | Raynes | blr: Not much beyond syntax that you can reasonably compare with Ruby. |
| 18:07 | bitemyapp | blr: Ruby isn't a niche, it's a fuckpit of hate fueled by money and self-aggrandizement. |
| 18:07 | dnolen | Glenjamin: I for one hate the depend everything style of Ruby & Node that I've seen at the lib level, and it's annoying when you see it in Clojure outside of *applications*, and even there it's easy to get out of hand. |
| 18:07 | Raynes | Well, I'm staying out of that one. :P |
| 18:08 | blr | uh oh, looks like I used someone's trigger word |
| 18:08 | Glenjamin | dnolen: what is it you dislike about it? |
| 18:08 | arrdem | bitemyapp: okay... I think we're gonna be OK. |
| 18:08 | bitemyapp | Glenjamin: actually yeah, I would love feedback on brambling. |
| 18:08 | dnolen | Glenjamin: random crap |
| 18:08 | bitemyapp | Glenjamin: I take the "scary reduce" as a badge of honor tho :) |
| 18:08 | srruby | Is this idiomatic clojure? https://gist.github.com/anonymous/7537032 I use defonce to avoid loading a resource until the method is called. |
| 18:08 | hansengel | Hi all -- I have a patch I'd like to contribute to Clojure core re: an issue |
| 18:08 | hansengel | on JIRA. Is this the right place to ask if it's sane and OK? :) |
| 18:08 | bitemyapp | srruby: oh my god no don't |
| 18:08 | bitemyapp | srruby: never def inside a function |
| 18:08 | bitemyapp | srruby: don't nest defs |
| 18:08 | bitemyapp | god no ick ugh vomit no. |
| 18:09 | arrdem | hansengel: do you have a clojure CA? |
| 18:09 | technomancy | bitemyapp: just breathe |
| 18:09 | arrdem | hansengel: we'll do a code review for sure, but clojure core can't take it until you've submitted a CA |
| 18:09 | bitemyapp | srruby: (def hyphenator (memoize (fn [] ...body of thing here...))) |
| 18:09 | hansengel | arrdem: OK, I was going to mail one today. |
| 18:09 | srruby | bitemyapp: Thanks!! |
| 18:09 | seangrove | I blame korma and my own initial designs though |
| 18:10 | hansengel | This is a super tiny fix, but I'm not sure I've done it in the right place |
| 18:10 | Glenjamin | dnolen: anything specific? I have a theory that most issues come down to having to deal with dependency hell - which tooling can solve - i'm interesting in discussing more widely |
| 18:10 | bitemyapp | srruby: at the top-level, not nested :| |
| 18:10 | hansengel | re: this ticket http://dev.clojure.org/jira/browse/CLJ-1282 |
| 18:10 | bitemyapp | for the record, Korma's not my fault either. |
| 18:10 | hansengel | my fix: http://pastebin.com/d9JndGJn |
| 18:10 | hansengel | I'm a bit wary about changing something so general sounding as "ConstantExpr," though |
| 18:11 | hansengel | I'm still new to the Clojure core code ;) |
| 18:11 | hansengel | Adding tests now, by the way |
| 18:11 | technomancy | hansengel: technically your patch is under the threshold of copyright in the US, but you still have to assign "copyright" on it for some reason before anyone on the core team will speak to you about it |
| 18:12 | dnolen | Glenjamin: what I mean is I don't see value in that approach other than making the dependency graph look ridiculous. I prefer to be relatively familiar w/ the dependencies in a project. |
| 18:13 | hansengel | technomancy: Hmm, okay, is there a standard way to do that? |
| 18:13 | Glenjamin | dnolen: from my pov, you either need dependencies, or you need to write them yourself. Splitting out into modules and putting docs and tests on each one means you shouldn't have to touch them much once they're stable |
| 18:13 | technomancy | hansengel: yes, but you're not gonna like it |
| 18:13 | technomancy | it involves a printer, stamps, and lots of waiting |
| 18:13 | Glenjamin | if the modules are all small, then stitching them together and sanity-checking them should be less effort than re-creating from scratch |
| 18:14 | hansengel | technomancy: I see, ha.. so I really can't get anywhere without the CA then. |
| 18:14 | gtrak | sometimes a project's dependencies are just massive, and the cost of futzing with adding another is less than the time it takes to split the project and create an IPC layer. |
| 18:14 | seangrove | Glenjamin: Using data helps avoid many versioning problems |
| 18:14 | seangrove | Not all, but some |
| 18:14 | dnolen | Glenjamin: except in the latter I have to contact the dev to fix or monkey patch. In the former I can fix. |
| 18:14 | dnolen | small dependencies just means more hell |
| 18:14 | dnolen | not under my own control |
| 18:14 | technomancy | hansengel: yeah, it's a pain. |
| 18:15 | Glenjamin | thats why we have forks and things, the tooling should enable us to break out clean dependencies |
| 18:15 | seangrove | technomancy: hansengel My CA took ~48 hours to be processed |
| 18:15 | dnolen | Glenjamin: yeah I agree w/ basically nothing you are saying |
| 18:15 | Glenjamin | fair enough |
| 18:15 | technomancy | seangrove: sure, but that's just step 1. now you have to fight Jira |
| 18:15 | seangrove | Wasn't bad at all, I regret moaning about it as much as I did |
| 18:15 | dnolen | if I have to maintain a fork for 100 lines of code ... what the hell do I need a module for |
| 18:15 | gtrak | the project I'm working on has 174 entries in lein deps :tree |
| 18:16 | dnolen | I'll just write that myself |
| 18:16 | seangrove | technomancy: Also not too upset with JIRA these days. I just do the basics, and let dnolen handle the rest of the pain. |
| 18:16 | Glenjamin | dnolen: because your module has tests, docs and a clean separation from the rest of your code. its impossible to couple to your app |
| 18:16 | hansengel | OK, thanks seangrove, technomancy, arrdem. I'll be back in a few days then :) |
| 18:16 | technomancy | seangrove: that doesn't scale =) |
| 18:17 | seangrove | technomancy: Are you sure? dnolen seems to be indefatigueable. |
| 18:17 | danneu | i thought clojure handled DependencyA leaning on bouncycastle1.7 and your app pulling in bouncycastle1.8. |
| 18:18 | Glenjamin | it tells you it might not work |
| 18:18 | technomancy | seangrove: dunno; rewriting small libs to avoid growing a dependency tree sounds tiring =) |
| 18:18 | Glenjamin | or rather, lein does |
| 18:18 | seangrove | technomancy: I figure if we have him, you, cemerick, and maybe two others, there's no immediate concern for scaling bottlenecks :) |
| 18:18 | technomancy | seangrove: I just send cemerick actual pull requests; he looks the other way and keeps me out of trouble. |
| 18:18 | seangrove | Hahahahahaha |
| 18:19 | seangrove | technomancy: Well, you are listed here after all http://clojure.org/contributing |
| 18:19 | Glenjamin | anyway, i'd like to see more people discussing whether it's actually a problem, or if just-write-it-yourself actually is a better solution |
| 18:19 | technomancy | Claiming Copyright Ownership of Submitted Patches as a Service |
| 18:19 | technomancy | seangrove: yeah, but I got dumped off the clojure-dev mailing list for some reason |
| 18:20 | technomancy | possibly my own fault; google groups UI is terrible |
| 18:20 | bitemyapp | it damages the community when people don't use and improve each others' libraries. |
| 18:20 | seangrove | technomancy: Before or after everyone unanimously voted for ops for you? |
| 18:20 | Glenjamin | (inc bitemyapp) |
| 18:20 | lazybot | ⇒ 13 |
| 18:20 | seangrove | You're not exactly an unknown figure... |
| 18:20 | technomancy | seangrove: I think it was before |
| 18:20 | seangrove | I imagine cemerick might have more reservations about looking the other way if pr's came from less savory sources |
| 18:21 | technomancy | I send in the CA when I was young and starry-eyed; back when Rich promised to switch to github. |
| 18:21 | bitemyapp | seangrove: you're the one that has "unsavory" in his profile, not me. |
| 18:21 | arrdem | bitemyapp: well played |
| 18:21 | Glenjamin | bitemyapp: on brambling, i'm only broadly familiar with datomic - but i really can't figure out what groupings->temp-ids does |
| 18:21 | technomancy | bitemyapp: well I have "bumbling" in mine, does that count |
| 18:21 | seangrove | bitemyapp: You're tainted by association, I'm afraid. |
| 18:22 | bitemyapp | seangrove: I'm pretty sure my intolerance speaks for itself. |
| 18:22 | bitemyapp | Glenjamin: you can't directly transact primary keys from one database into another |
| 18:22 | pmde | hi clojure people. I have a function that i need to call for each item in a list, but once after the other, each one after the one before has completed. the function is all side effects... and i want a timeout... i was thinking of using agents.. is that a good idea? or could i just use map? thanks |
| 18:22 | bitemyapp | Glenjamin: you have to use a temporary id intermediary. So everytime you see primary key "2" in the old database, I replace it with the mapped-to temp id |
| 18:22 | bitemyapp | I group the datoms by the entity id (primary key) in the datom vector. |
| 18:23 | bitemyapp | hence the name groupings |
| 18:23 | seangrove | technomancy: Didn't you say you had replaced the built-in nrepl-greetings? |
| 18:23 | bitemyapp | Glenjamin: I then reduce the association of primary key to a newly created temp id if one wasn't already created, then I map the datoms over to the tempid in the transaction. |
| 18:23 | technomancy | seangrove: absolutely http://p.hagelb.org/nrepl-words.el.html |
| 18:24 | seangrove | Oh man, that's lovely |
| 18:24 | technomancy | it brightens my day every time |
| 18:24 | seangrove | That's what I was thinking |
| 18:24 | bitemyapp | Glenjamin: So [:db/add 1 :muh-attr :muh-data] turns into [:db/add (d/tempid whatever) :muh-attr :muh-data] |
| 18:24 | bitemyapp | Glenjamin: then the whole translated transaction gets reduced through the mappers. |
| 18:24 | bitemyapp | it's per transaction translation, no transaction folding |
| 18:25 | bitemyapp | I'm working on incremental processing and transaction pipelining atm |
| 18:25 | clojurebot | excusez-moi |
| 18:25 | technomancy | holy smokes; cider became a lot of files |
| 18:25 | bitemyapp | `cbp: oh god why did I write a datomic migration library |
| 18:25 | bitemyapp | `cbp: don't let me do this again |
| 18:25 | `cbp | bitemyapp: what happened |
| 18:25 | Glenjamin | i'd suggest adding some of what you just said into these doc-strings :) |
| 18:26 | bitemyapp | `cbp: making brambling incremental and pipelining the transactions, rewriting a reduce in terms of lazy-seq. |
| 18:26 | bitemyapp | possibly^H^H^H^H^Hdefinitely losing my sanity. |
| 18:26 | bitemyapp | getting results from my functions that don't make any fucking sense. |
| 18:27 | technomancy | nice https://github.com/clojure-emacs/cider/pull/415 |
| 18:27 | seangrove | Documentation for cider-words-of-inspiration: "Scientifically-proven optimal words of hackerish encouragement." |
| 18:28 | danneu | datomic is awesome. every day i use it, i get better at actually thinking of the db as a val i can just pass into a plain ol function. |
| 18:28 | technomancy | seangrove: I could do without the quotations |
| 18:28 | seangrove | technomancy: heh, "fellow hacker" |
| 18:28 | `cbp | bitemyapp: here here |
| 18:28 | bitemyapp | danneu: are you volunteering to work on brambling? :P |
| 18:28 | seangrove | technomancy: Was a direct quotation |
| 18:29 | `cbp | bitemyapp: After some soul searching ive decided to do a heckle in clj. You have been warned |
| 18:29 | bitemyapp | `cbp: HAHAHAHAHA |
| 18:29 | bitemyapp | `cbp: we can go to the looney bin together. |
| 18:29 | bitemyapp | I will shanghai the next person that says they love Datomic into working on Brambling just to see how much they love Datomic afterward :P |
| 18:29 | Glenjamin | i wonder if opt-in sandboxed dependency versions with a slightly different (ns) incantation would be more palatable |
| 18:29 | bitemyapp | `cbp: I will buy you multiple pizzas if you push a working version of it to clojars. |
| 18:30 | seangrove | technomancy: I would have liked adventurer more than "fellow hacker", I thought that was more in the spirit of things |
| 18:30 | Morgawr | I have a legal-ish question, can I put the clojure logo a website of an application/program/library powered by clojure? |
| 18:30 | `cbp | that's cheap. They sell 3 for the price of 1 here |
| 18:30 | bitemyapp | Morgawr: didn't stop rethinkdb |
| 18:30 | bitemyapp | `cbp: well design your own reward. |
| 18:30 | bitemyapp | either way, it's something I've wanted. |
| 18:31 | `cbp | :-) |
| 18:31 | Morgawr | I don't see the clojure logo on http://www.rethinkdb.com/ |
| 18:32 | Glenjamin | oh wait, thats what this does - (ns-) |
| 18:34 | `cbp | Morgawr: It's supposed to be here but it's apparently broken: http://www.rethinkdb.com/docs/install-drivers/ |
| 18:34 | danneu | speaking of db, fleetdb.org expired 10/31/2013 |
| 18:35 | Morgawr | `cbp: I see... I guess I can put it up there and if there are problems I can take it down |
| 18:35 | srruby | Is rethinkdb well regarded? I know couchdb. |
| 18:35 | egosum | joegallo: hah, sorry about leaving; library shut off the wifi |
| 18:36 | bitemyapp | Morgawr: they were on there, but the icon is broken, hold on. |
| 18:38 | technomancy | Glenjamin: yeah that's the premise of metaverse |
| 18:38 | Glenjamin | there's some dark magic going on here, but the surface area is smaller than i'd have expected |
| 18:39 | devinus | where's my (def newsletter) ? |
| 18:39 | technomancy | Glenjamin: part of that was because I was too busy cackling with glee at the fact that it actually sorta worked to clean it up |
| 18:39 | technomancy | also it was a seajure hack-night project |
| 18:39 | Glenjamin | yeah, i can pretty much see how it fits together |
| 18:40 | dsrx | bitemyapp: rethinkdb isn't powered by clojure... |
| 18:40 | bitemyapp | I didn't say it was. |
| 18:40 | bitemyapp | I said they had no problem using the logo. |
| 18:41 | bitemyapp | I think as long as you're using the logo to refer to something actually to do with Clojure itself, there's no problem. |
| 18:41 | bitemyapp | If you try to appropriate it for something that isn't Clojure, there's a problem. |
| 18:41 | bitemyapp | basic trademark, AFAIK |
| 18:41 | Glenjamin | it's a shame you have to duplicate the file-parsing and line numbering bit |
| 18:41 | Glenjamin | but again, there's no much to it |
| 18:41 | Morgawr | yeah I read Rich saying that the logo should only be used to refer to Clojure as the language |
| 18:42 | Morgawr | I'll just say "powered by Clojure" and it will link to the clojure website so I guess it's not a problem, if it is then I'll remove it |
| 18:42 | technomancy | I believe most objectionable uses are around derivatives of the logo |
| 18:43 | technomancy | but if you include the logo in your codebase it won't be DFSG-compliant |
| 18:43 | Glenjamin | i was thinking potentially allowing something like (ns my-app (:require [stuff :as usual]) (:versioned [lib :as other])) might be interesting |
| 18:43 | technomancy | which I know everyone would regard as the greatest of tragedies |
| 18:44 | technomancy | Glenjamin: ns is fairly resistant to hacking |
| 18:44 | seangrove | technomancy: diamond state financial group? |
| 18:44 | bitemyapp | Glenjamin: added docstring to groupings->tempids per your recommendation. Thanks. |
| 18:44 | Glenjamin | hrm, with a different macro then - but opting in to versioned/sandboxed instead of chomping all the requires might actually get some traction |
| 18:45 | technomancy | seangrove: debian free software guidelines, the only rule of righteousness for the pure in heart |
| 18:45 | Glenjamin | PHP had to remove doug crockford's JSON parser - JSON says "do no evil", PHP says "do what you want" => licence incompatibility |
| 18:45 | technomancy | it really is a shame ns doesn't allow fully-qualified clauses |
| 18:46 | technomancy | Glenjamin: short jump from that to "php is evil" |
| 18:46 | Glenjamin | heh, sadly true |
| 18:46 | technomancy | I'm sure it could be proven with core.logic |
| 18:46 | Glenjamin | i think for a certain class of libs, it'd be easy to convince people to sandbox - utility-belts spring to mind |
| 18:46 | bitemyapp | Glenjamin: what? |
| 18:46 | technomancy | Glenjamin: please read up on http://nixos.org before continuing =) |
| 18:47 | bitemyapp | Glenjamin: sandbox? |
| 18:47 | Glenjamin | technomancy: this sounds interesting |
| 18:47 | technomancy | it's beautiful |
| 18:48 | bitemyapp | Glenjamin: I've seen people use nixos with docker. |
| 18:48 | bitemyapp | pretty cute. |
| 18:48 | technomancy | anyway, it can be done without convinging authors to opt in |
| 18:48 | gfredericks | technomancy: have you used nixos yet? |
| 18:48 | Glenjamin | bitemyapp: my cannonical example is B depends on utilA-1.0, C depends on utilA-2.0, now D can't use B and C |
| 18:48 | Glenjamin | this problem is solvable with software |
| 18:48 | bitemyapp | Glenjamin: well yeah, ideally each library operates in its own little universe. |
| 18:48 | technomancy | gfredericks: no, I've only used nix from debian |
| 18:48 | Glenjamin | but requires stepping away from java classloader land |
| 18:49 | nDuff | hrm. |
| 18:49 | Glenjamin | as much as people love to hate on nodejs, this works amazingly surprisingly well: http://nodejs.org/api/modules.html#modules_all_together |
| 18:50 | technomancy | (ns my.lib (:require [clojure.set :as set]) (:my.tool/versioned-require [conflicting.lib1] [conflicting.lib2])) ; <- I would love if ns supported this |
| 18:51 | technomancy | right now clauses are hard-coded to clojure.core |
| 18:51 | gtrak | this is like multiple-inheritance, why not look to C++ for advice? /ducks |
| 18:51 | seangrove | I'm not particularly excited by much the node.js world does. It seems to work more or less though, so that's good for them. |
| 18:51 | technomancy | seangrove: modules as first-class maps is absolutely the right choice though |
| 18:51 | technomancy | namespaces are weird bash-in-place things |
| 18:51 | nDuff | hugod: I see you've done some related work with clasm; could I ask your advice re: tooling on the inverse (decompilation) side of the spectrum? |
| 18:52 | Glenjamin | seangrove: i have no itention of trying to sell any other aspects here, but sandboxed versioned module loading is truly awesome |
| 18:52 | hiredman | technomancy: there is nothing stopping you from using your own module system instead of clojure's namespaces |
| 18:53 | technomancy | hiredman: sorta. the ns macro is hard-coded in a bunch of places and it's difficult to replace. |
| 18:53 | Glenjamin | technomancy: how would multiverse get loaded? don't you need to start with a (ns) before you can (ns-) ? |
| 18:53 | hiredman | technomancy: then don't use it? |
| 18:54 | technomancy | Glenjamin: that's basically what I'm complaining about =) |
| 18:54 | technomancy | hiredman: it's very difficult to bootstrap an alternative sanely |
| 18:54 | Glenjamin | i suppose in theory all it does is set *ns* and call out to require, import etc? |
| 18:55 | hiredman | technomancy: metaverse is cute, but not very useful as is, so lamenting the inabaility to extend ns to use it is kind of silly |
| 18:55 | technomancy | hiredman: sure, but ns+ has :like, which is way useful |
| 18:55 | lemonodor | Glenjamin: i am totally with you on the node approach to dependencies. it's wonderful when you can do it. |
| 18:56 | dsrx | i'm really impressed btw that everyone in clojure seems to have rallied around something like leiningen from the get-go :) |
| 18:56 | technomancy | http://p.hagelb.org/qualified-ns-clauses.html <- yes please |
| 18:56 | dsrx | or well, at least relatively early on in the language |
| 18:56 | hiredman | technomancy: *shrug* |
| 18:56 | dsrx | it's nice that the tooling is more or less consistent across every clojure project |
| 18:56 | technomancy | hiredman: are you guys still using :like? |
| 18:56 | hiredman | technomancy: we never did really |
| 18:56 | technomancy | I totally did |
| 18:57 | hiredman | technomancy: we had a hack in user.clj to enable it, and we had 1-2 example ns's to target with :like, but it never was used, so I think it is gone now |
| 18:58 | technomancy | sadface |
| 18:58 | technomancy | I wonder how loudly core would object if I submitted that ~25-byte change |
| 18:58 | hiredman | *shrug* |
| 18:58 | technomancy | power to the people! |
| 18:58 | gfredericks | technomancy: I can't figure out what it does |
| 18:58 | Glenjamin | it doesn't seem like it particularly has any/many downsides |
| 18:58 | technomancy | the ns macro is not very egalitarian |
| 18:58 | Glenjamin | it allows user-space extensions to ns |
| 18:59 | technomancy | gfredericks: (ns my.lib (:println [hello.world])) is a thing that works |
| 18:59 | gfredericks | riiight |
| 18:59 | gfredericks | got it |
| 18:59 | technomancy | gfredericks: but it's hard-coded to only resolve from clojure.core |
| 18:59 | hiredman | technomancy: if you do that, then you introduce load order problems |
| 18:59 | gfredericks | count me in |
| 18:59 | technomancy | which is a form of oppression |
| 18:59 | gfredericks | oh coutn me out |
| 18:59 | danneu | what's the max yall are willing to wait for your autotest feedback loop every time you file-save? 1 sec? 3 sec? 15 min? |
| 18:59 | technomancy | hiredman: no more than regular require |
| 18:59 | gfredericks | oh count me in |
| 18:59 | hiredman | technomancy: given the ns form as is now, everything it needs is loaded by clojure.core, so any other clojure namespace that uses ns can be loaded, because it knows how to load everything |
| 19:00 | danneu | because i'm about to perf optimize my tests |
| 19:00 | technomancy | hiredman: right; the patch needs to do a *bit* more to require the clause-containing ns |
| 19:00 | Glenjamin | danneu: <1 sec is proper autotest |
| 19:00 | hiredman | technomancy: with that change if a namespace uses it's own require, you cannot load it unless the definition of that require has been loaded |
| 19:00 | hiredman | feh |
| 19:01 | technomancy | hiredman: of course |
| 19:01 | technomancy | you can't have circular dependencies |
| 19:01 | hiredman | technomancy: I didn't say anything about circular dependencies |
| 19:02 | Glenjamin | you require the defining namespace be loaded before any utilising namespaces |
| 19:02 | Glenjamin | but anyone opting into using this functionality could handle that? |
| 19:02 | hiredman | technomancy: use/import/require lived a life before ns, and proved their utility to be added in to ns, what else do you have that has done that? |
| 19:02 | technomancy | http://p.hagelb.org/egalitarian-ns.html |
| 19:03 | hiredman | technomancy: are you using a custom require all over the place that you want to move in to ns? |
| 19:03 | technomancy | hiredman: I'm not using :like solely because I *can't* use it sanely |
| 19:03 | technomancy | I would use the heck out of it if it weren't for the wacky bootstrapping issues |
| 19:03 | hiredman | technomancy: there is nothing stopping you from having like outside of ns |
| 19:03 | Glenjamin | what's the cost of this extension point? |
| 19:04 | hiredman | (like 'some.ns) |
| 19:04 | technomancy | Glenjamin: 10-20 hours of arguing on the internet |
| 19:04 | Glenjamin | heh |
| 19:04 | technomancy | hiredman: this offends my aesthetic sensibilities |
| 19:04 | hiredman | technomancy: *shrug* |
| 19:05 | hiredman | technomancy: if custom forms like that proliferate, then I think you could make a case for making ns extendable |
| 19:05 | hiredman | but they haven't and they don't |
| 19:05 | bitemyapp | technomancy for Dictator! |
| 19:05 | hiredman | why make a change that only exists for aesthetics? what is this, scheme? |
| 19:06 | technomancy | they don't because they're hideous |
| 19:06 | bitemyapp | down with the obstructionists! |
| 19:06 | technomancy | haha |
| 19:06 | hiredman | no more hideous than (ns ...) |
| 19:06 | devn | ns is beautiful in its hideous-ness |
| 19:06 | Glenjamin | hrm, there's no reason the sandboxed version loading thingy has to take over :require in the ns block... |
| 19:06 | bitemyapp | (ns ...) Brown Shirts |
| 19:06 | devn | it's like a really beautiful wig |
| 19:06 | bitemyapp | NS. get it? NS. lol. |
| 19:06 | technomancy | well the main reason I'd foresee getting pushback is that ns is infamous for being overly-permissive |
| 19:07 | bitemyapp | devn: wigs creep me out. made riding the subway in brooklyn difficult. |
| 19:07 | hiredman | in order for this to be engineering, we need at least the veneer of evidence based decision making |
| 19:07 | technomancy | hiredman: this is art! |
| 19:07 | hiredman | technomancy: take your harmonikit and run |
| 19:07 | Glenjamin | wait hang on, (ns) technically lets you call any clojure.core form? |
| 19:07 | hyPiRion | yes |
| 19:07 | technomancy | Glenjamin: glorious, innit |
| 19:08 | bitemyapp | Glenjamin: da. |
| 19:08 | bitemyapp | "innit" (inc technomancy) |
| 19:08 | Glenjamin | would a 6-keyword guard really be that expensive? |
| 19:08 | bitemyapp | (inc technomancy) |
| 19:08 | lazybot | ⇒ 85 |
| 19:08 | Bronsa | I enjoy doing (ns .. (:alias c.c clojure.core)). |
| 19:08 | blr | wat |
| 19:09 | technomancy | I'm not sure whether you can call ns from ns though |
| 19:09 | Glenjamin | this nix scheme is genius |
| 19:09 | Glenjamin | encoding the dep tree into the directory name |
| 19:09 | bitemyapp | oh god making this lazy is going to require refactoring half the code |
| 19:10 | bitemyapp | I have to translate the carried mapping into a progressive reduction |
| 19:10 | technomancy | Glenjamin: http://p.hagelb.org/power.gif |
| 19:10 | bitemyapp | ffffffuuu |
| 19:10 | hiredman | (ns … (:refer-clojure :rename {+ - - +}]) |
| 19:10 | bitemyapp | hiredman: that's a plus, not a minus. |
| 19:10 | bitemyapp | you can do the same thing in Haskell fyi. |
| 19:10 | technomancy | that's no moon |
| 19:10 | bitemyapp | nobody got my pun :( |
| 19:12 | bitemyapp | I wonder if I could dynamically prune the...no lets not go there. |
| 19:12 | bitemyapp | that way lies MADNESS |
| 19:12 | hyPiRion | technomancy: hmm yeah, (:ns bar) expands to (ns 'bar). Tricky |
| 19:13 | technomancy | hyPiRion: if anyone can do it, you or TimMc can |
| 19:14 | Glenjamin | bah, trying to shoehorn a defmulti into (ns) but can't seem to get the destructuring right |
| 19:15 | seangrove | HTML5 ui controls... I wish we had better primitives. |
| 19:15 | hyPiRion | technomancy: Well, you could do (:eval (ns bar)), that should work |
| 19:15 | technomancy | aha |
| 19:16 | bitemyapp | seangrove: that was the intent behind GWT, escaping reimplementation of widgets/functionality. |
| 19:16 | blr | oh god, don't mention GWT |
| 19:16 | Glenjamin | aha, (ns (:eval ...)) |
| 19:17 | bitemyapp | blr: I didn't say it worked out well in that case :) |
| 19:17 | bitemyapp | Java isn't known for doing a good job with reusable code or DSLs. |
| 19:17 | seangrove | bitemyapp: Also the idea behind cappuccino. |
| 19:17 | blr | JSNI gave me PTSD |
| 19:17 | bitemyapp | seangrove: that was particularly egregious. |
| 19:17 | Glenjamin | dont worry, the W3C is going to get it right this time |
| 19:17 | Glenjamin | http://www.w3.org/TR/components-intro/ |
| 19:18 | seangrove | bitemyapp: I thought it was lovely as an idea. Wish they had made it further, and lookin forward to a cljs company recreating and surpassing what they did. |
| 19:18 | bitemyapp | Glenjamin: trying to give me nightmares eh? |
| 19:18 | bitemyapp | seangrove: it was way too fat. |
| 19:18 | bitemyapp | seangrove: I'd like something like that, but way more lightweight and componentized. |
| 19:18 | seangrove | bitemyapp: Only for the time. |
| 19:18 | Glenjamin | in theory we have better primitives now |
| 19:18 | bitemyapp | no it's still really bad by today's standards. |
| 19:18 | Glenjamin | so it wouldn't be as fat today |
| 19:18 | seangrove | bitemyapp: What Glenjamin said. |
| 19:18 | bitemyapp | seangrove: I've used cappuccino and sproutcore based applications recently, they make my retina macbook pro overheat. |
| 19:18 | bitemyapp | Glenjamin: oh possibly. |
| 19:18 | Glenjamin | the shadow dom stuff is actually really interesting |
| 19:19 | bitemyapp | I still think the design is unsound. |
| 19:19 | hyPiRion | hey, hm |
| 19:19 | bitemyapp | I just want singular, reusable widgets. |
| 19:19 | bitemyapp | not an all-consuming desktop toolkit |
| 19:19 | hyPiRion | ,(ns foo (:eval (println 10))) |
| 19:19 | clojurebot | 10\n |
| 19:19 | bitemyapp | aka, I don't want to emulate an OS graphical toolkit in JS. |
| 19:19 | Glenjamin | the web was build for documents, and we're now stuck with some constraints from that |
| 19:19 | hyPiRion | why am I not surprised |
| 19:19 | technomancy | hyPiRion: sandbox escape route? |
| 19:19 | dsrx | web components? |
| 19:19 | Glenjamin | s/build/built/ |
| 19:19 | bitemyapp | technomancy: WHOA, good call. |
| 19:19 | mtp | the web was rebuilt for advertisements about 10 years ago |
| 19:20 | technomancy | $eval (ns foo (:eval (println 10))) |
| 19:20 | mtp | everyone took this long to notice |
| 19:20 | Glenjamin | ,(println 10) |
| 19:20 | clojurebot | 10\n |
| 19:20 | technomancy | mtp: that's why I only communicate over email and IRC! |
| 19:20 | mtp | technomancy, :) |
| 19:20 | AimHere | Contrariwise, what was about the time that browsers helped users shut ads out |
| 19:20 | AimHere | *that was |
| 19:20 | seangrove | haha, suddenly everyone goes crazy with eval |
| 19:20 | Glenjamin | what can't you normally do in a sandbox? |
| 19:20 | mtp | when was that ever a time? |
| 19:20 | bitemyapp | Glenjamin: networking |
| 19:20 | hyPiRion | technomancy: apparently, although there probably are other ways to bypass it |
| 19:20 | seangrove | ,(def x 10) |
| 19:20 | clojurebot | #<Exception java.lang.Exception: SANBOX DENIED> |
| 19:21 | AimHere | SANBOX? |
| 19:21 | technomancy | hyPiRion: on clojurebot, sure. how about lazybot? |
| 19:21 | seangrove | ,(ns foo (:eval (def x 10))) x |
| 19:21 | clojurebot | #<Exception java.lang.Exception: SANBOX DENIED> |
| 19:21 | bitemyapp | ,(ns foo (:eval (def x 10))) |
| 19:21 | clojurebot | #<Exception java.lang.Exception: SANBOX DENIED> |
| 19:21 | Glenjamin | ,(ns foo (:eval (def x 10))) |
| 19:21 | clojurebot | #<Exception java.lang.Exception: SANBOX DENIED> |
| 19:21 | bitemyapp | ,x |
| 19:21 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: x in this context, compiling:(NO_SOURCE_PATH:0:0)> |
| 19:21 | hyPiRion | technomancy: is ns allowed there? |
| 19:21 | technomancy | no idea |
| 19:21 | Glenjamin | seems to be save |
| 19:21 | bitemyapp | nuts. |
| 19:21 | Glenjamin | safe even |
| 19:21 | hyPiRion | &(ns foo (:eval (println 'hello))) |
| 19:21 | lazybot | java.lang.SecurityException: You tripped the alarm! class clojure.lang.Var is bad! |
| 19:21 | seangrove | ,(ns foo (:eval '(def x 10))) x |
| 19:21 | clojurebot | #<Exception java.lang.Exception: SANBOX DENIED> |
| 19:22 | bitemyapp | "sanbox" |
| 19:22 | seangrove | Well, glad to see sanbox survives to see another day |
| 19:22 | hyPiRion | technomancy: oh right, I think clojail is doing post-macroexpand checks |
| 19:22 | technomancy | of course |
| 19:23 | blr | just imagine clojurebot has a southern accent, then it makes sense. |
| 19:24 | technomancy | Raynes is laughing; "Those fools thought they could defeat me" |
| 19:25 | blr | anyone live, or have lived in north carolina? is it a nice state? |
| 19:26 | lgs32a | evening everyone |
| 19:26 | lgs32a | i have a question that i have often asked myself |
| 19:26 | seangrove | blr: Flew through the airport recently. Nothing particularly notable about it. |
| 19:26 | ibdknox | blr: depends very much on where you are |
| 19:26 | bitemyapp | blr: depends on what you're into. You're not going to get a deeply urban experience out of it. |
| 19:26 | technomancy | the first three conjes were in north carolina |
| 19:26 | lgs32a | when is it more idiomatic to use when vs if |
| 19:26 | bitemyapp | blr: if you like low cost of living, access to the outdoors, home ownership, etc it's a great place to live. |
| 19:26 | technomancy | lgs32a: I'm glad you asked! |
| 19:26 | bitemyapp | if you like super-dense cities, not so much. |
| 19:26 | blr | well, currently I'm in New Zealand, but the family is thinking about moving to the states |
| 19:27 | bitemyapp | ~when |
| 19:27 | clojurebot | Cool story bro. |
| 19:27 | technomancy | lgs32a: when has an implicit do, so it signals to the reader that side effects are involved. |
| 19:27 | bitemyapp | ~whentousewhen |
| 19:27 | clojurebot | excusez-moi |
| 19:27 | lgs32a | because, in traditional lisp, you use when for side-effects |
| 19:27 | lgs32a | yes exactly |
| 19:27 | hyPiRion | how was the venue compared to the one in North Carolina? |
| 19:27 | technomancy | lgs32a: exactly! but many clojure people do not know this, sadly. |
| 19:27 | ibdknox | blr: it's not a progressive place at all, it's pretty conservative |
| 19:27 | seangrove | lgs32a: Don't listen to technomancy, he blasphemes. |
| 19:27 | technomancy | it is our job to educate them |
| 19:27 | lgs32a | so because i often see this attitude in clojure: there is no else-clause, so lets use when |
| 19:27 | bitemyapp | wat. |
| 19:27 | hiredman | the n. carolina venue tended to feel like a ghost town, so it was like the whole place was dedicated to the conj |
| 19:28 | blr | ibdknox: yeah, I'm kind of prepared for that... NZ is pretty liberal |
| 19:28 | technomancy | protip: if you're less concerned about side-effects than CLers, you should reconsider your opinions |
| 19:28 | bitemyapp | I personally wouldn't mind living in NC, but I hate cities. |
| 19:28 | Glenjamin | ,(doc when) |
| 19:28 | clojurebot | "([test & body]); Evaluates test. If logical true, evaluates body in an implicit do." |
| 19:28 | hiredman | "how do these resturants stay open? no one is here but people from the conj?" |
| 19:28 | lgs32a | and then i just read this article: https://metaphysicaldeveloper.wordpress.com/2013/11/18/idiomatic-clojure-with-lighttable/ |
| 19:28 | Glenjamin | the docs could be more obvious |
| 19:28 | bitemyapp | hiredman: low cost of living and doing business :P |
| 19:28 | Glenjamin | "use to trigger side effects" |
| 19:28 | technomancy | lgs32a: kibit is wrong =( |
| 19:29 | lgs32a | and i wondered - wow so it must be different in clj |
| 19:29 | lgs32a | yea |
| 19:29 | Glenjamin | i admit i did pick it for the no-else-clause once, but weave jester reviewed and told me why |
| 19:29 | hyPiRion | lgs32a: yeah, that's not idiomatic use of `when`from my perspective |
| 19:29 | lgs32a | thanks for clearing that up |
| 19:29 | Glenjamin | so i'm now enlightened on the subject |
| 19:29 | technomancy | lgs32a: https://github.com/jonase/kibit/issues/2 <- basically wontfix'd =( |
| 19:29 | Glenjamin | in that example kibit is collapsing the do() |
| 19:30 | ibdknox | blr: having lived there most of my life: it's very humid, with mild winters, not a big tech hub by any means, but strong hard science in the triangle area, it's cheap to live there, but southern culture is likely going to be a bit of a shock if you're used to a liberal lifestyle |
| 19:30 | blr | ibdknox: I play banjo, so I'm hoping that will ingratiate me with the natives |
| 19:30 | lgs32a | technomance: interesting |
| 19:30 | lgs32a | technomancy: interesting |
| 19:31 | bitemyapp | blr: southern people are friendly in my experience |
| 19:31 | technomancy | lgs32a: it is a controversial topic and I'm doing my best to cover it quickly before I get yelled at by one of those when-for-return-values heretics |
| 19:31 | swarthy | blr: I live in N. Carolina. I currently live in Raleigh, but have lived briefly in Wilmington and visited several other cities in the area. |
| 19:31 | bitemyapp | it's only liberals from the city intentionally looking to pick a an ideological fight that seems to get anybody's hackles raised. |
| 19:31 | bitemyapp | but OTOH, most southerners I've interacted with were in the larger cities. |
| 19:31 | bitemyapp | I haven't been in the boonies much. |
| 19:31 | bitemyapp | except for in Ohio. |
| 19:32 | bitemyapp | blr: the humidity is pretty killer in the summer if you don't like heat. |
| 19:32 | blr | thanks for the comments, glad to hear they are mostly positive |
| 19:32 | bitemyapp | blr: I'm a relatively liberal person and would pick NC as a possible place to live once I can escape the bay area. |
| 19:32 | seangrove | technomancy: Heretics and blasphemers, I like the cool-headed framing of the issue :) |
| 19:32 | blr | yeah I think I would go spare living in SF |
| 19:32 | blr | or anywhere in the valley |
| 19:33 | bitemyapp | blr: I can't wait to leave and buy a house. |
| 19:33 | lgs32a | Does anybody know when the conj talks will be on YT? |
| 19:33 | technomancy | seangrove: speaking of getting hackles raised |
| 19:33 | bitemyapp | blr: I'm thinking mostly of moving to Austin, Seattle, or Portland at present. |
| 19:34 | blr | portland seems a lot like NZ, I could probably live there quite happily |
| 19:34 | bitemyapp | blr: so probably not NC, but NC I would be willing to consider if the aforementioned weren't so awesome :) |
| 19:34 | bitemyapp | blr: Probably so. |
| 19:34 | technomancy | portland is great |
| 19:34 | blr | there don't seem to be many software jobs though |
| 19:34 | technomancy | very sad that clojure/west won't be there for 2014 |
| 19:34 | nDuff | Low cost of living, no shortage of work. |
| 19:34 | seangrove | technomancy: I was hoping it would be. Do you know where it'll be instead? |
| 19:35 | bitemyapp | nDuff: thanks, I'm trying to collect data. |
| 19:35 | technomancy | blr: per capita there are a lot I think |
| 19:35 | ibdknox | Seattle is by far my favorite place to live |
| 19:35 | bitemyapp | nDuff: why are you leaving Austin and where are you headed? |
| 19:35 | seangrove | Even Seattle would be acceptable. |
| 19:35 | bitemyapp | ibdknox: what'd you like about it? |
| 19:35 | blr | technomancy: in portland? interesting |
| 19:35 | technomancy | seangrove: they said at the conj it was going to be SF. not sure if that means in the city or in the area. |
| 19:35 | bitemyapp | well I have no excuse not to go now. |
| 19:35 | hiredman | ibdknox: the smallest big city |
| 19:35 | technomancy | blr: intel is headquartered outside portland |
| 19:35 | bitemyapp | too bad it'll be in SF though. |
| 19:35 | nDuff | bitemyapp: headed to Chicago. Austin doesn't work for my wife for medical reasons. |
| 19:36 | seangrove | technomancy: Ah, well, that's ok too then. Was hoping to have a chance to get back up to Portland, but I don't mind a good conf in this city, of course. |
| 19:36 | ibdknox | bitemyapp: very smart people, sane management, the greenest place I've ever been, amazing outdoor activities, it is incredibly beautiful, *great* food |
| 19:36 | bitemyapp | nDuff: good luck in Chicago, sadly there are some particulars to CHI that make it an absolute no-go. |
| 19:36 | technomancy | SF means a better water supply than san jose, which is relevant to my interests |
| 19:36 | nDuff | bitemyapp: (both weather, and lack of good transit services; to live without a car here, one needs to (1) be downtown, and (2) be able to bicycle) |
| 19:36 | Apage43 | where does SF water come from? |
| 19:36 | bitemyapp | ibdknox: I'm rather fond of forests and trees, that's the main thing counting against Austin at present. |
| 19:36 | technomancy | (my interests being brewing coffee) |
| 19:36 | bitemyapp | but Seattle is already getting VERY expensive. |
| 19:37 | bitemyapp | house prices are headed north of $500k |
| 19:37 | ibdknox | bitemyapp: don't live directly in the city |
| 19:37 | Apage43 | man I would like to see a tree |
| 19:37 | nDuff | bitemyapp: ...may I ask? |
| 19:37 | ibdknox | bitemyapp: from my apartment in redmond I was 1.5 hours from over 1500 different hikes |
| 19:37 | hyPiRion | technomancy: man, you and your coffee |
| 19:37 | bitemyapp | nDuff: I'm a fairly liberal, but that's really a euphemism for eclectic left-libertarian, I happen to be a fan of the 2nd amendment. |
| 19:37 | bitemyapp | nDuff: Chicago is absolute-no on that front. |
| 19:37 | technomancy | bitemyapp: in another, um, 10 years we'll have light rail to the north of the city |
| 19:37 | nDuff | bitemyapp: Ahh. Gotcha. |
| 19:38 | nDuff | bitemyapp: You'll find no shortage of politically like-minded folks in Austin. |
| 19:38 | hiredman | seattle has views everywhere since it is so hilly, ever time you crest a hill you are looking down at trees and water with mountains behind them |
| 19:38 | bitemyapp | nDuff: part of the reason I want to leave the bay area is so that I can own more than just my beretta and mosin. |
| 19:38 | bitemyapp | nDuff: uhm, not quite. Texas is conservative, not left-libertarian. We'll only agree on guns. |
| 19:38 | hiredman | technomancy is always an optimist |
| 19:38 | nDuff | bitemyapp: Austin isn't Texas. |
| 19:38 | blr | from what I've heard Austin is a bit different though |
| 19:38 | bitemyapp | I'd emphasize the *LEFT* part. It's not the same as the typical anarcho-capitalist libertarians you run into. |
| 19:38 | Apage43 | bitemyapp: I thought I was more left than I was, then I moved to the bay area |
| 19:39 | technomancy | hiredman: heh yeah.. theoretically |
| 19:39 | bitemyapp | nDuff: oh I suppose so. |
| 19:39 | bitemyapp | Apage43: yeah I feel pretty conservative here. |
| 19:39 | bitemyapp | weird feeling. |
| 19:39 | bitemyapp | Apage43: I believe in property rights, the bill of rights, sane budgets, and the rule of law. I'm crazy like that. |
| 19:39 | Glenjamin | pfft, isn't all american politics basically right anyway? </troll> |
| 19:40 | nDuff | bitemyapp: ...see the notation in http://dieselsweeties.com/archive.php?s=1436 |
| 19:40 | Apage43 | I just want some GMO food to eat ;) |
| 19:40 | nDuff | bitemyapp: ...in general, Austin is liberal (far, *far* more so than the rest of the state), but still Texan enough that we like our guns. |
| 19:40 | bitemyapp | nDuff: sounds amenable to me then. |
| 19:41 | bitemyapp | I don't necessarily need to be surrounded by like minded people though, I just need my property and rights left alone. |
| 19:41 | nDuff | bitemyapp: *shrug*. You might disagree with the city council from time to time, then, but... *shrug*. |
| 19:42 | bitemyapp | nDuff: it's rather serious in SF. The confiscatory ordinance SF passed lets them slap you with a misdemeanor for having property that the State grandfathered. |
| 19:42 | blr | show me a town where people speak favourably of their city council ... :P |
| 19:42 | bitemyapp | nDuff: which is to say, they're ignoring state preemption. |
| 19:42 | bitemyapp | and they're getting away with it because picking on gun owners is free points in SF. |
| 19:42 | Glenjamin | anyway, i'm calling it a night |
| 19:42 | Glenjamin | thanks all for indulging my versioned-modules fantasy |
| 19:43 | bitemyapp | nDuff: are you headed to a Clojure gig in Chicago? |
| 19:43 | bitemyapp | `cbp`: w/b |
| 19:43 | bitemyapp | Glenjamin: cheers |
| 19:43 | Glenjamin | technomancy: am i right in thinking using (metaverse/require) outside of (ns) should "just work" ? |
| 19:43 | `cbp | bitemyapp: whoops that's just my other computer waking up :S |
| 19:43 | nDuff | bitemyapp: going to start looking actively for interesting ones starting at the beginning of December. |
| 19:44 | technomancy | Glenjamin: I think so |
| 19:44 | bitemyapp | nDuff: I think Groupon is the more well known employer of Clojure users? |
| 19:44 | technomancy | it's been ... two years? |
| 19:44 | nDuff | bitemyapp: Not happening. |
| 19:44 | bitemyapp | haha, okay. :) |
| 19:44 | nDuff | bitemyapp: I was early staff at one of their competitors. One of my very good friends, founder of same, would disown me if I even considered working there. |
| 19:45 | bitemyapp | nDuff: understood. |
| 19:45 | blr | think I'd rather contract hemorrhagic fever than work for an SV startup again. |
| 19:45 | nDuff | (also, said competitor was started to have a more sane variant of Groupon's business model; suffice to say that the version they're running is... not as solid as one would like; the ratio of customer acquisition costs to purchases made over customer life time is not what you'd like it to be). |
| 19:46 | Glenjamin | i'm not sure if i'm missing something - but it doesn't look like the version number is used in the part which finds the resource |
| 19:48 | bitemyapp | oh yes, my old nemesis, "is older than database basis" how nice to see you. |
| 19:48 | coventry | nDuff: What are you working on? Sounds interesting. |
| 19:48 | bitemyapp | nDuff: what's the data model like? |
| 19:50 | nDuff | coventry: pondering something similar to ekeko (a core.logic-based query interface to the bytecode generated by a project's compilation), but w/o the Eclipse dependency and capable of working on bigger datasets. |
| 19:50 | nDuff | coventry: just exploratory at this point. |
| 19:52 | nDuff | bitemyapp: jimple is a representation of Java bytecode as typed 3-tuples. |
| 19:55 | benedikt | anybody here have experience in writing android applications with lein-droid, neko and clojure? |
| 19:55 | seangrove | Hrm, doing quite a bit of filtering on data client side, basically recreating a relational interface... wonder if I should bring in core.logic in cljs here... |
| 19:56 | bitemyapp | seangrove: use datalog! |
| 19:56 | coventry | nDuff: Huh, what do you use something like that for? |
| 19:56 | bitemyapp | coventry: nicer processing of JVM bytecode from Clojure. |
| 19:56 | seangrove | bitemyapp: Client-side? I'd like to for its composability though. Might be a good idea |
| 19:58 | seangrove | Someone, please, please, create a nice core.async html widget library. Please. |
| 19:58 | seangrove | I really don't want to. |
| 19:58 | blr | seangrove: but you must. |
| 19:59 | bitemyapp | seangrove: you've clearly been nominated for the job of making an async widget toolkit. |
| 19:59 | bitemyapp | gg gl hf |
| 19:59 | bitemyapp | Can't Tom Sawyer me into this one, I don't enjoy working in the DOM that much. |
| 19:59 | seangrove | We need a indiegogo campaign. I'd donate. |
| 20:00 | bitemyapp | I'd donate and then cringe. |
| 20:00 | `cbp | i vote for seangrove |
| 20:01 | blr | seangrove? I heard he was working on a core.async widget library |
| 20:01 | arohner | bitemyapp: Austin has trees. Not like the redwoods, but it has a fair amount of green |
| 20:01 | seangrove | bitemyapp: You know how reliable arohner is, I'd take it with a grain of salt. |
| 20:01 | arohner | :-) |
| 20:01 | bitemyapp | seangrove: why are you trying to make everyone seem unreliable? :P |
| 20:01 | bitemyapp | first me, now arohner. |
| 20:02 | seangrove | I'd say that's a pretty select group. |
| 20:02 | bitemyapp | arohner: how does your "commute" to SF generally work? Do you visit a week at a time periodically or something? |
| 20:02 | bitemyapp | seangrove: I am large and contain multitudes. |
| 20:02 | arohner | 2.5 weeks or so, yeah |
| 20:02 | bitemyapp | arohner: how often? |
| 20:02 | bitemyapp | sorry for prying, was just wondering how you made it work. |
| 20:02 | arohner | it's generally 3weeks/2weeks. Hoping to get it to 2/2 next year |
| 20:02 | arohner | no worries |
| 20:02 | bitemyapp | Thanks |
| 20:03 | arohner | Our team is also > 1/3rd remote, so that makes it easier |
| 20:03 | arohner | actually, the devs are half remote |
| 20:04 | bitemyapp | arohner: planning for remoteness upfront helps a lot, yeah. |
| 20:05 | bitemyapp | my company is starting to accommodate remote workers but it's slow going and I'm trying to figure out how to work with it as I plan for escaping the Bay. |
| 20:05 | akurilin | bitemyapp, where are you going? |
| 20:07 | bitemyapp | akurilin: nowhere presently, which is part of the problem. |
| 20:07 | bitemyapp | akurilin: I'm considering Austin, Seattle, and Portland right now. |
| 20:07 | akurilin | I can vouch for Seattle. |
| 20:08 | bitemyapp | Save for the handful of people I really like in the programming community here, I really strongly dislike the bay area. |
| 20:08 | bitemyapp | akurilin: cool, what'd you like about it? |
| 20:08 | technomancy | bitemyapp: you've read gilesgoatboy's screed on it, right? |
| 20:09 | arohner | technomancy: link? this sounds relevant to my interests |
| 20:09 | technomancy | he's gone a bit off th deep end since, but this one was classic; lemme see |
| 20:09 | akurilin | bitemyapp, I lived on Capitol Hill for a year or two, it just had a very friendly, safe and still anti-establishment atmosphere. You can get anything from the best coffee to the heaviest metal bands in the range of a few blocks :) |
| 20:10 | bitemyapp | technomancy: link the post? |
| 20:10 | bitemyapp | technomancy: I might've, but I can't find the post to confirm whether or not I'd read it. |
| 20:10 | bitemyapp | akurilin: yeah I actually happen to be really into cascadian black metal. |
| 20:10 | bitemyapp | akurilin: which are based out of washington and oregon obviously. |
| 20:10 | technomancy | clojurebot: never hate only ever destroy is http://gilesbowkett.blogspot.com/2008/05/never-hate-only-ever-destroy.html |
| 20:10 | clojurebot | Ik begrijp |
| 20:10 | technomancy | bitemyapp, arohner ^ |
| 20:10 | akurilin | bitemyapp, Agalloch are our shining beacons in one those subgenres :) |
| 20:11 | akurilin | bitemyapp, they're Portland specifically. |
| 20:11 | technomancy | ^ or anyone else really; highly recommended =) |
| 20:12 | bitemyapp | akurilin: yeah Agalloch is one of my favorite all-time bands. |
| 20:12 | technomancy | it's long though. not yegge-long, but a bit long |
| 20:13 | technomancy | I think his point about whuffie is ill-founded though; part of the point of that novel seems to be how insane it is to narrow things down to a one-dimensional number. |
| 20:13 | technomancy | still a good read |
| 20:13 | blr | bitemyapp: wolves in the throne room are another good west coast band imo |
| 20:14 | bitemyapp | blr: another favorite of mine :) |
| 20:14 | akurilin | blr, bitemyapp rishloo are Tacoma-based, incredible art prog-rock if you're into that |
| 20:14 | blr | cool, don't know them, will check it out |
| 20:14 | akurilin | bitemyapp, I've also yet to have the bay area grow on me, I don't know why it's not clicking |
| 20:15 | blr | have been listening to Panopticon's Kentucky which is 'blue-grass black metal'. it makes no sense, but somehow works |
| 20:15 | akurilin | guess the $3500/1br really sours things for a normal person, in addition to how little you get from the city. |
| 20:15 | bitemyapp | akurilin: NYC was a better trade. $1500 for a 3 bedroom apartment in Astoria, Queens, 20 minute subway ride to Manhattan. |
| 20:15 | bitemyapp | akurilin: still don't want to live in NYC though. |
| 20:16 | akurilin | bitemyapp, sounds like a steal! |
| 20:16 | blr | well, NYC has rent controlled areas.. is that the case in SF? |
| 20:16 | bitemyapp | akurilin: it was great, split the rent three ways. Programmer salary + $550 a month in rent + living in NYC == PARTY ALL THE TIIIIIME |
| 20:16 | bitemyapp | blr: my apartment wasn't rent controlled. |
| 20:17 | bitemyapp | blr: and SF has rent control too. |
| 20:17 | bitemyapp | $1500 a month for a three bedroom was market rate, not rent controlled. |
| 20:17 | akurilin | bitemyapp, yeah I can't even imagine :) |
| 20:17 | bitemyapp | rent control is part of SF's problem. |
| 20:17 | blr | ah okay.. I lived in Park Slope for a while, it was a decent enough neighbourhood, but NYC isn't a great place to have family |
| 20:17 | akurilin | rent control really screws up the newcomers. |
| 20:18 | bitemyapp | blr: I definitely don't want to go back. |
| 20:18 | blr | miss the Hatian food though, dayam. |
| 20:18 | akurilin | bitemyapp, what was wrong with NYC? I always considered living there at some point, but I have 0 experience with the place outside of a touristy visit :| |
| 20:19 | blr | akurilin: it's a stressful environment generally, but if you're young and don't have any attachments it's fun. |
| 20:19 | blr | personally I found taking the train every day kind of draining |
| 20:20 | amacdougall | I'm typing this from 24th & 2nd in Manhattan, and I can confirm that it seems like a really tough place to raise kids. If you get lucky on rent, though, it's a great place to experience. |
| 20:20 | akurilin | amacdougall, so if you're not big on kids, pretty much everything else falls into place? |
| 20:21 | amacdougall | Since you're in #clojure, I'm sure you won't have a problem with the rent, so yeah. |
| 20:21 | blr | yeah, it's an amazing city... but you have to like city living. That being said, upstate new york is beautiful |
| 20:21 | amacdougall | It's worth trying. |
| 20:22 | technomancy | eh; just because you *can* afford something doesn't mean doing so fits into your values. |
| 20:26 | coventry | Yeah, upstate NY is beautiful. Not a hotbed of tech development, though. |
| 20:26 | dsrx | there are a few defense contractors around buffalo |
| 20:27 | dsrx | protecting us from the canadian menace across lake ontario, no doubt |
| 20:27 | blr | those shifty canadians... |
| 20:28 | coventry | There's a few startups and a bit of web development in Ithaca, too. |
| 20:32 | bbloom | people don't realize just how friggin big NY is |
| 20:34 | swarthy | bbloom: I just had a friend move to NYC. He said he doesn't think he can see everything there in his lifetime, that was his explanation when I asked him how big it 'felt'. |
| 20:35 | bbloom | swarthy: yeah, sooo manhattan is only 22ish square miles |
| 20:35 | amacdougall | I've been here six years, and I feel like I keep finding new things I like about it. And I take the high rent as a tradeoff for high availability of high-paying jobs. ...maybe with a slight tax. |
| 20:36 | bbloom | swarthy: it feels huge b/c it's so dense, but NY *state* is genuinely quite huge |
| 20:36 | bbloom | also people are like "why do they call it long island? how long is it" |
| 20:37 | mikerod | ,(apply merge-with concat (for [i (range 4000)] {:a [i]})) |
| 20:37 | clojurebot | #<StackOverflowError java.lang.StackOverflowError> |
| 20:37 | swarthy | bbloom: yeah that same friend is from Long Island, he complains about that same comment. |
| 20:37 | mikerod | :( |
| 20:37 | bbloom | it's like a 3 hour drive long :-P |
| 20:37 | mikerod | I just learned about the StackOverflowing potential for lazy seqs today |
| 20:38 | mikerod | merge-with concat is what got me |
| 20:38 | bbloom | swarthy: "If it were a U.S. state, Long Island would rank 13th in population (after Virginia) and first in population density." -- Wikipedia |
| 20:38 | swarthy | bbloom: and that is why he left lol. |
| 20:40 | amacdougall | So, non-NYC-related question -- I'm trying to set up some ClojureScript unit tests, and I understand that if my test code is going to have access to my webapp code, I need to specify :source ["src/cljs" "test/src/cljs"] in the cljsbuild setup. But of course the webapp has some namespaces that do a bunch of DOM stuff, and the node.js test runner fails on those before it gets a chance to detect my actual tests. Is there a way of compiling only certain |
| 20:41 | blr | amacdougall: cut off after "compiling only certain" |
| 20:41 | amacdougall | ...only certain namespaces into a file? Am I missing something fundamental? |
| 20:41 | amacdougall | (didn't realize the message limit was so short, but maybe it's my client) |
| 20:42 | amacdougall | Hm, maybe this will help: https://github.com/emezeske/lein-cljsbuild/wiki/Troubleshooting-build-issues |
| 20:42 | hiredman | amacdougall: so the way I generall structure cljs stuff is I have an exported main function, which I call from a <script></script> stub in an html template |
| 20:43 | hiredman | which, in this case, you would move all your side effecting dom stuff out of the top level and in to functions |
| 20:43 | amacdougall | hiredman: That's a good idea. I was thinking it might be smarter to have a single entry point function I call explicitly from "outside" of the webapp code. |
| 20:44 | amacdougall | hiredman: My stuff is already namespaced, but maybe not as strictly as necessary. |
| 20:45 | amacdougall | Thanks for the tip! |
| 20:48 | bitemyapp | what is good that has come from Long Island? |
| 20:48 | bitemyapp | serious question. |
| 20:48 | amacdougall | Oysters? |
| 20:48 | bitemyapp | not really specific to LI |
| 20:48 | arohner | bitemyapp: both of my parents :-p |
| 20:48 | amacdougall | Bluepoint Toasted Lager. Aesop Rock, if you're into him. |
| 20:49 | bitemyapp | arohner: they don't have that accent do they? |
| 20:49 | bbloom | me. |
| 20:49 | egosum | Gatsby |
| 20:49 | arohner | not anymore |
| 20:50 | bitemyapp | When I lived in NYC I used to get really annoyed when people assumed the LI accent was from NYC |
| 20:50 | bitemyapp | and would then perform the accent to my face when asking me (NYC resident) why I didn't have that accent. |
| 20:51 | arohner | I grew up in Texas. You'd be amazed the number of times I got the "but why don't you have an accent?" |
| 20:51 | bitemyapp | Glenjamin has inspired me to write the scariest reduces in Clojure-land/ |
| 20:51 | bbloom | arohner: where in texas? |
| 20:52 | bitemyapp | arohner: that's one nice thing about being from ohio, we're actually the standard for neutral newscaster American English. |
| 20:52 | arohner | bbloom: Dallas originally. now I'm in Austin (half the time) |
| 20:52 | bitemyapp | nobody expects anything of us, unless it's Southeastern Ohio. |
| 20:52 | bitemyapp | in which case, wash is "worsh" |
| 20:52 | bbloom | arohner: so that probably explains the lack of accent, right? i wonder if folks from Austin or whatever should just say "I'm from Blue Texas" |
| 20:52 | bbloom | :-P |
| 20:53 | bitemyapp | calling Austin blue does California a serious injustice |
| 20:53 | bitemyapp | SF Bay Area is bluer than a suffocating smurf. |
| 20:55 | arohner | bbloom: meh, there are all kinds. I used to work with a programmer who grew up in Austin. He had no accent, unless he used any of the words #{"mother", "gun", "truck"...} |
| 20:55 | arohner | he'd switch accents in the middle of a sentence |
| 20:55 | bbloom | heh |
| 20:56 | seangrove | bitemyapp: Just SF and some part of LA though, the rest is overwhelmingly red |
| 20:56 | seangrove | Typical civiliation vs rural divide. |
| 20:56 | bitemyapp | arohner: that's pretty funny |
| 20:57 | blr | seangrove: SD is fairly conservative eh? |
| 20:57 | bitemyapp | seangrove: except for all the LA suburbs, Marin County, Humboldt, Sacramento.... |
| 20:57 | arohner | seangrove: 'rest' by area, not by population |
| 20:57 | arohner | http://www.270towin.com/states/California |
| 20:57 | bitemyapp | seangrove: Santa Cruz... |
| 20:58 | bitemyapp | seangrove: http://www.politico.com/2012-election/results/president/california/ |
| 20:58 | seangrove | bitemyapp: Pockets of small areas and relatively large populations |
| 20:58 | bitemyapp | yeah but if one dude in a 1,000 sq mi area votes for Romney, does that really make the whole area meaningfully red? :P |
| 20:58 | seangrove | I just meant that 1-2 hours in any direction and you'll be in a red district |
| 20:59 | seangrove | bitemyapp: No, it just makes the socially pleasant areas very limited. |
| 20:59 | bitemyapp | how people vote doesn't make them socially pleasant or unpleasant, in my humble opinion. |
| 20:59 | bitemyapp | unless you really thrive on political conversation. Then yes, that would be problematic if you thrive on political conversation where nobody disagrees with you. |
| 21:00 | seangrove | bitemyapp: Yeah, not worried about voting behavior, though it's correlated. More generally speaking about social mores, shared ambitions and ideals, and topics of conversation. |
| 21:00 | bitemyapp | I don't really mind discussing politics with people who vote or think differently from me and this tendency to avoid people that think differently is bothersome. |
| 21:00 | bitemyapp | seangrove: I guess? I run into plenty of ho-hum folk in the bay area. |
| 21:00 | bitemyapp | They represent the majority of the population definitionally. They have to. We can't all be super-motivated hacker-preneurs. |
| 21:00 | seangrove | bitemyapp: Sure, and it's still beating the averages. |
| 21:01 | Bronsa | seangrove: out of curiosity, did you found out what caused that AOT crash involving tools.reader you were telling me ~1 month ago? |
| 21:01 | bitemyapp | Learning to enjoy the company of a variety of people, muggles included, is probably one of the best things that came out of being from ohio and growing up in a modest environment. |
| 21:01 | seangrove | Bronsa: Including austin in the profile did it |
| 21:01 | seangrove | Bronsa: https://github.com/cemerick/austin/issues/23 |
| 21:02 | seangrove | bitemyapp: I grew up in a small/rural town as well, didn't particularly enjoy it, and still don't care to go back. |
| 21:02 | bitemyapp | I don't either, but the problem for me wasn't the people that *were* there. |
| 21:02 | bitemyapp | It was the people that *weren't* |
| 21:03 | seangrove | Hrm, could be. |
| 21:03 | bitemyapp | I prefer not to gripe about the people that *do* exist in such places, I think it's unfairly negative to expect people to live up to your uncommon expectations. I'd rather think about how to seek out and meet people whose company I enjoy. |
| 21:03 | bitemyapp | so rather than "contrasting" normal people with the exceptional types I really like, I just focus on talking to as many hackers as I can. |
| 21:04 | arohner | bitemyapp: that might be the most positive thing I think I've ever heard you say :-) |
| 21:04 | bitemyapp | which I had to do, because I was out in the boonies and my only link to the outside world was IRC. |
| 21:04 | arohner | bitemyapp: yes, damning with faint praise :-) |
| 21:04 | bitemyapp | arohner: the happiest memories of my life had zero hackers in the room. |
| 21:04 | coventry | Hey, bitemyapp said nice things about troncle the other day. :-) |
| 21:04 | bitemyapp | arohner: the *Very* happiest memories were card games and dinner with friends and family. I was the only programmer present. |
| 21:05 | bitemyapp | I love my work, I love programming, and I love talking to hackers, but the deep and lasting memories of my life haven't come from that. |
| 21:05 | bitemyapp | I perfectly happy being around "normal" people. |
| 21:05 | bitemyapp | no intent to damn with faint praise. it's just differentiated needs. |
| 21:06 | bitemyapp | case in point, you wouldn't expect your spouse to satisfy all your needs WRT talking about programming, so why would you expect your immediate surroundings to always be able to do that at the drop of a hat? |
| 21:06 | bitemyapp | I want the people in my town/area to be nice. That's it. |
| 21:07 | Bronsa | seangrove: so it's not tools.reader's fault after all, I'm feeling better now :) |
| 21:07 | seangrove | Bronsa: Maybe, maybe ;) |
| 21:07 | lgs32a | i remember there was an excellent bitset / bitvector library on github but I can't find it anymore. Does anybody know which one it could have been? |
| 21:07 | bitemyapp | having to load Austin to prevent an exception in tools.reader is kinda strange. |
| 21:07 | bitemyapp | lgs32a: ztellman? |
| 21:07 | lgs32a | bitemyapp: i think that was it. let me see |
| 21:07 | bitemyapp | if it's unusual and a little performance oriented it's probably a ztellman library. |
| 21:08 | bitemyapp | if it's a bad idea it's definitely a ztellman library. |
| 21:08 | bitemyapp | lgs32a: https://github.com/ztellman/immutable-bitset |
| 21:09 | lgs32a | bitemyapp: awesome. truely awesome. thanks |
| 21:09 | bitemyapp | lgs32a: I'm serious though, anytime you want something questionable/weird/performance-oriented, check ztellman's github first. |
| 21:09 | Bronsa | bitemyapp: it's actually the other way around if I'm not reading it correctly. loading Austin causes an AOT exception loading c.t.r.reader_types.Reader |
| 21:10 | bitemyapp | Bronsa: egads. is he smashing the namespace? |
| 21:10 | amacdougall | Bah... it looks like the mere act of having a namespace which includes a library which uses Domina causes Domina to fire off all its feature detection functions, which all fail in a node.js test runner. |
| 21:11 | amacdougall | So I'm back to the original problem of compiling a test js file with only certain namespaces. I can do it, it will just be a much more verbose cljsbuild config. |
| 21:12 | amacdougall | I don't think it's really justified yet. My app is small enough that I can write black-box functional tests and call it good enough. |
| 21:12 | Bronsa | bitemyapp: I have absolutely no idea what Austin is doing, I'd guess it might have something to do with messing the classloader given the error |
| 21:12 | bitemyapp | amacdougall: write the black box functional tests and call it good enough. |
| 21:12 | amacdougall | Wise advice! :) |
| 21:13 | bitemyapp | java.util.concurrent.ExecutionException: java.lang.AssertionError: Assert failed: (zero? (.getE d)) ;; clearly a sign to just call it a night. |
| 21:13 | blr | amacdougall: I've enjoyed using Kerodon for integration tests |
| 21:14 | bitemyapp | amacdougall: anecdotally, I've heard dommy is superior to domina. |
| 21:14 | bitemyapp | amacdougall: which may or may not indirectly solve your problems. I've also heard good things about Kerodon. |
| 21:14 | bitemyapp | seangrove: dommy > domina right? |
| 21:14 | seangrove | bitemyapp: For me, without a doubt. |
| 21:15 | blr | dommy has nicer event handling imo |
| 21:20 | rads | I might have found a bug in core.async: http://cljsfiddle.net/fiddle/rads.close-pipe |
| 21:21 | rads | when you (pipe c1 c2), c2 should get closed at the same time as c1, but in this example it doesn't get closed |
| 21:21 | rads | when you run the example, it logs 42 to console |
| 21:22 | arohner | can slingshot match on a nested map? |
| 21:23 | arohner | (catch [:foo true :bar {:baz true}] t) ? |
| 21:23 | arohner | using kv destructuring, I know about fns and other options |
| 21:25 | hiredman | arohner: slingshot must do a = on the key |
| 21:26 | arohner | hiredman: ty |
| 21:26 | arohner | catch (-> % ...) t isn't bad at all |
| 21:26 | hiredman | not really a match per se |
| 21:27 | arohner | supporting get-in rather than get might be interesting |
| 21:27 | arohner | (catch [:foo true [:bar :baz] true] t... |
| 21:27 | arohner | hrm, maybe not |
| 21:27 | arohner | that's a little gnarly |
| 21:30 | bitemyapp | arohner: if you wanted to Cali that up a bit, you could even say it was "gnar-gnar" |
| 21:31 | TEttinger | bitemyapp, remember the carlyfornia site for carly fiorina's governer bid? |
| 21:33 | bitemyapp | TEttinger: no, I try to not be stateful. |
| 21:36 | bitemyapp | zomg tests passing |
| 21:36 | TEttinger | ah, it was a really poorly-thought-out webpage for her campaign. turns out it was for senator |
| 21:36 | bitemyapp | going to go jump off the bay bridge now |
| 21:36 | TEttinger | bitemyapp, don't forget your water wings |
| 21:37 | bitemyapp | TEttinger: the lack of a type system is starting to make me really mad. |
| 21:37 | TEttinger | have you started submitting lengthy patches to core.typed ? |
| 21:37 | bitemyapp | I spent a third or maybe even a half of my entire workday today to the accumulated type errors. |
| 21:37 | bitemyapp | TEttinger: the verbosity of core.typed is sanity-destroying right now. |
| 21:37 | bitemyapp | I'm hoping/waiting for it to become less severe. |
| 21:40 | TEttinger | perhaps you want a full-program analyzer of some sort? that can "read the code?" I think it exists, it's called a second programmer, but it's very expensive and not very reliable |
| 21:41 | blr | huh, this bob martin presentation about the 'last pl' is interesting, suggesting that major innovations are primarily about restriction |
| 21:42 | blr | resonates with what rhickey was saying about instruments in a way |
| 21:45 | TEttinger | blr, indeed, it is an odd thing how the most restrictive languages can be productive and popular, but only on the tasks those restrictions don't make difficult. Java is more restricted than C++, but it has less you need to learn to write more-than-the-basics programs. Clojure restricts reader macros (supposedly they don't exist, but we have seen them here) because they _can_ provide too much power to shoot yourself in |
| 21:46 | seangrove | I should probably just build this all on top of bootstrap 3's components to start with. Fastest way to "bootstrap" it... |
| 21:46 | blr | TEttinger: and the restrictions around mutable state are a big one |
| 21:46 | blr | seangrove: in the end, everyone resigns themself to bootstrap |
| 21:46 | seangrove | But goddamn, the in-place mutation... |
| 21:46 | seangrove | Wasn't pedestal supposed to come out with some ui components? |
| 21:47 | blr | seangrove: I've been waiting to hear more about pedestal 0.3 - was there anything at the conj about the roadmap? |
| 21:48 | seangrove | blr: Seemed like they were hoping to get something out, but probably didn't quite make it looking at their twitter |
| 21:48 | TEttinger | I don't see many DSLs in Java, like you see in clojure, and clojure DSLs are less... "natural" or "organic" than some Common Lisp ones I am aware of (since common lisp has reader macros, you can make code look un-lisp-y). but, clojure dsls are more compatible with each other than total alterations to a language's syntax |
| 21:48 | blr | ah okay, rkneufeld mentioned 0.3 will potentially make 'crud' easier, which while not exactly thrilling, is pragmatic |
| 21:53 | seangrove | Side-effecting functions everywhere. |
| 21:54 | seangrove | "Cannon to right of them, Cannon to left of them, into the valley of Death he charged..." |
| 21:59 | coventry | The silence about pedestal at the conj was a little surprising, actually. I missed tbaldridge's talk unfortunately, so it may have been mentioned there, but otherwise it didn't get much of a mention during the conference-proper. |
| 22:03 | xeqi | coventry: they can only have a limited number of topics coming out of cognitect before it is too exclusive, (core.async, fressian, 2 "keynotes", and harmonikit, so 6/21 this year) |
| 22:04 | xeqi | and apparently I can't add |
| 22:04 | hiredman | two keynotes? |
| 22:05 | xeqi | hiredman: eh, I'd put Hand Tools and Moon in that general category |
| 22:13 | jeremyheiler | though, i'd say harmonikit doesn't really count since it's a hobby non-work project |
| 22:16 | jeremyheiler | then again, the "keynotes" weren't very work specific either. meh. lol |
| 22:16 | jeremyheiler | but. point stands, gotta let others talk |
| 22:18 | bitemyapp | TEttinger: I prefer Clojure DSLs. They're usually just data. |
| 22:18 | bitemyapp | data > DSL |
| 22:18 | TEttinger | yes, me too |
| 22:19 | bitemyapp | TEttinger: Haskell has a similar attitude, DSLs are usually just type-safe interpreters that take data. |
| 22:23 | bbloom | bitemyapp: i write so many things that look like interpreters now |
| 22:23 | bbloom | bitemyapp: have my code can be summarized as (->> input linearize (reduce init step)) |
| 22:24 | bbloom | s/have/half |
| 22:24 | bitemyapp | bbloom: you write weird things though. |
| 22:25 | majyk | is anyone here using the vsClojure plugin for Visual Studio and Clojure-CLR? It seems to be broken out of the box for me on VS 2013. |
| 22:26 | bbloom | bitemyapp: true story |
| 22:26 | bitemyapp | majyk: don't use ClojureCLR and expect anything to work. |
| 22:26 | bitemyapp | ~ClojureCLR is don't use ClojureCLR and expect anything to work out of the box. |
| 22:26 | clojurebot | Ik begrijp |
| 22:26 | majyk | haha |
| 22:26 | bitemyapp | ~ClojureCLR |
| 22:26 | clojurebot | ClojureCLR is don't use ClojureCLR and expect anything to work out of the box. |
| 22:26 | bitemyapp | ~botsnack |
| 22:26 | clojurebot | Thanks, but I prefer chocolate |
| 22:29 | valmon | In clojurescript if you need to use a counter is an atom the correct way of doing it? |
| 22:31 | bitemyapp | ucb: it's time. |
| 22:31 | bitemyapp | ucb: http://www.youtube.com/watch?v=SFY0hYEqQQw |
| 22:33 | valmon | I'm trying to replicate the following javascript code: https://gist.github.com/4290d8cfccb9fe5258be |
| 22:38 | bbloom | valmon: are you using jquery or a wrapper in cljs? |
| 22:39 | bbloom | https://github.com/ibdknox/jayq for example ? |
| 22:39 | valmon | I'd like to use domina to do this |
| 22:39 | seangrove | get/update-in are just wonderful, so happy to have them in cljs |
| 22:39 | bbloom | valmon: ok domina works too |
| 22:40 | bbloom | valmon: to do something like .children().clone().slice(... |
| 22:40 | bbloom | you'd want something like the -> macro |
| 22:40 | bbloom | (doc ->) |
| 22:40 | clojurebot | "([x] [x form] [x form & more]); Threads the expr through the forms. Inserts x as the second item in the first form, making a list of it if it is not a list already. If there are more forms, inserts the first form as the second item in second form, etc." |
| 22:40 | bbloom | and beyond that, it's probably a pretty straight forward port |
| 22:40 | bbloom | each -> doseq |
| 22:40 | bbloom | etc |
| 22:43 | valmon | yea I was thinking that this could be done with map with a function that changes the value when the regex matches the thing with the counter and what to do with the current name value hurt my head badly though |
| 22:43 | valmon | though thinking about it now I should be able to use let |
| 22:44 | bbloom | valmon: it's somewhat unfortunate that the DOM ruins some clojure fun magic happy times by being so imperative |
| 22:45 | valmon | yea |
| 22:45 | bbloom | for example clojure.core/map is lazy, so it's really different than forEach for jquery's each: so you have to use doseq |
| 22:45 | valmon | awww it never would have worked anyway? |
| 22:46 | valmon | well im glad I asked |
| 22:51 | seangrove | so, so, so goddamn imperative. |
| 22:52 | seangrove | Welp, time to drink and try to think of ways to push the imperative-ness out to the shell. |
| 23:08 | bitemyapp | seangone: stateful code gettin' ya down? |
| 23:08 | bitemyapp | ah, he left. bugger. |
| 23:10 | amalloy | by the way, technomancy, http://java-performance.info/changes-to-string-java-1-7-0_06/ will make you happy |
| 23:22 | rads | hey everyone, I made a port of core.async to regular javascript using ES6 generators. check it out here: https://github.com/rads/csp.js |
| 23:43 | hammerandtongs | great idea rads |
| 23:43 | hammerandtongs | no alt! ? |
| 23:44 | rads | oh, alts is in there. just forgot to list it in the README. thanks :) |
| 23:45 | hammerandtongs | :D |
| 23:45 | hammerandtongs | go select is one of my favorites things |
| 23:45 | hammerandtongs | excellent |
| 23:46 | rads | there we go, fixed |
| 23:47 | rads | the example in the readme uses alts |
| 23:48 | rads | no alt! because it's a macro :( |
| 23:49 | rads | though if you want to go all the way, sweet.js support might be possible in the future |