2013-11-19
| 00:03 | abaranosky | do any of you all have your emacs setup to click through to Java? I want to at least be able to make tags for clojure.core if I Can |
| 00:03 | coventry | abaranosky: Do you mean getting etags to work with java files? I did that. |
| 00:04 | abaranosky | coventry: yeah. Do you have any sample code I could look at? |
| 00:04 | abaranosky | coventry: hi, are you the gentleman I met at the conference, Alex Coventry? |
| 00:05 | coventry | abaranosky: Yes. |
| 00:06 | coventry | Hello again. :-) |
| 00:07 | technomancy | amalloy: interesting. I wonder if it was considered to support both behaviours. |
| 00:07 | technomancy | sharing-subs vs copy-subs |
| 00:10 | coventry | abaranosky: There's not much code to it. "find . -name \*.java | etags -" creates the TAGS file, then (setq) tags-table-list to point to the directory containing the TAGS, or just specify it on the first call to find-tag. |
| 00:11 | coventry | abaranosky: Or did you mean getting M-. to DTRT with java in .clj files? That I haven't done. |
| 00:11 | hiredman | technomancy: it would be difficult to get both from the same class |
| 00:12 | hiredman | without wasting fields |
| 00:12 | abaranosky | coventry: so to create tags you need access to the .java files right? So if all I have are jars I'd need to open them and build a TAGS file from that? |
| 00:12 | hiredman | and String is final |
| 00:13 | technomancy | hiredman: ah right; one of the reasons cited was to save space per string |
| 00:13 | abaranosky | coventry: yeah... Ideally I can access any java code that some .clj file is using |
| 00:14 | coventry | abaranosky: Yes, I was working with the clojure source code at the time. Getting nrepl to use reflection to find the source code for java objects by reflection would be cool. |
| 00:14 | technomancy | coventry: you'd need a plugin to fetch :classifier "source" versions and put them on the classpath too |
| 00:16 | hiredman | technomancy: that analysis brought to you by my ergodox |
| 00:16 | technomancy | hiredman: how's your wpm? |
| 00:16 | hiredman | midteens |
| 00:17 | technomancy | hiredman: have you considered that now is probably the best time in your life to learn dvorak |
| 00:17 | bitemyapp | technomancy: in case you cared, the PlayStation 4 is now the best controller to get for emulators. |
| 00:17 | bitemyapp | technomancy: works out of the box on Linux with every emulator I've tried so far. |
| 00:17 | bitemyapp | Out. of. the. box. No drivers, no installs, no config. |
| 00:17 | bitemyapp | Just goes/ |
| 00:17 | amalloy | technomancy: dvorak is so old-hat. the cool kids are using colemak now (future readers, please fill in with latest fad) |
| 00:18 | Raynes | amalloy: Workman. |
| 00:18 | Raynes | Noob. |
| 00:18 | amalloy | yeah yeah. not so excited about workman |
| 00:18 | technomancy | bitemyapp: is it hard to get good emulator controllers? |
| 00:18 | bitemyapp | Buying a PS4 controller is the most brilliant thing I've done all month. |
| 00:18 | technomancy | I got a $20 in college that worked perfectly |
| 00:18 | bitemyapp | technomancy: that have a good d-pad and "just work" out of the box on Linux? yes, it's damn near impossible. |
| 00:18 | amalloy | well, neither about colemak or dvorak |
| 00:18 | hiredman | working with this reduced key layout so I have an extra third shift layer |
| 00:18 | bitemyapp | technomancy: no no, I'm picky about d-pads. Most vanilla PC gamepads have *terrible* d-pads. |
| 00:18 | Raynes | technomancy: I like the Logitech f10. |
| 00:19 | Raynes | f310 |
| 00:19 | technomancy | bitemyapp: I don't even remember what it was; the first one I tried was great |
| 00:19 | Raynes | Works out of the box on every machine I've ever used. |
| 00:20 | bitemyapp | Logitech controllers don't have good d-pads though. |
| 00:20 | VFe | The trials and tribulations of fighting gamers...my life for a d-pad that works. |
| 00:20 | Raynes | bitemyapp: My favorite controller is the xbox 360 controller, but I sure bet the PS4 controller is better. |
| 00:21 | bitemyapp | VFe: hear hear! The PS4 controller d-pad is great so far :) |
| 00:21 | VFe | yeah, DS4 is first time I've considered switching from PS2 for fighting games. |
| 00:21 | bitemyapp | Raynes: the 360 controller is okay, I've used it happily before, but the PS4 is better. |
| 00:22 | bitemyapp | I only found out the PS4 controller supported DirectInput by pure luck, a friend mentioned buying the controller for emulators on Facebook. |
| 00:22 | bitemyapp | I immediately left the house and got one just now. |
| 00:22 | Raynes | bitemyapp: It also supports xinput presumably, right? |
| 00:22 | bitemyapp | naw, that's Microsoft specific. |
| 00:23 | bitemyapp | doesn't need to anyway, DirectInput works everywhere. |
| 00:23 | Raynes | Not exactly. |
| 00:23 | bitemyapp | well, it's *more* Microsoft specific that is. |
| 00:23 | technomancy | maybe they're like laptop keyboards and they just mysteriously stopped making good ones a few years ago |
| 00:23 | hiredman | working with dvorak would be hopeless, at least this way only control keys are different |
| 00:23 | bitemyapp | technomancy: well kind of, the only company still making good d-pads since the PS2 has been Sony. |
| 00:24 | Raynes | Some games are designed specifically for xbox 360 controllers (and thus xinput), so having a controller that can emulate that helps. |
| 00:24 | bitemyapp | technomancy: but the PS3 controller was a huge pain to get working on a PC, they rectified this with the PS4. |
| 00:24 | Raynes | My logitech f310 can. |
| 00:24 | bitemyapp | Raynes: I see, I don't think I play any games like that. |
| 00:25 | Raynes | bitemyapp: Try to play Trine with anything short of a 360 controller. |
| 00:25 | Raynes | Your life is going to be really, really bad. |
| 00:25 | bitemyapp | I did play it, with a keyboard and mouse. |
| 00:25 | bitemyapp | quite happily :P |
| 00:25 | amalloy | yeah, trine is better with a keyboard and mouse |
| 00:25 | Raynes | Lies. |
| 00:25 | Raynes | Trine rocked hard with my 360 controller. |
| 00:25 | Raynes | amalloy: We should play through Trine 2 together. |
| 00:26 | Raynes | Bro. |
| 00:26 | bitemyapp | Trine 2 was hilarious for me and a friend to play through |
| 00:26 | Raynes | I played through it alone. |
| 00:26 | bitemyapp | probably the hardest I'd laughed in years and years |
| 00:26 | Raynes | But my mother was watching at the time. |
| 00:26 | bitemyapp | now that I have a real controller, I should beat Ninja Gaiden II |
| 00:27 | Raynes | My mother never once played Amnesia, but it's her favorite game. |
| 00:27 | technomancy | that's one of the few programs I actually sorta wanted to run on my computer but couldn't due to it being too old |
| 00:27 | Raynes | She took deep satisfaction in watching me urinate on myself every 34 seconds. |
| 00:27 | hiredman | technomancy: I have yet to get a dedicated parenthesis key working |
| 00:27 | technomancy | hiredman: still hacking the layout configurator? |
| 00:27 | amalloy | no doubt flashbacks to your time as a five-year-old, Raynes |
| 00:27 | VFe | Looked it up, DS4 doesn't use input, but it's apparently a very easy(as in, file swap) software mod to make it detect as a 360 controller in windows. |
| 00:27 | VFe | doesn't use xinput* |
| 00:28 | Raynes | VFe: Well, then it is the best controller ever then |
| 00:28 | Raynes | Hands down. |
| 00:28 | Raynes | bitemyapp: You win, my sir. |
| 00:28 | bitemyapp | Raynes: I actually beat the first Ninja Gaiden for NES if you can believe it. I've always wanted to beat 2 and 3. |
| 00:29 | bitemyapp | VFe: DS4? |
| 00:29 | VFe | DualShock4 |
| 00:29 | bitemyapp | I'm pretty sure beating NG for the NES puts me somewhere in the elite echelon of "people that beat Nintendo-hard games" |
| 00:30 | hiredman | technomancy: there is a dedicated paren key in the extended numeric keypad stuff, but nothing seems to recognize it |
| 00:31 | bitemyapp | ohhhh yeeeaahhh. this controller is *buttery* smooth for Ninja Gaiden/ |
| 00:31 | hiredman | or maybe I need to re-solder something |
| 00:36 | Raynes | bitemyapp: We can certainly agree that the Ouya controllers suck. :P |
| 00:37 | Raynes | They're lightweight and feel cheap, and don't work half the time because of https://support.ouya.tv/entries/24496858-Controller-Lag |
| 00:37 | marcopolo2 | I'm trying to write an nth equivalent in core.logic, is there anyway I can use a number as an index, or do I have to use a list to represent the number? |
| 00:37 | Raynes | It's really sad, actually, They put out a console with atrocious controller lag that they did not catch. |
| 00:37 | bitemyapp | Raynes: wow, there's a bullet dodged. That would be a deal-breaker for me. |
| 00:37 | bitemyapp | Raynes: inputs have to be perfect for me to be happy. |
| 00:37 | Raynes | bitemyapp: I've got one with 4 controllers sitting in front of me that I can't even play. |
| 00:37 | Raynes | It has to be perfect for anyone. |
| 00:38 | Raynes | Not just you. Any noticeable controller lag is too much for certain (in fact, most) games |
| 00:38 | bitemyapp | that's terrible :( |
| 00:38 | bitemyapp | even a frame or two of lag would make games like Ninja Gaiden unplayable |
| 00:38 | bitemyapp | and I know this...because I've tried to play NG with lag. |
| 00:39 | bitemyapp | bloody impossible. |
| 00:39 | Raynes | bitemyapp: Ever play the Devil May Cry series? |
| 00:39 | benkay | night |
| 00:39 | Raynes | benkay: Goodnight sir. |
| 00:39 | benkay | sorry wrong chan :) |
| 00:39 | Raynes | It's okay. |
| 00:39 | Raynes | We wish you a goodnight, my friend. |
| 00:39 | Raynes | :) |
| 00:40 | bitemyapp | Raynes: never played any of the DMCs |
| 00:40 | Raynes | My favorite series of games right there. |
| 00:40 | Raynes | Maybe. Bioshock is up there too. |
| 00:41 | technomancy | Raynes: ever played System Shock 2? |
| 00:41 | bitemyapp | technomancy: he doesn't need the nightmares. |
| 00:41 | technomancy | muahaha |
| 00:42 | bitemyapp | I think anybody that like Bioshock would probably like SS2 if they can get over how idiosyncratic the game is. |
| 00:42 | Raynes | technomancy: I tried to play the first system shock and realized I wasn't cut out for games that came out less than a year after I was born. |
| 00:42 | bitemyapp | Raynes: not cut out how? |
| 00:42 | technomancy | Raynes: the second one is totally different |
| 00:42 | Raynes | I can't work dos games. |
| 00:42 | Raynes | I just can't. |
| 00:42 | Raynes | My fingers can't handle the controls. |
| 00:42 | technomancy | it wasn't even originally developed as a sequel; they decided that half way through |
| 00:42 | bitemyapp | Raynes: yeah SS2 is way more modern. |
| 00:43 | Raynes | technomancy: Noted, I will definitely play it then. |
| 00:43 | technomancy | I want to play the first one though |
| 00:43 | technomancy | I got my start in stuff like Marathon and Descent, so not having a mouse isn't crippling like it is for kids these days |
| 00:44 | Raynes | I try to play retro games when I can, it's just that they're usually console games. |
| 00:44 | bitemyapp | technomancy: yeah I grew up with Doom, Duke Nukem 3d, ROTT, Descent, etc... |
| 00:45 | technomancy | marathon 2 is still my favourite, just for the atmosphere coming from the copious amounts of text-driven (and character-driven) plot |
| 00:45 | bitemyapp | so I can handle a game that doesn't have a mouse even if I really cut my teeth on mouse-controlled FPSes like Unreal, Unreal Tournament '99, etc. |
| 00:45 | joshnz | Descent 2 co-op FTW! That was awesome. |
| 00:47 | bitemyapp | Raynes: okay case in point for Ninja Gaiden 2, the game is already a difficult 2d action platformer and the *second* level already has crazy wind physics throwing me around making it harder to make the jumps *while* getting attacked on all sides. |
| 00:47 | bitemyapp | this is aweeessssoooome |
| 00:49 | logic_prog | can I :require :refer macros the same way I :require :refer functions? |
| 00:49 | technomancy | ~tias |
| 00:50 | clojurebot | tias is try it and see |
| 00:52 | bitemyapp | technomancy: I like that. |
| 00:52 | bitemyapp | I like it a lot. |
| 00:52 | bitemyapp | I need to use that :) |
| 00:52 | logic_prog | wait |
| 00:52 | bitemyapp | ddellacosta: how are you doing? |
| 00:52 | logic_prog | what is this special trick that I missed |
| 00:52 | technomancy | bitemyapp: 50% of the clojurebot factoids I invoke come from #emacs |
| 00:52 | bitemyapp | technomancy: good theft. |
| 00:52 | ddellacosta | bitemyapp: fair. Feeling kinda under-the-weather. Yourself? |
| 00:52 | bitemyapp | logic_prog: the ~tias macro. |
| 00:53 | technomancy | ~botstack |
| 00:53 | clojurebot | /me puts lazybot on his head and gropes blindly for a third bot to complete the stack. |
| 00:53 | technomancy | ^ case in point |
| 00:53 | bitemyapp | ddellacosta: found out the new PS4 controller, unlike the PS3, works on PC. Bought one tonight and am using it play old NES games. |
| 00:53 | logic_prog | what is the tias macro? |
| 00:53 | bitemyapp | ~tias |
| 00:53 | clojurebot | tias is try it and see |
| 00:53 | technomancy | Dude, the preferred nomenclature is factoid. |
| 00:53 | ddellacosta | bitemyapp: :-O |
| 00:54 | bitemyapp | ddellacosta: it's fantastic, works perfectly on Linux. Also, tackled an annoying problem at work today, so pleased with that. |
| 00:54 | technomancy | </butchered-lebowski> |
| 00:54 | bitemyapp | today's work was 100% open source, feel really good about that. |
| 00:54 | bitemyapp | ddellacosta: any emulator on Mac OS X should work, I can't speak to specific games. I can try it and let you know. |
| 00:54 | bitemyapp | I have a Mac with steam installed that I can try it on. |
| 00:55 | ddellacosta | bitemyapp: yeah, Steam is exactly why I want to play games on my Mac |
| 00:55 | technomancy | also in #emacs they have a ,apropos-dude command for looking up lebowski quotes when you only remember a word or two |
| 00:55 | bitemyapp | ddellacosta: I'll give it a whirl and let you know. |
| 00:55 | ddellacosta | although, considering the amount of time I have available...BWAHAHAHAA |
| 00:55 | technomancy | extra convenient! |
| 00:55 | bitemyapp | technomancy: *snorts* that's great :) |
| 00:55 | ddellacosta | bitemyapp: k, thanks. Will be interested to know. |
| 00:56 | logic_prog | ~tias |
| 00:56 | clojurebot | Try it and see! You'll get results faster than asking someone in #clojure to evaluate it for you, and you'll get that warm, fuzzy feeling of self-reliance. |
| 00:58 | ddellacosta | bitemyapp: what work problem, btw? |
| 00:58 | bitemyapp | ddellacosta: I made datomic migrations incremental/lazy: https://github.com/bitemyapp/brambling/ |
| 00:58 | bitemyapp | you can see my fear, pain, and hate in the commit log. |
| 00:58 | ddellacosta | nice! |
| 00:59 | bitemyapp | https://github.com/bitemyapp/brambling/commit/21012fb91e24c59aa75a23350a83d0aa0f2f4aa1 dat type error. |
| 00:59 | bitemyapp | gotta love it. |
| 01:00 | bitemyapp | ddellacosta: next step, differential migrations! |
| 01:00 | bitemyapp | ddellacosta: Some favorite music of mine when I'm feeling sick or down: http://www.youtube.com/watch?v=SFY0hYEqQQw |
| 01:01 | ddellacosta | what is a differential migration? |
| 01:01 | bitemyapp | ddellacosta: well when your database isn't mutability based, you can continually replicate transactions. |
| 01:01 | bitemyapp | so I just do a diff of origin and dest and ship the transactions over :) |
| 01:01 | ddellacosta | bitemyapp: morphine! It's been a while. Used to dig these folks. Tragedy about the main guy passing away so young. |
| 01:01 | bitemyapp | ddellacosta: god, I know right? |
| 01:02 | bitemyapp | Morphine <3 |
| 01:02 | ddellacosta | yeah. :-( |
| 01:02 | bitemyapp | 210mb update? seriously Steam? |
| 01:02 | bitemyapp | oh, must be for SteamOS |
| 01:02 | bitemyapp | I forgot that existed |
| 01:03 | ddellacosta | wowsers |
| 01:06 | bitemyapp | hrm, weird. Steam is faster on my slower Linux machine than on my faster Mac. |
| 01:07 | technomancy | leiningen 2.3.4 is out |
| 01:07 | technomancy | will do a proper announcement tomorrow |
| 01:07 | bitemyapp | yisss early adopter |
| 01:08 | technomancy | http://j.mp/leinnews |
| 01:08 | technomancy | nothing terribly exciting |
| 01:13 | bitemyapp | Raynes: XInput + PS4 controller: http://www.hardcoreware.net/how-to-ps4-controller-windows/ |
| 01:14 | sm0ke | any vim users interested in integrating kibit to fireplace? |
| 01:15 | bitemyapp | sm0ke: in Emacs-land, that would be a vanilla plugin to be used with flycheck. |
| 01:15 | bitemyapp | sm0ke: does vim have a flycheck equivalent? |
| 01:15 | Raynes | Nope. |
| 01:15 | bitemyapp | lolwut. |
| 01:15 | Raynes | Not nope to bitemyapp. Nope to sm0ke. :p |
| 01:16 | sm0ke | whats flycheck? |
| 01:17 | ddellacosta | Raynes, a thank you while you are here for conch: thank you. |
| 01:17 | sm0ke | whats the big deal in integration? its just a "lein kibit filepath" away |
| 01:18 | Raynes | ddellacosta: Happy you like it! |
| 01:18 | ddellacosta | Raynes: been super useful for a side project. |
| 01:20 | bitemyapp | sm0ke: well then go for it, nobody's stopping you :P |
| 01:21 | sm0ke | emacs users think highly of themselves i see |
| 01:30 | sm0ke | looks like flycheck is similar to syntastic in vim |
| 01:39 | bitemyapp | Raynes: http://www.youtube.com/watch?v=zUtnwcv-quE |
| 01:40 | sm0ke | hmm weird lein kibit doesnt give me anything |
| 01:40 | Raynes | sm0ke: Your code must really rock! |
| 01:40 | sm0ke | my code cannot be awesome |
| 01:40 | sm0ke | i am serious |
| 01:41 | Raynes | bitemyapp: Why am I listening to this? |
| 01:43 | sm0ke | finally something |
| 01:43 | sm0ke | in a different project |
| 01:43 | sm0ke | wow my code is awesome! |
| 01:43 | sm0ke | I ROCKKK |
| 01:43 | marcopolo2 | (inc sm0ke ) |
| 01:43 | lazybot | ⇒ 1 |
| 01:43 | bitemyapp | Raynes: 90s! |
| 01:44 | sm0ke | fuck yeah |
| 01:44 | bitemyapp | Raynes: because...ALL AROUND THE WOORRRRLD, STATUES CRUMBLE BEFORE MEEEE |
| 01:44 | sm0ke | sorry gor carried away |
| 01:44 | andyf | bitemyapp: 1790s or 1690s? |
| 02:19 | abaranosky | bitemyapp: hey what's the deal with the type theory meetup? |
| 02:19 | abaranosky | what do they usually talk about at those? |
| 02:21 | bitemyapp | abaranosky: category theory, type theory, practical application (how to make their toys work in Haskell) |
| 02:21 | bitemyapp | abaranosky: this particular meetup I called out because 1. I'm going to it 2. It's explicitly for noobies. |
| 02:21 | bitemyapp | abaranosky: if you look at the description for the meetup, you'll see that they're beginning some introductory material and linked some homework. |
| 02:22 | abaranosky | bitemyapp: cool. I'll take a look at the link |
| 02:23 | bitemyapp | abaranosky: I know not everyone shares this opinion, but I'm of the thought that the category and type theory the Haskellers are working on are the "next step" for anybody comfortable with the basics of higher order functional programming |
| 02:25 | abaranosky | bitemyapp: I've worked in Scala and have done *1* 100 line program in Haskell... so my views are colored by those experiences |
| 02:26 | bitemyapp | abaranosky: it doesn't really matter, this is the foundational material for anything you'd want to do in any functional language. |
| 02:26 | abaranosky | bitemyapp: I don't know the tradeoffs of using a purely functional system in production |
| 02:26 | bitemyapp | none of that matters in this case. |
| 02:26 | bitemyapp | it's just that Clojure doesn't lend itself as well to scaling up the abstractions the way a typed FP language does. |
| 02:26 | bitemyapp | minor cultural difference. |
| 02:27 | akurilin | bitemyapp, sounds like an interesting meetup |
| 02:27 | akurilin | what time is it? meetup.com won't load for me |
| 02:28 | bitemyapp | akurilin: it'd be great if you came too. |
| 02:28 | bitemyapp | I should bug seangrove about it as well. |
| 02:28 | abaranosky | akurilin: I thought that was just my terrible internt conenction :\ |
| 02:29 | akurilin | abaranosky, they're probably doing "seamless" updating :P |
| 02:29 | akurilin | hope it's not a thursday |
| 02:29 | akurilin | or you guys better film it |
| 02:29 | akurilin | not even kidding. |
| 02:29 | bitemyapp | akurilin: I think it's Thursday. |
| 02:30 | bitemyapp | because I'm pretty sure it's set for the 21st. |
| 02:31 | lgs32a | coventry: I am hardly trying to get troncle working |
| 02:31 | bitemyapp | meetup.com isn't loading for me either, lame. |
| 02:32 | bitemyapp | lgs32a: hardly as in not at all? |
| 02:32 | lgs32a | bitemyapp: excuse my english. i wanted to say it's not easy. |
| 02:33 | bitemyapp | lgs32a: not that I'm terribly familiar with Troncle beyond being an admirer, early-stage libraries often aren't meant for consumption by people not comfortable hacking around. |
| 02:33 | lgs32a | coventry: when i run troncle-trace-region nothing happens. |
| 02:34 | lgs32a | coventry: if i try to select a region like in your example i get "sexp ends prematurley" |
| 02:35 | lgs32a | coventry: but aside from that no error message is available in no buffer |
| 02:35 | bitemyapp | lgs32a: when you say "nothing happens", you're trying to run the code after setting the trace right? |
| 02:35 | lgs32a | bitemyapp: well i do it as described in the readme |
| 02:37 | coventry | lgs32a: I was just pushing changes to the repo, so it might have been in a skewed state when you downloaded it. Looks like I'll have to stop doing that. |
| 02:37 | lgs32a | coventry: nevermind i saw that and i don't expect anything to work at such an early stage |
| 02:37 | coventry | lgs32a: Before you run troncle-trace-region, have you run troncle-set-exec-var or tronce.traces/st? |
| 02:37 | lgs32a | coventry: but i thought before i go down the hard road to debug without any error message, i'd ask you |
| 02:38 | lgs32a | coventry: yes, with c-c t E |
| 02:38 | bitemyapp | coventry: in case you're wondering what I wanted troncle for, I use Emacs macros for local dev, but for tracing code in production, troncle will/would be nice for dumping executing state to a log. |
| 02:38 | coventry | lgs32a: Can you put up an example where you get the "sexp ends prematurley"? |
| 02:38 | lgs32a | well i have defined this silly fn: |
| 02:39 | lgs32a | (defn test-fn |
| 02:39 | lgs32a | [val] |
| 02:39 | lgs32a | (let [v (* 3 val) |
| 02:39 | lgs32a | x (inc val)] |
| 02:39 | lgs32a | [v x])) |
| 02:39 | lgs32a | coventry: if for example i select the let-clause, i get the err-msg |
| 02:39 | lgs32a | coventry: forward-sexp: Scan error: "Containing expression ends prematurely", 16668, 16669 |
| 02:39 | lgs32a | coventry: let-form i wanted to say |
| 02:40 | lgs32a | coventry: selecting the whole fn doesnt give me any error msg |
| 02:42 | coventry | lgs32a: Hmm, it's working for me. The logic for choosing the top-level forms to send back for recompilation is one of the last things I changed, so it may well be skew. |
| 02:43 | lgs32a | coventry: hmm. i don't have your patch from 7minutes ago. i will try that now. is the elisp from install-package troncle still up-to-date? |
| 02:43 | coventry | lgs32a: I'm selecting from the paren just before the let to the one just after [v x]. |
| 02:43 | coventry | lgs32a: No, you should re-eval the version in the repo. |
| 02:44 | lgs32a | coventry: i will, ty. regarding the selection from the let-form i did the same. |
| 02:44 | coventry | lgs32a: This is a problem with marmalade, actually, it will be hard to get people to update to the latest version, and it's going to change quickly. I can see the reason for melpa, now. |
| 02:45 | coventry | bitemyapp: Thanks for the feedback. |
| 02:47 | bitemyapp | coventry: I keep an embedded nRepl server in our staging and production Clojure instances and tunnel in to do maintenance and debugging periodically. |
| 02:47 | bitemyapp | so the notion is that I'd use troncle to slap a trace on something problematic, trigger the behavior or wait for it to trigger, then turn the trace back off. |
| 02:47 | lgs32a | coventry: maybe we should write something that determines in runtime whether the elisp is up to date and comlains if it isn't? |
| 02:48 | coventry | lgs32a: Thanks, that is a great idea. I will do that. |
| 02:48 | bitemyapp | hot-spot detailed logging :) |
| 02:48 | bitemyapp | coventry: do you support or plan to support conditional trace logging? |
| 02:48 | bitemyapp | coventry: where one can run a conditional against the arguments and return a boolean? |
| 02:48 | lgs32a | coventry: i'd like to do that if that is not on your priority list #1 |
| 02:49 | coventry | bitemyapp: Yes, that is next on the list, actually. Still not sure about the design, but it's definitely needed. |
| 02:49 | coventry | lgs32a: That would be awesome, thank you. |
| 02:49 | bitemyapp | abaranosky: http://www.meetup.com/SF-Types-Theorems-and-Programming-Languages/events/149329292/ 7 pm Thursday |
| 02:49 | pmde | hi. can anyone tell me how to do a "field is null" where clause using korma? |
| 02:50 | bitemyapp | coventry: that one feature would make it complete and perfectly awesome for my use-case. |
| 02:50 | bitemyapp | coventry: because then the trace log output would be even more precise. |
| 02:50 | bitemyapp | less soup to wade through. |
| 02:50 | bitemyapp | wish I could do stuff like this in Haskell :) |
| 02:51 | coventry | bitemyapp: Yes, configuration of the trace output destination is important anyway because you can easily hang emacs by dumping too much to the nrepl buffer. |
| 02:52 | coventry | bitemyapp: Haskell actually has way better tracing facilities. I think the library which really impressed me was hat. |
| 02:53 | bitemyapp | coventry: hum, hat is really good, but I was actually thinking of my ability to tunnel a REPL into a production instance. |
| 02:54 | coventry | bitemyapp: Oh, I see. Yeah, that is very nice. |
| 02:54 | coventry | bitemyapp: BTW, please don't use it in production without checking with me first. I would want to make sure the specific tracing instrumentation you'll be using is general enough first by testing it on a large codebase. |
| 02:55 | bitemyapp | coventry: haha, I won't. |
| 02:55 | bitemyapp | I'm brave, but I'll wait for a "stable" stamp to get slapped on it. |
| 02:55 | bitemyapp | I'll alter-var-root my own tracing facilities if they're direly needed. |
| 02:55 | bitemyapp | or hotpatch a couple log lines |
| 02:56 | abaranosky | bitemyapp: alter-var-:( |
| 02:56 | abaranosky | I'm going to alter-var-root my alter-var-root to that ^^^ |
| 02:57 | bitemyapp | abaranosky: I use AOP pretty often, comes with the CL heritage. I don't mind it much. |
| 02:57 | coventry | Anyway, I'm off to bed. I really appreciate the you guys' interest in this. lgs32a: Please file an issue if it still doesn't work. |
| 02:58 | bitemyapp | abaranosky: I don't do it in typical production code as a first order pattern, I only use it when I have to. Like in blackwater. |
| 02:58 | bitemyapp | And you're not supposed to deploy blackwater to production. |
| 02:58 | bitemyapp | Not really. |
| 02:58 | bitemyapp | Unless you really are too lazy to do your own query logging. |
| 03:39 | bitemyapp | Raynes: juuuuust now got to level 3. |
| 03:39 | ucb | bitemyapp: good song |
| 03:40 | bitemyapp | ucb: Morphine is great :) |
| 03:40 | bitemyapp | ucb: got a PS4 controller today, best controller for emulators I've ever used. Works perfectly on Linux. |
| 03:40 | bitemyapp | having a ball with some classic NES Ninja Gaiden 2 :) |
| 03:40 | bitemyapp | going to bed...now though. |
| 03:40 | ucb | nice |
| 03:40 | ucb | g'night |
| 03:40 | bitemyapp | don't even own the console, just got the controller ^_^ |
| 03:40 | bitemyapp | ucb: g'night! |
| 03:41 | ucb | heh |
| 03:45 | Raynes | bitemyapp: https://www.youtube.com/watch?v=llBEfIfBOvk |
| 03:48 | andyf | Is there some compiler flag that makes def/defn issue a warning if the same var is def'd more than once? Or some modified version of def/defn that do such a thing? |
| 03:49 | andyf | Maybe defonce is close to what I want. |
| 04:07 | nonuby | i was going to ask this as a clojure style guide question, https://www.refheap.com/21047 but there's probably more problematic issues to enlighten me.. thoughts? |
| 04:08 | nonuby | i guess >! should be >!! since it wont be run in go block |
| 04:17 | broquaint | Given you're blocking on the result of the insert what does the async buy there? |
| 04:22 | nonuby | broquaint, go point, i guess i dont to deref then, but will be realized if i dont deref.. goes back to docs |
| 04:22 | nonuby | go point --> good point |
| 04:23 | cYmen_ | amalloy: How does 4clojure generate those "you can now move on to X" suggestions? Have these been added manually? |
| 04:33 | amalloy | cYmen_: no, iirc it's the lowest-numbered unsolved problem of the lowest difficulty remaining |
| 04:34 | cYmen_ | amalloy: I expected something like that but it doesn't seem that way. |
| 04:34 | amalloy | it might also just be wrong |
| 04:34 | cYmen_ | amalloy: Maybe I missed something or have my list sorted weirdly? |
| 04:35 | amalloy | the list is sorted not by problem number, but by number of times solved |
| 04:35 | amalloy | (on the theory that most-solved problems are easiest) |
| 04:35 | amalloy | we should use that sorting for recommendations too, but nobody ever bothered |
| 04:36 | cYmen_ | ah...so basically conflicting notions of easiness |
| 04:36 | cYmen_ | thanks for clearing that up |
| 04:36 | cYmen_ | was bugging me not to know :) |
| 04:37 | cYmen_ | amalloy: I take it back I still don't think it's right. :) |
| 04:38 | amalloy | haha |
| 04:38 | cYmen_ | It just suggested a hard problem but I am still working through the elementaries. :) |
| 04:42 | cYmen_ | amalloy: I'll try to fix it later. Need to get started with some real projects anyway. |
| 04:44 | amalloy | might not even do the difficulty filtering, i dunno |
| 04:49 | Jens_D | Hi |
| 05:24 | `rand` | I'm having trouble with cider 0.3.1 in emacs 24; I'm sure it's my inexperiece. I created a leiningen project to play with macros, so I have (ns macros.core) with a few functions and simple macros. When I load the namespace with C-c M-n, all of clojure.core is inaccessible. I can fix it by adding (:use (clojure.core)), but I thought clojure.core was automatically required? |
| 05:39 | amalloy | `rand`: C-c M-n doesn't load the namespace, it just puts the repl into the already-existing namespace. C-c C-k compiles the current file, so you'll want to do that first |
| 05:44 | `rand` | amalloy: ah, ty. So I can remove the use clause from my ns definition if I compile with C- C-k? |
| 05:44 | amalloy | i wouldn't expect that :use to make a difference either way, really. surprised you've determined it does |
| 05:46 | `rand` | it's probably my setup. |
| 05:59 | ucb | bitemyapp: http://www.youtube.com/watch?v=fq1gb50iobU |
| 08:08 | bordatoue | could any give me a hint on how to create a lazy vector |
| 08:09 | bordatoue | could anyone give me a hint on how to create a lazy vector |
| 08:09 | tbaldridge | bordatoue: there isn't a way to do it with built in Clojure constructs. You can create a lazy seq however and turn int into a vector with vec |
| 08:09 | tbaldridge | ,(vec (range 3)) |
| 08:09 | clojurebot | [0 1 2] |
| 08:10 | bordatoue | tbaldridge: can you write someting tlike (take 1 (vec(range))) |
| 08:11 | tbaldridge | bordatoue: no, since the call to vec will run out of memory. Lazy + indexing (what vectors are) doesn't really work well. |
| 08:12 | bordatoue | tbaldridge: programically is it possible to create lazy vectors |
| 08:12 | hyPiRion | yes, but you have to define it yourself |
| 08:13 | tbaldridge | bordatoue: sure, anything is possible. |
| 08:14 | bordatoue | is there any othere construct in clojure that will introduce delay in trival of an element from the list, apart from lazy seq |
| 08:17 | solussd | core.async question- how do you check if a channel is open? |
| 08:28 | tbaldridge | solussd: currently the only way is to take from the channel and see if you get nil. We can provide a predicate for this, and I'm going to try to get this added to the api, but I need to talk with Rich about it first. |
| 08:51 | CookedGryphon | bordatoue: have you looked at delay? |
| 08:52 | CookedGryphon | just wrap every element of the vector in (delay) and then deref it |
| 08:52 | CookedGryphon | it'll only evaluate when it's read |
| 08:52 | CookedGryphon | for the first time, then cache |
| 08:53 | tbaldridge | CookedGryphon: I don't think that's what he's looking for. He wants lazy created vectors. At least thats what I would think when I heard "lazy vector" |
| 08:54 | CookedGryphon | i was going off introduce delay in an element from the list |
| 08:55 | bordatoue | CookedGryphon: concept of using a delayed stream is equivalent to a lazy-seq isn't it |
| 08:57 | bordatoue | Can anyone explain how is lazy-seq implemented and how is it different from delay and force |
| 08:58 | tbaldridge | bordatoue: one can think of a lazy seq as a cons list, where the "rest" is defined as a delay and force. |
| 08:59 | CookedGryphon | bordatoue: well lazy seq you assume each element depends in some way on the previous elements and they are calculated in order |
| 08:59 | tbaldridge | the contents of the cells aren't defined in the delay, the entire tail of the cons cell is defined in the delay |
| 08:59 | tbaldridge | hence the problem with this |
| 08:59 | tbaldridge | ,(range) |
| 08:59 | clojurebot | (0 1 2 3 4 ...) |
| 08:59 | tbaldridge | ,(vec (range)) |
| 08:59 | clojurebot | #<OutOfMemoryError java.lang.OutOfMemoryError: Java heap space> |
| 09:00 | bordatoue | tbaldridge: thanks for the explanation |
| 09:00 | CookedGryphon | vectors tend to be used for random access, so a vector of delays would be a different thing, allowing you to reference things later in the list without having to evaluate everything leading up to it |
| 09:00 | CookedGryphon | but i don't think i quite know what problem you're actually trying to solve so that may be entirely irrelevant |
| 09:02 | bordatoue | CookedGryphon: I am not trying to solve any problem, I just wanted to understand if it was possible to have an implemenation of lazy-seq using delay and force |
| 09:05 | vpak | Hi, can anyone help me? I'm writing unit tests for my first clojure program and need to find out a way to verify the number of invocations of mock function. What is the feasible way to do it? Thanks in advance |
| 09:05 | tbaldridge | vpak: pass the mock function in as an argument to the thing you are testing, then have that function call (swap! some-atom inc) |
| 09:07 | vpak | tbaldridge: thanks for the advice... I thought about such variant, but it looks a bit clumsy. May be there are more elegant ways? |
| 09:07 | tbaldridge | vpak: clumsy, how so? |
| 09:08 | vpak | tbaldridge: the preferred variant would be something like it is done in mockito "vefiry(mock, never()).method(args)" |
| 09:09 | vpak | otherwise I need to declare another atom, do this in (let ...) form, which means more levels of parentheses nesting |
| 09:10 | tbaldridge | vpak: if you are worried about reducing the number of lets in your code...I'm not sure you are approaching the problem the right way. |
| 09:11 | tbaldridge | another option, is to have the function you are testing return something that can be tested. The fact that you want to count the number of calls to a function, implies it is performing some sort of side-effect. Perhaps making the tested function pure may simplify testing. |
| 09:12 | tbaldridge | have one function that does the calculations, and one that performs side effects, and test them individually. |
| 09:12 | vpak | tbaldridge: yes, mocked function saves some entities to repository |
| 09:13 | vpak | we do not use the result that it returns, so I can't check returned value |
| 09:15 | tbaldridge | vpak: that's what I'm saying, refactor your code and test the processing of the function by testing the data returned. No mock is needed. |
| 09:15 | tbaldridge | if you don't mix processing with side-effects, things are much simpler to test. |
| 09:31 | CookedGryphon | vpak: you can do what you want in midje, but i agree with tbaldridge that your life will be easier if you test pure functions in the main |
| 09:32 | CookedGryphon | vpak: with midje you can do (fact (thing 1 2) => :whatever (provided (db-call "stuff") => :whatever :times 1)) |
| 09:35 | tbaldridge | CookedGryphon: some would argue if that should be done, even if it can be done :-P |
| 09:44 | myguidingstar | Hi all, will the value hold by atom `foo` in this code be garbage collected right after it is executed? (let [foo (atom 0)] (do-something ...)) |
| 09:44 | mikerod | What is a good way to build a map of map entries, where many of the entries will conflict on keys, so you just want to conj them together into a list when that happens. Example: |
| 09:44 | mikerod | ,(into {} [[:a 1] [:b 2] [:a 3] [:a 5]]) |
| 09:44 | clojurebot | {:a 5, :b 2} |
| 09:44 | mikerod | => no good, that just overwrites key collisions |
| 09:45 | mikerod | ,(apply merge-with concat (map (fn [[k v]] {k [v]}) [[:a 1] [:b 2] [:a 3] [:a 5]])) |
| 09:45 | clojurebot | {:b [2], :a (1 3 5)} |
| 09:45 | mikerod | sort of works... a little weird |
| 09:45 | mikerod | also, stack overflows if it is too big I have learned |
| 09:46 | mikerod | ,(apply merge-with concat (for [i (range 4000)] {:a [i]})) |
| 09:46 | clojurebot | #<StackOverflowError java.lang.StackOverflowError> |
| 09:46 | mikerod | :) |
| 09:46 | clgv | mikerod: what is the exact problem description? how should you output look like ideally? |
| 09:46 | mikerod | (comp doall concat) works there I suppose... |
| 09:47 | mikerod | keys -> vectors is fine |
| 09:47 | mikerod | so when there is a collision, I'd like to conjoin |
| 09:47 | mikerod | conj |
| 09:47 | mikerod | but, initially there is no value |
| 09:47 | mikerod | so, this can be done with reduce |
| 09:48 | mikerod | I'm just wondering if there is a "higher level" way to do it |
| 09:49 | BobSchack | myguidingstar: so long as you don't have any thing holding onto to it I believe that is the case |
| 09:49 | myguidingstar | BobSchack, thanks |
| 09:50 | mikerod | ,(reduce (fn [m [k v]] (update-in m [k] (fn [e] (if (seq e) (conj e v) [v])))) {} (for [i (range 10)] [:a i])) |
| 09:50 | clojurebot | {:a [0 1 2 3 4 ...]} |
| 09:50 | BobSchack | np |
| 09:50 | mikerod | That is the most straight-forward way I know to do it |
| 09:50 | gfredericks | mikerod: btw, I think s/concat/into/ solves the stack problem |
| 09:51 | gfredericks | mikerod: and maybe your update function could be replaced with (fnil conj []) |
| 09:51 | gfredericks | or just conj if you don't mind it being a list |
| 09:52 | gfredericks | ,(type (conj nil 42)) |
| 09:52 | clojurebot | clojure.lang.PersistentList |
| 09:52 | mikerod | ,(reduce (fn [m [k v]] (update-in m [k] conj {} (for [i (range 10)] [:a i])) |
| 09:52 | clojurebot | #<RuntimeException java.lang.RuntimeException: EOF while reading> |
| 09:53 | mikerod | ,(reduce (fn [m [k v]] (update-in m [k] conj v)) {} (for [i (range 10)] [:a i])) |
| 09:53 | clojurebot | {:a (9 8 7 6 5 ...)} |
| 09:54 | mikerod | ,(reduce (fn [m [k v]] (update-in m [k] (fnil conj []) v)) {} (for [i (range 10)] [:a i])) |
| 09:54 | clojurebot | {:a [0 1 2 3 4 ...]} |
| 09:54 | mikerod | gfredericks: pretty good, I haven't thought of that |
| 09:55 | mikerod | and s/concat/into/ does solve the stack issue. Good point. I guess I like the reduce approach more since it seems more straight-forward instead of making a bunch of mini-maps to merge (if I didn't have maps to start with). |
| 09:55 | gfredericks | yeah definitely |
| 09:55 | gfredericks | concat vs into is good to know about though |
| 09:56 | gfredericks | the concat issue is one of the main gotchas with lazy seqs |
| 09:56 | mikerod | that is good to know. I had to think about it a minute. I've never used into in that way before. |
| 09:56 | mikerod | yeah, the lazy seq problem bit me once now with concat. it was fairly difficult to track down. |
| 10:00 | prio | Trying to recreate a flapjax example in cljs using core.async and was wondering if anyone had any suggestions on how I could do it better? https://gist.github.com/prio/7546572. Atm I am using alt! and two similar but different recur calls as I want it to unblock if a value is out on either channel. |
| 10:05 | nDuff | coventry: ...well, the most immediate use case is figuring out when a code change will break an interface anyone else (among our >100 active projects) depends on. |
| 10:06 | coventry2 | Ah, I get it. Very cool. |
| 10:06 | coventry2 | gfredericks: Is there a jira bug for the concat stack overflow problem? I'd like to see how people have tried to solve it. |
| 10:08 | danneu | prio: i think your recurs only looks redundant because you shadow x and y. |
| 10:09 | danneu | prio: even [x'] and [y'] would be more clear |
| 10:11 | prio | danneu: Ok, thanks. I guess there is no function that returns the latest value from an updated channel and the last from every other channel then? |
| 10:11 | danneu | prio: well, your go-loop binding already acts as a ratchet for the last value of other channels |
| 10:12 | clgv | coventry2: the stackoverflows when using `concat` are due to stacking one lazyseq on another repeatedly until there are as much to overflow the stack |
| 10:12 | danneu | so passing unchanged x and y back into recur is pretty clear there unless i'm missing the mark |
| 10:12 | clgv | coventry2: usually, do not use `concat` recursively. |
| 10:12 | danneu | prio: or are you saying the code doesn't actually do what you're trying to do? |
| 10:13 | prio | danneu: No code works fine, just wondering if there was a better way to do it |
| 10:13 | coventry2 | clgv: There's no obvious recursion in mikerod's example, though. |
| 10:14 | clgv | coventry2: ah right, in this case it is sequential stacking concats |
| 10:14 | danneu | prio: dunno but that `start` function is pretty clear to me, especially if you changed it to (recur x' y) and (recur x y') |
| 10:14 | gfredericks | coventry2: yeah I agree with clgv that there's not an obvious problem; the only thing I could imagine doing is having lazy seqs keep track of how nested they are and do some auto-realization if they get too nested; which sounds sketchy |
| 10:15 | prio | danneu: Ok, thanks, good to get another opinion on it. |
| 10:16 | gfredericks | coventry2: usually when this comes up people are using laziness when they don't need it |
| 10:17 | coventry2 | OK. Interesting. |
| 10:18 | gfredericks | I'm starting to realize the `this` arg is often useful with records |
| 10:18 | gfredericks | for doing updates via assoc/update-in instead of calling the constructor directly |
| 10:18 | danneu | i often find myself bike-shedding my own code. -- i have no clue how to refactor some of the truly hard to read clusterfuck, but i'll spend an hour playing with ways to compress the only function i'll understand in 3 days |
| 10:19 | danneu | take those 5 tokens down to 3 |
| 10:19 | danneu | a maverick |
| 10:34 | prio | danneu: Yeah, know what you mean :) |
| 10:35 | seangrove | bitemyapp: What's the meetup? |
| 10:35 | seangrove | Nevermind, found it |
| 10:36 | seangrove | Oh, it's at Mixrank? How interesting. Scott is a wizardly fellow, wonder if they've changed their stack in the past few years. |
| 10:41 | silasdavis | I am logging with Timbre. Should I be wrapping a logging statement and the function body in a (do ...) block or is it ok just to put (debug "blah") before the rest of the function? |
| 10:42 | justin_smith | the body of a function is an implicit do, if that is what you mean |
| 10:43 | justin_smith | ,((fn [] 1 2 3 4)) |
| 10:43 | clojurebot | 4 |
| 10:43 | seangrove | Which is sometimes annoying. |
| 10:44 | seangrove | Would be nice to get a warning, "WARNING: forms 1, 2, 3 in ((fn [] 1 2 3 4)) are dead code" |
| 10:45 | danneu | seangrove: then i couldnt pretend `def` actually has a docstring arg in peace |
| 10:45 | justin_smith | but it does have a docstring arg |
| 10:45 | justin_smith | def does not have an implicit do |
| 10:45 | danneu | it does? |
| 10:45 | danneu | oh wait, def is not what i meant |
| 10:46 | danneu | defmethod or something |
| 10:46 | coventry2 | seangrove: Sounds hard in general. You would basically need a way to detect pure functions whose results aren't used. |
| 10:46 | justin_smith | danneu: http://sprunge.us/SMfC?clojure |
| 10:47 | seangrove | coventry2: Maybe - if primitives/uninvoked-functions, in a list like that passed in a fully macro-expanded form, you could tell it won't be used, right? |
| 10:48 | danneu | justin_smith: i pretend defmethods have docstrings tho |
| 10:48 | danneu | after the params |
| 10:48 | justin_smith | ahh |
| 10:49 | coventry2 | seangrove: You could definitely detect unused primitives that way |
| 10:49 | danneu | got no time for ^{:doc _} |
| 10:49 | justin_smith | sounds like a feature request for lein kibit |
| 10:56 | gfredericks | danneu: that wouldn't work anyways |
| 11:03 | noncom | what is the best way to check if a vector is a map entry? |
| 11:04 | noncom | like ,(vector? [:a 1]) |
| 11:04 | noncom | ,(vector? [:a 1]) |
| 11:04 | clojurebot | true |
| 11:04 | noncom | ,(map-entry? [:a 1]) |
| 11:04 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: map-entry? in this context, compiling:(NO_SOURCE_PATH:0:0)> |
| 11:07 | noncom | ,(mapv #(= (type %) clojure.lang.MapEntry) {:a 1}) |
| 11:07 | clojurebot | [true] |
| 11:07 | danneu | gfredericks: haha yeah, youre right |
| 11:07 | noncom | is the only way i can think og |
| 11:08 | danneu | gfredericks: so we're left to comments to document defmethods |
| 11:08 | noncom | or |
| 11:08 | noncom | ,(mapv #(instance? clojure.lang.MapEntry %) {:a 1}) |
| 11:08 | clojurebot | [true] |
| 11:19 | poppingtonic | ,(mapv #(instance? clojure.lang.MapEntry %) [:a 1]) |
| 11:19 | clojurebot | [false false] |
| 11:21 | clgv | I want to implement a REST service where the calculations might consume some considerable amount of time. It needs to be able to maintain around 4000 such calls. the weberver should not run out of threads that accept those requests. is this possible with ring? |
| 11:21 | clgv | to simplify the description: the REST service is synchronous whereas the calculation the requests trigger are asynchronous |
| 11:22 | swarthy | If any of the Caribou guys are on now I would love help with this issue I'm having: https://github.com/Kodowa/Light-Table-Playground/issues/907 |
| 11:26 | justin_smith | hey swarthy I'm a caribou guy |
| 11:26 | justin_smith | also we have #antler and try to hang out there (hopefully eventually we will acquire #caribou) |
| 11:27 | gfredericks | danneu: it's not really clear what the effect of docstrings on defmethods would be; how would they be accessible? where would you see them? |
| 11:28 | justin_smith | swarthy: is the issue that we are requiring too old a version of fs? |
| 11:28 | justin_smith | indirectly I am sure |
| 11:28 | swarthy | justin_smith: that is what Chris Granger implies in his response |
| 11:28 | justin_smith | I don't even know what fs is, I think it is an indirect dependency |
| 11:29 | justin_smith | for a workaround you could use an :exclude clause in your project.clj to force the right version to come in |
| 11:29 | justin_smith | I find the lein-pedantic plugin is very helpful for this sort of thing |
| 11:29 | swarthy | It is a filesystem utility. Caribou.core states that it uses me.raynes/fs, but he had an old version called simply 'fs' |
| 11:29 | swarthy | justin_smith: I will look into lein-pedantic |
| 11:30 | justin_smith | ahh, now I see that, yeah, me.raynes/fs |
| 11:30 | swarthy | here is the old one on clojars |
| 11:30 | justin_smith | if there is a newer version of fs that does not break our code we should definitely upgrade |
| 11:30 | swarthy | https://clojars.org/fs |
| 11:31 | swarthy | i think you have the new one |
| 11:31 | swarthy | but i'm getting that old one instead |
| 11:31 | swarthy | somehow |
| 11:31 | justin_smith | ahh |
| 11:31 | justin_smith | so it is not our fault, and here I was ready to be helpful :) |
| 11:31 | justin_smith | lein pedantic will tell you where that version conflict is |
| 11:32 | justin_smith | along with a bunch of other annoying version conflicts you don't care about, likely |
| 11:32 | justin_smith | also, it may be easier to just explicitly depend on [me.raynes/fs "1.4.5"] |
| 11:32 | justin_smith | then do a clean |
| 11:33 | justin_smith | I think lein should do the right thing in that case? |
| 11:35 | swarthy | but isn't caribou.core doing that explicit declaration already? when I do 'lein deps :tree' I don't even see 'fs' in the list, but I do see the me.raynes/fs there. |
| 11:36 | sjl- | anyone know if there's a way to use korma with postgres UUID columns? right now I get https://www.refheap.com/21054 when I try to insert |
| 11:37 | justin_smith | swarthy: I think something else is pulled in first that is getting a different version |
| 11:38 | justin_smith | that is where explicit deps or :exclusions can help |
| 11:38 | justin_smith | worst case: some dep is :aot compiled with the wrong version |
| 11:38 | iyouni | ! fast |
| 11:39 | iyouni | ! |
| 11:41 | solussd | anyone using core.async production? |
| 11:41 | solussd | i mean, what could possibly go wrong, right? :) |
| 11:42 | justin_smith | we have it in clojure and clojurescript code in prod, it's less janky than some of our other deps :) |
| 11:43 | marcopolo2 | solussd: I am! |
| 11:43 | solussd | excellent! |
| 11:43 | ToBeReplaced | i've had the clojure version in production for a few months, but no stream ops |
| 11:43 | seangrove | We use it in our cljs production code |
| 11:43 | marcopolo2 | solussd: using it with my servant library for webworkers https://github.com/marcopolo/servant |
| 11:44 | marcopolo2 | which is being used to parrallelize encryption at cryptic.io |
| 11:44 | solussd | oh cool, a webworker lib. *adding to my toolbox |
| 11:45 | marcopolo2 | I talked to a couple people at the conj on how we are using clojure at my startup, Cryptic. We just launched our kickstarter campaign today, let me know what you guys think! http://kck.st/I1hFCHon ion |
| 11:45 | marcopolo2 | ~//kk |
| 11:45 | clojurebot | excusez-moi |
| 11:45 | justin_smith | I'm using it for an async task pool that resizes images as requested by the template in parallel with template rendering (so response to the client doesn't need to wait on the resize process to finish). This is experimental in a client site now, but should show up in a future version of lichen. |
| 11:51 | mikerod | ,(read-string "^{:m true} (assoc {} :a 1)") |
| 11:51 | clojurebot | (assoc {} :a 1) |
| 11:53 | mikerod | why do I not see this coming back as (with-meta (assoc {} :a 1) {:m true})? |
| 11:53 | mikerod | I thought this was a reader macro |
| 11:54 | trptcolin | ,(meta (read-string "^{:m true} (assoc {} :a 1)")) |
| 11:54 | clojurebot | {:m true} |
| 11:54 | clgv | I plan a `ring` application where approx 4000 request will be made that block for 6-20 seconds. will that work? |
| 11:54 | mikerod | ,(read-string "@a") |
| 11:54 | clojurebot | (clojure.core/deref a) |
| 11:55 | mikerod | I expected to see it just return code |
| 11:55 | mikerod | like @ => deref |
| 11:55 | mikerod | ,(read-string "#'a") |
| 11:55 | clojurebot | (var a) |
| 11:55 | mikerod | ,(read-string "^:m a") |
| 11:55 | clojurebot | a |
| 11:55 | clgv | mikerod: reader literals are expanded by read-string |
| 11:56 | mikerod | ^:m is not a reader literal then? |
| 11:56 | mikerod | I thougth it was short hand for `with-meta` |
| 11:56 | mikerod | guess I misinterpret |
| 11:56 | clgv | mikerod: yeah, it is a with-meta at macro expansion time |
| 11:57 | clgv | so the code gets the meta |
| 11:58 | gfredericks | mikerod: reader macros don't always just expand to something else |
| 11:58 | mikerod | so do the values of the metadata map have to be able to be determined at macroexpansion time? |
| 11:58 | gfredericks | yes |
| 11:58 | gfredericks | in fact they're not eval'd at all I don't think |
| 11:59 | gfredericks | ,(-> "^{:foo (I am not eval'd)} {}" read-string meta) |
| 11:59 | clojurebot | {:foo (I am not eval'd)} |
| 11:59 | mikerod | I don't think I've ever read that before on the topic |
| 11:59 | mikerod | interesting |
| 12:02 | stompyj | Anyone here have experience building a REST Api server in clojure, who's brain I could pick for a couple mins? |
| 12:04 | gfredericks | stompyj: probably a lot of people |
| 12:05 | gfredericks | ~anyone |
| 12:05 | clojurebot | anyone is anybody |
| 12:05 | gfredericks | ~anybody |
| 12:05 | clojurebot | anybody is anyone |
| 12:05 | gfredericks | aaargh |
| 12:05 | clgv | clojurebot: muhahaha you played him! botsnack |
| 12:05 | clojurebot | Pardon? |
| 12:05 | stompyj | hahahahahahahahaha |
| 12:11 | stompyj | I'm curious if people have experience with either using compojure/ring + liberator vs using something heavier like luminus and then adding in liberator |
| 12:12 | hiredman | I would be surprised if liberator is used a lot currently |
| 12:13 | clgv | stompyj: isnt luminus just a big meta dependency to pull in compojure, ring and other libs? |
| 12:13 | hiredman | I would guess most apis are just ring and compojure |
| 12:13 | stompyj | clgv: pretty much. Half the libs I wouldn't need at all (templating for example), but other things like auth I would need. |
| 12:14 | stompyj | Meh, I should just do ring/compojure/liberator |
| 12:14 | clgv | stompyj: then just start with the dependencies you know you need |
| 12:14 | gfredericks | if my root namespace is "public" that would mean that compojure would (by default) serve my source code (via the resources route) amirite? |
| 12:15 | stompyj | yeah, I'm focused more on speed of dev then anything else |
| 12:15 | stompyj | thanks clgv |
| 12:17 | zachallaun | cemerick: Finally gave Austin a fair shot. Great work! Finally a clojurescript repl I can actually recommend to people. |
| 12:18 | divyansr | Any one aware of issue (I am not sure it's issue) why :pre in function definition is not working in lein. I am using version 2.3.2 and clojure version is 1.5? |
| 12:18 | cemerick | zachallaun: hey, thanks, glad it worked out for you. More ease to come. :-) |
| 12:19 | hiredman | divyansr: most likely you have it in the wrong place, it goes right after the argument vector |
| 12:20 | gfredericks | yes indeed; compojure servers your source code if your namespaces are public.* :) |
| 12:20 | gfredericks | this will be more of a problem once somebody buys and popularizes the ".public" TLD |
| 12:21 | stompyj | One other question. Are there any good auth libraries for web services? Is friend still the leader? |
| 12:21 | hiredman | gfredericks: good thing there is already a work around |
| 12:21 | divyansr | I think I have in right place. I typed same thing in clojure REPL it's working but not in lein repl , https://www.refheap.com/21058 |
| 12:21 | hiredman | gfredericks: "configure the software" |
| 12:21 | hiredman | divyansr: you do not |
| 12:21 | hiredman | the docstring is in the wrong place too |
| 12:22 | gfredericks | hiredman: that didn't stop people from getting upset about *read-eval* :P |
| 12:22 | hiredman | as I said the pre/post goes right after the arg vector |
| 12:22 | hiredman | and the docstring goes right after the name |
| 12:23 | hiredman | gfredericks: *shrug* people |
| 12:23 | ToBeReplaced | stompyj: someone just released a new one for pedestal -- check the mailing list |
| 12:24 | clgv | stompyj: I am using `friend` for authentication in a server ui |
| 12:24 | gfredericks | do java web frameworks make the same assumption? |
| 12:24 | stompyj | clgv: how have you found it? |
| 12:24 | gfredericks | or does the war spec separate static files from the classpath? |
| 12:25 | clgv | stompyj: after understanding how ring handlers work and finding the right place in the handler chain it works like a charm |
| 12:25 | clgv | stompyj: but I only use the form login workflow |
| 12:28 | stompyj | clgv: ok cool, I'll look into it! thanks! What other libs are you using for your server? |
| 12:29 | stompyj | Also, lots of clojure libs have German names |
| 12:29 | stompyj | interesting |
| 12:29 | gfredericks | "clojure" itself is german for "perl" |
| 12:29 | dee5 | Hey, could anyone explaint the difference between emacs' clojure-mode, cider, and nrepl packages? |
| 12:30 | stompyj | hahahahahahahahahahahah |
| 12:30 | clgv | gfredericks: that's wrong :P |
| 12:30 | stompyj | gfredericks: that would be amazng |
| 12:30 | stompyj | dee5: I don't know, but I know rom the "state of clojure" thing that most people are using cider |
| 12:30 | gfredericks | dee5: cider is the new name of nrepl.el |
| 12:31 | technomancy | dee5: clojure-mode is for static functionality; indentation and syntax highlighting etc |
| 12:32 | dee5 | awesome, my understanding is that nrepl is outdated, and cider and clojure-mode can be used together |
| 12:32 | dee5 | thanks everyone |
| 12:32 | technomancy | dee5: it's not outdated; it still works fine |
| 12:33 | dee5 | I didn't mean it in a negative way. I just assumed that cider would have a superset of functionality |
| 12:33 | stompyj | whats the port of emacs people use on os x? |
| 12:33 | technomancy | dee5: it has a few more features but less stability |
| 12:33 | technomancy | stompyj: emacsformacosx.com |
| 12:34 | stompyj | LOL |
| 12:34 | stompyj | awesome |
| 12:34 | dee5 | technomancy: would you recommend one over the other? |
| 12:35 | technomancy | dee5: I'm still using nrepl.el myself; haven't seen a reason to upgrade yet |
| 12:37 | dee5 | technomancy: Thanks! Good to know! |
| 12:39 | technomancy | bitemyapp: https://mobile.twitter.com/ericnormand/status/402851111066796032 o_O |
| 12:40 | solussd | core-async question: how can you check if a channel is open (e.g., if I wanted to use a channel being closed as a stopping condition) |
| 12:42 | seangrove | technomancy: Similarly confused. Accidental nils and the havoc they wreak cause my jaws to clench. |
| 12:42 | stompyj | Other other very stupid question. If I do a "lein new <template>" command, is there the opposite of that? meaning, a command to delete those same files? |
| 12:42 | dnolen | wowzers https://github.com/aamedina/cljs.core.logic |
| 12:42 | clojurebot | excusez-moi |
| 12:42 | hiredman | ]\ |
| 12:43 | llasram | stompyj: Like, rm -rf ? |
| 12:44 | stompyj | llasram: well, yes, that's the "use extreme force" way to do it, I was wondering if there was a gentler solution. :) |
| 12:46 | justin_smith | move the directory that the template created into the trash bin? |
| 12:48 | stompyj | cool, so manual pruning is the answer |
| 12:48 | justin_smith | I think. I don't know of any lein template defining it inverse |
| 12:48 | justin_smith | so maybe lein new should just return an error if it finds the directory already existing |
| 12:49 | justin_smith | to prevent the one failure case where you fill a pre-existing directory with a bunch of stuff from a template |
| 12:49 | stompyj | yeah, that's fine, I didn't see it in the docs, and wondered if it was a hidden option or something |
| 12:49 | trptcolin | it already does, i'm pretty sure |
| 12:49 | trptcolin | "Could not create directory /tmp/foobar. Maybe it already exists?" |
| 13:01 | upwardindex | What could cause (get @a 0) and (get-in @a [0]) to behave differently in cljs? |
| 13:07 | noncom | is there a way to specify exclusions to :refer :all ? |
| 13:07 | dnolen | upwardindex: gist please |
| 13:07 | joegallo | noncom: i don't think so |
| 13:08 | llasram | noncom: No, but if you add an explicit `:refer` form then you can specify `:exclude` for it |
| 13:08 | noncom | what you mean "explicit"? |
| 13:10 | llasram | noncom: Like (ns example.ns (:require ...) (:refer ...)) |
| 13:10 | llasram | &(doc refer) |
| 13:10 | lazybot | ⇒ "([ns-sym & filters]); refers to all public vars of ns, subject to filters. filters can include at most one each of: :exclude list-of-symbols :only list-of-symbols :rename map-of-fromsymbol-tosymbol For each public interned var in the namespace named by the symbol, a... https://www.refheap.com/21060 |
| 13:10 | noncom | i see! |
| 13:12 | coventry2 | marcopolo2: Your kickstarter link 404s for me. |
| 13:14 | BobSchack | coventry2: I think this is the link http://www.kickstarter.com/projects/cryptic-io/cryptic-encrypted-online-storage |
| 13:14 | podviaznikov | stompyj: have you seen https://github.com/clojure-liberator/liberator? |
| 13:19 | coventry2 | BobSchack: Thanks. |
| 13:19 | BobSchack | NP |
| 13:29 | upwardindex | dnolen: here is the gist: https://gist.github.com/jsab/7550088 |
| 13:33 | danneu | registered at oracle and this is their country selector: http://i.imgur.com/d8Avbtp.png |
| 13:35 | dnolen | upwardindex: get on JS objects isn't going to work |
| 13:37 | upwardindex | dnolen: In this case, get seems to work, get-in is the one that does not |
| 13:39 | dnolen | upwardindex: get doesn't work on JS objects plain and simple, it does work on JS arrays to maintain parity with CLJ |
| 13:40 | upwardindex | dnolen: ok, i just saw one of your answers on SO, I guess in this case I should use aget? |
| 13:40 | dnolen | upwardindex: or you can extend-type object to ILookup |
| 13:54 | seangrove | bitemyapp: Did the ps4 controller work with the osx emulators? |
| 14:04 | ToBeReplaced | anyone have a general-purpose routing recommendation? i'm looking to dispatch messages coming off of a channel to different functions depending on the content |
| 14:05 | ToBeReplaced | i'd like it if the routing information was data as well |
| 14:07 | pbostrom | ToBeReplaced: multimethod? |
| 14:11 | marcopolo2 | coventry2: darn |
| 14:11 | marcopolo2 | how about this: http://kck.st/I1hFCH |
| 14:14 | coventry | marcopolo2: Thanks. |
| 14:16 | ToBeReplaced | pbostrom: yeah. :). silly me |
| 14:22 | stompyj | podviaznikov: yeah, this is what I'm going to be using |
| 14:26 | gfredericks | TIL you can use get with arrays |
| 14:47 | TimMc | huh |
| 14:47 | TimMc | &(get (into-array (range 10 20)) 3) |
| 14:47 | lazybot | ⇒ 13 |
| 15:05 | stompyj | &(get (into-array (range 10 20)) 3) |
| 15:05 | lazybot | ⇒ 13 |
| 15:06 | stompyj | &(take 1 '(1 2 3 4)) |
| 15:06 | lazybot | ⇒ (1) |
| 15:06 | stompyj | innnnteresting |
| 15:28 | oli` | (+ 1 1) |
| 15:28 | clojurebot | 2 |
| 15:31 | gfredericks | ,(* 2 3 7) |
| 15:31 | clojurebot | 42 |
| 15:33 | sritchie | cemerick: around? |
| 15:34 | cemerick | sritchie: off for a run shortly, but shoot :-) |
| 15:34 | sritchie | I'm doing a json auth workflow, |
| 15:34 | sritchie | slightly different than the one floating around the internet; |
| 15:34 | sritchie | and finding that if I return redirect false, I'm not getting any Set-Cookie goodness in the response |
| 15:34 | cemerick | sritchie: gist, pls? |
| 15:35 | sritchie | sure, one sec |
| 15:36 | sritchie | https://gist.github.com/sritchie/7552129 |
| 15:38 | sritchie | cemerick: actually, even setting redirect-on-auth false for the interactive login form gets the cookie |
| 15:38 | cemerick | sritchie: oh, you mean twiddling :redirect-on-auth? to false produces no cookie? |
| 15:38 | sritchie | must be something about the way I'm returning the auth map.. |
| 15:39 | sritchie | cemerick: in the json workflow, yes |
| 15:39 | sritchie | in the interactive-form-workflow, on change |
| 15:39 | sritchie | no change* |
| 15:39 | sritchie | let me stare at it again... |
| 15:40 | sritchie | cemerick: friend authentication routing as a function of route, request type and content-type can get pretty messy |
| 15:40 | sritchie | cemerick: would love to see some best practices |
| 15:41 | cemerick | sritchie: I think you may be inventing them :-P Not a lot of requirements for / experience with content-neg on auth floating around. |
| 15:41 | sritchie | gotcha |
| 15:41 | sritchie | doing a JSON version for an iOS app now |
| 15:42 | cemerick | sritchie: OK, pretty certain that's a bug. Can you file a ticket? |
| 15:42 | seangrove | Ok, I think I might have some ideas for sane cljs ui templating |
| 15:43 | sritchie | cemerick: sure, will do |
| 15:43 | seangrove | Really, we can copy some of the ideas from html/xaml, and just extend the hiccup format with standard controls. [:dropdown [:menu-button "One"]], etc. |
| 15:43 | sritchie | making sure I have it all understood, though... |
| 15:44 | seangrove | And then libraries can provide implementations of transformations for the :dropdown, :menu-button, etc. primitives and compound objects |
| 15:44 | cemerick | sritchie: the basic problem is that setting that false will end up never touching the :session, thus no cookie. You're needing a 200 response to keep e.g. XHR from failing on an initial login req? |
| 15:44 | sritchie | yeah, I just don't want to redirect on the JSON api version of these routes |
| 15:44 | sritchie | so hitting unauthorized gives you a 401 |
| 15:44 | cemerick | sure |
| 15:45 | seangrove | Assuming some subset of widgets are common across all libraries, it allows abstracting some of the frameworks (bootstrap, clojure ui, etc.), but still providing specialized transforms for specific libraries |
| 15:45 | cemerick | sritchie: def. a bug, should be a quick fix. I'll look at it tonight. Still open the ticket though so I remember. :-) |
| 15:45 | sritchie | okay, thanks man |
| 15:46 | seangrove | Then, UI's are declarative data structures. At least to get started. |
| 15:46 | seangrove | I suppose then the challenge is behavior and mutability. But I'll come to that later. Liking this initial idea. |
| 15:49 | seangrove | Would love to hear thoughts from people experienced with xaml and (especially) IB |
| 15:49 | seangrove | I don't think there's a huge overlap in here, sadly |
| 15:50 | ibdknox | seangrove: you're basically talking about web components, take a look at polymer |
| 15:51 | seangrove | ibdknox: I suppose I am, actually. |
| 15:51 | seangrove | Good point, thanks. |
| 15:57 | tbaldridge | seangrove: I've worked longer than I would have liked with XAML. I agree the declarative portions of it are awesome. Doing it without mutability is the hard part. The whole databinding part of it is a major pain in large projects. |
| 15:58 | seangrove | tbaldridge: Just thinking about at least getting the ui as a clojure data structure and transforming it like any other data structure. |
| 15:58 | seangrove | I haven't worked with xaml almost at all though, just heard that it had some good idaes |
| 15:59 | tomc | Would anyone mind helping me out with some leiningen troubles? |
| 16:00 | tbaldridge | yeah, it's pretty sweet. One of the core ideas though is that you can do stuff like bind a list box to a mutable list. Add something to the list and it magically appears on the screen. Declarative UI, FTW! However now you have mutability in your ui, and its easy to have race conditions and the like. |
| 16:01 | tbaldridge | seangrove: YMMV however, I was dealing with a very complex set of rules. |
| 16:02 | tbaldridge | seangrove: keep an eye on pedestal as well, I've seen some people do stuff like this with pedestal. Also, QT's declarative language does stuff a lot like this. |
| 16:02 | seangrove | tbaldridge: I'm thinking a lower-level, declarative ui layout with composable widgets, and generic, extensible behavior with callback+channel apis |
| 16:02 | seangrove | But yeah, the elephant in the room is always how you make mutability explicit and handled |
| 16:03 | seangrove | Not super interested in data-binding as much as channels-based api, something data-binding could be built on top of |
| 16:05 | hyPiRion | tomc: just ask them, if someone knows it they usually reply if they are on |
| 16:05 | seangrove | I'll admit it's pretty fuzzy and hand-wavey though. I'm just hating all this client-side ui work, and pretty eager to move it all up a layer or two |
| 16:09 | tomc | Thanks hypirion. I'm having problems with cljx, and not sure where to look for a solution. If I try to run lein cljx once to 'compile' my cljx files to clj + cljs, I get a compilation error - FileNotFound. It appears as though lein is trying to compile my clj before cljx has had a chance to write the file. Is that the way lein works? Compile the project, then run the current task? |
| 16:09 | handojin | anybody know why you can't add nil values to a datomic database? |
| 16:10 | tbaldridge | handojin: because then you couldn't tell if an attribute exists or not. and also because its that way by design |
| 16:10 | marcopolo2 | dnolen: ping |
| 16:12 | handojin | hmmm - not sure i understand |
| 16:13 | handojin | the attribute exists (e.g. user/age) |
| 16:13 | TimMc | tbaldridge: "because its that way by design" ... |
| 16:13 | handojin | but the value is unknown (null/nil) |
| 16:13 | hyPiRion | tomc: no, that shouldn't be the case if I know right. Unfortunately I don't know how cljx works, but I would attempt to look at the documentation (if it's good enough) |
| 16:14 | hyPiRion | tomc: maybe this may help you? https://github.com/emezeske/lein-cljsbuild/tree/1.0.0/example-projects/simple |
| 16:16 | tbaldridge | handojin: the problem is basically that datomic treats these as the same {:some/attr nil} {} |
| 16:17 | tbaldridge | handojin: it's a design decision, if you want an attribute as nil, just don't save the attribute in the first place. In datomic, all attributes (except :db/id) are optional. So if a value is nil, just don't assert the attribute |
| 16:17 | tomc | hypirion: thanks for the example. I actually had a working project.clj, but then I ran lein clean, and then my trouble began. My hacky solution was to remove references to the cljx namespace, compile, then add those references back in... good enough for now. |
| 16:17 | dnolen | marcopolo2: pong |
| 16:17 | bitemyap1 | tbaldridge: I agree with that decision by the by, I explained it to my coworkers recently. |
| 16:18 | bitemyap1 | tbaldridge: I don't think having a distinct "attribute exists but is nil" state between "attribute is not asserted" and "attribute is asserted and has this value" is a good thing. |
| 16:18 | bitemyap1 | it eliminates ambiguity and keeps people from doing something insanely stupid in terms of embedding some kind of implicit intermediate state to their data model. |
| 16:18 | tomc | hey @piranha, are you the same piranha behind pump? |
| 16:18 | hyPiRion | tomc: whoops, sorry. I realized that that one was cljsbuild, not cljx. Anyway, good to know that you found a workaround. If the problem persists, I would suggest creating an issue at github |
| 16:20 | tbaldridge | bitemyap1: agreed, if I saw Clojure code that made a difference between (nil? (:foo {})) and (contains? :foo {}), I'd call it a major code smell. |
| 16:20 | handojin | @tbaldridge ok - more or less Chris Date's position re: null in dbs then? |
| 16:20 | tomc | hypirion: I was actually seeing the issue w/ cljsbuild as well, which leads me to suspect its a lein issue. I don't necessarily think its an issue in the 'bug' sense, just something must be wonky with my setup. I'll ask for help from the lein folks if the problem persists. Thanks for the help. |
| 16:21 | hyPiRion | tomc: if you ask the question in #leiningen and is on IRC for some time, I may have time to look at it |
| 16:21 | bitemyap1 | tbaldridge: ditto. I've seen people do stuff like that in Python and I took a flamethrower to that code. |
| 16:21 | hyPiRion | not right now though, but later today |
| 16:22 | tomc | hypirion: great, i'll do that. |
| 16:22 | tbaldridge | handojin: I'm not familiar with Chris Date. But from what I just read via google, I'd probably agree. |
| 16:22 | hyPiRion | tomc: you could also ask on the Leiningen mailing list |
| 16:24 | handojin | so the appropriate way of dealing with a large dataset containing null values would be to filter them out (or replace them with some sensible value) prior to transacting? |
| 16:25 | marcopolo2 | dnolen: I know that kid @taoeffect, he goes to my school. He's pretty annoying, I'll make sure to slap him for you :P |
| 16:25 | dnolen | marcopolo2: haha :) |
| 16:25 | dnolen | marcopolo2: his point about externs is actually a good one |
| 16:25 | dnolen | http://dev.clojure.org/jira/browse/CLJS-686 |
| 16:25 | dnolen | for anyone who wants to contribute to some low hanging fruit |
| 16:25 | marcopolo2 | dnolen: well that's surprising... |
| 16:25 | technomancy | I think he's one of the guys who posted a "let's do a paren-free clojure syntax" proposal a few years ago |
| 16:26 | dnolen | technomancy: same guy |
| 16:26 | marcopolo2 | really? |
| 16:26 | marcopolo2 | wow |
| 16:26 | mybuddymichael | Does anyone know if the address at http://clojure.org/contributing is still valid? |
| 16:26 | marcopolo2 | Now I'll have to beat him up ;) |
| 16:26 | dnolen | mybuddymichael: it is |
| 16:26 | s_kilk | hi all, i've just come across a strange issue with the selmer library while running a compojure app on fedora. everything works ok, except for one <img> tag being completely missing from the rendered page. it's simply not present in the output html. works fine on ubuntu though. anyone heard of an issue like this before? |
| 16:26 | mybuddymichael | dnolen: Great, thanks. |
| 16:27 | justin_smith | s_kilk: that sounds weird - if you make an uberjar on one, does it keep the same behavior when you run it with java -jar on the other? |
| 16:28 | bitemyap1 | s_kilk: version of Selmer? |
| 16:28 | s_kilk | ah, will try an uberjar. also just spotted that i was using selmer 1.4 , will also try updating to 1.5 |
| 16:28 | bitemyap1 | s_kilk: there is no Selmer 1.4 or 1.5 |
| 16:28 | bitemyap1 | s_kilk: the current version is 0.5.2 |
| 16:28 | s_kilk | sorry, 0.4 and 0.5 :) |
| 16:29 | bitemyap1 | s_kilk: upgrade first, *then* try the uberjar. |
| 16:29 | s_kilk | will try it with 0.5.2 |
| 16:29 | bitemyap1 | why do people always leave? weirdos. |
| 16:30 | TimMc | Short-timers, man. |
| 16:31 | TimMc | It's even worse in low-traffic channels; "Anyone here?" and then 30 seconds later they're gone. |
| 16:33 | bitemyap1 | TimMc: anti-cancer of IRC. |
| 16:36 | TimMc | Nah, they're teachable. |
| 16:37 | TimMc | A lot of these folks are perfectly intelligent and reasonable, they just don't understand the communcication model of IRC. |
| 16:38 | bitemyap1 | TimMc: oh, I didn't mean in a permanent sense. |
| 16:38 | bitemyap1 | TimMc: I think people in general have a really hard time with asynchronous communication models. Email was nice in part because it forced people to accept the async. |
| 16:41 | shane_k | hi all, I've upgraded to selmer 0.5.2 and still have the problem with the missing img tag. also tried building an uberjar and it has the same problem. |
| 16:41 | bitemyap1 | shane_k: time to paste examples. use refheap. |
| 16:42 | justin_smith | shane_k: my suggestion was to see if, since server a and serve b have different behaviors, if an uberjar built on a changes behavior when run on b |
| 16:43 | shane_k | well the specific problem is in this file here : https://github.com/ShaneKilkelly/warbl/blob/master/src/warbl/views/templates/profile.html , the img tag on line 6 is simply not present in the output. i've tried just putting in any old url in there and that works ok. the exact same project also works fine on ubuntu linux. |
| 16:43 | shane_k | justin, good call on building on one server and testing on another. will give that a try. |
| 16:43 | shane_k | it's a dual-boot laptop with ubuntu and fedora, so it's a bit awkward going back and forth :) |
| 16:44 | justin_smith | ahh |
| 16:44 | justin_smith | are they using the same directory and just different jvms? |
| 16:44 | justin_smith | do they share the same ~/.m2 directory? |
| 16:45 | TimMc | bitemyap1: http://clojure-log.n01se.net/date/2011-03-24.html#15:34 |
| 16:45 | shane_k | it's the same project checked out from git. i had been developing on ubuntu, then today i got the urge to try out fedora, and hit this problem. no, the two partitions don't share any common resources. they're two separate disks |
| 16:45 | shane_k | and i tried blowing away the .m2 directory too |
| 16:45 | justin_smith | how about lein clean? |
| 16:46 | shane_k | will give it a go |
| 16:46 | justin_smith | sometimes it caches compiled stuff inapropriately |
| 16:47 | akurilin | Is there an interpolated alternative to pprint/println ? I'm wondering if everybody just does manual concatenation with str or if people use something like cl-format pretty actively. |
| 16:48 | shane_k | nope, still nothing. it seems to be only image tags which have some value interpolation involved which are affected. i can hard-link to an image and it works ok. any attempt to dynamically insert a src value fails to render the img tag at all. |
| 16:48 | llasram | akurilin: printf / format ? |
| 16:50 | handojin | i've decided to just suck up learning cl-format - more efficient in the long run |
| 16:50 | akurilin | llasram, cool, so these are basically wrappers around java's system.out functions with same name? |
| 16:50 | llasram | Let's ask the bots! |
| 16:50 | llasram | ,(source printf) |
| 16:50 | clojurebot | Source not found\n |
| 16:50 | llasram | haha |
| 16:50 | llasram | &(source printf) |
| 16:50 | lazybot | java.lang.RuntimeException: Unable to resolve symbol: source in this context |
| 16:50 | llasram | Welp |
| 16:50 | gfredericks | akurilin: not quite, they go through *out* |
| 16:50 | llasram | Some other time then |
| 16:51 | gfredericks | ,(str "foo" (with-out-str (println :bar))) ;; which enables this and other stuff |
| 16:51 | clojurebot | "foo:bar\n" |
| 16:51 | justin_smith | printf calls String/format and sends it to print |
| 16:51 | hyPiRion | $source printf |
| 16:51 | lazybot | printf is http://is.gd/YWGnui |
| 16:51 | llasram | Ah |
| 16:51 | gfredericks | ,(->> :bar println with-out-str (str "foo")) |
| 16:51 | clojurebot | "foo:bar\n" |
| 16:52 | akurilin | ok cool, so printf seems pretty good for the job |
| 16:52 | akurilin | there are just so many ways of printing something :) |
| 16:53 | akurilin | Actually, printf for the generic interpolated string. pprint for nicely formatted data structures. What else should I be really comfy with? |
| 16:53 | rasmusto | akurilin: this is a bit more niche, but I like print-table |
| 16:54 | bitemyap1 | my twitter account is currently proof that I am not the grumpiest person on the planet |
| 16:54 | bitemyap1 | that honour belongs to Mr. Zed Shaw |
| 16:54 | TimMc | +1 |
| 16:56 | hyPiRion | akurilin: learning clojure.pprint/cl-format is worth it, imo. |
| 16:56 | technomancy | you never know when you'll need to output roman numerals =) |
| 16:56 | akurilin | hyPiRion, I figured that was what true believers used :P |
| 16:56 | hyPiRion | ,(require '[clojure.pprint :refer [cl-format]]) |
| 16:56 | bitemyapp | I haven't missed it much. |
| 16:56 | clojurebot | nil |
| 16:57 | rasmusto | technomancy: is that where those 4clojure problems come from? :o |
| 16:57 | technomancy | heh |
| 16:57 | hiredman | I seem to have forgotten to include underscore in this keyboard layout |
| 16:57 | hyPiRion | ,(cl-format nil "~{~@R~^, ~}" (range 2 30 3)) ; most useful thing in the world |
| 16:57 | clojurebot | "II, V, VIII, XI, XIV, XVII, XX, XXIII, XXVI, XXIX" |
| 16:58 | technomancy | hiredman: that should save your from writing ruby |
| 16:58 | technomancy | ok, so |
| 16:58 | technomancy | the clojure compiler not even bothering to *check* to see if your ns not found error was due to a dashes vs underscore problem |
| 16:59 | technomancy | horrible disregard for time spent by humans or egregious slap in the face? |
| 16:59 | guns | why not both? |
| 16:59 | hiredman | or rich just trying to get a feature done, and no one ever opening a ticket afterwards? |
| 16:59 | technomancy | guns good point |
| 16:59 | poppingtonic | I'm getting the feeling that the creation of closures is related to currying in some sense... |
| 16:59 | TimMc | Hah, open a ticket for that? |
| 17:00 | TimMc | He'd slap that down as a waste of time in 2 seconds flat. |
| 17:00 | technomancy | hiredman: I'll open a pull request |
| 17:00 | hyPiRion | technomancy: print it on a paper and mail it with you CA |
| 17:00 | hyPiRion | your* |
| 17:00 | rasmusto | pprint* |
| 17:01 | hiredman | TimMc: there is one way to know for sure |
| 17:01 | technomancy | hyPiRion: I've already sent mine in, so I'll let you take it |
| 17:01 | hyPiRion | technomancy: but I've also sent my in |
| 17:01 | jballanc | technomancy: I, for one, would have been saved at least 4-5 hours of my life if that check happened |
| 17:02 | hiredman | jballanc: has some one opened a ticket in the clojure jira for you? |
| 17:02 | jballanc | tbh, I never really considered it ticket-able |
| 17:03 | jballanc | I guess I just figured "well, it's still not as bad as Java's abuse of the FS" |
| 17:03 | hiredman | jballanc: would you like me to open a ticket? |
| 17:03 | jballanc | sure :) |
| 17:03 | hiredman | if not too bad, I am doing it anyway |
| 17:03 | jballanc | I can vote at least |
| 17:03 | jballanc | (still need to send in my CA...one of these days) |
| 17:05 | technomancy | the crazy thing is iirc openjdk+oracle work fine with dashes; it's just technically not in the spec |
| 17:07 | jballanc | Does Rack not have an equivalent of Rack's config.ru or WSGI's wsgi.py file? |
| 17:07 | hiredman | http://dev.clojure.org/jira/browse/CLJ-1297 |
| 17:07 | handojin | http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node200.html |
| 17:07 | jballanc | s/Rack/Ring/ |
| 17:07 | handojin | see table 28-8 |
| 17:07 | hiredman | priority "Major" as always |
| 17:09 | gfredericks | hiredman: as somebody who hasn't read the entire IRC discussion, I can't tell from the ticket what the use case is here. Is it (require 'foo.bar_baz) for ns foo.bar-baz? |
| 17:09 | technomancy | gfredericks: it's for creating foo/bar-baz.clj files |
| 17:09 | gfredericks | ah right |
| 17:09 | technomancy | human failing to work around stupid limitations in the JVM |
| 17:09 | gfredericks | surely that would have been my second guess |
| 17:09 | gfredericks | the "in filenames" part of the ticket title is a bit ambiguous I guess |
| 17:10 | technomancy | I really wish the disconnect was between .clj files and .class files instead of between the ns name and the .clj file name =\ |
| 17:10 | technomancy | just feels like the line was drawn at the wrong point |
| 17:10 | jballanc | hiredman: voted :) |
| 17:10 | technomancy | probably too late to do anything about it though |
| 17:11 | jballanc | technomancy: but honestly, how often does ns loading happen in the running of a production app? |
| 17:11 | jballanc | what would be the *real* cost of just checking for both underscore and dash versions? |
| 17:11 | jballanc | :-/ |
| 17:12 | technomancy | yeap |
| 17:12 | TimMc | (inc hiredman) |
| 17:12 | lazybot | ⇒ 27 |
| 17:13 | bitemyapp | https://github.com/edn-format/edn#symbols seems to forget things like < and > |
| 17:14 | gfredericks | bitemyapp: yeah I asked about that the other day; I convinced myself it was intentional |
| 17:14 | bitemyapp | gfredericks: impossible, you need < and > for use in Datomic with edn queries |
| 17:14 | gfredericks | I noticed it because the haskell edn parser won't take those chars |
| 17:14 | gfredericks | bitemyapp: that's an interesting point |
| 17:14 | bitemyapp | we're adding it to the Python parser and PR'ing |
| 17:18 | gfredericks | does the edn spec have its own jira? |
| 17:19 | gfredericks | if it's not code are there still licensing concerns? |
| 17:19 | bitemyapp | it needs PR'd |
| 17:19 | bitemyapp | I found an example of usage of < on the Datomic main tutorial page |
| 17:20 | bitemyapp | so it's clearly an oversight |
| 17:20 | guns | Another ambiguity is "alphanumeric" characters in symbols; LispReader basically accepts anything, |
| 17:20 | guns | Java identifiers can be any Unicode character |
| 17:20 | guns | but I've been told that Clojure symbols are ASCII only |
| 17:20 | hiredman | told by who? |
| 17:20 | guns | meikel brandmeyer |
| 17:20 | hiredman | feh |
| 17:21 | hiredman | so, like, some guy on the internet said it |
| 17:21 | guns | he says Rich said this in this chat room years ago |
| 17:21 | guns | but he certainly isn't enforcing it |
| 17:21 | technomancy | well there's a big difference between the "spec" vs what happens in practice |
| 17:22 | TimMc | Especially when there isn't a spec. |
| 17:22 | bitemyapp | ,(let [да-аскии-онли 1] (println да-аскии-онли)) |
| 17:22 | clojurebot | 1\n |
| 17:22 | technomancy | yeah, would be surprised if it suddenly started throwing on those |
| 17:22 | bitemyapp | totes ascii only bro. |
| 17:22 | gfredericks | and that recent ML discussion about what-it-was suggests the spec eventually loosens |
| 17:22 | gfredericks | numeric keywords |
| 17:22 | technomancy | gfredericks: yeah, better to commit to a narrower scope and broaden it later than the other way around |
| 17:24 | indigo | bitemyapp: Lol, love your symbol name |
| 17:24 | hiredman | my #clojure log which starts in december of 08 has no relevant hits grepping for rich and alpha |
| 17:25 | hiredman | which is not to say he didn't say that, but it start to look unlikely |
| 17:25 | technomancy | hiredman: well, plenty of synonyms he could have used |
| 17:25 | bitemyapp | like...ASCII |
| 17:25 | hiredman | oh, of course, I used the wrong nick |
| 17:25 | hiredman | rhickey |
| 17:25 | technomancy | hiredman: it's been so long =) |
| 17:26 | technomancy | I like how chouser's log has his words in red |
| 17:26 | bitemyapp | technomancy: LOL |
| 17:27 | guns | hiredman: https://groups.google.com/forum/#!msg/vimclojure/OWSZWioTU6E/gE2z7HKXBoAJ |
| 17:27 | indigo | And His words shall be highlighted in red |
| 17:27 | guns | I guess he didn't mention the chat room |
| 17:31 | hiredman | https://gist.github.com/hiredman/7553770/raw/cbcb9b394d02d823d64391bcf4c47cd532603afa/gistfile1.txt |
| 17:32 | guns | again, "alphanumeric" :) |
| 17:33 | hiredman | http://clojure-log.n01se.net/date/2009-01-11.html#08:50a |
| 17:34 | hiredman | guns: again, but not even clojure.core follows what he says there |
| 17:34 | technomancy | clojure.core: above the law |
| 17:34 | technomancy | just like Batman |
| 17:34 | bitemyapp | indigo: glad you liked it. |
| 17:34 | hiredman | > and < abound in common usage |
| 17:35 | pjstadig | also the snowmen ☃ |
| 17:35 | guns | it's true; for my part, I will continue to happily use τ, λ, Σ, etc in private code |
| 17:36 | justin_smith | the real trouble is zalgo identifiers, so you can't even tell what line number they are on |
| 17:37 | technomancy | you'll never take my page breaks away |
| 17:37 | technomancy | whitespace be whitespace, mon |
| 17:38 | guns | bah emacs |
| 17:38 | guns | jk |
| 17:38 | rasmusto | heh |
| 17:38 | technomancy | page breaks love you no matter your editor |
| 17:39 | guns | do you write GNU info pages for your unix programs, technomancy? |
| 17:40 | bitemyapp | I really like GNU info pages. |
| 17:40 | bitemyapp | man pages are fine too. |
| 17:40 | technomancy | guns: haha; I don't got that far |
| 17:40 | guns | :) just curious |
| 17:40 | technomancy | but texinfo is nicer than troff for authorship |
| 17:41 | technomancy | I am generally in favour of hyperlinks, as it is |
| 17:41 | bitemyapp | technomancy: who isn't? |
| 17:41 | technomancy | bitemyapp: people who hate info?\ |
| 17:42 | bitemyapp | they are silly people and not to be taken seriously. |
| 17:42 | technomancy | yeah, I prefer `foo --help` for quick non-hyperlinked reference |
| 17:44 | guns | When people ask me about the last novel I've read, I tell them the bash man page. |
| 17:45 | jjido | don't they look at you with pity at this point? |
| 17:45 | guns | Confusion; I do feel pitiful however |
| 17:45 | technomancy | hehe |
| 17:46 | jballanc | oh god...I once had to write a full, very detailed man page by hand |
| 17:46 | technomancy | I like the twist ending in `man sh` |
| 17:46 | jballanc | ...sometimes I still get flashbacks |
| 17:46 | technomancy | it's actually dash!!! |
| 17:46 | technomancy | ^ spoiler alert; sorry |
| 17:46 | jjido | :-) |
| 17:47 | hyPiRion | twist ending? That's the first word in the man page |
| 17:47 | pjstadig | technomancy: ugh |
| 17:47 | pjstadig | i used to have to install oracle on linux |
| 17:47 | pjstadig | and that was a problem |
| 17:48 | pjstadig | because the oracle install script used bash features even though it started with #!/bin/sh |
| 17:48 | pjstadig | which of course actually used dash |
| 17:48 | technomancy | pjstadig: my condolances |
| 17:48 | pjstadig | which wasn't bash |
| 17:48 | rasmusto | I did `man /bin/bash`, there's actually useful info in there :P |
| 17:48 | jjido | pjstadig: to my recollection even Solaris didn't use bash for /bin/sh |
| 17:49 | heiz | Hello! I'm new with clojure sequences. I need to iterate over bit vector in lexical order. I mean I need to generate seq like [[0], [1], [0 0], [0 1], [1 0], [1 1], [0 0 0], .... How can I do it with clojure? |
| 17:52 | jjido | heiz haz gone |
| 18:03 | Raynes | technomancy: https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/17896d446b18eaab9fd4c07d1b0e1ea8/tumblr_mtj3oz164M1rephako1_500.jpg |
| 18:04 | technomancy | Raynes: augh |
| 18:13 | rasmusto | Raynes: a travesty |
| 18:15 | rasmusto | oh whoa, how do I deal with passing anonymous functions into a memoized function? Will they just miss the cache? |
| 18:17 | hiredman | unless you pass in the same one |
| 18:17 | rasmusto | hiredman: I tried passing in the same one and it took a while :s |
| 18:17 | rasmusto | Let me drop in a side-effect and make sure |
| 18:17 | hiredman | rasmusto: same as in the same instance? |
| 18:18 | hiredman | not the same as in, alpha equiv, or whatever |
| 18:18 | rasmusto | hiredman: same instance afaik |
| 18:18 | hiredman | literally the same object in memeory, fns have pointer equality |
| 18:18 | rasmusto | yeah, same pointer |
| 18:20 | rasmusto | hiredman: I can eval the symbol for my function and its the same thing every time |
| 18:20 | rasmusto | and I pass in that symbol to my memoized function |
| 18:20 | rasmusto | and it'll print side-effects each time (miss the cache) |
| 18:21 | hiredman | hard say, because functions don't have symbols |
| 18:21 | hiredman | did you have a gist? |
| 18:21 | rasmusto | hiredman: let me scrub one up really quickly |
| 18:25 | rasmusto | hiredman: https://www.refheap.com/21066 |
| 18:25 | amalloy | &(let [f #(inc %), m (memoize #(println (% 1)))] (m f) (m f)) |
| 18:25 | lazybot | ⇒ 2 nil |
| 18:25 | rasmusto | I figured out my mistake, I had an anonymous function (as a separate arg) |
| 18:27 | rasmusto | amalloy: gotcha, my "f" was being created each time, so the pointer disappeared (obviously) |
| 18:27 | podviaznikov | stompyj: I also feel that it is good way to go. I never used it by I'm planning to use it. Do you have some particular questions about REST API development? |
| 18:28 | amalloy | right, rasmusto, that's what hiredman was warning you about |
| 18:29 | rasmusto | amalloy, hiredman: thanks :). I ran my self in a few circles before I saw that my function took two functions as arguments |
| 18:30 | rasmusto | so are functions only comparable by their pointers? |
| 18:32 | amalloy | yes |
| 18:33 | hiredman | unless you want to write a core.logic program using noms to compare the source |
| 18:33 | rasmusto | is that a JVM-specific thing? |
| 18:33 | rasmusto | hiredman: I was thinking of something along those lines |
| 18:33 | rasmusto | it'd have to do a reduction/normalization on the function |
| 18:33 | rasmusto | (source that is) |
| 18:33 | hiredman | rasmusto: what equivilance is there for functions that isn't horrible? |
| 18:34 | hiredman | the answer is none, so they get reference equality |
| 18:34 | rasmusto | hiredman: well, in my specific case I had functions that compared two numbers, so I could reason about it |
| 18:34 | rasmusto | hiredman: point taken though :) |
| 18:34 | mtp | hiredman, we can just simulate both functions in separate sandboxes, and tell if one halts!! |
| 18:34 | mtp | (heavy sarcasm implied) |
| 18:35 | amalloy | rasmusto: what, by running each of them on all existing numbers, and seeing if they return the same thing every time? that's probably going to put a dent in your memoization speedup |
| 18:35 | rasmusto | amalloy: well, what if I limited the domain? |
| 18:36 | rasmusto | (just bouncing ideas around) |
| 18:36 | hiredman | amalloy: obviouslly you precompute a table |
| 18:36 | hiredman | store it in s3 |
| 18:36 | amalloy | rasmusto: i think if you're limiting the domain to anything small enough that comparing for equality is plausible, you should replace the functions with maps |
| 18:36 | rasmusto | here's one of the mission-critical functions that I used #(< % 3) |
| 18:36 | technomancy | hiredman: just because clojure doesn't attempt to compute function equivalence doesn't mean it can't be done in many cases |
| 18:36 | rasmusto | amalloy: maps in s3? |
| 18:36 | amalloy | like, f is just {[0 0] true, [1 0] false, ...} |
| 18:37 | hiredman | https://github.com/clojure/core.logic/wiki/core.logic.nominal |
| 18:37 | amalloy | hiredman: now he's taking your crazy ideas seriously, what have you done |
| 18:37 | rasmusto | ah yeah, this was a good presentation at the minikanren conf :) |
| 18:37 | dnolen | haha |
| 18:40 | hiredman | rasmusto: oh yeah? |
| 18:40 | hiredman | rasmusto: was that the conf attached to clojure/west |
| 18:41 | rasmusto | hiredman: yeah, it was a few hours one evening of it |
| 18:41 | rasmusto | (and was originally a twitter joke) |
| 18:41 | hiredman | I didn't see a video covering the nominal stuff on infoq for it |
| 18:42 | rasmusto | hiredman: I'm not sure if any of it was filmed |
| 18:42 | hiredman | well, I seem some stuff like, uh, whatever that haskell minikanren |
| 18:43 | hiredman | http://www.infoq.com/presentations/molog |
| 18:43 | rasmusto | cool, I'll check it out :) |
| 18:44 | rasmusto | hiredman: https://github.com/namin/minikanren-confo |
| 18:44 | hiredman | Ah |
| 18:44 | hiredman | thanks |
| 18:45 | rasmusto | pulled the link from the minikanren.org clojure/west section |
| 18:46 | glosoli | Are there some other micro alternatives to compojure ? |
| 18:47 | technomancy | glosoli: there's moustache (not the templating lib), but it doesn't really offer anything that's not in compojure |
| 18:48 | benedikt | lein-droid fails at building my project when i add [clj-http "0.7.7"] to the dependencies-map in project.clj. The error is Compiling cheshire.jsonp: Exception in thread "main" java.lang.ClassNotFoundException: javax.json.Json, compiling:(jsonp.clj:1:1)" |
| 18:48 | benedikt | building a vanilla lein projet with clj-http works fine |
| 18:49 | glosoli | technomancy ah not worth checking probably then |
| 18:51 | benedikt | http://stackoverflow.com/questions/11346180/servlet-java-lang-classnotfoundexception-org-json-simple-parser-parseexception # i found this, added the jar to a dir in the project and the dir in the external-classes-paths in project.clj |
| 18:53 | hiredman | benedikt: most likely the android runtime is missing that class, while it is included in a real jdk |
| 19:06 | benedikt | hiredman: is there anything i can do about it? |
| 19:07 | hiredman | benedikt: dunno, I am just guessing |
| 19:09 | hiredman | I am guessing that the error is because in the translation process from jvm bytecode to dalvik bytecode the class goes missing |
| 19:09 | benedikt | i figured the same thing and found the jar for it, references with external-classes-path but no luck |
| 19:09 | benedikt | i might have the wrong jar though |
| 19:17 | scott__ | can anyone kindly recommend an example github repo that is essentially a 'wrapper' around a 3rd party Java library? fairly new to clojure; looking for references to learn from... |
| 19:21 | newblue | scott__: if you count Swing as a 3rd party library then https://github.com/daveray/seesaw |
| 19:23 | scott__ | @newblue: thanks. I have a 'simple' java library (few files; 3 classes) I'd like to wrap |
| 19:24 | scott__ | looking for good examples as to how to go about htat |
| 19:25 | scott__ | seesaw looks a bit overkill as a 'learning reference' but I'll figure it out.. |
| 19:26 | Raynes | scott__: https://github.com/Raynes/cegdown |
| 19:26 | Raynes | Doesn't get a whole lot similar than cegdown. |
| 19:29 | scott__ | thanks Raynes. perfect. |
| 19:31 | amalloy | scott__: why bother wrapping it? like, three classes is really fine to Just Use from clojure |
| 19:32 | amalloy | obviously it depends a bit on how unpleasant the API is |
| 19:33 | bitemyapp | ucb: http://anautumnforcrippledchildren.bandcamp.com/album/try-not-to-destroy-everything-you-love |
| 19:35 | dbsr | hey all, i have never used windows before to run python scripts, now i am and im getting a lot of zerio lenght field name errors |
| 19:35 | ucb | bitemyapp: enqueued for tomorrow |
| 19:35 | dbsr | eg, i need to use '{1}'.format('foo') |
| 19:35 | dbsr | instead of {} |
| 19:35 | dbsr | is this windows? or an old python version |
| 19:35 | rasmusto | dbsr: check out #python :) |
| 19:35 | dbsr | ow |
| 19:35 | dbsr | my bad |
| 19:35 | dbsr | thought it was :d |
| 19:35 | scott__ | amalloy: been playing with calling classes directly via Interop; partly its an exercise for me to learn to use idiomatic clojure. |
| 19:36 | bitemyapp | ucb: <3 |
| 19:36 | scott__ | partly the API has interfaces to implement ... just 'learning' the best way to implement, really. |
| 20:15 | lgs32a | coventry: have you had a chance to review my pull request? |
| 20:54 | SegFaultAX | bitemyapp: Somehow, I think you'll really appreciate this: http://www.youtube.com/watch?v=ScgFIKXKFkc |
| 21:10 | bitemyapp | SegFaultAX: I need to get out of California. |
| 21:11 | bitemyapp | SegFaultAX: we could make things machine make it for us the community the city the san francisco put them in the stores they have slaves made in china but on the west coast new west coast we believe small business owners every fruit and vegetable trees |
| 21:11 | bitemyapp | because it's free |
| 21:13 | Raynes | bitemyapp: Did you suddenly just become a markov chain? |
| 21:13 | bitemyapp | Raynes: watch the video. |
| 21:18 | SegFaultAX | Raynes: Seriously, watch it. You're close by. |
| 21:26 | bitemyapp | SegFaultAX: type theory meetup Thursday, you down? |
| 21:27 | bitemyapp | SegFaultAX: intended to be introductory material, I think they're starting with untyped lambda calculus. |
| 21:28 | bitemyapp | `cbp: I think Brambling has incremental migrations. I'm poking at config stuff in Selmer. What's new with you? |
| 21:29 | `cbp | bitemyapp: learning haskell, racket, figuring out how to implement heckle. Also got my copy of the little schemer after 2 months wait :-O |
| 21:29 | bitemyapp | `cbp: Haskell <3 |
| 21:29 | bitemyapp | oh I have something for you |
| 21:30 | `cbp | o.o |
| 21:30 | bitemyapp | `cbp: http://blog.ezyang.com/category/haskell/ http://blog.ezyang.com/2012/08/applicative-functors/ http://blog.ezyang.com/2011/08/8-ways-to-report-errors-in-haskell-revisited/ http://www.randomhacks.net/articles/2007/03/10/haskell-8-ways-to-report-errors/ |
| 21:31 | bitemyapp | reading material! |
| 21:31 | `cbp | yay |
| 21:31 | bitemyapp | `cbp: DotA2 after I finish mangling Selmer with a rake? |
| 21:31 | `cbp | bitemyapp: ok |
| 21:32 | lgs32a | is coventry asleep? |
| 21:41 | hiredman | /win 22 |
| 21:59 | Apage43 | ... |
| 21:59 | Apage43 | wow |
| 22:00 | S11001001 | μ |
| 22:01 | lenage | λ |
| 22:01 | Apage43 | ¬ |
| 22:01 | bitemyapp | Apage43: what? |
| 22:01 | Apage43 | video above =P |
| 22:02 | lenage | video? |
| 22:02 | Apage43 | i .. am just going to go.. make a thing. maybe put it in a store. |
| 22:16 | Apage43 | fewer things seem like terrible ideas now that I'm over my stomachache, time to get stuff done |
| 22:18 | bitemyapp | `cbp: log into Steam plz. |
| 22:58 | coventry | lgs32a: I was away from the internet for a while. Will probably be sleeping soon though. (Last night was an outlier.) |
| 23:01 | coventry | lgs32a: I've looked at one of your commits. Will have it sorted out by tomorrow. |
| 23:31 | m0smith | Hi all: Looking for some wisdom regarding the Clojure compiler |
| 23:32 | m0smith | Specifically, is there a wait to "listen" for classes it emits? |
| 23:32 | dnolen | m0smith: not directly no, you'd probably have to fork it and modify it to do something like that |
| 23:34 | m0smith | too bad. I am trying to get a list of classes without using javaagent |
| 23:36 | m0smith | Different subject: I am using emacs and cider. Has anyone gotten a debugger working? |
| 23:39 | technomancy | there have been reports of successful ritz usage |
| 23:39 | technomancy | with nrepl.el |
| 23:39 | justin_smith | m0smith: schmetterling is a standalone that connects to your clojure process, and gives you a repl and shows source at each level of the stack trace, and shows source for each level of the stack trace |
| 23:40 | justin_smith | runs in a browser |
| 23:40 | justin_smith | I saw all these features today, I'll double check that they have been pushed (it's a caribou project) |
| 23:41 | justin_smith | https://github.com/prismofeverything/schmetterling |
| 23:41 | justin_smith | download, lein ring server, go to the page it pops up and enter the dt-socket port for a clojure process, make a stacktrace |
| 23:41 | justin_smith | it will just work |
| 23:42 | justin_smith | hell, it will even debug java code |
| 23:42 | justin_smith | less likely to show locals though :) |
| 23:42 | m0smith | Thanks. I will give it a try. How is it better than jswat? |
| 23:42 | justin_smith | clojure code runs in the context of the stack frame |
| 23:43 | justin_smith | though I don't really know jswat, I don't think jswat is a clojure oriented tool |
| 23:43 | justin_smith | I would be surprised if it gave you a clojure repl |
| 23:44 | justin_smith | but hey, if jswat is better let me know, and I will use it instead |
| 23:44 | m0smith | :) |
| 23:48 | justin_smith | https://groups.google.com/forum/#!topic/clojure/R7JzcYRFAfg |
| 23:48 | justin_smith | this makes me think the main difference is likely maturity (jswat more mature) and tool assumptions (schmetterling assumes you are interacting with clojure) |
| 23:49 | m0smith | I have used jswat with clojure but found it a bit cumbersome |
| 23:49 | justin_smith | also I think it may be harder to run code in the context of a selected stack frame in jswat |
| 23:49 | m0smith | maybe I am just spoiled |
| 23:49 | justin_smith | heh, what debugger are you used to? |
| 23:49 | m0smith | I use eclipse a lot |
| 23:49 | m0smith | it is nice to debug in the editor |
| 23:49 | m0smith | not with clojure |
| 23:49 | m0smith | just java |
| 23:49 | justin_smith | maybe the better question would have been: what was missing from jswat that made it clunky |
| 23:50 | seangrove | I thought it was js-wat |
| 23:50 | seangrove | Maybe a gary bernhardt thing |
| 23:50 | m0smith | having to switch between the debugger and the editor, which implies keep two sets of configuratioins |
| 23:50 | justin_smith | seangrove: which is an amusing little presentation :) |
| 23:50 | technomancy | there can be occasions where you need a debugger in clojure, but if you're lucky and end up working primarily with well-factored referentially-transparent code a debugger doesn't help at all |
| 23:51 | technomancy | don't go looking for it unless you're stuck on a really hairy problem involving badly-factored code and nasty stateful objects |
| 23:51 | justin_smith | m0smith: we avoided editor integration, because we don't want to force all our coworkers to use emacs, and we don't want to support 4 different frontends |
| 23:51 | seangrove | technomancy: Not at all? I haven't had occasion to need a debugger much, but I would think it's probably generally a nice thing. |
| 23:51 | m0smith | Working mostly with my own code which is none of those things (apparently) |
| 23:51 | technomancy | seangrove: if you need one, things have gone terribly wrong |
| 23:51 | technomancy | (which does happen at times and can be unavoidable) |
| 23:52 | seangrove | technomancy: Maybe. I think it's an interesting assertion. Not personally sure though. Certainly would like to think so. |
| 23:53 | danielglauser | +1 to what technomancy said |
| 23:53 | technomancy | well it's like using a weapon in self-defense. makes you feel better, but you hope you never have to do it. |
| 23:55 | danielglauser | I'ved work on a large Clojure codebase for the past nine months. It has its issues. I have rarely felt the need for a debugger. |
| 23:55 | m0smith | Which probably begs the question: How do you keep track of complex data structures |
| 23:55 | m0smith | ? |
| 23:55 | technomancy | I used cdt once to debug something |
| 23:55 | technomancy | turns out it was a bug in clojure |
| 23:55 | danielglauser | I'ved -> I've. English is hard. |
| 23:56 | technomancy | danielglauser: English is hard; let's go lojban? |
| 23:56 | bitemyapp | technomancy: Klingon, IMO |
| 23:56 | danielglauser | technomancy: Nice http://en.wikipedia.org/wiki/Lojban |
| 23:57 | bitemyapp | because I want to spit on people when I talk. |
| 23:57 | m0smith | justin_smith: https://groups.google.com/forum/#!topic/clojure/R7JzcYRFAfg |
| 23:57 | technomancy | bitemyapp: I've heard linguists consider Klingon to be the PHP of conlangs |
| 23:57 | m0smith | no |
| 23:57 | m0smith | justin_smith: ClassNotFoundException: com.sun.jdi.Bootstrap |
| 23:58 | danielglauser | m0smith: the most "complex" data structures in the app are nested maps. Usually not that many levels deep. |
| 23:58 | justin_smith | m0smith: ugh, I'll pass the bug report along |
| 23:58 | m0smith | Ubuntu |
| 23:58 | m0smith | thanks |
| 23:58 | danielglauser | m0smith: instead of maintaining abstractions on the data structures most of the structure is in functions |
| 23:59 | m0smith | I am parsing GEDCOM files which are arbitrarily complex so I am having a hard time keeping the daa straight (hence the debugger) |