#clojure logs

2013-09-27

00:13kennylovesroastethe nice thing about non-OO functional systems like clojure is that they conform to modern C++ systems that are not OO
00:13kennylovesroasteentity-relationships
00:14chordkennylovesroaste: you gonna work on a rts or rpg game made in clojure?
00:14kennylovesroasteanother case where OO just fails
00:14kennylovesroastechord: no, just an AI system possibly
00:14Cuaif you have to name one simple project with idiomatic clojure code, which will you choose?
00:14CuaI am looking for clojure example to get the 'feel' of it, reading clojurescript compiler atm
00:14kennylovesroasteI would do an AI system in clojure and the engine in C++
00:15TEttingerCua, that's a good question.
00:15TEttingerI imagine lein is pretty large
00:15Cuait seems quite... different from other languages I have touched, and I even touched a few FP ones
00:15brehautCua: ring is good. lein is large but technomancy tries to make it approachable
00:15TEttinger$google github Raynes
00:15lazybot[Raynes (Anthony Grimes) · GitHub] https://github.com/Raynes
00:16Raynesohai
00:16Cuabrehaut: TEttinger thank
00:16TEttingerRaynes, you write idiomatic clojure code right?
00:17RaynesUh, I certainly hope so.
00:17kennylovesroastetrying to look for good examples, but modern AAA game programmers totally reject classical OO patterns
00:17chordkennylovesroaste: what kind of AI are you trying to dio
00:17TEttingerheh. I was just looking for a nice bunch of clojure repos for Cua to browse
00:17kennylovesroastechord: : simulation of group behavior
00:18sm0kehey if my clojure code turns bad in one night how do i debug it..i swear it was working last night :D
00:18RaynesClojure code rarely has an expiration date.
00:18sm0kestupid cosmic rays
00:18brehautsm0ke: did you reload in your repl a bunch?
00:19kennylovesroastei'm still trying to feel my way around clojure for repl programming, because i love stepping through code which is kindof shunned in the clojure community
00:19RaynesIt's best to use it within a week of opening though.
00:19sm0kebrehaut: yea i did that
00:20brehautsm0ke: you probably have a var that you changed the name of being referenced. when you reloaded the namespace the old name stayed and the new name appeared, but code was calling the old name
00:20brehautsm0ke: or seomthing along those lines
00:20TEttingerCua: https://github.com/Raynes/refheap seems pretty well-organized
00:20chordkennylovesroaste: what does simulation of group behavior mean exactly
00:20Cuaoh, nice, simple but useful example
00:20Cuathank again
00:21TEttingerCua, it isn't exactly small, but all the parts are small so it shouldn't be total overload
00:21sm0kebrehaut: just before sleeping last night i remember i moved my file to a new folder and changed my namespace...thats all i did
00:21TEttingerthank Raynes!
00:21RaynesYou're welcome peoples!
00:21kennylovesroastehttp://www.gamasutra.com/view/feature/3382/implementing_a_group_behavioral_.php
00:22CuaTEttinger: to me FP seems easier to grasp, if a function 'feels' correct, then it is unlikely to screw you up later on
00:22kennylovesroastechord: forget graphics, get your AI down first
00:22Cua(also I have absolutely no experience with Java, read the essay 'Kingdom of nouns' back then and don't to touch it, ever)
00:22TEttingerkennylovesroaste, you might like dijkstra maps (a generalization of dijkstra pathfinding)
00:23kennylovesroastechord: : specifically large world, human world interactions
00:23kennylovesroastechord: : people I know have been contacted to do simulations on large world AI + human dynamics
00:23TEttingerkennylovesroaste: http://paleoludic.com/writing/whitespace-reasoning/ http://paleoludic.com/writing/a-pathfinding-primer/ http://paleoludic.com/writing/engineering-pds/
00:24kennylovesroasteTEttinger: yep
00:24chordkennylovesroaste: overrated
00:24TEttingerI have a clojure implementation, it turns out pretty fast in practice
00:25kennylovesroastethe dynamics of large scale human and AI agents is interesting
00:25kennylovesroastemostly because of humans are very good at exploitation
00:25kennylovesroasteit's easy to just spawn mobs and AI them
00:26kennylovesroastebut dynamic graphs of human graph change is very hard when you have constraints
00:26TEttingerhave you seen tucker's kobolds?
00:26kennylovesroasteno
00:26kennylovesroastedidn't read the whole article
00:26kennylovesroastewill do
00:27TEttingerhttp://www.tuckerskobolds.com/ excellent example of AI gone horribly wrong
00:27kennylovesroastethat's the thing
00:27TEttinger(for the players)
00:27TEttinger(great for the world)
00:27kennylovesroastewhen you get funky with AI and humans are smart as hell and they exploit it
00:28kennylovesroastei'd love to exploit minecraft
00:28kennylovesroastewish we had the real source code
00:28kennylovesroastejust to explore things
00:29kennylovesroastethe old school mud guys know some things :)
00:30sm0keAha i added this zookeeper-clj dependency which fu**ed up the logging deps.
00:31sm0kewhy would he directly include log4j instead of -api!!
00:31sm0keseriously this log4j slf4j and all 4js for logging are turly nuisance in java
00:32sm0ke8 out of 10 runtime conflicts are due to logging apis
00:32sm0kewhat the jar hell
00:33kennylovesroastewhat is the normal HOME for Emacs...gonna bite the bullet
00:34kennylovesroasteeven though i hate "text editors"
00:34kennylovesroasteyogthos|away: : you love eclipse right?
00:34kennylovesroastewhy can't i script eclipse, intellij like emacs
00:35kennylovesroasteand have org-mode too
00:36sm0keeclipse is the internet explorer of java world.
00:37kennylovesroastecan i paste something about AI and why classical OO is wrong?
00:37kennylovesroasteObjectification It is profitable for an actor not to think about what it can do. It should project its capacities onto the world around it, asking what the world can do for it. This is a very practical view, but it seems strange because we use it automatically, without understanding it. An everyday object like a hammer seems to be for driving nails and, if it has a claw, for pulling them; this is the only property of a hamme
00:37sm0keso lately i am finding myself wrapping up everything inside a go or future where there is a blocking code..like a network socket read etc...am i doing this right?
00:37kennylovesroasteactors don't do shit
00:37sm0kekennylovesroaste: what is it with you and hate for OO?
00:37kennylovesroastethings don't do shit
00:37kennylovesroastesm0ke: : i hate classical OO
00:38kennylovesroasteit's wrong
00:38sm0kekennylovesroaste: what's wrong about it?
00:38kennylovesroastemethods and data structures don't belong together
00:38sm0kekennylovesroaste: why not?
00:38kennylovesroastejust wrong
00:38kennylovesroastecan't explain it...ask the Common Lisp guys
00:39kennylovesroastegeneric methods
00:39kennylovesroastemulti-methods
00:39RaynesIn my experience, people don't much like it when you say bad things about something without a solid backing on why you think said thing is bad.
00:39sm0kewhat about it?
00:39kennylovesroasteit's just wrong that data and methods are together
00:39kennylovesroasteplain wrong
00:39sm0kewow he is religious
00:39sm0keabout OO being wrong
00:40kennylovesroasteno, Common Lisp generic functions and multi-dispatch is right
00:40kennylovesroastethat's OO in my book
00:40tbaldridgekennylovesroaste: not that I don't agree with you, but you can't just make statements like that without backing it up...you won't last long arguing with someone who actually knows how to use OOP correctly.
00:40RaynesTHESE THINGS ARE WRONG AND THESE THINGS ARE RIGHT AND I DON'T KNOW WHY.
00:40kennylovesroastei don't have to back it up. it's just the way i feel
00:40kennylovesroastesorry
00:40kennylovesroastemethods and data are separate
00:40sm0ke:D you sir are wrong
00:41kennylovesroastesm0ke: : ask Rich about that
00:41tbaldridgecoding by feeling is always a bad idea,
00:41tbaldridgeit just feels wrong
00:41kennylovesroasteask rich how he feels about methods and data being in the same "group"
00:41nooniantbaldridge: lol
00:42kennylovesroasterich will tell us why it's wrong
00:42kennylovesroastefine
00:42kennylovesroastei'll tell you why
00:42mischovRaynes: wrong all the things!
00:42kennylovesroastebecause then you have first-class methods
00:42sm0kei think i am going to coin a new term "lisp fanboys"
00:42kennylovesroasteand other methods acting on your objects
00:42kennylovesroasteit's bullshit
00:43kennylovesroastetotal bullshit
00:43tbaldridgekennylovesroaste: so is it attaching methods to objects, or mutability?
00:43kennylovesroastesmalltalk greybeards that taught us wrong
00:43kennylovesroasteattaching a method to an object is wrong
00:43kennylovesroasteplain and simple
00:43kennylovesroastewe have data and functions
00:43tbaldridgekennylovesroaste: so what are protocols in Clojure?
00:44xeqi&(partial merge {:a 2}) ;; apparently this is wrong
00:44lazybot⇒ #<core$partial$fn__4070 clojure.core$partial$fn__4070@1e34443>
00:44kennylovesroasteyou tell me
00:44kennylovesroastethe answer to the expression problem?
00:44Cuakennylovesroaste: by 'attaching' you mean 'this object owns the method, other non-inherited objects can't use it?'
00:45kennylovesroasteit's a first class thing
00:45kennylovesroastefor example, my day job
00:45kennylovesroasteextension methods
00:45kennylovesroasteit just feels wrong that any method is attached to a DTO
00:45Cuamake sense = easy for my brain to digest, just me though
00:46kennylovesroastewhat we call in the .net world
00:46kennylovesroastewe have data structures and we have functions
00:46kennylovesroasteold school
00:46chordi need a "Learn you a clojure" book
00:46kennylovesroastewhy do some methods are first class
00:46chordwhats the best one out there
00:46sm0keso whats the idiomatic way for doing tasks which block and also communicate with them in clojure? e.g. a socket which blocks on receive but still can be written on from somewhere else?
00:46kennylovesroasteand then we have to artifically attach methods ex-post-facto
00:46kennylovesroasteto some object
00:46kennylovesroastetotal bullshit
00:47kennylovesroasteplus, multi-methods are the way to go
00:47kennylovesroastebe declarative
00:47sm0kebefore this in scala i used to do concurrency with actors..which also guarantee thread safety for local objects
00:47kennylovesroastedeclare your intention with multimethods
00:47tbaldridgekennylovesroaste: then why did rich add protocols?
00:48kennylovesroastetbaldridge: : from what i remember, a great way to interop with java and plus very, very fast...multimethods are slow
00:48kennylovesroasteyes, multimethods are slow
00:49kennylovesroastei only like clojure for the semantics
00:49kennylovesroastehate lisp and the syntax
00:49sm0kekennylovesroaste: do you know that clojure is a lisp?
00:49tbaldridgeoh great one more of these guys...
00:49kennylovesroastetbaldridge: : no dude, i accept what clojure is
00:50kennylovesroastetbaldridge: : i said nothing more..clojure is great
00:50kennylovesroastedon't get stupid on me about how I have to accept s-expression
00:50scottjtbaldridge: when I started watching your screencast and I saw you were using multimethods I was like "I bet he's going to run into that annoying multimethod redefinition issue". That thing is so annoying (and what's most annoying is that it hasn't always been there).
00:50sm0kef*ck it , i need to get a book
00:50kennylovesroastethat's idiot
00:51tbaldridgesm0ke: yeah I hate that
00:52kennylovesroastetbaldridge: heh, have they solved multimethods in scala yet?
00:53kennylovesroastetbaldridge: : big debate on LTU many moons ago
00:53kennylovesroaste'ye old expression problem"
00:53tbaldridgeI don't know about scala, but I used multimethods in C#
00:54sm0kewtf...everyone has multimethods...even java
00:54sm0kei think polymorphic methods translate to multimethods?
00:55jonasentbaldridge: Great video on macros
00:55tbaldridgesm0ke: not really
00:55sm0kei dont know much clojure to know subtle differences though
00:55chordso how question how do I write the main function in clojure...
00:55tbaldridgesm0ke: multimethods have a dispatch fn that decides how things are dispatched
00:57sm0kechord: defn -main [] ?
00:58chordwhy the hell is it -main and not main
00:58Apage43(clojure.java.shell/sh "open" "-a" "Starcraft.app")
00:58sm0kechord: haha man you are worse than me in clojure i see
00:58sm0kechord: i think its just a convention
00:59chordok seriously i need a book
00:59chordi need a book that explains why there are these conventions
00:59Apage43(:gen-class) expects the fns in its namespace that it makes into methods on the generated class to have a prefix, - is the default
00:59sm0kechord: like functions in clojure which have side effect a written with a bang like sideeffect!
00:59Apage43you can change it
01:00chordwtf is (:gen-class)
01:00sm0keApage43: Ah i see
01:00callenFrightened and angry Haskell user. Tonight is a good night.
01:00Apage43http://clojuredocs.org/clojure_core/clojure.core/gen-class
01:00chordApage43: WTF WHY IS MAIN FUNCTION SO COMPLICATED
01:01sm0keApage43: but is the gen class implicit for every namespace?
01:01Apage43no
01:01xeqiwhy is it called main?
01:01xeqiI want it to be -core
01:01Apage43classes aren't generated unless you put a (:gen-class) in your (ns) form
01:01callenwhy is it called?
01:01callenwhy is it?
01:01callenwhy is is?
01:01callenwhy is?
01:01callenwhy?
01:01clojurebotwhy is the ram gone is <reply>I blame UTF-16. http://www.tumblr.com/tagged/but-why-is-the-ram-gone
01:01callen?
01:01Apage43(if you make a uberjar without adding it to the ns with your -main, you won't be able to java -jar it)
01:02chordApage43: wtf who thought it was a good idea to complicate main with (:gen-class)
01:02sm0keApage43: so you are saying when you decalre a :main in lein..it adds a gen-class ?
01:02Apage43sm0ke: no, it doesn't
01:02sm0keeee
01:02Apage43it works fine with lein run if you don't
01:02Apage43but if you want a standalone jar
01:02TimMcGo home, callen, you're drunk.
01:02Apage43you'll need to add it
01:03callenTimMc: just pre-competition jitters and memories of philosophizing
01:03tbaldridgejonasen: thanks
01:03Apage43you can ignore gen-class for -main if you don't want an executable standalone jar
01:03chordok you know that clojure is a piece of shit when its harder to understand hello world clojure over hello world clojure
01:03chordover hello world python
01:04callenHickey's Design and Composition talk addresses this.
01:04sm0ke:D
01:05chordcallen: i need your clojure book NOW
01:05noonian,"hello, world"
01:05clojurebot"hello, world"
01:07callenchord: if it's going to make people like you write clojure, then I shouldn't write the book.
01:07TimMcsnrk
01:07arrdempwnt
01:07sm0kechord: what are you trying to write in clojure?
01:07chordcallen: i'm going to learn clojure JUST TO SPITE YOU
01:08tbaldridgehttp://31.media.tumblr.com/tumblr_lmhjcvHNao1qewg7lo1_250.gif
01:08chordsm0ke: right now i'm trying to get to the point of using JOGL
01:09sm0kechord: whats stopping you?
01:09arrdemwow I got off light... 95% of #clojure's logs only translates to about 1.68M messages not the 5M I was estimating
01:09chordsm0ke: I DON'T UNDERSTAND HOW TO MAKE MAIN
01:09arrdemchord: :gen-class is indeed a difficult thing to type
01:10kennylovesroastechord: no caps bro
01:10callenI got a reaction gif out of tbaldridge? Today is a triumphant today.
01:10kennylovesroastechord: people will help you
01:10Apage43lein new app starcraft
01:10callenI fully expect these good auspices to mean my team will win Clojure Cup.
01:10chordarrdem: why do i need to understand :gen-class, even c++ main function is simpler, that is just wrong
01:10callenlein new starcraft mai-clone
01:10sm0kechord: writing in CAPS wont help either...did you know about lein??
01:10lazybotsm0ke: Definitely not.
01:10arrdemApage43: an app I can get behind!
01:10tbaldridgecallen: it doesn't help that the client I'm currently working with requires an animated gif on every commit
01:10callentbaldridge: <3
01:10noonianchord: because most of the time using clojure, you never need to do what you are trying to do
01:10chordsm0ke: I'm using eclipse so I don't know whats going on in the backgroud
01:10kennylovesroastenon P.C their asian
01:10arrdemtbaldridge: I'm so sorry
01:11Apage43(if you use "lein new app <projectname>" it creates main *for* you)
01:11tbaldridgelol
01:11kennylovesroastethat's how asians communicate
01:11callenkennylovesroaste: they're*, unless people own asians now.
01:11kennylovesroaste"give me the codes"
01:11muhoothis is feeling kind of icky
01:12callenmuhoo: I'm sure that's how my one dollar bills feel on the weekend.
01:13muhoooh, having fun at the O'Farrell?
01:13chordarrdem: explain what i need to do here to make this work https://gist.github.com/anonymous/6724234
01:13kennylovesroastemuhoo: : almost my last name
01:13callenmuhoo: not lately, but the prevalence of such institutions helps to make slurs against my own character more believable than they need to be.
01:13kennylovesroastemuhoo: : but english instead of irish
01:13arrdemchord: you just need to add a (:gen-class) to your (ns), after you get a better attitude
01:13muhookennylovesroaste: in joke, sorry, callen lives in san francsico, look up "mitchell brother's o'farrell theater"
01:14kennylovesroastemuhoo: : ahh..i'm a Ferrell..it's english
01:14amalloymuhoo: when i was in sf i lived right across the street from there
01:14muhoohahah, in the TL? wow
01:14arrdemchord: although if you `lein run -m rts.core` it may just work without the gen-class
01:14callenamalloy is a hero to inspire us all.
01:15kennylovesroastedo you guys learn to live without debugger?
01:15callenkennylovesroaste: yes
01:15kennylovesroastei love a stepping
01:15kennylovesroastesteppin;' is fun for me
01:15callenReferentially transparent code doesn't need it as much and stepping is more tedious than trace dumps.
01:15kennylovesroastestep and see locals and such
01:15amalloymuhoo: yeah, 888 Ofarrell is actually a pretty nice building, despite being on the edge of the TL
01:15callendeftrace > n n n n n n n n n n n n n n shit...went too far.... n n n n n n n n n n s n n n n n s
01:16muhooi find referential transparencey doesn't help when you have a chain of 12 referentially transparent functions and a bug somewhere in them.
01:16muhooin between them, most ofte
01:16nooniankennylovesroaste: I just use print and pprint statements
01:16kennylovesroastemuhoo: : oh brother, chains of s-expressions
01:16kennylovesroastesmall funcs i guess
01:16muhoo(-> foo bar baz quux doh wtf omg)
01:16callenmuhoo: I have emacs macros that inject deftrace across swaths of functions for me :P
01:16kennylovesroasteawesome, but when something goes wrong
01:16muhooand there's a bug in what's passed between quuz and doh
01:16callenkennylovesroaste: when something goes wrong? use Ritz.
01:16kennylovesroasteyes, yes
01:17callenmuhoo: the trace log shows what passed between quuz and doh.
01:17kennylovesroastethat's why i'm doing emacs
01:17callenit shows arguments and returns.
01:17kennylovesroasteand org-mode
01:17muhoo~deftrace
01:17clojurebotPardon?
01:17kennylovesroastei'm not smart enough to debug dynamic languages
01:17callenpeople need to learn to use c.t.t - it's seriously good.
01:17muhoo,(doc deftrace)
01:17clojurebotNo entiendo
01:17callenkennylovesroaste: I had a stepping debugger in Python. Don't miss it anymore.
01:17muhoo:-/
01:17callenmuhoo: https://github.com/clojure/tools.trace/
01:18kennylovesroastecallen: thank god for small functions
01:18kennylovesroastethink about small functions
01:18noonianI tend to test the bits as I write them and then I only find myself lost debugging when I'm refactoring stuff
01:18callentrace is sufficient for referentially transparent functions that are sufficiently small. Only thing I'd like to add is conditional tracing based on arg/return predicates.
01:18kennylovesroasteour MVC C# is a mess with all that javascript
01:18callennoonian: my unit tests tend to cover that.
01:19kennylovesroasteto be honest though, clojure is still dynamic
01:19callenI can usually "sense" when a function needs a test.
01:19tbaldridgekennylovesroaste: sadly, C# can be done very nicely, just most people don't do it that way
01:19kennylovesroastetbaldridge: : our client-side is a damn mess..hoping to introduce at least knockout
01:19nooniancallen: do you have any advice on that? I've seen plenty of resources on how to test, but not what to test
01:19kennylovesroastecallback-after-callback-after-callback
01:20tbaldridgeone app I worked on, I used functions, Linq.Expressions and DTOs to the nth degree, basically it ended up looking like Clojure code. lol
01:20kennylovesroastei'm in the weeds this week
01:20kennylovesroastethe C# isn't the problem
01:20callennoonian: probability of failure / degree to which I can fully encapsulate it in my mind at a glance (as a percentage)
01:20kennylovesroastejavascript is always the problem
01:20tbaldridgeyou could even port core.async to C# if you felt like it.
01:20tbaldridgeyeah
01:20kennylovesroastewe can't compile it
01:20kennylovesroasteand see our resharper
01:20callennoonian: 50% likelihood first version is wrong? and I can only understand 50% of the implications? write a test that breaks out the expected cases.
01:21callenincluding at least one or two pathological, depending.
01:21kennylovesroastemaybe i'm in the wrong channel and should be in #scala
01:21callenkennylovesroaste: see ya!
01:21kennylovesroasteeven though i love, fucking love clojure semantics
01:21callennoonian: I don't test anything that's obvious.
01:21callenkennylovesroaste: we'll miss your casual racism. Maybe chord can pick up the slack on that.
01:21nooniancallen: thanks, thats a good way to look at it about knowing something probably isn't perfect but not what
01:21kennylovesroastecallen: : thanks dude
01:21kennylovesroastecallen: : huh?
01:22callenkennylovesroaste: I'm teasing you for what you said earlier.
01:22kennylovesroastei wanna hear about my causual racism
01:22kennylovesroastei'm not P.C!
01:22callenalso my housemates are burning a raccoon on the stove and I'm going to lose my mind.
01:22callennot being P.C. isn't a license to be a dick and make generalizations about people based on things they have no control over :)
01:23kennylovesroasteus white boys in america are the minority
01:23kennylovesroastewhatever
01:23kennylovesroastei brought it up
01:23kennylovesroasteyou brought it up
01:23sm0kehello i always keep getting a "Exception in thread "async-dispatch-4" java.nio.channels.CancelledKeyException" inside a go block..but the same code terminates elegantly inside a future?
01:23tbaldridgegist?
01:23clojurebotgist is http://gist.github.com/
01:23callenhttp://i.imgur.com/vdFA01K.png
01:24kennylovesroastequestion
01:24kennylovesroastehow do you debug deeply nested s-expression?
01:24kennylovesroastei don't get it
01:24kennylovesroastesmall funcs?
01:24callenthe s-expressions are besides the point.
01:24callenWrite small functions.
01:24noonianrun one of the expressions thats deeply nested and see if that works, then run the next one up with the return value of the first on as the arg, repeat until you find the bug
01:25kennylovesroasteso when you ->
01:25kennylovesroasteyou repl individual parts
01:25callenwhat noonian said if you're too lazy to defn the sub-components and deftrace all of it.
01:25noonianbut you can usually guess where it is from the error, it is almost always an argument is not what a function expects
01:25Brand0does rich hickey ever log onto #clojure?
01:25callenI'm too lazy to do stuff manually, so I just use trace.
01:25callenBrand0: last time I talked to him on IRC was in '08 or '09
01:26callendefinitely not in '10
01:26callenthat doesn't mean he wasn't around though.
01:26callenthere are lots of Cogni employees in here that could tell you a more precise answer :P
01:26Brand0thanks
01:26kennylovesroastegood community
01:26kennylovesroastelove the semantics
01:27kennylovesroastelove my static typing and python like syntax
01:27kennylovesroastei'll still hang out
01:27kennylovesroastejust wish i could have it
01:27callenkennylovesroaste: are you Steven?
01:27kennylovesroastewe can't do programming in the large without static typing
01:27kennylovesroasteno bro
01:27kennylovesroastejust me
01:27kennylovesroastechris
01:28callenyou talk to yourself in public just like this other solipsist that frequented the channel
01:28kennylovesroastei'll do my own programming emacs and stuff, but can never ever introduce dynamic lisp into my team
01:28kennylovesroastelove solopist
01:28callensolipsist.
01:28kennylovesroasteyes
01:28kennylovesroastesorry
01:28nooniankennylovesroaste: rich hickey wrote clojure so he could use it for programming in the large
01:29kennylovesroastedo you want to argue noonian ?
01:29noonianno
01:29tbaldridgekennylovesroaste: I beg to differ, I work daily on very large Clojure codebases, static types just get in the way
01:29kennylovesroastei love clojure for anti-OO and it's seq semantics
01:30kennylovesroastetbaldridge: : cool
01:30tbaldridgeyou think you're more productive because you spend half your day re-writing your types to fit some new requirement.
01:30sm0kei think clojure has type hints
01:30kennylovesroastetbaldridge: : since our codebase is increasingly javascript i guess it doesn't matter
01:30kennylovesroastei just like static semantic help with the IDE
01:30sm0keis that equivalent to static typing?
01:31sm0kei mean does type hints catch compile time errors?
01:31kennylovesroastesince clojure isn't OO it's much easier on semantic help
01:31Cuaisn't type hinting only for optimization
01:31kennylovesroastesm0ke: : yes
01:31Cuafor some cases
01:31kennylovesroastebut i want for teams our ides helping us out
01:32kennylovesroastei know it's hard core to think that we don't need help
01:32callenClojure has the faculties of an OO language, just in a simpler and more composable form.
01:32kennylovesroastebut then you do Intellij or Resharper and then you realize
01:32tbaldridgekennylovesroaste: PyCharm would beg to differ about static typing needed for IDE support
01:32kennylovesroastetbaldridge: : very hard, and heuristic
01:32callenI use Rope in Emacs with Python, IDE-esque support works fine.
01:32kennylovesroastejetbrains are geniusis
01:33kennylovesroastesic
01:33callenno they aren't, lol.
01:33sm0kethis also seems interseting https://github.com/clojure/core.typed
01:33Apage43There's also light table-like stuff, which just instruments and traces your code
01:33callenthey're a product company.
01:33kennylovesroastethey are very good at heuristics
01:33Apage43and you can see the data flow through it
01:33kennylovesroastewhen you're dynamics then you're heuristic
01:33kennylovesroasteand not absolute
01:33noonianApage43: how do you configure that in light table?
01:33tbaldridgeif Clojure is anything it's pragmatic, OO when you need it, functions when you need it, immutable except when you need immutability.
01:34Apage43dunno how to turn it on on files. In the instarepl its always on
01:34noonianI saw the kickstarter video but I haven't been able to get that working
01:34kennylovesroastetbaldridge: : what do you say about clojure vs scala?
01:34callentbaldridge: except when you need mutability*
01:34callenScala is tedious and mis-designed.
01:34Apage43I haven't really used it extensively, mostly because I am not very productive outside of vim or emacs
01:34callenif you could say it was designed at all.
01:34kennylovesroastei'm amazed that clojure is beating out scala
01:35kennylovesroasteas a dynamic typing and a lisp
01:35kennylovesroasteamazing
01:35kennylovesroastei have my feelings
01:35callenkennylovesroaste: this is kind of tedious. do you come with a -q flag that restricts your output to Clojure stuff?
01:35callensay, questions about how to do things?
01:35callenyou're less relevant than chord, and that dude tries his hardest to be irrelevant of anybody in here.
01:35sm0kekennylovesroaste: sup odersky
01:35kennylovesroastecallen: tell OO people how to not do OO
01:36sm0ke:D
01:36kennylovesroastecallen: tell java/c#/Ruby/Python people how they've been doing it wrong
01:36chordcallen: you think I will fail to learn clojure, BUT YOU ARE WRONG, i'm focused right now on figuring out this gen-class bullshit
01:36kennylovesroastecallen: i'm not chord
01:36callenSome childen grew up never being told to be quiet by their parents. Those children grew up to become chord and kennylovesroaste.
01:36callenkennylovesroaste: you were made for each other.
01:37sm0kethis channel is entertaining today
01:37callenkennylovesroaste: speak for others' benefit, not yours. shush.
01:37kennylovesroastecallen: you hurt my feelings ;(
01:37chordcallen: I'm going to get JOGL working without your help, and i'm not going to show the code to you
01:37kennylovesroastei thought i had some insight about non-OO
01:37Apage43I read some code I would've rather not seen today
01:37kennylovesroastei guess not
01:37dissipateApage43, a coding horror?
01:37nooniancan never be unseen lol
01:37callenApage43: o rly? Do I need to share my transitive tree breakdown -> bag of entities -> tree rematerialization code to you?
01:38callenbecause boy, do I have some horrors for you.
01:38Apage43callen: see, that'd actually be interesting
01:38kennylovesroastecallen: : what do you do for a living then?
01:38Apage43this was a coding challenge submission
01:38kennylovesroastecallen: : with your transitive tree breakdowns?
01:38Apage43(a coworker was challenging a canditate)
01:38Apage43and the thing *didn't compile or run*
01:38callenI was top-down converting an arbitrarily embedded hierarchical data structure into bags of entities datomic understands with the metadata necessary to reconstitute the tree bottom-up from the nth-most children.
01:39Apage43the code had never been tried
01:39kennylovesroastesounds like the clojure version of Tony Morris
01:39kennylovesroastetoo big for his britches
01:39Apage43just "hope it works!"
01:39callenand I was going from tree -> bag of entities -> back to tree
01:39dissipateApage43, which language?
01:39Apage43Java.
01:39kennylovesroastecallen: like git?
01:39noonianchord: you need to ahead of time compile your code also for gen-class to work, i'm not sure how to do that from eclipse but its just a config option in leiningen
01:39dissipateApage43, is it a Java shop?
01:39callenkennylovesroaste: nothing like git.
01:39Cuaso what do you guys think about Scala vs Clojure? Yes I know I am in #clojure
01:39Apage43the position was a java position
01:39callentbaldridge: if you run into anybody that's trying to coerce data from document stores to something datomic understands and back again...have them ping me :P
01:40callenCua: stop.
01:40CuaI looks at Scala and get this 'C++ like' feeling
01:40Cuaso I choose the other one
01:40Cuacallen: okay
01:40callenstop talking about things that aren't Clojure.
01:40callennobody cares what you think about Scala here or in #scala.
01:40callenjust code.
01:40dissipateApage43, there in lies your problem. Java is a really low bar inherently.
01:40tbaldridgechord: just add -main to core.clj. Then add :main myproject.core to your project.clj and then do lein run from the commandline
01:40kennylovesroastecallen: talk about real world things then
01:40callenI was...just a moment ago.
01:41kennylovesroastenot about bags of trees
01:41callenI was talking about what I did at work today and yesterday.
01:41dissipateApage43, hire for a Haskell position, or Clojure. the bar is raised.
01:41callenI'm working on a data warehouse, I have to turn the contents of a semantic database into something that works for Datomic.
01:41callenthat's as real-world as it gets.
01:41kennylovesroastetalk about how javascript sucks on the front end
01:41Apage43yeah but then I have to tell the haskell/clojure guy to write Java
01:41Apage43=P
01:42callenApage43: you use Java at your shop?
01:42kennylovesroasteand how callback to callback and callback sucks
01:42Apage43anyway I'm not the guy over this position anyhow
01:42Apage43callen: Android
01:42callen#jobsIdoNotWant
01:42tbaldridgekennylovesroaste: use clojurescript on the front-end. problem solved. :-P
01:42dissipatecallen, nobody seems to want to admit that they work at a Java shop or they run a Java shop
01:42kennylovesroastetalk about how i can deal with popups on the frontend
01:42Apage43specifically an Android library
01:42callentbaldridge: Prismatic used to have a backend driven by CLJS on Node.js
01:43dissipateApage43, was the code challenge on site or take home?
01:43Apage43dissipate: take home
01:43kennylovesroastetbaldridge: :so i have a popup that needs to talk to the page
01:43chordtbaldridge: TOO LATE I ALREADY FOUND THIS Clojure Gently video : http://www.youtube.com/watch?v=dQ6hhnitzHg
01:43dissipatehaha, if it was take home, that's an epic fail
01:43kennylovesroastetbaldridge: : and we have ajax, jquery, and all sorts of mess
01:43Brand0does anyone here have much experience running pure clojure in the back end as web server? how does it scale memory-wise?
01:43kennylovesroasteit's a freaking mess
01:43noonianthen the haskell guy will write haskell that writes java
01:43kennylovesroastei'm in hell
01:43kennylovesroastejavascript hell
01:44callenI think hell is debugging haskell-java.
01:44brehautBrand0: it depends a lot on how much time you spend tuning your JVM
01:44kennylovesroasteand tomorrow when i sober up it'll be hell
01:44callenMonadVisitorPatternFactory
01:44callenMonadTransformerParserCombinatorObserverSupervisor
01:44clojurebotexcusez-moi
01:44kennylovesroasteajax after callback after callback
01:44Brand0brehaut, do most people use J2EE?
01:44Brand0(or do you?)
01:44brehautcallen: VistorMonadTransformerStateFactoryFactory
01:44kennylovesroastesorry tbaldridge
01:44kennylovesroastejust us brothers in the field
01:44brehautBrand0: i would assume nearly nobody uses J2EE
01:45dissipateApage43, good luck hiring a competent Java programmer. one reason why Java inherently has a much lower bar is because that's what all the universities teach. so someone goes to get their CS degree and they learn Java, and that's all they know pretty much. then they go out to find a job. Java is the herd, other languages thin the herd. hope that makes sense.
01:45callenbrehaut: I now have a new favorite way to troll Haskell users. Write faux Haskell code with Factory in the name.
01:45kennylovesroastecan someone give a brother a framework for doing wizards in jquery
01:45kennylovesroastejust simple shit
01:45callenkennylovesroaste: no. learn to code.
01:45kennylovesroastecallen: : fuck you
01:45callenkennylovesroaste: just simple shit - so just code it.
01:45brehautstep one: stop doing wizards. step two: stop using jquery. problems all solved
01:45kennylovesroastecallen: : i gotta deal with other assholes
01:46kennylovesroastecallen: : knockout
01:46Apage43dissipate: yeah, pretty much true. Hiring is hard.
01:46kennylovesroastei guess that's why i make 120k
01:46callenApage43: my secret weapon in hiring is fizzbuzz.
01:46kennylovesroasteto solve problems
01:46Apage43yeah, I had this conversation today
01:47callenApage43: are you sure?
01:47Apage43the guy's coding challenge was a little complex
01:47callenApage43: it's the (inc (inc (inc fizzbuzz)))
01:47callenApage43: you start with vanilla fizzbuzz, but the difficulty steadily and smoothly ratchets up.
01:47Apage43and the point was made that even a really simple challenge filters out a *lot* of folks
01:47callenApage43: I've never once had someone survive all stages of my fizzbuzz interview question.
01:47Apage43huh
01:47kennylovesroasteApage43: : i would be filtered out, but i would produce on a team
01:47Apage43fun :)
01:48kennylovesroastethere's a difference
01:48callenApage43: it's based on Dave Fayram's.
01:48kennylovesroasteyou think all your brains can be leaders?
01:48callenApage43: has about 6 or 7 stages, depending on whether they skip stages.
01:48callenApage43: starts with the standard fizzbuzz and then gets abstracted more and more.
01:48brehautcallen: aha brilliant. his fizz buzz is stunning
01:49callenbrehaut: the trick was in producing something that steadily ups the difficulty across his version and beyond it.
01:49dissipatewtf? this fizz buzz thing is a joke right?
01:49kennylovesroastefizzbuzz is simple shit, but that stupid mensa crap is bullshit
01:49callenit's the perfect interview question.
01:49callenkennylovesroaste: you wouldn't get past stage 2 of my fizzbuzz :P
01:49callenI guarantee it.
01:49kennylovesroastemaybe not
01:49brehauthttp://dave.fayr.am/posts/2012-10-4-finding-fizzbuzz.html ← dissipate
01:49callenI've flunked out engineers that have been programming for 15 years at stage 2 or 3.
01:49kennylovesroastebut callen i'd lead you
01:49callenkennylovesroaste: you wouldn't.
01:49callenkennylovesroaste: I don't answer to brainless dickwits.
01:49kennylovesroastecallen: you'd never lead anybody
01:50callenkennylovesroaste: I was the CTO of my last company.
01:50callenkennylovesroaste: so that's patently false.
01:50callenI lead a team of engineers.
01:50kennylovesroastecallen: : "your last company"
01:50callenyes, a startup.
01:50chordkeenylovesroaste: you're doing a good job keep on trolling callen until I figure out this clojure shit
01:50callenwe were funded.
01:50kennylovesroastei'd put my brain against yours
01:50clojurebotGabh mo leithscéal?
01:50kennylovesroasteyou want math?
01:50callenI want code.
01:50kennylovesroastesieves?
01:50kennylovesroastefactorials
01:51callenare factorials supposed to be complicated?
01:51kennylovesroastefibonicas
01:51callenor fibonacci?
01:51kennylovesroastebullshit
01:51kennylovesroasteyou're an idiot
01:51Brand0more trolling haskell users tips
01:51kennylovesroastei'd fire you on the spot
01:51kennylovesroastedo you think I or YOU want a Carmack?
01:51callenI've found someone I like less than chord.
01:52callenchord: you're now my second-least-favorite person. You've been promoted.
01:52kennylovesroasteor a rockstar?
01:52callenchord: say hi to your bottom-buddy kennylovesroaste.
01:52kennylovesroasteyou don't want rockstars
01:52kennylovesroastei fire middle-managers like callen
01:52chordis there a bot recording this conversation to a log
01:53callenchord: it's IRC
01:53noonianyou can be fairly sure the NSA has access to a log
01:53kennylovesroastethis guy callen is another one i've dealth with
01:54kennylovesroastemany, many times
01:54callenyou don't actually know if I'm a guy or not, but we can go with that.
01:54glosolilol
01:54callencan we add casual sexism to the list?
01:54kennylovesroastecan we add hate P.C to the list
01:54kennylovesroasteanyway..
01:54OtherRavenit's not much of an addition on the internet
01:55kennylovesroasteno, we're not allowed to hate on some people
01:55callenOtherRaven: I'm not even one to usually notice sexism or racism, but this guy is obliterating my tolerance levels.
01:55kennylovesroastei can hate on white people like callen though? please?
01:55callenyou don't know if I'm white either.
01:55kennylovesroastewhite men?
01:55callenor a man.
01:55callenwhy don't we just go with "people" unqualified by creed, race, or gender and focus on the content of their thoughts and deeds?
01:55OtherRavencallen: yeah, but he's trying so hard it's laughable
01:56kennylovesroasteif you're not either, it's very cool
01:56kennylovesroasteare you an Indian woman?
01:56callenOtherRaven: the funny part is, I'm usually the villain in this channel. This guy makes me look like a saint.
01:56TEttingerit hasn't taken long for #clojure to get inundated with trolls, has it
01:56kennylovesroasteit's fun
01:56callenTEttinger: depends on how long you've been here for that perspective to be the case.
01:56brehautTEttinger: 5 or 6 years?
01:56clojurebotexcusez-moi
01:56Apage43now we know we've made it :)
01:57OtherRavencallen: not everyone has what it takes to be a Real Troll
01:57callentook longer than I thought I would, shorter than I would've liked.
01:57kennylovesroastei hate callen
01:57kennylovesroastecallen is an evil white male
01:57mtpi'm a pretty bad antitroll
01:57kennylovesroastewe have estabished that
01:57kennylovesroaste:)
01:57kennylovesroastejust messing around
01:57mtpi'm just joking
01:57kennylovesroastei'm not
01:58kennylovesroastecallen is pure evil
01:58kennylovesroastehe's a white male
01:58noonianhey, leave us innocent white males out of it
01:58brehautTEttinger: the earliest logs i know of are from Feb 1s 2008
01:58kennylovesroasteor a indian male
01:58kennylovesroastewhich is almost as evil
01:58kennylovesroasteindian as the continent not P.C native american
01:59TEttingerbrehaut, I more meant since chord came back, and kennylovesroaste got here, it just got way worse very quickly
01:59OtherRavenmen aren't evil, they're just a little porcine
01:59kennylovesroastesorry TEttinger
01:59TEttingeryou're not though
01:59kennylovesroastei'll shut up
01:59callenOtherRaven: men are delicious and offensive to jewish people?
01:59kennylovesroasteTEttinger: : can we just be free to talk?
01:59OtherRavencallen: yes XD
02:00callenthe nice part of the trolls is that I'm no longer even close to the most hated person here anymore
02:00callennow I can do my dark work unnoticed.
02:00kennylovesroasteit's not troll
02:00TEttingerkennylovesroaste, yes, I'm putting you on ignore though
02:00kennylovesroastecool
02:00callenTEttinger: don't plonk him. Suffer with us.
02:00callenit'll refine the soul.
02:00TEttingerI don't have your amazing stamina callen
02:01kennylovesroastewhat does rich say!
02:01OtherRavenI'd ignore him (and that other one, what's his name) but then I'd be tormented by curiosity.
02:01callenTEttinger: I am indeed an everlasting doom-engine of hatred.
02:01muhoowtf happened here? ugh.
02:01kennylovesroastethat's your ultimate thinking
02:01kennylovesroasterich would say get rid of me
02:01callenOtherRaven: that's why I don't.
02:01callenIt's not worth the partial snips of trolling of people reacting.
02:01callenYou can ignore direct replies, but stuff leaks through.
02:01kennylovesroastei do have some interesting quips
02:01kennylovesroasteand not total troll
02:02kennylovesroasteso there!
02:02TEttingereh, it's ok. I just get less messages to check
02:02callenmuhoo: so how about them 49'ers?
02:02callenmuhoo: I'm taking off work tomorrow for Clojure Cup :)
02:02TEttingerdidn't they just crush the rams?
02:02callenTEttinger: I wouldn't know. Just making conversation, haha.
02:02TEttingerit was a really one-sided game is all
02:03TEttingerapparently most of them have been so far
02:03OtherRaventhat's, like, football right?
02:03callenOtherRaven: american football I think.
02:03TEttingeramerican football yes
02:03kennylovesroastelisten, sorry to "troll" you guys
02:03kennylovesroastei'm not trolling
02:03kennylovesroastei love languages
02:03glosoliHmm if I create some custom keyboard for config in my lein project.clj file under dev profile, is there some way to retrieve its value?
02:03kennylovesroastei'll leave you guys alone
02:03callenglosoli: keyboard?
02:03noonianI won't be able to find joy until the basketball season starts up again
02:04TEttinger49ers refers to the gold rush of 1849, which sorta brought most of the future inhabitants of san francisco to california IIRC
02:04callennoonian: college or pro?
02:04glosolicallen: wtf, sorry keyword... sleepy damn
02:04noonianpro\
02:04TEttingerwhy they named the team that...
02:04noonianI like college football heh
02:04callennoonian: too much drama these days.
02:04chordyou guys are talking too fast I can't keep up with the chat and do google searches
02:04TEttingernoonian, harvey mudd has a football team. did I say football I meant foosball
02:05TEttingermy brother went there
02:05OtherRavenchord: they're talking about sports... you're not missing much
02:06callenhater.
02:06callenI should talk about my strength training programming, then you'd get really bored :)
02:06OtherRavendon't be hating on haters
02:07chordlein uberjar Warning: specified :main without including it in :aot. Implicit AOT of :main will be removed in Leiningen 3.0.0. If you only need AOT for your uberjar, consider adding :aot :all into your :uberjar profile instead.
02:07chordwtf is that
02:07noonianchord: its all good I get that too
02:07callenchord: AOT.
02:07callennoonian: no no, let the fear permeate his mind.
02:07noonianahead of time compile
02:08callennoonian: it makes the flesh tastier for the harvesting when they're perpetually afraid.
02:08kennylovesroastego Rams
02:08arrdemcallen: you continue to brighten my day.
02:08noonianas opposed to 'just in time compiled'
02:08kennylovesroastecallen: do you do paredit?
02:09callenkennylovesroaste: not lately, didn't offer enough money.
02:09callenkennylovesroaste: do you for a fitty and a tank of gas tho.
02:09kennylovesroastecallen: :2 fity per tank
02:09kennylovesroasteparedit
02:09kennylovesroastecallen:
02:10callenkennylovesroaste: for a fitty and a tank of gas I'll balance your parens alright.
02:10callengotcher structural editin' right here son.
02:10kennylovesroasteyes
02:10arrdemcallen: but can you reindent indentation sensitive grammars?
02:11kennylovesroasteyou slurp s-expressions like Obama does the private economy
02:11chordwhy did the following work even without :gen-class java -jar ./target/rts-0.1.0-SNAPSHOT-standalone.jar
02:11callenI don't think anybody understood what I was saying.
02:11kennylovesroastecallen: no i just slurped it to my own political means
02:12brehauthttp://xkcd.com/1270/
02:12marcopolo2Anyone know how I can do the cljs equivalent of some.library.with.func(12,5)? Instead of doing (.func (.-with (.-library ....
02:12OtherRavencallen: you were making structural editing sound like prostution... I think
02:12callenjesus, at least somebody got it.
02:12callenthick ass yobbos.
02:12kennylovesroastetell me how it work with prostituion?
02:12arrdemcallen: I mean do you want audience feedback here? you're doing this heckling thing pretty well
02:12kennylovesroasteyes, slurp functions
02:12arrdemcallen: and the popcorn is hot
02:13callenkennylovesroaste: I work it. With you. Working it.
02:13callenkennylovesroaste: for a fitty and a tank of gas. And I rebalance your parens. Greek.
02:13callenbare symbols, the works.
02:13kennylovesroastecallen: : fity 2
02:13callenyou're not very good at this conversation thing.
02:14OtherRavenyou geeks and your jargon
02:14kennylovesroastenot at all, just south park
02:14kennylovesroaste2 fity
02:14callendid the world collectively decide psychometrics weren't a thing? Can we still do a channel gatekeeper that subjects the entrant to an IQ test?
02:14callenI know it might be culturally insensitive/biased, but the false negatives might be worth it.
02:15arrdemok so unless you want this troll to get community rep points I suggest we kick it posthaste.
02:15kennylovesroastecallen: :nope, you got me
02:15kennylovesroastecallen: : what would you do without being a big man
02:15kennylovesroasteshit
02:15muhoo~gentlemen
02:15clojurebotYou can't fight in here. This is the war room.
02:15noonianthats awesome
02:15OtherRaventehehe
02:15callenmuhoo: there's no fight here. He runs flailing into brick walls back and forth. I sit in my chair and heckle.
02:16kennylovesroastecallen wants to be a big man
02:16callenwe could do a strength competition, but if you don't train, you'll probably lose.
02:16callenI'm okay with deciding things on that basis, home team advantage.
02:17OtherRavenis this the sort of strength training you program?
02:17callenI just don't think it's the most relevant metric.
02:17kennylovesroasteit reminds me of Boogie Nights
02:17kennylovesroaste"how much do you bench"
02:17chordOk I finally got lein run working, now I need someone to tell me how to get JOGL working
02:17callenhaha, I do a lot more than just bench.
02:17callensquats/bench/press/deadlifts/power cleans...
02:17arrdemcallen: dost thou even hoist?
02:18callenarrdem: VERILY
02:18kennylovesroastecallen: how many men have you killed in combat?
02:18muhoocallen: do not feed
02:18callenkennylovesroaste: none, are you volunteering?
02:18callenmuhoo: fine fine.
02:18kennylovesroastecallen: you've never killed a man?
02:18arrdemmuhoo: until we kick it, I say let him loose.
02:18chordIf I don't get an explanation of how to do JOGL from someone like tbaldridge in 1 minute I'm going to start trolling
02:18callenkennylovesroaste: no but you're making me reconsider my ethics.
02:18arrdemkennylovesroaste: I'm about to once this reverse whois finishes..
02:19callenLOL
02:19kennylovesroastecallen: you've never been in war?
02:19callenchord: threats don't work. The nation of Clojure does not respond to terrorist demands.
02:19arrdemkennylovesroaste: just keep typing. you'll know when it gets to you
02:20kennylovesroastehah
02:20kennylovesroastenever fought in Afghan or Iraq?
02:20kennylovesroastehaha
02:20kennylovesroasteyou've never been in war
02:20kennylovesroastebitch
02:21arrdemcallen: at what point are we allowed to mention t3ch and get these idiots out of here
02:21callenarrdem: I'm thinking about it.
02:21kennylovesroastecallen: you're a punk
02:21kennylovesroastecallen: you never fought in war
02:21arrdemcallen: I'm down. Also submitting a PR to clojurebot for a ~votekick
02:21arrdems/pr/issue/
02:21callengod that would be amazing.
02:22kennylovesroasteprobably european
02:22callenmaybe based on a rolling log of activity?
02:22kennylovesroasteswede or something
02:22callenparticipation I mean.
02:22kennylovesroastecallen: you're a punk ass-bitch
02:22arrdemcallen: nah. I'll base it on my clojure-cup entry which is community rep estimation
02:22callenarrdem: *serious-face* we're going to crush you.
02:23kennylovesroasteeuropeans
02:23callenarrdem: I have a crack team represented by California, Chicago, and Vancouver :)
02:23arrdemcallen: I have a team of Austinites. we win.
02:23callenarrdem: only in income left-over after taxes :(
02:23kennylovesroastesome of us fight in wars
02:23calleneverytime I see a pay-stub I cry deep deep tears of sorrow.
02:23kennylovesroastesome of us don't
02:23kennylovesroasteyou're a punk!
02:23arrdemtechnomancy: sorry to bug you but for the love of god kick this troll
02:24kennylovesroasteus americans fight for you
02:24callenI think t3ch won't do it just because he latched onto my butthole.
02:24callenand will blame me because the last two trolls latched onto me.
02:24arrdemcallen: wat
02:24arrdemoh. eh.
02:24callenarrdem: half-joking.
02:25kennylovesroastefuck you europeans!
02:25arrdemcallen: yeah I'll be interested to see what the other rep systems look like..
02:25callenarrdem: we're doing Simonides.
02:25arrdemcallen: I don't get it.
02:25callensuperhero lossless client analytics :D
02:26kennylovesroastei will always hate leftists
02:26arrdemI think our name is nil punters :/
02:26kennylovesroastewhich means all europeans
02:26callenarrdem: our team is named Flying Parens
02:26kennylovesroastejust pure fucking scum
02:26kennylovesroastekick me
02:26callenproject name is Simonides.
02:26kennylovesroasterich hates leftist too!
02:27arrdemah. we settled on cloutjure, hence my earlier complaining about LEIN_IRONIC_JURE
02:27kennylovesroasterich hates european scum
02:27marcopolo2Okay, another cljs question; How do I do new someObj.foo() ?
02:27kennylovesroastefucking leftists
02:27arrdemmarcopolo2: (.foo someObj)
02:28marcopolo2arrdem: note the new keyword
02:28chordwhere do I download jogl jars, I can't find it among the trillion deep link hell on their webpage
02:28marcopolo2(.foo someObj) would become someObj.foo()
02:28callenchord: http://download.java.net/maven/2/net/java/dev/jogl/
02:28callenchord: http://docs.codehaus.org/display/MAVENUSER/Projects+With+JNI
02:28callenchord: http://opensource.mxtelecom.com/maven/repo/com/wapmx/native/mx-native-loader/1.2/
02:29gwschord: http://jogamp.org/wiki/index.php/Downloading_and_installing_JOGL
02:29callenchord: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
02:29chordI don't use maven
02:29chordso no
02:29arrdem(inc callen)
02:29lazybot⇒ 12
02:29callengave him everything he needed and still spat it back out.
02:29chordmaven is overbloated piece of shit
02:29arrdemsadly the record I built today only counts up not down, and will not reflect his poor choices.
02:30gwscallen: http://slash7.com/2006/12/22/vampires/
02:30chordi already went through like 5 hours just to get main function working, i'm not spending another 5 hours to figure out maven
02:30callengws: that is a really old post by Amy Hoy. That's awesome. I've been doing IRC long enough to know the pattern, didn't know the name for it.
02:30callengws: cool stuff, thanks :)
02:32chord(dec maven)
02:32lazybot⇒ -1
02:32callenchord: http://i.imgur.com/ul5CO44.gif
02:33callengws: http://i.imgur.com/Tg4KupP.gif
02:34gwsvery fitting - just the right amount of aggression
02:35callengws: http://i.imgur.com/Ay29K.jpg
02:37chordholy shit how am I suppose to ship my game this jogl jar is 24 megabytes
02:37callenchord: http://i.imgur.com/xllH4.gif
02:38arrdemcallen: congradulations on optimizing yourself out to a gif search
02:38chordyou can't expect people to download a 24 megabytes of bloat
02:38callenchord: http://i.imgur.com/SRjI8UV.gif
02:39chordarrdem: now you realize why your clojure games fail to get downloaded
02:40arrdemchord: .... I'm a language and software engineer. I don't do games.
02:42callenarrdem->chord == http://i.imgur.com/SCC5vcX.gif
02:43arrdemcallen: but seriously. it'd be awesome if clojurebot could pull down the reps of voters and hold a time window, thresholded kick vote
02:43callenarrdem: http://i.imgur.com/W8MIvcH.gif
02:43arrdemcallen: there was some talk of using karma as a backend, but that's easy to abuse
02:45chordwe need kenny back
02:46arrdemcallen: http://i.minus.com/ieNOTP0kc1MRf.gif
02:47callenarrdem: http://i.imgur.com/nelFxeU.gif
02:49chordhow do I add jogl jar to the project clitoris file: project.clj
02:49callenchord: http://i.imgur.com/YEqx5oK.jpg
02:50arrdemcallen: re last http://i.imgur.com/zo6Kb6y.gif
02:51Apage43oh man
02:51chordyou guys are dumb dumb
02:51callenchord: http://i.imgur.com/mwzRcmL.jpg
02:52arrdemchord: http://i.minus.com/i8Mlu0EqJoZb0.gif
02:52Apage43I switch back to this channel (with my IRC client that inlines images)
02:52Apage43and I have no idea what's going on but there are cats everywhere
02:52gwschord: http://i.imgur.com/bsdLyZO.gif
02:53arrdem(inc gws) THANK you I wanted to post that!
02:53arrdem(inc gws) ; THANK you I wanted to post that! ;; goddamn comments
02:53lazybot⇒ 2
02:54chordthe reason why you're all posting images is to deal with the pain of your girlfriend dumping you
02:55arrdemchord: http://i.imgur.com/NOt65Pn.gif
02:55chordI'M BLOCKING YOU ALL
02:55gwschord: http://i.imgur.com/W9j3TzM.gif
02:57callen(inc arrdem) (inc gws)
02:57lazybot⇒ 1
02:57callen(inc gws)
02:57lazybot⇒ 3
02:58arrdemt3chnomancy right about now.. http://i.imgur.com/nGfeX9C.gif
02:58callenme, when he notices - http://i.imgur.com/rgA8DCz.gif
02:59gwscallen: i had thought maybe http://i.imgur.com/D6sI2iv.gif
02:59chordI need kenny to distract these assholes
02:59chordkennylovesroaste where are you
03:00gwsthis will turn out to be a weird prank and they'll both leave at once with #HASKELL RULES part messages
03:01callengws: perfect @ gif.
03:01chordOH FUCK IT JUST TEACH ME HOW TO USE MAVEN TO GET JOGL
03:01chordNOW NOW NOW
03:02noonian_you can probably do a google search for maven jogl, find the current name and version number, and put [somthing/jogl "version"] in your leiningen project.clj and leiningen will get it for you
03:02chordhow the hell does leiningen know where maven stuff is
03:03Jardahttp://mvnrepository.com/
03:03seancorfieldit searches maven central and clojars
03:03Jardause teh search
03:03seancorfieldand anywhere else you tell it
03:03callenchord: I sent you all the info for this had you been paying attention.
03:04callenchord: wait, what am I thinking? http://i.imgur.com/KFVH0CE.gif
03:04seancorfieldperhaps [org.jogamp.jogl/jogl "2.0.2"]
03:04arrdem(inc callen)
03:04lazybot⇒ 13
03:06Jardahttp://i.imgur.com/sMAo5PW.gif
03:07chord(do it 13 times please (dec callen))
03:07gwschord: http://i.imgur.com/zEEsLlz.gif
03:08chordwhere are you retards finding these
03:09arrdemchord: http://i.imgur.com/dk43Yma.jpg
03:12dissipatechord, clearly they are finding them on imgur
03:12chordnoonian_ you LIED TO ME THES FAILED :dependencies [[org.clojure/clojure "1.5.1"] [org.jogamp/jogl "2.0.2"]]
03:12dissipatefail?
03:12chorddissipate how me get jogl work NOW
03:12chordlein run Could not find artifact org.jogamp:jogl:jar:2.0.2 in central (http://repo1.maven.org/maven2/) Could not find artifact org.jogamp:jogl:jar:2.0.2 in clojars (https://clojars.org/repo/)
03:12chordDISSIPATE DEBUG NOW
03:12gwschord: http://i.imgur.com/EJXmGbv.gif
03:12noonian_chord: try [org.jogamp.jogl/jogl "2.0.2"]
03:13dissipatechord, sorry, i haven't done anything with clojure dependencies. :(
03:13chordnoonian_wtf how did you know that would work
03:13dissipatechord, i heard noonian_ is pretty good at FizzBuzz
03:14chordnoonian_ and dissipate we are going to make a starcraft clone in clojure
03:14chordok go go go team
03:14callenchord: time for http://i.imgur.com/9xNfB70.jpg
03:14noonian_chord: I guessed based on the 'home » org.jogamp.jogl » jogl-all' at this webpage: http://mvnrepository.com/artifact/org.jogamp.jogl/jogl-all
03:17chordnoonia_ are you working on the project?
03:18chordnoonian_ you working?
03:18noonian_jogl? no lol
03:18noonian_i hadn't heard of it before you mentioned it today
03:19chordnoonian_ so thats why your girlfriend cheated on you?
03:21noonian_yeah, she was into opengl
03:21arrdemcal1en: I clam that ch0rd is a bot due to this being its 5th use of that hook... that or it has a script :/
03:22callenarrdem: he works on a script.
03:23arrdemcallen: how unfortunate. at least I could hope for some originality...
03:23callenarrdem: well, it's not explicit. Just an unoriginal creature :)
03:23chordyou are all anime video game addicted losers with no friends fat and drink junk food and watch hentai and get made fun of you are all losers
03:23arrdemcallen: http://i.imgur.com/kby68UN.gif I don't get people
03:24arrdemchord: http://i.imgur.com/UN25Bfq.gif
03:24callenchord: http://i.imgur.com/bz3YWZh.jpg
03:24gwschord: http://i.imgur.com/TL81F.gif
03:25dissipatechord, are you kidding me? we are hot software developers with fast cars and mansions
03:26chordwhy does swing awt and swt all exist for jogl
03:27callenchord: http://i.imgur.com/iSYWY6A.gif
03:27arrdemcallen, gws: http://i.imgur.com/IvI0r4i.gif
03:28arrdemthanks for the laughs, I must retire now
03:29chordYOU ARE ALL STUPID WITH NO GIRLFRIEND
03:29gwsarrdem: http://i.imgur.com/MjyuQOi.gif
03:30callengws: http://i.imgur.com/eQEm8Zp.gif
03:30arrdemchord: http://i.imgur.com/AD623pX.jpg
03:31chordyou guys are so sad
03:31gwschord: http://i.imgur.com/ieUhuJ8.gif
03:31chordinstead of being with your girlfriend
03:31chordyou look at imgur
03:31chordso girlfriend must have dumped you
03:31arrdemchord: http://25.media.tumblr.com/28601fce603ad7128c223a571866d35f/tumblr_moe8f81Va11sppmago1_400.gif
03:32seancorfieldi daren't even click on these links...
03:32chordarrdem: tell me about she cheated on you
03:32arrdemseancorfield: I'm just shuffling at this point. the results are awesome.
03:33seancorfieldchord: did you ever actually get jogl running?
03:33chordNO
03:33seancorfielddamn chord you must be really stupid! :)
03:33arrdemseancorfield: http://i.imgur.com/DlkEtqy.gif
03:33seancorfieldi'm not clicking those links arrdem :)
03:34gws(inc arrdem)
03:34lazybot⇒ 6
03:34callenchord: http://i.imgur.com/bJ3sovW.gif
03:34arrdemseancorfield: that one was totally safe. I swear.
03:35callenchord right now == http://i.imgur.com/BUcgW6q.gif
03:35chordFUCK YOU ALL
03:36callenhttp://i.imgur.com/INz7Q1u.gif
03:37seancorfieldwhat happened to kennylovesroaste ? that was all so entertaining... it was like a free cabaret between you guys...
03:37callenseancorfield: -_-'
03:37dissipateseancorfield, he's too busy earning his $120K
03:38TEttingerdissipate: s/$120K/disgust of his peers/
03:39dissipatea lot of people earning $120K are cranking out terrible code. :(
03:39dissipatepay doesn't mean much in terms of quality in the software industry. most companies just don't care about code quality.
03:40TEttingeryeah, look at callen. he doesn't pay the people he hires minimum wage but insists they pass a 7-tier fizzbuzz test :)
03:40seancorfieldlol
03:40callenTEttinger: it's not a strict pass/fail
03:41callenTEttinger: it's just a score card for comparing candidates.
03:41callenand you can skip over parts of it if you make the leap of logic to skip the more immediate obvious step
03:41TEttingerI'm taking notes callen
03:41TEttingeryou're giving away secretz
03:41noonian_well thanks guys, I did my googling and I'm ready for that test should it ever come up in an an interview
03:41seancorfieldmy tolerance for "coding tests" is very low so you'd probably kick me out too...
03:41dissipateTEttinger, i have the solution to his test right here: http://dave.fayr.am/posts/2012-10-4-finding-fizzbuzz.html
03:42callenseancorfield: I'm terrible at coding tests. That's why I use fizzbuzz.
03:42TEttingerthat was only 2 or 3 steps I thought?
03:42callendissipate: mine is different, but there are some lessons there.
03:42dissipatei've passed all the coding tests i've taken, but they were actually pretty lame
03:42seancorfieldcallen: i worked for a company that _forced_ me to write a coding test for applicants.. i told them it was a bad idea... then they said all the current hires should take it so we had a baseline
03:43seancorfieldall the senior folks passed... you know, the ones who'd been promoted to pure management positions... and all the _programmers_ failed it
03:43seancorfieldwhich was about what i expected
03:43dissipatei don't think i would ever work for google. my tolerance for high pressure interviews is not that good.
03:43callenseancorfield: fizzbuzz isn't a coding test, it's a bare minimum filter and it's a nice gradient for "placing" people.
03:44opqdonutI too have found the need for a "bare minimum filter"
03:44opqdonutsome candidates just don't seem to know how to program
03:44gwsdissipate: http://www.techspot.com/news/52973-google-admits-job-interview-brainteasers-were-waste-of-time-gpas-and-test-scores-dont-matter.html
03:44seancorfielddissipate: google have admitted their old interview technique is a "complete waste of time"
03:44callenI should really stop calling my test fizzbuzz, that's almost deceptive.
03:44seancorfieldyup, that's the article
03:44kizzx2maybe i missed, but why are coding tests bad idea in general?
03:44callenseancorfield: they didn't ditch the coding tests, they ditched the weird brain teasers.
03:45callendissipate: I'm terrible at coding interviews and survived a Facebook technical interview. Google is harder but not that much. There are worse coding interviews than Google.
03:45dissipategws, seancorfield, yeah, i saw that. but has google actually eliminated their high pressure interview tactics?
03:45opqdonutkizzx2: the technical interview situation is highly artificial and very stressful
03:45callenkizzx2: people that work well when given time to think, breathe, sip coffee, and read papers do poorly in that context.
03:45kizzx2that's true
03:45callenit's intended to produce false negatives in favor of meeting some kind of bare minimum.
03:45opqdonutkizzx2: how well you do in a technical interview doesn't necessarily reflect how well you can do actual normal day-to-day programming
03:46callenit also optimizes for people that are willing to devote time to optimizing for getting good at contrived problems for the sake of self-advancement.
03:46kizzx2but i guess that would be better than just looking at GPAs
03:46callenwhether or not that's something you want to 'select' for in your interviewing process depends on the kind of company you are.
03:46callenI prefer to look at github repos, ask them about their work, deep dive a project they were responsible for, and then do fizzbuzz.
03:47callenfizzbuzz at the end because it can go on for hours.
03:47kizzx2i had a guy who said he programmed for high precision medical software, when asked to write a function to calculate area of circle he started with "int area_of_circle(int r)"
03:47callenalthough I usually cut it off after 15-30m
03:47dissipateany place that has interviews that go on for a week or more is not a place i will ever work
03:47kizzx2that was C++
03:47Apage43We just throw candidates at a grab-bag of random folks for ~45min each
03:47Apage43which is a bit odd
03:48Apage43I have no idea how anyone else does interviews
03:48callenthat's what happens at my company and we usually do it in pairs/triples but my coworkers usually prefer to watch me do my thing.
03:48seancorfieldi ask about projects, and look at their google footprint (github etc), but don't bother with a specific coding style problem
03:48Apage43I usually yeah, have them Explain Like I'm Five a project they worked on
03:48callenI try to keep them as relaxed as possible.
03:49callenApage43: that's a good start, but I like to start diving into the particulars of their project to see how well they understood it.
03:49callenand if they're representing the degree of involvement they had.
03:49seancorfieldwhat was your worst project? why? what was your best project? why?
03:49seancorfieldthen drill in
03:49Apage43yeah, once I get the high level thing I'll start picking things and having them drill in
03:49callenseancorfield: yeah.
03:49dissipatecallen, and how much emphasis do you put on clean code? i've seen programmers who can write very complex code that appears to be correct that is unreadable and unmaintainable, and they don't give a damn. would you hire a 'write only' programmer?
03:49TEttingerkizzx2: I just realized how bad that is.
03:50callenApage43: the project I just got over the hump of...I'll be telling stories about it for a decade at least.
03:50callendissipate: I don't usually get a clean-room way to evaluate clean code.
03:50seancorfieldi'm amazed at how many devs have no real grasp of software process (tdd, ci, cd, bug tracking and lifecycles, version control strategies)
03:50TEttingerdissipate: I wouldn't hire me.
03:50callendissipate: whiteboard code is unfair. github code is rarely serious enough to judge on that basis.
03:50callenI prefer clean code by a huge amount, but I haven't found a way to measure it.
03:51Apage43The last guy I did though was awkward, since every time I tried to drill down I got "I don't know how that works, it was a library."
03:51callenI'm way stricter than my coworkers. I write immutable Python classes and the like.
03:51Apage43Which wouldn't have been so bad if he didn't list all those topics on his resume as "skills"
03:51callennot in interviews, for production.
03:51callenApage43: some skill. dem googlin'.
03:51dissipatecallen, one simple rule of thumb is function size and whether they adhere to the 'do one thing' rule.
03:52callenif you say so? I take a more nuanced point of view but ultimately I don't get to see real world code from them.
03:52Keletseancorfield: Well, maybe you are referring to more senior developers, but at my university we did theory, a bit of coding, and almost nothing related to version control, tdd, agile, or bug tracking, or any of that.
03:52Kelet(For CS)
03:52callenUnless I give them a homework assignment which I hate doing except as a follow-up
03:52KeletI wish more universities had a software engineering degree or something.
03:52callenKelet: I don't.
03:52callenI wish more universities actually taught people CS and programming.
03:53callenyou can learn git in an afternoon from a free book.
03:53dissipatecallen, how about a clean code test? show them some gnarly code and ask how they would clean it up. it wouldn't show that they are clean coders, but at least find out if they know how to clean code.
03:53gwscallen: please tell my coworkers that
03:53callengws: dude. my company uses hg. I am ready to hang from the rafters.
03:53seancorfieldcallen: right, which is why i'm stunned that many devs don't seem to understand those industry basics... even tho' university doesn't teach it
03:53Apage43it's a lot easier to teach git to someone who doesn't understand source control at all than to teach it to someone who thinks subversion is fantastic =P
03:54callendissipate: it's a nifty idea but they can always foist off by saying they don't know the language or something.
03:54KeletI don't know, it took me a while to really figure out git. Sure, you can know it conceptually, but when you get into tricky situations it can be difficult to apply a concept.
03:54gwswe used SVN and switched, and i've had some of the strangest discussions...
03:54callenApage43: yep.
03:54dissipateKelet, a lot of shops don't do TDD, agile, bug tracking
03:54gws(inc Apage43)
03:54lazybot⇒ 6
03:54callen(inc Apage43)
03:54lazybot⇒ 7
03:54dissipatecallen, they can say they don't know the language for the language they are interviewing for?
03:54seancorfielddissipate: i used to show candidates a bad implementation of strcpy() or something similar and ask them to find the bugs... but that was pretty low level
03:54TEttingerpfft bug tracking. I prefer my bugs silent and unnoticed
03:55noonian_man, I was using rcs at my university; it was rough
03:55callen"I do not recognize the existence of flaws in my software"
03:55Apage43I once worked somewhere that build a version control system in house
03:55seancorfieldrcs... oh i remember that... as a step up from sccs :)
03:55TEttingernot invented here eh
03:56Apage43yep
03:56seancorfieldApage43: srsly?
03:56Apage43yep
03:56gwsyou worked for microsoft?
03:56dissipateseancorfield, ask them to clean up code that has clear violations of Demeter's Law or dependency injection.
03:56TEttingerteamserver 2016: it won't work for 3 more years
03:56Apage43it was made of perl, VB6, informix, and rexec
03:56callenDemeter's is such utter nonsense.
03:57dissipatecallen, how so? seems pretty basic to me.
03:57TEttingerDemeter, mother of persephone?
03:57Apage43and was tightly integrated into the deployment system
03:57callendissipate: tripe.
03:57dissipatecallen, poppycock?
03:57Apage43(you could only deploy code that was checked into the system)
03:57callenindeed.
03:57dissipatecallen, and this is why we can't have clean code
03:57callendissipate: http://i.imgur.com/ZBwTnNI.gif
03:58noonian_just drink beer with them, chat em up, and go with your gut imo you'll probably do just as well
03:58hyPiRionnoonian_: yeah, I wouldn't be surprised if that were the case
03:58callennoonian_: I'd still probe their knowledge over beer.
03:58noonian_yeah for sure
03:58callenI'm kind of insistent with my probes. Just ask my ex-girlfriends.
04:00chordI STILL HATE YOU ALL
04:00chordbut i need help
04:01wedrgnaa
04:01chordhttp://lifeofaprogrammergeek.blogspot.com/2009/04/opengl-in-clojure.html
04:01chordwtf is doto
04:01wedr /ignore chord
04:01wedrups
04:01callenchord: http://i.imgur.com/x4R1BHY.gif
04:01gwschord: extinct bird
04:01callen(inc gws)
04:01chord(doto (.getGL drawable)
04:01lazybot⇒ 4
04:01chordwtf does that do
04:01arrdem(inc callen)
04:01lazybot⇒ 14
04:02Apage43,(doto 12 println)
04:02clojurebot12\n12
04:02noonian_,(do (println 12) (println 13))
04:02clojurebot12\n13\n
04:03chordYOU GUYS AREN'T HELPING
04:03gwschord: it does getGL to drawable
04:04noonian_chord: in java you often have to call a series of methods on a mutable obect, so doto is a macro that sticks (.getGL drawable) in as the first argument to all of those method calls in (init ...
04:04callenchord: http://i.imgur.com/eWeAKfu.gif
04:04chordyou retards are all drunk
04:05callenhttp://i.imgur.com/CV2xoTY.gif
04:05seancorfieldchord: you're not helping your cause man... but you're entertaining :)
04:06noonian_it would be nice if there were units on the graph here: https://github.com/ptaoussanis/clojure-web-server-benchmarks
04:06callennoonian_: http://www.techempower.com/benchmarks/
04:06noonian_nice, thanks callen
04:06callennoonian_: the unit is requests per second mate.
04:07noonian_yeah, I was guessing that higher was better
04:07callennoonian_: my recommendation? use jetty or http-kit.
04:07gwsnoonian_: i admin a network and somebody was complaining about speed just the other day - he sent me this: http://puu.sh/4zjjH.png
04:07gwsi am completely serious
04:07noonian_yeah, I've been using jetty but I'm looking at maybe moving to http-kit for the websocket support
04:08callengws: rm -rf /mnt/nfsroot/home/user_responsible
04:08noonian_gws: lol
04:08Apage43I usually use aleph for that
04:08seancorfieldok, i've had about as much entertainment as i can stand so it's bedtime for me...
04:08callenmy only real complaint, if it can be called such, about http-kit is that you have to write your code async-safe. No thread affinity. No thread-local bs.
04:09noonian_so no dynamic vars?
04:09callennoonian_: I wouldn't recommend it :)
04:10callenI, for one, am in favor of forcing people to not rely on thread-per-request semantics.
04:10chord(.addGLEventListener canvas (proxy [GLEventListener] [] .......
04:10chordhow the fuck does that work
04:10callenbut I haven't convinced yogthos to take a flamethrower to lib-noir in favor of this crusade yet.
04:10chordwtf is proxy
04:10Apage43ew, proxy
04:11Apage43use reify
04:11callenchord: http://i.imgur.com/4vf35gb.gif
04:11chordthe corresponding java code does the following, how does the proxy create the new joglExample canvas.addGLEventListener(new joglExample());
04:12chordnoonian_: answer now hurry up
04:12noonian_I'm not a monkey
04:12chordnoonian_: so you admit you're not a clojure expert
04:13dissipatechord, #java
04:13noonian_yeah dude, I'm pretty new to clojure
04:13chorddissipate: i'm asking about proxy
04:13noonian_but I think it creates an object that acts like a GLEventListener I think
04:13noonian_I've never used proxy myself
04:14noonian_and I think its been deprecated in favor of reify and stuff
04:15Apage43http://i.imgur.com/wiqqwQm.jpg
04:16chordok noonian_ Apage43 explain proxy vs reify
04:17gwschord: http://stackoverflow.com/questions/5821892/why-should-i-use-reify-instead-of-proxy-in-clojure
04:17noonian_you should google them there are tons of examples out there
04:17chordTHAT STILL DOESN'T EXPLAIN WHAT REIFY IS
04:17gws,(doc reify)
04:17chordSTOP BEING LAZY NOONIAN_ JUST TELL ME THE ANSWER
04:17clojurebot"([& opts+specs]); reify is a macro with the following structure: (reify options* specs*) Currently there are no options. Each spec consists of the protocol or interface name followed by zero or more method bodies: protocol-or-interface-or-Object (methodName [args+] body)* Methods should be supplied for all methods of the desired protocol(s) and interface(s). You can also define overrides for meth...
04:18chordwtf that documentation doesn't help
04:18chordjust more confusion
04:18metelluswhat're the odds of an op showing up here ever
04:18gwschord: http://clojure.org/datatypes
04:18chordmetellus you can makes things go faster be explaining how this works http://lifeofaprogrammergeek.blogspot.com/2009/04/opengl-in-clojure.html
04:19llasrammetellus: technomancy has ops, so worst-case is most PDT waking-hours
04:19noonian_it returns an instance anonymous class that can implement zero or more interfaces
04:20metellusgood to know, thanks
04:20hyPiRionguys, guys
04:20hyPiRion/ignore is your friend
04:21llasramOh, is that what we're talking about?
04:21llasramI /ignored that guy days ago (assuming it's the starcraft clone dude)
04:21chordhey i'm not trolling, i'm making progress
04:21chordI have code to prove it
04:21callenchord: three lines of code, one of which is (doto ...)
04:24noonian_one thing you could do chord, assuming you are trying to get that code running, is try to indent everything better because it doesn't have very clear style imo
04:24chordam I suppose to use proxy or reify is there no "new" function to create an object?
04:25Apage43,(new java.util.Date)
04:25clojurebot#inst "2013-09-27T07:54:31.952-00:00"
04:26chordok but I can't add crap to that to convert this to clojure: frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { exit(); } });
04:26chord(new WindowAdapter ..... uh yah stuff go here?????
04:27Apage43(doto frame (.addWindowListener (reify WindowAdapter (windowClosing [this _e] (.exit this)))))
04:28chordso why can't I ignore new and always just use reify
04:28noonian_you can use new to create instances of existing java classes
04:29noonian_but usually you would use the sugar
04:29noonian_(Integer. 6)
04:30chordstill not understanding why new exists if reify exists
04:30Apage43new Thing() { extra methods; } is different from new Thing()
04:30noonian_I don't think you could create an instance of Integer with reify
04:31Apage43the first is closer to reify. It creates a new class that implements some interface, and instantiates it, all at once
04:31Apage43just like reify
04:31Apage43whereas new Thing(), and regular new, just instantiate existing classes
04:34chord(reshape [#^GLAutoDrawable drawable x y w h]
04:34chord#^
04:34chord???????????????????????????????
04:36chordi demand an explanation
04:36noonian_its part of the proxy form, its the definition of the reshape method like the java one
04:37chordnoonian_ no web documentation = you bullshitting me
04:38noonian_its just like the java version lower down in that file you were linking
04:39noonian_i told you it was indented poorly, and i don't need documentation because you posted the code
04:39chord(.addWindowListener (proxy [WindowAdapter] [] (windowClosing [e] (exit))))
04:39chordthat one has no #^
04:39chordso you lying
04:40noonian_(proxy [GLEventListener] []
04:41noonian_public class joglExample implements GLEventListener
04:41noonian_public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) {
04:42noonian_(reshape [#^GLAutoDrawable drawable x y w h]
04:43chordand how does that help me understand #^
04:43noonian_oh, i didn't realize thats what you were asking lol
04:43noonian_that is a type declaration I think
04:43noonian_like GLAutoDrawable gLDrawable
04:43noonian_in java
04:43chordwtf why is there type declaration in a dynamic language
04:44noonian_well, you are interacting with a java library what did you expect?
04:44chordso why does x y w h have no type declarations
04:44chordand what happens if you leave off the type declaration on drawable
04:45chordSEE YOU GUYS ARE ALL CLOJURE NOOBS
04:45chordNONE OF YOU ARE ANSWERING IN 1 NANOSECOND
04:45chordNICE JOB YOU EXPERS
04:45chordEXPERTS
04:46noonian_i wouldn't be surprised if it worked without the type hint
04:46clgvchord: lol. all-morning trolling tour started? :P
04:47noonian_its probably faster with it
04:47chordclgv: i'm not trolling
04:47chordclgv: i have code
04:47noonian_lol
04:47jkj_chord: prolly works without type hints, but might be faster with it because could skip some reflection
04:47clgvnoonian_: yes, you are right, most interop calls will also work without type hints.
04:48clgvchord: you are trolling in your uppercase messages :P
04:48noonian_clgv: thanks, I haven't done much interop
04:48chordclgv: you're just mad that I'm actually making progress towards making an opengl window in clojure where you failed
04:48jkj_:D
04:49chordsee even jkj_ agrees with me
04:49clgvchord: that's the kind of trolling I meant ;)
04:49chordclgv: so no denial means i'm right though
04:49clgvchord: just keep a polite tone around here and you will get a lot of help as everyone else does
04:50TEttingerthe well may have been poisoned, clgv.
04:50jkjbtw. why ^# here and not just ^
04:50jkjoops
04:50jkj#^
04:50Apage43i believe that's older syntax
04:50clgvjkj: thats old syntax somewhat prior to clojure 1.2
04:50TEttingerjkj: isn't that the old syntax for type hints, ninja Apage43
04:51chordoh shit so this example i'm looking at is old syntax?
04:51chordwhats the new way
04:51Apage43^
04:52katratxoe.g ^String
04:54chordso next question after i get a window up: how the hell do you implement something like chrono trigger where there are multiple time lines
04:55noonian_get a sprite up, then take a game design course
04:55Apage43http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html
04:55jkjChrono Trigger! クロノ・トリガー!
04:56Apage43http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#UNDECIMBER
04:56jkjchord: http://stackoverflow.com/questions/16385049/timers-in-clojure
04:56jkjchord: didn't answer your question though
04:57chordok lets go simpler zelda, how the hell do they maintain the state of the world that moves the plot forward and forward
04:58Apage43http://www.slate.com/articles/arts/culturebox/2013/07/hollywood_and_blake_snyder_s_screenwriting_book_save_the_cat.html
04:58chordso no answer means you guys are too dump to know how they do it
04:58noonian_theres probably a variable somewhere called world that holds that state
04:58jkjnow. we've just forgotten how we did it
04:58noonian_afk
04:59chordso you guys admitting you don't know how they implement zelda
04:59jkjchord: you can e.g. have an agent holding the big world state map
04:59jkjchord: and then send-off funcs to modify worl state
05:00jkjnot my core competence so i wouldn't know...^H ^H ^H^^H ^H care to answer because i've only forgotten
05:00jkjtroll-friday
05:00jkjgotta grab lunch
05:01jkjwhat's the time?
05:01chordits night time...
05:02jkjso i'm having my weekend before you. oh goody. 11:31 here
05:04chordjkj: so you make a clone of zelda: a link to the past, now you hire retarded script writers like Apage43, what is the data representation that allows Apage43 to add all the triggers that modify the state to make the plot work in game
05:06jkjchord: i'd say data should be hierarchical maps and state changes functions that modify the tree
05:06chordI WANT DETAILS OF HOW TO DO THIS
05:06chordSOMEONE MUST HAVE ASKED THE EXACT SAME QUESTION BEFORE
05:06jkjchord: momentos
05:06chordTHERE SHOULD BE AN ARTICLE OUT THERE
05:06chordGIVE ME A LINK TO IT
05:06jkjchord: http://clojuredocs.org/clojure_core/clojure.core/add-watch
05:06chordGIVE ME A LINK TO THE PAST (you see that pun I'm really cool)
05:07jkjchord: you register a watch that reacts to the world changes
05:07chordi don't e at memenmtos
05:07chordhorrible candy
05:07OtherRavenchord: so what is it a troll eats?
05:08chordOtherRaven: if you don't have an answer to how they implement zelda link to a past then you are useless to me
05:09OtherRavenchord: good, I'm loath to be useful to you
05:10jkjtired trolls need some lone time in recuperacoon, in comfortable sopor slime
05:11OtherRaventhat sounds... messy
05:12noonian_sopor slime, always good for parties
05:12noonian_the top link on google for sopor slime just made my night/morning
05:16chordso when I get an opengl window up what project are we going to make
05:16chordyou guys are going to help me right
05:17noonian_have you ever made a game in any language before?
05:18chordnoonian_ if I say yes will that mean you will help
05:18noonian_not a chance, I'm passing out soon
05:18chordwhy are you guys so resistant to game idea
05:19noonian_if you write a game I will look at some of the code if its short enough, but I'm not going to write one for you
05:21chordnoonian_ oh so you admit you're going to STEAL MY CODE
05:21noonian_no, I didn't say I'd use it
05:22chordAH HAH I CAUGGHT YOU
05:23noonian_you won't have anything to worry about until you write something worth stealing
05:24chordnoonian_ so you're saying i'm WORTHLESS
05:24noonian_you keep putting words in my mouth, I'm not saying anything you're saying I'm saying
05:25noonian_good luck with your game
05:25chordnoonian_ you're going to help me with starcraft clone
05:28chordnoonian_ just say yse
05:32chordDAMN IT
05:32chordNO ONE HELPS ME
05:33hyPiRionchord: Life is not always delivered on a silver platter. If you treat people with respect, have an open mind, do some research yourself (e.g. by reading books and, in general practise programming and problem solving) you will get far
05:35chordhpYiRion: but I am spoiled.
05:37TEttinger$google the first ten games you make
05:37lazybot[The 12 Best Games on Facebook - Kotaku] http://kotaku.com/5878915/the-9-best-games-on-facebook
05:37chord$google starcraft clone
05:37lazybot[Atrox (starcraft clone) gameplay 1v2 vs Ai - YouTube] http://www.youtube.com/watch?v=1PGHy_4dXkE
05:37hyPiRionI love how that title says "the 12 best" and, in the link, says "the-9-best"
05:38chord$google will hyPiRion help me to make a starcraft clone
05:38lazybot[Stetmann's research log - StarCraft and StarCraft II Wiki] http://starcraft.wikia.com/wiki/Stetmann's_research_log
05:40TEttinger“Your first ten games will suck.” – Jesse Schell (Game Designer, Author of “The Art of Game Design: A Book of Lenses“)
05:41chordTettinger: guy made his first game http://www.achrongame.com/
05:42chorddidn't suck
05:43mercwithamouthok i can't believe you're still on here talking about starcraft
05:43mercwithamouthi'm new to #clojure but is this some sort of 'fetish' for you?
05:43TEttingermercwithamouth, it's a disease. trollitis, or anon's syndrome.
05:44chordyou like call of duty games instead?
05:44mercwithamouthTEttinger: my god...
05:45mercwithamouthif i were to make a game it would be futuristic levitating cars fighting in cities...same angle/perspective as starcraft...
05:45mercwithamouthbut lets not get 'that' started...
05:46mercwithamouthanyone bought the lispcast video?
05:47mercwithamouthi just grabbed it..it seems like it may be quite good for new guys
05:47chordlets talk starcraft instead
05:47mercwithamouthgo to #gamedev
05:47chordthey already banned me
05:48mercwithamouththat's an idea...
05:59djcoinAhah, I worship StarCraft (broodwar) too :)
06:00mercwithamouthchord: write a clojure book on natural language processing for me please
06:47hashcatdifferent betweem protocol and multimethod
06:47hashcat?
06:47clojurebotGabh mo leithscéal?
07:06clgvhashcat: protocols dispatch on the first argument only multimethods can dispatch on any argument
07:07clgvhashcat: what exactly do you want to know?
07:07hashcatclgv: which of them I should use
07:07clgvhashcat: depends on what you want to do
07:07hashcatI get it now
07:08clgvhashcat: protocols are located closer to the OOP world whereas multimethods are rooted in the functional world ;)
07:13hashcatclgv: that's a concise advice
07:52klokbask_having trouble saving the complete body of a POST response (using clj-http)
07:53klokbask_actually, it's the same problem even if I just GET the url and save it. It's an mp3 file but it's missing some bytes
07:54klokbask_so I guess the problem is how I use io/input-stream and io/output-stream. any takers?
08:01llasramklokbask_: It's hard to say much without code. Refheap/gist?
08:06mercwithamouthwhen would you say the joy of clojure is suitable to read? i'm only 1/4 through programming clojure(oreilly book)
08:08llasrammercwithamouth: I think it's the best programming language book I've read, so definitely yes IMHO
08:08llasramOh, *when*
08:08llasramHah
08:08llasramEh, I think you only need the basics of the language
08:10mercwithamouthllasram: gotcha. ordering. i like to have a few books on hand...i'm getting comfortable with the basics and this seems like a book that'll answer my 'why' questions
08:10`cbpmercwithamouth: read 3/5 of clojure programming and then move on to joc
08:12mercwithamouth`cbp: and not 3/6? =P
08:13`cbpwell its divided into 5 sections :P
08:13mercwithamouth`cbp: gotcha...i figured after building abstractions =P
08:14mercwithamouth`cbp: actually you're dead on.
08:15klokbask_llasram: https://gist.github.com/grav/6727373
08:16klokbask_llsram: test-url: http://vaas.acapela-group.com/MESSAGES/009086065076095086065065083/EVAL_3480291/sounds/330594833_d29b45429f745.mp3
08:16klokbask_this will say "one two three four five", but some of the 'five' is cut off. If I curl it, it works fine
08:18llasramklokbask_: You need to make sure your streams are properly closed. This is probably a result of buffering on the output stream not being written yet when you examine the file
08:18llasramklokbask_: In this case, you can actually just change your `let` to `with-open` and it should work fine
08:22klokbask_llasram: great, thanks a lot. how come with-open is required, couldn't it be handled automatically when something goes out of scope? just wondering
08:27llasramklokbask_: In some languages, kind of. In Clojure and on the JVM in general, you have garbage collection semantics which I think this post is a good way to think about: http://blogs.msdn.com/b/oldnewthing/archive/2010/08/09/10047586.aspx
08:47borkdudewhy didn't anyone tell me about lein retest before...
08:49mdrogalisborkdude: I've been using Midje autotest.
08:52borkdudewe're not using midje right now
08:52borkdudebut thanks
08:53mdrogalisYep.
09:11ni291187Is there a documentation page where all the special character are explained: @, ~, #, ' etc.?
09:12raggeni291887: http://clojure.org/reader
09:12raggerepl: http://clojure.org/reader
09:12raggemight be what you're looking for
09:13replragge: exactly what I was looking for, thanks!
09:27mdrogalistbaldridge: ping
09:27tbaldridgemdrogalis: pong
09:36mzdravkovOk, I can destruct function argument with [head & tail] for example, but can I "struct" it when passing to function like: (fun [h & tail]), like I can do in erlang
09:37mzdravkovor I will have to concatenate them manualy
09:40ambroseb_mzdravkov: have you looked at apply?
09:41ambroseb_mzdravkov: I don't think I understand what you mean.
09:43mzdravkovambroseb_: I am writting a recursive function, where I want to apply some operations on a collection of items. the number of operations to be applied on every item is random, so I want to do something like (defn myfun [[item & other-items] remaining-operations])
09:44mzdravkovand this function will be recursively called working on the same item, while decrasing the remaining-operations "var"
09:44mzdravkovohh I understand...
09:45mzdravkovI can make the function multiarity and there will be no need to do it with concatenating the head and tail
09:48hfaafbmzdravkov: I don't understand why you would want to pass in the head of the collection again
09:50hfaafbif you have some example code it might help clarify
09:50mzdravkovhfaafb: in the common situation you want to apply some operations over all elements of a collection, like map or similar, but only once per each element. I want to do it multiple times, where the number of times for each element is a random number
09:50mzdravkovhfaab: I will write it just in second
09:55mzdravkovhfaafb: something like this
09:55mzdravkovhttps://gist.github.com/mzdravkov/6728540
09:56mzdravkov(refresh the gist please, i had forgot to decrement pos)
10:02clgvmzdravkov: you can use (cons head tail) or even (list* head tail)
10:03mzdravkovclgv: thanks, i always forgot cons. Can't get used to use it :)
10:06jowagHi, why does associative? return false on Strings?
10:08clgvbecause they are not associative
10:09borkdudeso what more linting tools can I use apart from eastwood
10:09clgvwhy should they?
10:10jowagwell in that case (get "abc" 0) should not be valid
10:10BobSchackThat's lookup not association
10:12jowagah yes, my bad
10:13jowagok and what about counted?, returns fals on strings but the count works, and is constant time
10:13borkdudecan lein ancient also find outdate plugins (for example itself)
10:14clgvwell with String you are in an interop scenario. clojure cant implement those predicates for all maybe unknown java classes ;)
10:15clgvbut you can ask on the mailing list and see if others think that should be fixed...
10:15jowagYou can extend protocol on java classes or even interfaces
10:16clgvjowag: clojure.lang.Counted is an interface and not a protocol
10:18jowagheh I forgot, working with Clojurescript lately, whete this is a protocol.
10:19jowaganyway, I just wanted to know if the reason is a technical/historical one, or if there is some fundamental reason why String should be so special
10:20jowagbecause when we will have CinC, I suppose all clojure.lang interfaces will be replaced by protocols
10:21wakeuphi all
10:23wakeupI am looking for a clojure library that provides me with primitives suitable for building a RESTful API. Important: It needs to be session aware. E.g. I have to implement a stateful protocol on top of HTTP. Any suggestions?
10:28pyykkiswakeup: ring or http-kit and compojure + session middleware
10:33chenjfwhois wakeup
10:42s4muelwakeup: liberator
10:48devnAnyone here know how to hook a clojurescript project up inside light table?
10:48devnso i can use the browser tab thingy?
10:50clgvisnt there a light table video showing this?
10:50devnmaybe :X
11:20logic_progusing clojurescript, is htere a clean way to (1) take a block of HTML code (2) render it to a DOM elemnet in the background [i.e. don't display it] -- perferably using domina. The point is that when I "switch" to the element, I want it already pre-rendered
11:33postwaitI'm trying to inject a def into another namespace from Java and I'm having issues.
11:34mdrogalispostwait: I'll bet.
11:34postwaitIs that not possible?
11:34mdrogalispostwait: I'm not sure, but it doesn't sound easy.
11:34mdrogalisYou probably can, but it's not at-hand knowledge for me.
11:35postwaitI thought it would be as easy as "(ns some.namespace) (def foo (fn [x] x))
11:35postwaitCompiler.load(new StringReader(that string));
11:35postwaitbut that doesn't work
11:35clgvpostwait: use `intern`
11:35mdrogalisI always never interact with Clojure via Java, but I don't think it quite works that way.
11:36postwaitclgv: Var.intern ?
11:37clgvpostwait: I meant the clojure function. if you are sure the ns is loaded already (in-ns 'some.ns) (def foo ...) would be more appropriate
11:37tbaldridgemdrogalis: see http://skillsmatter.com/podcast/scala/impromptu-rich-hickey-lightning-talk
11:39nDuffpostwait: your_ns = Namespace.findOrCreate(Symbol.intern("some.namespace")); Var foo = Var.intern(your_ns, Symbol.intern("foo"), value_being_injected)
11:40postwaitvalue_being_injected needs to be a function.. I guess I could just run (fn [x] x) and get it's value.. then use that?
11:42postwaitis there a named identity function in clojure already?
11:42tbaldridge,(doc identity)
11:43clojurebot"([x]); Returns its argument."
11:43hfaafbare paid clojurists expected to know java? :)
11:43postwaitand if I was to fetch that from RT.var(ns, "identity"), what name space? "clojure/core" ?
11:44tbaldridgehfaafb: ish....I'd say when I interview people I expect them to know enough Java that I don't notice during the interview that they don't know java :-P
11:46hfaafbfair enough, are you more concerned with library knowledge or as fundamental knowledge of clojure's implementation?
11:46postwaitclojure is nice.. Java is fine… it's using the interconnect that requires frequent hand sanitizer.
11:47nDuffhfaafb: ...well, there are places where being familiar with the Java standard library is important. There are places where Clojure doesn't have concurrency primitives because java.util.concurrent's are good enough, for instance.
11:47nDuffhfaafb: ...someone who tries to (ab)use the primitives Clojure _does_ provide because they don't know about the j.u.c ones isn't using the right tools for the job.
11:48tbaldridgehfaafb: and there's stuff like Long/parseLong that you need sometimes, so it's good to know the basics. But for the most part, if you know enough Java to be able to understand all the API docs that you read, then I see that as a good sign.
11:49tbaldridgehfaafb: so make sure you know what all the keywords do (volatile, static, public, private, etc.), and be able to interpret the docs, you should be fine.
11:50mdrogalistbaldridge: I know it's the camera, but he looks like a supervillain.
11:51hfaafbthanks tbaldridge & nDuff
11:51ToBeReplacednDuff: like what? LBQ and the like seems less necessary post core.async?
11:51tbaldridgemdrogalis: personally I think he looks like Dr. Who: http://upload.wikimedia.org/wikipedia/en/2/2a/Fourth_Doctor.jpg
11:52tbaldridgeand that also explains why Clojure is so powerful, it's from the future.
11:53mdrogalistbaldridge: Scarves are the new fashion for programming indoors I suppose.
11:57indigotbaldridge: Ever since I started programming in Clojure I've neglected to cut my hair
11:57nDuffToBeReplaced: *PoolExecutor, to start with. Agents are pretty explicitly intended for cases where their state-carrying nature is needed, but they get all kinds of other uses as well.
11:58bbloomtbaldridge: aw you "fixed" by bug by changing the doc string
11:58mzdravkovhey guys, I am trying to implement very basic and non-optimized algorithm for searching in a maze (2d matrix). This is my function: https://gist.github.com/mzdravkov/6730316 The problem is that when a function-thread/'thread of the pmap' (i dont really know the proper term) find the target, the other threads don't stop. So this really creates something like exponential creating of threads... what is the good clojure way of handling this?
11:58tbaldridgebbloom: yeah, I figured I had made you wait long enough. Don't want to seem too friendly :-P
11:58bbloomtbaldridge: it's OK
11:58ToBeReplacednDuff: yea the pool executors... i've never utilized agents before
11:59bbloomtbaldridge: i'll just have to implement/propose core.random
11:59tbaldridgebbloom: actually this is just the first core.async bug fixing spree I've done in about a month.
12:00technomancykickstarter to buy Rich a 12-foot scarf and red frock coat
12:01eggheadlol
12:01eggheadi'd pitch in if I was guaranteed photo evidence
12:03devneggs
12:05devnalso, yes to technomancy
12:05indigotechnomancy: Yes
12:06indigoAlso include that if you pitch in $30+ you get a mug with a picture of him wearing that garb
12:06devnif you pay $10,000 you get to fly around in his tardis with him for an hour...or is it?
12:06indigo$10,000 and you'll have already flown around in his tardis with him
12:07devnlol nice
12:07indigoHow about that ;D
12:07Raynesdevn: How's the API clienty stuff goin'?
12:07devnRaynes: good, I'm going to work on it today for a bit I think
12:07Raynes:3
12:07devn"a bit" => 12 hours
12:08devnRaynes: what are you hacking on?
12:08RaynesMostly work stuff right now.
12:09RaynesI need to hop back in and finish up some laser stuff I was doing.
12:09indigo,@@@(atom (atom (atom "test")))
12:09clojurebot"test"
12:10devntriple star programmer
12:10devnerr "3 star"
12:12indigodevn: Of course! ;D
12:12indigoI'm trying to become a five-star programmer
12:12indigoStill stuck at three
12:15indigoAnyway, enough of Clojure-land... time to go back to "why the hell did we implement a custom ORM in PHP"-land
12:16clgvindigo: I'd go one more step back, why the hell did you use PHP to earn money ;)
12:17indigoclgv: I keep asking myself that as I learn more Clojure :P
12:18clgvindigo: I kept banging my head against the wall when I had to teach someone programming with PHP because their course used it...
12:19indigoIt's an incredibly hacky language
12:19indigoAnd it has no consistency to it
12:19hfaafbphp for money is definitely a dark path
12:19clgvwell you just have to lookup the rasmus lerdorf quotes
12:20jimrthytest
12:21clgvthe most frequent sentence when teaching back then was "well it works like this, but I am not quite sure what PHP does there..."
12:21indigoHehe
12:22tbaldridgethis is a great quote "For all the folks getting excited about my quotes. Here is another - Yes, I am a terrible coder, but I am probably still better than you :)"
12:22clgvtbaldridge: yeah, I highly doubt the truth behind that ;)
12:23tbaldridgeclgv: it's like leadership. Anyone who claims they are a great leader, is normally a really crappy one.
12:23clgvtbaldridge: now I have to think of the pointy haired boss ;)
12:24endouHello, I've wrote my first lazy-seq and I was wondering what part I got wrong and could be improved, here is the relevant part of my code: https://www.refheap.com/82b2570465bc3a3c2c7a54351
12:24endouI wanted to create a lazy seq on AmazonS3 objects in a bucket and a filter key
12:26tbaldridgeendou: the normal pattern is (cons this-val (lazy-seq (func (inc this-val))))
12:27tbaldridgewhere func is a recursive call to the original function (as you have it). I'm not sure what you have here is bad, it's just a bit odd
12:28tbaldridgeI guess it depends if you want the first item to be lazy or not.
12:29indigoHeh, rasmus
12:29endoutbaldridge: I tried that at first, but list-objects returns a map and I could not handle it with cons, I probably don't understand it well enough yet
12:29indigoEveryone's a bad coder ;P
12:30dnolentbaldridge: so how good is core.async at preserve line and column info?
12:30dnolenpreserving
12:31tbaldridgeAs of this week it should be much better. Before that it didn't at all.
12:31noncomi can instantiate a java class with (ClassName. args) but how can pass these ClassName. thing around just like a normal function? i tried, it gives an error. Also, using (new passed-class-name args) does not work
12:33dnolentbaldridge: k cool would like to see if actually possible to step through core.async code :)
12:33dnolenin ClojureScript
12:33noncomi also tried (eval `(new ~passed-class-name ~args)) and it says "Can't embed object in code, maybe print-dup not defined" i gues coz its a java call... but whatever, I can't guess a way...
12:33marcopolo2dnolen: That would be amazing, debugging go blocks currently is a hassle
12:33tbaldridgednolen: I think it's possible, it's just a matter of making sure to output metadata on the right output forms, which come to think of it, we don't do at all
12:34dnolentbaldridge: yes, that's important for source maps
12:34tbaldridgednolen: as of this week type hinting symbols works, but that's a different problem.
12:34dnolenmarcopolo2: well it'll be an improvement
12:35noncomi have a dozen of java classes that i need to instantiate. and all of them accept the same parameter list
12:36marcopolo2What's the best way to do something like foo.bar.baz.func(1,2,3) in clojurescript?
12:36noncomso i figured it could be wonderful just to pass the class constructor around...
12:36noncom?
12:36dnolenmarcopolo2: need more information, is that namespace or some external JS thing?
12:37marcopolo2dnolen: External JS library
12:37ToBeReplacednoncom: #(ClassName. %)
12:38dnolenmarcopolo2: js/foo.bar.baz.func(1,2,3)
12:39dnolenmarcopolo2: you're going to need an extern file if you're going to use advanced compilation
12:40postwaitI'm still not successful… I'm trying to do this now: (in-ns foo) (def myvar RR)
12:40marcopolo2dnolen: thanks!
12:40postwaitwhere RR is a Java object…
12:40postwaitAnd I need to do it from the Java side, not the clojure side.
12:40postwaitI've just create the Java object via some other path and need to "tell" clojure about it.
12:41noncomToBeReplaced: interesting.. that'd work for a single-arg constructor.. for a multiple arg constructor, looks like I have to pass as many %s as it has args... gonna try now..
12:44noncomToBeReplaced: https://www.refheap.com/19065 here is what I have, still does not work
12:45marcopolo2Is there a rule as to when it's safe to do (.-attribute obj) vs. (aget obj "attribute") to prevent munging?
12:45bordatouehi, is it possible to redirect the output of pprint/print-table to a file
12:45noncomthe additional complexity is added by the fact that threre are 3 possible sets of arguments, but they are uniform for all constructors
12:46noncom(apply) also does not work..
12:46noncomsays "ctor" not found, because there is no ctr for a single %
12:49dnolenmarcopolo2: the rule is simple Google Closure will munge everythign
12:49dnolenmarcopolo2: unless you explicitly use strings for some property everywhere it will not work
12:50marcopolo2dnolen: So if I'm using arraybuffers, I should to (aget arraybuffer "byteLength") to be safe?
12:50marcopolo2s/to/do
12:50ToBeReplacednoncom: that is your problem, yes -- the constructors aren't first class functions. you will need to construct separate functions for each arity
12:51noncomi see... so the simplest solution is putting the (cond) in every wrapper function explicitly I guess..
12:51dnolenmarcopolo2: Google Closure probably knows about it but no one way to know for sure w/o double checking w/o trying it under advanced compilation.
12:52dnolenmarcopolo2: Google Closure more or less tries to stay up-to-date but we generally lag behind the latest Closure
12:53marcopolo2dnolen: That explains a lot, thanks!
12:53ToBeReplacednoncom: eh... you can't really get around a macro here i think
12:53noncomyou mean writing a macro could help?
12:54ToBeReplacednoncom: yes, though the clearest way would be to always pass the full argument list if the default handling is deterministic
12:55noncomI was not yet successful in passing a java call like Window. or Window to a macro, I don't know how to dereference the symbol inside so it becomes a java call, ~passed-sym does not work
12:55ToBeReplacedtbh i don't really like this kind of thing b/c is looks like you should just call Window. directly -- write each function to just pass through args to the constructor, and write a function to go from a map to positional args
12:55noncomhmm, nice idea about assing the full list always
12:56noncomi could just go with some defaults for other args
12:56noncoms/assing/passing
12:58rasmustos/assing/sassing
12:59noncom))
12:59rasmusto(->> (()
13:00noncomhmmm
13:15nDuff...makes it very, very hard to make, clojure.core.* separate packages from clojure.core
13:16nDuff...hmm.
13:19dnolenBronsa`: file bit works like a charm, thanks much
13:21justin_smithtechnomancy: we changed out clojars group from antler to caribou (we finally got the github group we wanted), now searches for all our stuff only returns things under the defunct antler group, and nothing under the new caribou croup
13:21justin_smith*group
13:21justin_smiththis is clojars search
13:21Bronsa`dnolen: np
13:22technomancyjustin_smith: so newly-published artifacts aren't showing up in results?
13:22justin_smithwe can manually construct a url and see results, but nothing shows up in search
13:22ambrosebscrowdfunding full-time core.typed development, please share! http://www.indiegogo.com/projects/typed-clojure
13:22dnolenambrosebs: cool!
13:22justin_smithand even on our team we were used to using the search to see what our latest release was
13:23technomancyjustin_smith: can you link to one of the new artifacts?
13:23justin_smithsure
13:23clojurebotCool story bro.
13:23justin_smithhttps://clojars.org/caribou/caribou-core
13:23justin_smiththe entirety of caribou/ is seemingly blacklisted from search
13:24eric_normandambrosebs: good job!
13:24technomancyjustin_smith: could it just be artifacts deployed since a specific date?
13:25justin_smithhmm, could be
13:25justin_smithbecause we had a shift from deploying under antler/ to deploying under caribou/
13:26ambrosebseric_normand: thx!
13:26l3dxhelp a newbie: what's wrong with this? http://pastebin.com/kA7kHPGQ
13:26justin_smithI'll try deploying the latest to antler and see what happens
13:26marcopolo2ambrosebs: You got it dude!
13:26eric_normanddefinitely going in the gazette today
13:26l3dxthe thread doesn't seem to start
13:26technomancyjustin_smith: I can trigger a reindex too
13:26justin_smithtechnomancy: if you don't mind, I would appreciate it
13:27justin_smithso is indexing not automatic?
13:27technomancyjustin_smith: no, it is
13:29technomancyshould be, I mean
13:31justin_smithI just pushed the latest caribou-core under antler/ and it does not show up, the search shows the old version
13:31marcopolo2l3dx: any reason you aren't just using a future? http://clojuredocs.org/clojure_core/1.2.0/clojure.core/future
13:31justin_smiththough clicking through the result shows the latest
13:32dnolenClojureScript 0.0-1909 going out
13:32marcopolo2dnolen: nice!
13:32mdrogalis:)
13:32technomancyjustin_smith: ah... I think somehow the backup instance is handling deploys, which isn't configured to index properly
13:32technomancywe have a fallback JVM running
13:32technomancyI think we decided that wasn't such a great idea
13:34justin_smithtechnomancy: I guess that would explain it
13:34justin_smiththanks for the awesome free service anyway, thought maybe we were making some mistake on our end
13:36l3dxmarcopolo2: I don't know. I don't want to dereference the result
13:37technomancyjustin_smith: no, we've been in the middle of a transition to a new data model for a while now, but I don't get time to work on clojure stuff at work any more these days
13:37justin_smithalright, we can work around it
13:37technomancyI think I got it straightened out
13:38technomancybut the full reindex to catch up on deploys that got missed is still finishing up
13:39justin_smithcool
13:42marcopolo2l3dx: What does someFunction look like? you aren't executing it since it doesn't have parens around it
13:42marcopolo2s/someFunction/some-function
13:42l3dxah
13:42l3dxmarcopolo2: I'm just trying out the suggestions I got here: http://codereview.stackexchange.com/questions/31752/hangman-my-first-clojure-code
13:43justin_smithtechnomancy: seeing the results now
13:44technomancycool
13:44l3dxmarcopolo2: thank you! that made it slightly better ;)
13:44technomancyah, the vps got restarted last night
13:59marcopolo2l3dx: no probs, got it working?
14:03l3dxmarcopolo2: yup :)
14:04marcopolo2l3dx: awesome!
14:04piranhaif I have a JS library which (I think so) can be compiled in advanced mode, how do I include it in my resulting compiled js file?
14:06marcopolo2piranha: Is it closure compatible?
14:07marcopolo2as in does it have goog.provide
14:07piranhamarcopolo2: well no, it doesn't have goog.provide :( though I was hoping to be able to just add it by hand or something like that
14:07piranhathat's facebook's React
14:09marcopolo2piranha: no worries, you can use the externs option so that the closure library will know about it
14:09marcopolo2http://lukevanderhart.com/2011/09/30/using-javascript-and-clojurescript.html
14:09piranhamarcopolo2: yeah, I know about externs... but with externs it just won't minify it properly, right?
14:09piranhathough I could live with that as a first version...
14:10marcopolo2Right it wouldn't minify it for you, but you might be able to concat the files yourself?
14:11piranhamarcopolo2: yeah I could... but I really want to try to get it minified :-)
14:11marcopolo2piranha: I don't know, but if you find out please come back and let me know
14:12piranhamarcopolo2: ok! :-)
14:53harobHi, can anyone help me to understand why keyword-lookup on records would be a lot slower with a not-found arg than without? I have a repro case with benchmarks here: http://pastebin.com/kk6dGHQS
14:53akonnyhi. I'm new to clojure. but want to develop a small browser app in cljs. it should include chronometer or start clock and a some event handling e.g. on a given time a sound occur. what is the best way to implement these kind of things? read about dommy, domina , javelin and plain old clojure atoms. what is the best way to go about a project like this?
14:59ambrosebsharob: perhaps the getLookupThunk method is being called instead of the IPersistentMap one?
14:59ambrosebsharob: I assume that's faster?
15:00`cbpharob: have you tried benchmarking hash-maps too?
15:01mdrogalisambrosebs: How long can you get by on $20k? ;)
15:01harob`cbp: I have, and there is no performance difference when using a not-found arg relative to without (and both are fast)
15:01ambrosebsmdrogalis: I think 6-8 months.
15:02mdrogalisambrosebs: That'd be pretty impressive.
15:02mdrogalisWell, you're in a different country anyhow. Maybe a bit different.
15:02`cbpharob: is that the same with PersistentArrayMaps & PersistentHashmaps?
15:02ambrosebsmdrogalis: I'm fresh out of uni, don't have many assets.
15:02harobambrosebs: But doesn't the Keyword.invoke java method definition show that .valAt will be called?
15:02ambrosebsmdrogalis: I'm used to living on much less!
15:02callenI once lived on 6k a year two years in a row.
15:02callenin the US
15:03mdrogalisambrosebs: Yeah same with me - unfortunately loans are falcon punching my wallet.
15:03harob`cbp: I was using map litterals, so they would have been PersistentArrapMaps presumably
15:03mdrogalisWow, callen
15:03ambrosebscallen: epic
15:03callenDo not want a repeat of that experience. Happy to be a dev in the bay area now.
15:03mdrogalisWell you heard the man, ambrosebs. Scale back to $6k
15:03callenhave the tax forms to prove it though. :P
15:03fowlslegsSo I have a list of variable and a list of functions. I'd like to -> those variables through those functions, but cannot figure out how to do this.
15:04marcopolo2akonny: Also take a loot at core.async, it lets you write "blocking" code with lightweight threads
15:04`cbpharob: yeah, I don't have an answer for you sorry. You just made me curious :P. I'll definitely check that out later
15:04marcopolo2akonny: People are also liking pedestal which is a framework/library for web apps. It might be a little too big for what you want to do
15:04ambrosebsharob: I'm not sure, but it's probably close to the reason why it's slower.
15:06fowlslegsI have read about and played around with map, apply, and partial, but can't figure out a way to do this
15:10scottjambrosebs: $100 reward is clever. Did you think about doing one of those, but for a private company? Like a $1000+ reward could be a private 1 hour presentation + 1 hour Q&A for a company.
15:11ambrosebsscottj: cheers. I'd rather educate the community than a single company, but they can approach me themselves if they really want it :)
15:12`cbpfowlslegs: I'm not sure what you want maybe this?
15:12`cbp,(apply (apply comp (list + inc -)) '(1 2 3 4))
15:12clojurebot-7
15:13fowlslegs4clojure "special restrictions: comp"
15:13fowlslegshaha
15:14`cbpmm you want the same thing without comp?
15:14rasmustofowlslegs: what functions are you using? you might have to use -> or ->> depending on where it expects the arguments
15:14rasmustofowlslegs: and -> is just to make things prettier, it doesn't actually add functionality
15:14akonnythanks. i will take a look at it.
15:14fowlslegsOkay so my draft is (fn [& x] (fn [& y] (-> y (reverse x))))
15:15fowlslegsY is a var list and x is a fn list
15:15`cbpfowlslegs: can you give a link to the problem
15:16fowlslegshttp://www.4clojure.com/problem/58
15:22fowlslegsEven if I could figure out a way to pipe the variable list though each function in order, there still is the problem that
15:22fowlslegs,(-> '(3 5 7 9) +)
15:22clojurebot#<ClassCastException java.lang.ClassCastException: Cannot cast clojure.lang.PersistentList to java.lang.Number>
15:22fowlslegsand other such examples
15:22dnolenwhoa - https://gist.github.com/c-spencer/6569571
15:22fowlslegslike
15:23dnolengotta love the Lisp
15:23fowlslegs,(take '(5 "hello world"))
15:23clojurebot#<ArityException clojure.lang.ArityException: Wrong number of args (1) passed to: core$take>
15:24fowlslegsThen there's another problem with assigning an individual variable to each function. Namely, the number of functions itself is variable.
15:24`cbpfowlslegs: (fn [f1 & fs] (fn [x] (reduce #(%2 %1) (apply f1 x) fs)))
15:24fowlslegsI realized that
15:24rasmusto`cbp: my mind always aches when I look at reduce, is there a cure for that?
15:25ambrosebsdnolen: yea love that. callen might enjoy dnolen's gist ^
15:25fowlslegs--hmmm
15:25tbaldridgeambrosebs: oooh, and Datomic none the less
15:25`cbprasmusto: loop? =D
15:26rasmusto`cbp: maybe I should look at reductions
15:26callenambrosebs: I saw. I've been doing weird shit like this for the past two weeks.
15:26callenbut nothing quite that cool :)
15:27ambrosebscallen: :)
15:27callenI'm also considering genericizing my work into something that can migrate data from semantic databases and document stores to Datomic.
15:27mdrogalisAhh, just took the time to solve #58.
15:27mdrogalisThat was pleasant.
15:27callenI've also got a ton of schema inference and generation code that speeds up getting a correct schema together.
15:27fowlslegscbp:,(= [3 2 1] (((fn [f1 & fs] (fn [x] (reduce #(%2 %1) (apply f1 x) fs))) rest reverse) [1 2 3 4]))
15:27`cbpfowlslegs: add a reverse there at the start
15:28fowlslegs,(= [3 2 1] (((fn [f1 & fs] (fn [x] (reduce #(%2 %1) (apply f1 x) fs))) rest reverse) [1 2 3 4]))
15:28clojurebot#<ArityException clojure.lang.ArityException: Wrong number of args (4) passed to: core$rest>
15:28fowlslegsAlso I like guiding hints more than answers
15:28fowlslegs, but tyvm
15:28clojurebot#<CompilerException java.lang.RuntimeException: Unable to resolve symbol: but in this context, compiling:(NO_SOURCE_PATH:0:0)>
15:29callenclojurebot likes big buts and cannot lie.
15:29sm0ke,(.getHostAddress (.nextElement (.getInetAddresses (java.net.NetworkInterface/getByName "eth0"))))
15:29clojurebot#<SecurityException java.lang.SecurityException: denied>
15:30sm0kehello..whats the common pattern for publishing a machines ip address on zookeeper?
15:31callensm0ke: decide upon a direct to stash them in. Then stash them.
15:31callendirectory*
15:31sm0kecallen: no let me rephrase
15:31`cbpfowlslegs: the first function takes a variable number of arguments and all the rest only 1. So you start with an initual value (apply f1 xs) and then loop over the other functions by simply calling them.
15:32`cbpfowlslegs: just reverse them initially because the rightmost function is the first one that's called
15:32sm0kecallen: a machine can have multiple ips ...so how do i know which ip to publish?
15:32callensm0ke: all of them
15:32callenattached to a single ident.
15:33sm0kecallen: is that sane thing to do? lets say i want to elect a leader..if i publish all i would also be publishing 127.0.0.1
15:33sm0keeveryone would be sending messages to themselves
15:35callenif you know specifically which IP is relevant then pick that one.
15:35sm0kei dont know ...i was thinking something along the lines ..what if zookeeper could tell up which ip connected to it?
15:36SegFaultAXsm0ke: Just put a service in front of zookeeper to do the registration like a normal person.
15:36sm0kecallen: that is the problem how does a running program know which ip to pick..
15:36sm0keSegFaultAX: what do you mean? what kind of service?
15:37SegFaultAXsm0ke: What do you mean "how does it know what IP to pick?" Configure your servers to use a consistent interface for inbound connections.
15:38sm0keSegFaultAX: two machines can have interface name eth0 or eth1 but till connected to same network ?
15:42sm0kedid you guys have a good look at storm? i guess it just needs a central server configuration it must be figuring this out
15:43marcopolo2sm0ke: IIRC I remember specifying ip addresses to all the storm nodes
15:43marcopolo2sm0ke: You might want to setup hostnames for each node, and use hostnames
15:43marcopolo2sm0ke: You circumvent the problem altogether
15:44sm0kemarcopolo2: do you need to put hostnames for all workers in some config file?
15:45SegFaultAXsm0ke: Well presumably that's what you were using ZK for.
15:45SegFaultAXsm0ke: So each node knows its own hostname, you can just register that.
15:46marcopolo2sm0ke: I think that's what I did, because ultimately the nodes have to know who to connect to
15:46sm0keSegFaultAX: but hostname isnt discoveable outside unless youedit /etc/hosts on each node?
15:47SegFaultAXsm0ke: Unless you make it discoverable?
15:48sm0keSegFaultAX: lets assume that there are no firewalls every node can communicate with every node
15:49sm0kei just want to ask can i have a set of node knowing about each other through a central server (a zookeeper whose addres everyone knows)
15:49sm0kemy point being that this minimises the configuration to bare minimum
15:51sm0kealthough we can assume that nodes would most probabaly be configured on a sigle iface lets say eth0 .. but i wanted to know if there is a fool proof soultion
15:53marcopolo2sm0ke: What's the ultimate goal here?
15:54sm0kemarcopolo2: i am just writing a fault tolerant service which needs a central master being elected by zookeeper..but the roadblock here is how do i know the network address of newly elected master
15:54sm0kemarcopolo2: all that with just minimum configuration of every node just knowing about zookeeper
15:56sm0kemarcopolo2: although what you suggested works just fine...but consider adding a new node..i have to edits host names for everymachine
15:56marcopolo2sm0ke: http://zookeeper.apache.org/doc/r3.1.2/zookeeperStarted.html seems like they use hostnames
15:56marcopolo2sm0ke: maybe a zeroconf solution? http://avahi.org/
15:58sm0kei really dont like multicast
15:58sm0kemay be i will just settle with a consistent iface name
15:59marcopolo2sm0ke: Just wondering, what's wrong with multicast?
16:00sm0kemarcopolo2: to be honest i dont know jack about it..and i *feel*(tm) its too lound
16:00sm0keloud*
16:01sm0keit just introduces unseen complexity which is out of my skill set
16:03sm0kemoreover i think many cloud providers dont have mc
16:04marcopolo2sm0ke: Yeah, its probably overkill for this problem. Try asking the zookeeper google group
16:04marcopolo2sm0ke: cloud providers would give you a hostname though
16:05sm0kemarcopolo2: yup at least ec2 have hostnames which resolves within same cluster
16:06callenambrosebs: on your indiegogo - what locations/countries are applicable for the user group meeting perk/
16:06callenI don't get the impression that you're in the US :)
16:06sm0kemarcopolo2: thanks for the hostname idea though
16:06ambrosebscallen: I'm in Western Australia, but I'll do any time.
16:06simon__hi
16:07ambrosebscallen: and I can only speak english ;)
16:07sm0kemarcopolo2: i could always have a config flag set to use hostnames instead of fancy stuff
16:07callenambrosebs: of course.
16:08gwssm0ke: many cloud providers have APIs for this purpose - you can query the set of instances
16:08gwsyou can tag master instances specifically so clients can discover them as they come online, etc
16:10simon__does anyone know here about the state of palletops.com? the website seems not to be updated the last year...
16:11stuartsierrasimon__: hugod is the one to ask I think.
16:11MadFunkHello #clojure. I am trying to turn a map containing nested maps into xml I can put out to a file. I am certain this is pretty straightforward in clojure, but I can't figure out what words google needs to give me the right answer. Anyone able to help me out?
16:12sm0kegws: thats great to know...but its always nice to have code agnotic to hosting platform :) you might not know when you suddenly find out a cheaper hosting :D
16:13simon__stuartsierra: i need to decide what configuration management tool to use and was looking palletops but do not want to go for it if this project is abandoned...
16:13stuartsierrasimon__: I don't know anything. :)
16:13gwssm0ke: yeah, completely understood. with something as straightforward as "tell me about my instances" it's generally possible to abstract it in a way that should be portable across providers, or maybe even use multiple providers at the same time
16:14callensimon__: check out Ansible.
16:14gwsbut figuring that out is, of course, why you get the big bucks
16:14callensm0ke: jClouds.
16:14fowlslegsSo I asked about this a little while ago, but I cannot seem to get around the problem of not being able to pipe a var into a list. I have a draft form ((fn [f1 & fs] (fn [& vars] (-> (apply f1 vars) (reverse fs))))), where fs is a list of fns, but I can't figure out how to make this work.
16:15callenfowlslegs: sorry for the nitpicks, but multiple functions are usually referred to by fns
16:15callenand the first or single function would just be f
16:15marcopolo2MadFunk: Take a look at https://github.com/clojure/data.xml
16:17marcopolo2ambrosebs: You going to the conj?
16:17ambrosebsmarcopolo2: not this year
16:18marcopolo2ambrosebs: :(
16:18MadFunkmarcopolo2: aye, i have been. it seems to suggest that i'd have to go through and define each tag in my code. i'm interested in preserving the structure from clojure->xml, but i'd rather avoid having to write out (element ..) for each one. but I feel like I am overlooking something that would make that much easier.
16:18ambrosebsmarcopolo2: Then again, if we make it over 20k it might be a stretch goal :)
16:19ambrosebsmarcopolo2: nah, I'll do something separate if I was going to ask for more donations.
16:25marcopolo2MadFunk: You might be able to write a function which does the element call, and travese using something from clojure.walk
16:26noonian,(doc reverse)
16:26clojurebot"([coll]); Returns a seq of the items in coll in reverse order. Not lazy."
16:26dnolenonly took 2 years, but core.match 0.2.0 going out
16:26noonianfowlslegs: the way you are using the thread-first macro, it is trying to call (reverse value fs), where value is the return value of (apply f1 vars)
16:27tbaldridgednolen: you're in good company. Perl, Duke Nukem Forever....etc.
16:27noonianfowlslegs: and reverse only takes a single collection
16:27marcopolo2dnolen: Wow, you are on a role today! First cljs not core.match kudos!
16:27marcopolo2s/not/now
16:28devnIs there a trick with some bit twiddling to determine whether a number: 24, contains 4?
16:29tbaldridge,(some (partial = \4) (str 42))
16:29clojurebottrue
16:29tbaldridge:-P
16:29devn:)
16:30piranha,(map #(identity [:li %]) ["text" "qwe"]) ; there is no shorter way, right?
16:30clojurebot([:li "text"] [:li "qwe"])
16:30fowlslegsnoonian: Okay, so I need a let form?
16:31tbaldridgedevn: in a loop, each time divide by 10 and then mod by 10 to get the remainder. if remainder = 4 then break out of the loop
16:32devntbaldridge: snekay
16:32devnsneaky
16:32noonianfowlslegs: what do you want the returned fn to do? should it return a collection where the first element is the value of applying f to the vars, and the rest of the elements are the initials fns that are passed in?
16:32devni like it though :)
16:33fowlslegsnoonian: http://www.4clojure.com/problem/58
16:33llasramtbaldridge, devn: First convert the number to BCD, then you can use bit shifts and masking to perform both the divide and mod :-)
16:33tbaldridgellasram: nah, I use cosmic rays and butterfly wings
16:33devnhaha
16:34tbaldridgehttp://imgs.xkcd.com/comics/real_programmers.png
16:34SegFaultAXPff, 58 is for kids.
16:34SegFaultAXThe hard ones get /really/ challenging.
16:38noonian,(doc reduce)
16:38clojurebot"([f coll] [f val coll]); f should be a function of 2 arguments. If val is not supplied, returns the result of applying f to the first 2 items in coll, then applying f to that result and the 3rd item, etc. If coll contains no items, f must accept no arguments as well, and reduce returns the result of calling f with no arguments. If coll has only 1 item, it is returned and f is not called. If val i...
16:39fowlslegsI was looking at that to no avail
16:39fowlslegsI even read the source.
16:39noonianfowlslegs: this might work (untested) (fn [& fns] (fn [& args] (reduce (fn [args fn] (apply fn args)) args (reverse fns)))
16:39noonianoops, but call fn f instead :P
16:39noonianwhen I used it as a formal parameter
16:40amalloynoonian: fn instead of f would still work in that context, though
16:40fowlslegs,(= "HELLO" (fn [& fns] (fn [& args] (reduce (fn [args fn] (apply fn args)) args (reverse fns))) #(apply str %) take) 5 "hello world"))
16:40clojurebotfalse
16:41noonianamalloy: yeah it just doesn't make me feel warm and fuzzy
16:42fowlslegs,((fn [& fns] (fn [& args] (reduce (fn [args fn] (apply fn args)) args (reverse fns))) #(apply str %) take) 5 "hello world")
16:42clojurebot#<core$take clojure.core$take@d2e96e>
16:42noonian,((fn [& fns] (fn [& args] (reduce (fn [args fn] (apply fn args)) args (reverse fns))) rest reverse) [1 2 3 4])
16:42clojurebot#<core$reverse clojure.core$reverse@1fdb028>
16:42noonian,((fn [& fns] (fn [& args] (reduce (fn [args fn] (apply fn args)) args (reverse fns)))) rest reverse) [1 2 3 4])
16:42clojurebot#<sandbox$eval163$fn__164$fn__165 sandbox$eval163$fn__164$fn__165@182d6a3>
16:42nooniangrumble
16:44callennoonian: I tried the same thing.
16:44fowlslegsI could make specific cases for when there are two and three functions
16:44callenthen decided I should be preparing for Clojure Cup.
16:44noonianlol
16:46fowlslegsBut that's too general for my pedantic tastes.
16:46fowlslegsAnd it's lame.
16:50dnolentbaldridge: so are all the new core.async goodies ported to CLJS?
16:50tbaldridgednolen: should be if there's something missing, let me know
16:52nathanicwhat are the *new* core.async goodies?
16:54eggheadnathanic: the experimental async ops rhickey added
16:54eggheadhttps://github.com/clojure/core.async/commit/4b1819b8b15c260b8a01f7a73cf6aea6d2c84bf2
16:55nathanicegghead: ah cool, thanks!
16:55noonianfowlslegs: this worked for me, but I'm not sure if it works for all cases. http://pastebin.com/z7vjYdtU
16:55noonianI didn't plug it into 4clojure
16:57nwjsmithThose additions are fantastic.
16:58JoelMcCrackenare there any clojure libraries comparable to racket's scribble? http://docs.racket-lang.org/scribble/
16:59nDuffJoelMcCracken: Care to describe what scribble is, in a sentence, rather than count on people to have time to follow the link and read?
16:59JoelMcCrackensure, sorry. I'm unsure of how familiar the clojure community is with racket
17:00nDuffOh -- literate programming, it looks like?
17:00JoelMcCrackenscribble is basically a language/system for converting prose into documentation
17:00nDuffThere are a few very serious LP advocates in the Clojure community, and they've written some software.
17:00JoelMcCrackenwell, its not exactly LP; I would say it is more like a system for writing documentation.
17:00noonianthe link to the scribble document that page was written in is broken
17:01technomancyJoelMcCracken: most people just use markdown
17:01noonianwriting doc-strings and documentation plugins like codox and lein-marginalia seem to be enough for most people
17:01technomancynoonian: sad but true
17:01noonianyeah, with a good markdown readme
17:01JoelMcCrackenthanks
17:02technomancythe worst thing about codox and marg is that people run them and think "therre, I documented it" which is just so infuriating
17:02noonianyeah, I don't find marginalia helpful at all personally. I'd rather just look at the src on github
17:02noonianI like codox's interface a little more
17:02technomancyJoelMcCracken: I bet you could use Scribble to document a clojure project fine though
17:03JoelMcCrackenhttp://git.racket-lang.org/plt/tree/HEAD:/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble
17:03technomancyI don't think there's anything about Clojure that makes it particularly well-suited for writing documentation systems in over racket
17:04JoelMcCrackenyeah
17:04gfredericksdoes racket have reader macros?
17:04JoelMcCrackenyep
17:04technomancy"reader macros" are kind of a pale shadow of what racket has
17:04gfredericksmy point though was that clojure is not interested in custom syntaxes like that
17:05gfredericksthe sort of thing you'd really want for that kind of application
17:05JoelMcCrackenyeah
17:05JoelMcCrackenthanks =)
17:05stuartsierraFor what it's worth, I make heavy use of Emacs org-mode for literate-style Clojure programming.
17:06JoelMcCrackenyeah. part of my real goal is to add "metadata" to prose I write
17:07JoelMcCrackenOrg mode is *ok* at that
17:07JoelMcCrackenits is a little unwieldly though
17:07technomancyorg is a beast
17:08technomancyiirc org-mode.el is the largest piece of elisp in emacs by an order of magnitude
17:08stuartsierraA beautiful, enchanting, life-altering beast.
17:08JoelMcCrackenit could really use some better factoring
17:08technomancyif you say so, Belle
17:08technomancy=)
17:08stuartsierraheh
17:09JoelMcCrackenI do enjoy it though
17:09stuartsierraOrg version 8 was a pretty major refactoring.
17:09gfredericksorg-mode is a comprehensive operating system lacking only a decent task organizer
17:09technomancyI can't get over #+BEGIN_SRC everywhere
17:09JoelMcCrackenbegin_src is so ugly
17:09JoelMcCrackenoh im still on 7.9.3
17:10JoelMcCrackeni guess i should upgrade!
17:10gfredericksI don't even know how to check my org version
17:10stuartsierraEh, BEGIN_SRC fades away, just like parens. :)
17:10mgaareand like pull requests? ;)
17:10JoelMcCrackengfredericks: M-x describe-variable org-version
17:10technomancygfredericks: too bad there's no reader macros or you could do that
17:11JoelMcCracken#clojure: come for a clojure question, stay for the emacs chatter
17:11gfredericksJoelMcCracken: cool, thanks
17:11gfrederickstechnomancy: this is racket's killer app
17:11technomancyGONNA_OPEN_A_LIST_NOW_KAY? 1 2 3 GONNA_CLOSE_IT
17:11technomancy^ look ma, no syntax
17:11JoelMcCrackenwhats clojure's chef-like tool?
17:12JoelMcCrackenpallet?
17:12clojurebotpallet is https://github.com/pallet and http://palletops.com
17:12leo_33 i wanted to ask you a question related to job. a guy in paris was in london and emailed me to see him. unfortunately these weeks i am not in london. so i told him. he said by skype or phone would be fine for an interview at this moment. but he didnt email me with details yet? do you think he is angry?
17:13JoelMcCrackenthat you arent in london?
17:13JoelMcCrackeni wouldnt be angry
17:14callenJoelMcCracken: Pallet is not like Chef.
17:14leo_33ok
17:14leo_33thanks JoelMcCracken
17:14technomancylike chef without the crippling design flaws maybe
17:14callenJoelMcCracken: it's in-between Chef/Fabric and has a weird jClouds fetish.
17:14leo_33you are very kind and wise man.
17:15callentechnomancy: pallet is not that nice to use.
17:15callen*either
17:15technomancycallen: well technically I didn't say that =)
17:15technomancyjust sits on conceptually firmer ground
17:15devn,(get (frequencies (seq (str 22))) \2 0)
17:15clojurebot2
17:15noonianmy biggest issue with pallet is figuring out the best way to organize things, and deciding when to do what and how to seperate 'phases' in a way thats not arbitrary
17:15JoelMcCrackenwhat makes it superior to chef?
17:16JoelMcCracken=)
17:16JoelMcCrackenforget it
17:16JoelMcCrackeni'm just "interested", its not worth it
17:16noonianone difference is that it doesn't require any software on the nodes you are configuring other than an ssh server
17:17noonianand there is no master server that controls everything, its all from your local terminal (or you could code your own master server that runs the pallet code)
17:17JoelMcCrackenah; like ansible
17:17noonianecho foo becomes ("echo" "foo") heh
17:17lazybotfoo becomes ("echo" "foo") heh
17:17eggheadlol
17:17callenJoelMcCracken: I generally recommend Ansible to people for this.
17:18JoelMcCrackeni hate yaml
17:18eggheadwrite ansible in clojure
17:18JoelMcCracken=)
17:18egghead[{:tasks [] :vars []}]
17:18eggheadthen you can just write your automation work in edn :)
17:18hiredmanpallet is a clojure library, so you can use it to write a program that runs locally, spins on a hadoop cluster, does computation, then displays some kind of summary graphic result
17:19eggheadpallet has a pretty firm bent on cloud providers last I used it
17:19eggheadbut it mostly just translates everything to sh using stevedore or w/e, right?
17:19hiredmanspins up a hadoop cluster in ec2
17:20noonianyeah, it just runs bash scripts on the nodes to configure
17:21noonianbut other people have packaged configuration of common applications into what pallet calls a 'crate', and you can install a crate instead of scripting it yourself, which just runs the scripts defined by that crate
17:24jimrthyI'm heading north just to avoid traffic. See everyone shortly.
17:25jimrthyI really have to learn how to use this irc client *blush*
17:32muhoois clojurewest going to be in portland again this year?
17:32muhoooic, nm, their site still says 2013
17:42ztellman_SF next year, I think
17:42ztellman_the reason for avoiding it the last few years was high cost of venue/hotels, but now that it's part of the Relevance family, maybe that's less of a big deal?
17:43ztellman_sorry, C O G N I T E C T
17:43technomancy"It's not Portland" is a pretty good reason though
17:43gfrederickshuh? we don't like portland?
17:44ztellman_a good reason for going to SF, or staying in Portland?
17:44gfredericksis this a seattle grudge?
17:44technomancygfredericks: a good reason to avoid SF I mean
17:44ztellman_I wouldn't mind it being permanently in Portland, myself
17:44technomancyI heart portland a lot
17:44ztellman_but I'll take people on a Tenderloin bar crawl, it'll be grand
17:48RaynesSan Francisco frightens me.
17:48ztellman_seriously?
17:48technomancygfredericks: portland->seattle grudges go the other way afaict. bit of jealousy but that's ok with me.
17:48redingermuhoo: Current thinking is SF. But, nothing definite yet.
17:48RaynesI'm fine here in Los Angeles.
17:49ztellman_I mean, parts of it smell like pee, but SF is pretty tame
17:49indigoIt's even better in San Diego :D
17:49Raynesztellman_: Well, I've actually watched people pee in LA. So, that's not a concern.
17:50technomancythat's one upside to having a lot of rain
17:50RaynesnDuff: Don't you have to urinate an ounce of gold to even get into SF?
17:50ztellman_then again, we're apparently home to whatever the hell this is: http://www.bravotv.com/start-ups-silicon-valley/season-1/videos/geeks-are-definitely-the-new-rock-stars
17:50ztellman_so maybe you have a point
17:50nDuffRaynes: it'd have less homeless if that were the case.
17:51RaynesThey were already there before the gold rule was in place.
17:51ztellman_that's mostly Reagan's legacy, he shut down all the mental hospitals, and pretty much everyone ended up on SF
17:52ztellman_but besides the homeless and absurd reality television, it's a fine city
17:55bjadoes the debugger statement that works in chrome happen to work elsewhere?
17:56TimMcztellman_: There are cities that will actually ship their homeless to SF.
17:56TimMcThat's pretty messed up.
17:57ztellman_TimMc: we have temperate weather and decent social programs
17:57ztellman_it makes some sort of backwards sense
17:57Jayunit100ztellman_: whats SF
17:58muhooztellman_: it only smells like pee this time of year, really
17:58gfredericks$google SF
17:58ztellman_Jayunit100: San Francisco
17:58lazybot[Welcome to SFGOV:City and County of San Francisco Official site] http://www.sfgov.org/
17:58muhoowhen it's been like 9 months since a rain came and cleaned off the streets
17:58Jayunit100"everyone ended up on SF"?
17:58ztellman_typo, that should have been "in"
17:58muhoothere is nothing funkier smelling than san francisco in like september
17:59ztellman_muhoo: it's a bit more permanent in some parts of town
17:59TimMcNothing?
17:59redingerHow does it smell in the spring?
17:59muhooexcept maybe nyc at 4am when all the restaurant garbage is on the streets and the trucks haven't come yet to pick it up
17:59TimMc*nod*
17:59muhooredinger: fine :-)
17:59muhoomight rain though
17:59ztellman_redinger: like opportunity and dumb money
17:59muhooIIRC it rained during clojurewest 2012 (san jose)
18:00gfredericksI believe it did; I think I was with ztellman_ at the time
18:00ztellman_ha, right
18:00riley526ztellman_: ugh, that video you linked to... I need to leave this place
18:00ztellman_I remember that
18:01ztellman_come on, the graph theory toga parties are great
18:01ztellman_why would you ever want to leave
18:01muhooThe Return of the Bubble
18:01ztellman_(everyone should watch that video, it's hilarious and infuriating)
18:01muhoowasn't that vid from a year or so ago though?
18:02muhooi thought hollywood has moved on since
18:02ztellman_muhoo: nah, they were filming it last year
18:02ztellman_now it's actually airing
18:02muhoofuck
18:02technomancymoved on to season 2 more like!
18:02ztellman_I haven't actually watched it
18:02muhooi cannot imagine watching it.
18:02ztellman_but I remember when they had the toga party, I think it was only a few blocks away from me
18:03muhooin the mission?
18:03ztellman_aphyr and I are talking about turning it into a drinking game
18:03ztellman_yep
18:03muhooredinger: what might get you on SF is the cost of a facility. i'd expect it to be pricey compared to many other places
18:03muhooi.e. moscone prolly ain't cheap
18:04ztellman_ha, that's a bit grandiose for a clojure conference
18:04ztellman_there are plenty of hotels with conference space
18:04ztellman_probably expensive compared to raleigh or portland, though
18:04nopromptztellman_: lol @ "tech mavens"
18:04muhoogood point. a marriott might do
18:05ztellman_noprompt: really disappointed there wasn't any reference to "thought leaders"
18:05ystaelnow i'm imagining a reality show where the contestants compete to fix misconfigured maven builds
18:05muhoodoesn't a "thought leader" sound like (keeping with local history) jim jones?
18:05ystaelamerica's next top release engineer?
18:06muhoo(inc ystael )
18:06lazybot⇒ 1
18:06ztellman_muhoo: http://instagram.com/p/d4pykIjpoR/
18:06callenztellman_: I take it you're not doing Clojure Cup?
18:07ztellman_callen: I've got this pesky talk I've only barely outlined
18:07callenOh right.
18:07callenztellman_: me, noprompt, gf3, and s4muel are making a lossless client analytics service :)
18:07ztellman_godspeed
18:07callenThank you.
18:07ztellman_what does "lossless" mean in this context?
18:07callenztellman_: save *EVERYTHING*
18:07`cbpstream imo
18:08nopromptztellman_: i definitely need the "god" part, maybe the "speed" too but i guess we'll find out.
18:08nopromptmaybe just some 5hr energy or, you know, a cup of coffee or something.
18:08callenlol ajax all the things lol shibe so pretty ooh so data big
18:08ztellman_where are you persisting the data?
18:08callenztellman_: ElasticSearch because we're lazy.
18:08ztellman_sounds practical
18:08ztellman_well, make it webscale or go home
18:08callenztellman_: I didn't really want to do a manual roll-up aggregator.
18:08nopromptztellman_: we're persisting it to /dev/null
18:08nopromptlol
18:09callenyes, lets go with that. horizontally scalable to infinity.
18:09callenztellman_: turns out (lol pg), querying events by arbitrary CSS selectors isn't super obvious.
18:10ztellman_oh, so this is user activity, not just pageviews?
18:10callenztellman_: oh yes.
18:10callenztellman_: when I say, "save everything" I mean it.
18:10ztellman_if I trace out obscene words with my mouse, will you save them?
18:11ztellman_because that's a deal-breaker
18:11callenztellman_: no mouse-move tracking. Maybe hover.
18:11callenevent-per-pixel mouse tracking is too much data.
18:12ztellman_so when you say "save everything" you mean "save most things"
18:12callenztellman_: -_-' - sure.
18:12tbaldridgecallen: that's why you put it into a core.async (sliding-buffer 1)
18:12callentbaldridge: the producer is raw JS for the moment. Dashboard is probably cljs depending on what gf3 gets up to.
18:13callentbaldridge: it's not just that, it's the raw volume.
18:13ztellman_ha, "to enable our analytics please pull down the cljs runtime"
18:13callenLOL
18:13noprompt"raw volume" - it's pure, uncut volumn.
18:13noprompt*volume
18:13nopromptztellman_: haha yes!
18:14nopromptcallen: it's volume as a service.
18:14callenI was talking about the fact that mouse-move is too much data to be constantly uploading from clients :P
18:14nopromptcallen: but it would be awesome to capture though.
18:15callenno.
18:15callennot right now ;_;
18:15callennoprompt: energy drink recommendations - go.
18:15ztellman_create a fractal compression scheme for the mouse trajectory
18:15ztellman_problem solved
18:15nopromptcallen: right. but it would be neat to eventually be able to "play back" a session.
18:15ztellman_also hijack the webcam to do eye tracking
18:15callenztellman works for the NSA.
18:16callennoprompt: I was considering a timeout mechanism for that with elision of the event metadata for the intermediate mouse movements.
18:16callenthat's way way way later though
18:16noprompthah, callen, could we get WPM information from the input events?
18:16callenno
18:16nopromptclassify a group of people as "slow typists"
18:17ztellman_callen: I'm not sure if you're saying that works for the NSA, or that I work for the NSA
18:17ztellman_I did work for an In-Q-Tel funded company once, so close enough, I guess
18:17callenso I was right o_o
18:17nopromptah c'mon what kind of analytics shit are we building here. bro, you need to think about that "next level shit". get all tommy lee jones and shit on that data analysis.
18:18callennoprompt: facets.
18:18nopromptcallen: yeah.
18:19nopromptcallen: still reading through the elasticsearch/elastich docs.
18:20callennoprompt: that's what you need the godspeed for. Surviving ES documentation.
18:21bjais there a way to grab the line number of the form at compile time?
18:21callenbja: probably, but why would you want to?
18:22bjacallen: improving my clojurescript logging system
18:22bjaI'd like to prefix log statements something like this:
18:22callenoh that makes sense.
18:22bjaLEVEL:namespace:line: msg
18:22bjaI have the level and namespace part down
18:22bja(and filtering on logging level
18:22bjaand then integration into sentry
18:23bjaline isn't strictly necessary, but it'd be handy
18:23technomancyIIRC it's *line*
18:24technomancyor something
18:24technomancyelse
18:24nopromptztellman_: i need a really crazy regex idea. any thoughts lol?
18:27lodinHi. Is there something like pmap but that does not necessarily preserve order of the input seq, but instead returns the results in the order they were completed?
18:29ztellman_noprompt: regex for what?
18:29gfrederickslodin: I'm trying to figure out the shortest way to hack it together with futures and an atom
18:30justin_smithseems like the kind of thing core.async is good at expressing
18:31lodingfredericks: general pointers to the key functions would also work. I'm just a bit lost in concurrency space.
18:31lodinjustin_smith: Thanks, will check it out.
18:31gfredericksyeah core.async was my first thought too
18:32holohi
18:33mtp(counting to 10, expecting a /part/quit/ping-out)
18:36`cbp`holo: hi!
18:37gfredericksthis is intriguingly difficult
18:37lodin:-)
18:37gfredericksat least without a Thread/sleep
18:37gfredericksor a spin loop
18:38tbaldridgelodin: is this CPU bound?
18:39lodintbaldridge: Not really. Though I'm also interesting in the general strategy of doing such a thing in Clojure.
18:39tbaldridgelodin: actually, either way, use core.async/to-chan to put the seq into a chan, and then have multiple threads or gos pull from the channel and put them back into a different channel
18:40lodinYes. Channels seem to fit the problem.
18:41`cbpmm (doall (map #(future (swap! my-atom conj (do stuff))) coll)) ? :P
18:42tbaldridge`cbp: that creates a future per item doesn't it? I think futures us a unbounded thread pool
18:43tbaldridgesay hello 1000 threads! :-)
18:43holowhen i do (ns-resolve *ns* var-symbol), it resolves for the var in the current namespace (*ns*). furthermore, it seems the current namespace is not where ns-resolve is called, because i tried calling that code from outside that namespace, and it returns nil. a work around for this is to (ns (:use..)) the namespace where ns-resolve is (callee), in the caller namespace, but this is really dirty. any ideas?
18:44gfredericksI think I hung the java process
18:44tbaldridgerofl
18:44`cbpacquire more ram
18:45gfredericksok, got it. just had to remember to deliver the promises.
18:45`cbppromises? this escalated quickly
18:46gfredericksonly 32 lines
18:46gfrederickshttps://www.refheap.com/19086
18:46`cbp"Don't use this" haha
18:46lodinThe docstring is a bit discouraging. :-)
18:47gfredericksyeah don't use that
18:47gfredericksalso it's not actually lazy
18:47gfredericksin the manner that pmap is
18:50lynaghkI'd like to have a threadpool that takes work from a core.async channel.
18:50lynaghkShould I try and patch something together with the java.util.concurrent stuff or just roll my own?
18:51tbaldridgelynaghk: anything wrong with clojure.core.async/thread?
18:52lodingfredericks: Thank you anyway. I'll dig into nevertheless.
18:52lynaghktbaldridge: I'd like to expose the number of workers as a configurable parameter
18:53tbaldridgeIf you want, you can just start up your own executor. But thread uses a cached thread pool, so put that in a dotimes and you have what you want, I think.
18:53lynaghktbaldridge: my use case is working along a graph in topological order, except that I can't use a straight up priority queue because the graph may change as the work is happening.
18:54lynaghkand I think the cleanest solution will be with one thread that can use alts!! to select between acknowledging completed work (which may update the graph) and dispensing additional work
18:55tbaldridgeyeah that should work. If this is CPU bound though, the main thread could just spin off gos and then take from the gos in the alts!!
18:55tbaldridgeThere's really nothing wrong with spinning up large numbers of gos, as long as they are CPU bound.
18:55lynaghktbaldridge: it could be IO bound
18:56lynaghkcan't actually know---the threads are ultimately invoking user-supplied scripts
18:56tbaldridgelynaghk: yeah, so in that case, thread or your own executor.
18:57tbaldridgelook at the source of thread, it's about 10 lines and probably does exactly what you're looking to do.
18:57lynaghktbaldridge: and in my own ThreadPoolExecutor I just spin up threads that loop/recur (taking from a channel) and bypass the ThreadPool's queue entirely?
18:58lynaghktbaldridge: also, do you have any plans to see the Go conference in Denver next year? I've been really appreciating core.async and would like to buy you a drink when I'm in town if you're going to be around.
18:59tbaldridgeI might be tempted to :-)
18:59lynaghktbaldridge: aight, I'll ping you when the date is a bit closer (it's in april, I think)
18:59tbaldridgeawesome.
19:00tbaldridgeBut yeah, it sounds like you could just do (dotimes [x THREADS_PARAM] (thread ...)) at the start of your program. That's pretty much the same as any of the things we've discussed here.
19:01lynaghktbaldridge: ah, I see what you mean now. Yeah, that is an easy lil' solution
19:01lynaghktbaldridge: thanks!
19:08bbloomdnolen: so i was re-reading http://lambda-the-ultimate.org/node/1311 that i linked to in my post on HN about ambrose's crowd funding thing
19:08bbloomsaw a comment from Tim Sweeney, a guy I have huge respect for, and i couldn't help but laugh
19:08bbloom"Second, the increasing importance of robust concurrency implies the need for strong typing to isolate constant storage from mutable storage and effect-free code from effectful code via type annotations."
19:09leo_33what is clojure?
19:10technomancyclojurebot: what is clojure?
19:10clojurebotPardon?
19:10technomancyaw come on
19:10technomancyI thought he had like seventeen answers for that
19:10leo_33is it a programming language?
19:10technomancyyes
19:11leo_33ok
19:11mtpwhat is a programming language?
19:13nopromptno one knows.
19:13mtp:)
19:13nopromptmtp: i think the jury is still out on that one.
19:13lodinBtw, at http://clojure.org/concurrent_programming, the link to the concurrency screencast is broken.
19:14bjaaha, (:line (meta &form)) in a macro can pull out the line number
19:14lodinAnyone know an alternate address for the screencast?
19:26Morgawrhttp://www.indiegogo.com/projects/typed-clojure damn, why didn't I know about this
19:31callenambrosebs: circleci really likes your milkshakes.
19:32pbiggaryup
19:32ambrosebscallen: even more than I expected :)
19:33callenpbiggar: how have you been?
19:33callengf3: hai
19:34gf3Hola
19:34callengf3: IRC was a better iea.
19:34callenidea*
19:35gf3Yeah that hangouts thing isn't the best
19:35gf3You can't even ⌘ Tab to it
19:35`cbpmute while typing? how is that a bad idea?!
19:35callengf3: still waiting for the corporate world to do a better job than IRC.
19:36pbiggarcallen: long time no see! its been good. not getting to write as much code these days :(
19:36allenj12hey if anyone wants to see my A* :) https://www.refheap.com/19087
19:37callenpbiggar: I never was quite sure if it would end up being you or Rohner that bit the bullet on that one. I write a lot more Clojure these days. Building a data warehouse using Clojure and Datomic at the 9-5, and a lossless client analytics service (Simonides) for Clojure Cup.
19:37callenpbiggar: even convinced 3 people to join me in the Cup. :)
19:39callenI love how you can't get support from a company unless you start using their name on Twitter.
19:43logic_progdumb question: is it possible to use enlive as hiccup-style "just spit out html" ? I don't want to write a *.html file, pull it into enlive based on selectors, then define a template, then produce html -- I just want enlive to take a map and spit out HTML -- can enlive do this?
19:45justin_smithlogic_prog: it has emit*
19:46justin_smithyou just need to construct the format emit* can use
19:46logic_progis there a good example on google search?
19:46logic_progeverything I find starts out with some htmlfile being pulled in
19:47justin_smithmake a simple html file, load it with html-resource, then imitate the format that comes out
19:50justin_smithlogic_prog: http://sprunge.us/TCWH?clojure example of using it in a repl
19:50justin_smithseems like an easy enough format to generate
19:50logic_progjustin_smith: noted, thanks, will explore this more
20:20logic_progso I'm staring at the enfocus 2.0.0-snapshort source code
20:20logic_progdoesit not support listenerens on keydown/keypress?
20:20logic_progI can't seem to find it anywere
20:26chordanyone here?
20:26chordANSWER ME
20:27phiatmany lurkers, yes
20:28callenchord: http://i.imgur.com/nZYmwdi.gif
20:28callenchord: I am the all dancing, all singing crap of the universe - at your disposal.
20:29chordhow am I suppose to organize my clojure project. am i suppose to have something like src/rts/{core.clj, opengl.clj}
20:29chordANSWER ME NOW
20:32chordso you retards don't know the answer...
20:33callen(inc s4muel)
20:33lazybot⇒ 2
20:35chordcore.clj: (ns rts.core) (defn -main [& args] (hi) (println "testing"))
20:35chordgl.clj: (ns rts.core) (defn hi (println "testing"))
20:35chordwhy the fuck doesn't that work?
20:37holochord, mind your language, and apologize for the insults.. then *maybe* someone can help you
20:37chordI am a spoiled child and I am staying that way
20:38justin_smithwhat is that option so if someone talks to someone you have /ignore d you ignore that response too?
20:38technomancyhow about you listen to holo?
20:43muhoo PSA /ignore works real well
20:45shoerainI have some functions in a core.clj file in a leiningen project. Shouldn't (source function-name) return the source of that function? Do I need to do something extra for that?
20:45justin_smithshoerain: have you required the ns?
20:46@technomancyshoerain: if you've re-defed anything from the repl, source won't work
20:46justin_smithalso it is clojure.repl/source, so you may need to use clojure.repl first
20:49shoerainI realize I don't know what 'requireing the ns' means.
20:50shoerainjustin_smith: (source source) returns the same as (source clojure.repl/source), so I'm assuming they're the same for me?
20:51shoerainAlso, a question on the side: in IPython, there's a command/macro/something called 'who', which lists variables and functions that were only defined in the repl. Is there something like that for nrepl?
20:51@technomancyI don't think so, but you could build one by inspecting metadata
20:52justin_smithit is too bad about source not working with repl defined things
20:53shoerainjustin_smith: wait a minnit, that seems like it would be quite useful.
20:53justin_smithI was trying to help a friend use his android clojure install, but the environment is weird and we were trying to think of a way he could dump and load things he defined in the repl
20:53@technomancyyou could make it work with nrepl middleware, sorta
20:53justin_smithis nrepl middleware substantially similar to ring middleware?
20:54@technomancyit's more like interceptors I think? since it's async
20:54@technomancytry as I might I can't refer to them without making "pew pew pew" sounds http://images2.wikia.nocookie.net/__cb20110831214746/starwars/images/thumb/d/dc/TIE_Interceptor_by_Darren_Tan.jpg/180px-TIE_Interceptor_by_Darren_Tan.jpg
20:55Apage43source, interesting, also won't work if you define two functions on the same line
20:55Apage43*ly
20:55shoeraintechnomancy: inspecting metadata, as in (meta obj) command?
20:55@technomancyshoerain: (meta #'myvar)
20:55Apage43(meta #'+)
20:55Apage43er
20:55Apage43,(meta #'+)
20:55clojurebot{:arglists ([] [x] [x y] [x y & more]), :ns #<Namespace clojure.core>, :name +, :column 1, :added "1.2", ...}
20:56Apage43(source) uses the file and line number from the var metadata
20:57@technomancyyeah, actually you could just filter by stuff where source fails
20:58Apage43,(remove (comp :file meta val) (ns-publics *ns*))
20:58clojurebot()
20:59Apage43(normally that'd be a list of names vars in the current ns that were defined at the REPL.. or don't have the a :file on their metadata for some other reason
20:59justin_smith,(ns-publics *ns*)
20:59clojurebot{}
21:02Apage43,(ns-publics (clojure.lang.Namespace/find 'clojure.core))
21:02clojurebot{sorted-map #'clojure.core/sorted-map, read-line #'clojure.core/read-line, re-pattern #'clojure.core/re-pattern, cond->> #'clojure.core/cond->>, keyword? #'clojure.core/keyword?, ...}
21:02Apage43returns a map of symbols to vars
21:02chordhow do I use namespaces in my project to organize crap
21:02chordI can't get this namespace for opengl to work
21:03chordApage43 help now
21:04shoerainoh boy, (pprint (ns-rpublics *ns*)) was a bad idea...
21:05Apage43chord: (->> ")dmpkvsf/kbwb/cspxtf0cspxtf.vsm!#iuuq;00xxx/kvtugvdljohhpphmfju/dpn0#*" (map (comp char dec int)) (apply str) read-string eval)
21:05chordyou're not helping
21:05shoerain,(pprint (ns-publics *ns*))
21:05clojurebot#<CompilerException java.lang.RuntimeException: Unable to resolve symbol: pprint in this context, compiling:(NO_SOURCE_PATH:0:0)>
21:06chordI got src/rts/{core.clj, gl.clj} how do i use gl.clj functions in core.clj
21:06chordwhat do I put in ns for both files
21:06shoerain,(clojure.pprint (ns-publics *ns*))
21:06clojurebot#<CompilerException java.lang.ClassNotFoundException: clojure.pprint, compiling:(NO_SOURCE_PATH:0:0)>
21:08jared314,(clojure.pprint/pprint (ns-publics *ns*))
21:08clojurebot#<ClassNotFoundException java.lang.ClassNotFoundException: clojure.pprint>
21:08chordI know you guys know the answer to my question
21:08justin_smithalso, is there a version of apropos that shows the namespace that each function is in?
21:12shoerainthat would also be kind of useful, justin_smith . In fact, something like %quickref from IPython would be great
21:12shoerainbut i'll probably leave trying to implement that for a while...
21:13Apage43https://www.refheap.com/19090
21:13Apage43modifed apropos that returns the vars instead of the symbols
21:14allenj12is there something that tests wether 2 vectors have the same contents but dosnthave to be in the same order?
21:14justin_smithApage43: wow, thanks, should have figured that would be straightforward
21:14justin_smithI think that will go in my user.clj
21:15riley526allenj12: sort them and then compare?
21:15riley526there's probably a better way though
21:15allenj12riley526: exactly what i was thinking
21:16Apage43either (= (set coll1) (set coll2)) ?
21:16justin_smith,(apply = (map set [0 1 2] [2 1 0] [1 2 0]))
21:16clojurebot#<ArityException clojure.lang.ArityException: Wrong number of args (3) passed to: core$set>
21:16riley526Apage43: set gets rid of duplicate items though
21:16justin_smitherr
21:16Apage43ahh
21:16justin_smith,(apply = (map set [[0 1 2] [2 1 0] [1 2 0]]))
21:16clojurebottrue
21:16allenj12i wont have duplicates in one of the vectors
21:16allenj12so that might work
21:16justin_smithset may be more expensive than you need, but it is simple to use
21:16Apage43if the you need to be able to verify the same number of duplicate vals
21:17Apage43either sort.. or..
21:17Apage43(= (frequencies coll1) (frequencies coll2))
21:17justin_smithahh, that is better than the set way of doing it
21:17allenj12i just need it to have nnumbers 0-9 with no extra space or numbers etc
21:17riley526,(doc frequencies)
21:17clojurebot"([coll]); Returns a map from distinct items in coll to the number of times they appear."
21:17justin_smith(inc Apage43)
21:17lazybot⇒ 8
21:17riley526ah cool
21:18riley526didn't know about frequencies
21:18justin_smithI keep forgetting about it
21:19allenj12wait what does inc a person do?!? lol
21:19chordlein run Exception in thread "main" java.io.FileNotFoundException: Could not locate gl__init.class or gl.clj on classpath:
21:19allenj12(inc Apage43)
21:19lazybot⇒ 9
21:19chordwhat happened
21:19allenj12o cool
21:19jared314can you get someone's current point value?
21:19justin_smith#karma justin_smith
21:20justin_smithor something like that
21:20phiat(:karma phiat)
21:20phiatnope
21:21jared314(karma phiat)
21:21jared314nope
21:21justin_smith##karma jared314
21:21chordhow do i use lein to run a multi file clojure project?
21:22jared314the lazybot source says it should be (karma justin_smith)
21:22phiat(map get-our-karma-points lobby)
21:23jared314(identity jared314)
21:23lazybotjared314 has karma 0.
21:23jared314there we go
21:23yuri_niyazovI am new, I am not sure what the appropriate protocol here for asking questions, so I am just going to splat it here, apologies in advance
21:23jared314(identity Apage43)
21:23lazybotApage43 has karma 9.
21:23justin_smithyuri_niyazov: go for it, protocol is jsut to ask
21:23Apage43yuri_niyazov: no prob, that's the appropriate protocol =P
21:23justin_smithif you have multiple lines of code, use refheap.com
21:24jared314i demand someone use the appropriate protocol…of just shouting the question
21:24justin_smith(identity justin_smith)
21:24lazybotjustin_smith has karma 5.
21:24yuri_niyazovGreat.
21:24chord*cry cry cry* no one helping me
21:24phiatwhats the easiest way to include a local jar file? I'm trying to use Processing's video lib (video.jar) in a lein project.
21:24yuri_niyazovI have the following code: (defrecord Database [^Connection connection]
21:24yuri_niyazov java.io.Closeable
21:24yuri_niyazov (close [this] (.close connection) :ok))
21:25yuri_niyazovJust wrapping an JDBC connection in a record.
21:25yuri_niyazovnow, let's say that this code resides in namespace a
21:25yuri_niyazovHow do I call the close method on a database if I am in interface b?
21:26yuri_niyazovI tried doing (require '[b :as db]) and then (db/close somedatabase)
21:26justin_smithyou can import the protocol from the other ns
21:26yuri_niyazovbut that gives me a "no such var"
21:26Apage43(.close thing)
21:26yuri_niyazovAh. Ok, so I know that .close thing works.
21:26justin_smith(import (other.ns Database))
21:26justin_smithor (:import ...) in the ns declaration
21:26Apage43I mean, if you define a protocol then it's namespace-with-protocol-in-it/method
21:27Apage43but in this case you're just implementing an existing java interface
21:27phiatnevermind.. i figured it out. I've extracted the jar to .class files, I think I'm close
21:27yuri_niyazovso, in case of me just implementing an existing java interface, it doesn't do anything magical to "hoist" that method to the namespace var?
21:27justin_smithphiat: really you just want to have the jar in the classpath
21:27justin_smithyou can update classpath in project.clj
21:27phiatah ok
21:27Apage43nope
21:27justin_smithno need to extract the jar
21:27phiati thought you could
21:29justin_smithphiat: https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L237 relevant section of the example project.clj
21:29phiatcool thanks
21:29phiatwas just there
21:29justin_smithI found it with control-f classpath
21:30phiatwas confused with native, class, java paths
21:31justin_smithyeah, you want it to be in the classpath for a jar, or in the java-source-path for raw java source code, iirc
21:31clojurebotIt's greek to me.
21:31yuri_niyazovThanks Apage43
21:32phiatNote that this
21:32phiat ;; is not where to *look* for existing native libraries; use :jvm-opts with
21:32phiat ;; -Djava.library.path=... instead for that.
21:32phiatjustin_smith: I have the jar in my lib/ ... just do :source-paths ["lib/"] ? the project.clj example mentions :
21:32phiatwhoops sorry backwards paste
21:33justin_smithhmm
21:33phiatlemme try first! before
21:34justin_smithI have had luck with putting the jar in source-paths or resource-paths, but that may be "the wrong way" even though it works
21:35jared314i've only had luck with creating a maven folder repo and adding it to the project.clj
21:35jared314(bf ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.)
21:36jared314(bf "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.")
21:36phiatcan I just put it on clojars and do :dependencis as normal
21:36jared314i guess it doesn't have that plugin
21:36phiatahh brainf-ck!
21:36justin_smithphiat: or use mvn or lein to install it locally
21:36phiathow with lein?
21:37justin_smithlein only for clojure projects
21:37justin_smithlein install installs to the local .m2
21:37justin_smithmvn for java
21:37phiat(repeatedly 2 #(inc justin_smith))
21:37justin_smithheh
21:39simon__callen: thanks, ansible looks great, I'll try it :)
21:39jared314(examples "repeatedly")
21:40simon__callen: should be a bit more active than pallet and has much of the same philosophy
21:40phiat(identity justin_smith)
21:40lazybotjustin_smith has karma 5.
21:43phiatafter trying https://github.com/kumarshantanu/lein-localrepo , i get "lib/video.jar / nil" instead of something like "lib/video.jar processing/video 1.0", maybe going down wrong path (no pun)
21:45justin_smithcheck out mvn install http://maven.apache.org/plugins/maven-install-plugin/usage.html
21:45justin_smiththat is designed for use with jars
21:45phiatonto something: lein localrepo coords lib/video.jar | xargs lein localrepo install... did something, testing
21:46phiatok will check out
21:46jared314i thought lein-localrepo used mvm install
21:46justin_smithI think it does
21:46justin_smithI have used the latter, not the former
21:47justin_smithso I recommended what I have actually succeeded in using
21:50jared314looks like lein-localrepo uses aether
21:52justin_smithand maven uses aether
22:01allenj12hey what would it look like to count the number of elements in a vector greater than some number is there a > for counting?
22:01jared314what about count and filter?
22:02justin_smith,(count (filter (partial < 5) (range 10)))
22:02clojurebot4
22:03allenj12ooo kk
22:03allenj12(inc justin_smith)
22:03lazybot⇒ 6
22:14chordI learned from this: http://blog.8thlight.com/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html
22:14chordwhich you guys were too lazy to explain to me
22:24phiatok, after digging around, I'm still lost at how to use a .jar in a clojure project. I've gone through some maven things, localrepo, :javac-options, :class-paths... I'm lost.
22:25phiatneed some hand holding
22:26phiatto recap: i have a video.jar ( a processing video library), and want to use it in my project...
22:26phiatisnt there a 'lein install my-jar' or similar? seems very basic
22:26gfredericksphiat: mvn install:install-file or something
22:27phiator something exacly
22:27gfredericks$google maven install file
22:27lazybot[Apache Maven Install Plugin - install:install-file] http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html
22:27gfredericks^ the docs are on the internets
22:27phiati have many many hints... but no straight forward answer/solution
22:27jared314is this a custom processing video jar?
22:27phiatits from processing 2.0
22:27phiati havent touched it
22:28phiatso there is no 'plugin'/easy way... can we not make this tool? seems like it should exist
22:29phiator am I missing something completely (most likely)
22:29jared314lein-localrepo should do it
22:30phiati've tried that to some extents... but only found some forums and hacks on how to make it work
22:30phiatno success yet
22:31chordphiat: :dependencies [[org.clojure/clojure "1.5.1"] [org.jogamp.jogl/jogl "2.0.2"]]
22:31chordthats how i got my jogl working
22:31chordin project.clj
22:32phiatisn't this a relatively 'common' thing in the clojure world? i've always taken it for granted that this type of thing would be easy
22:32chordphiat just edit your project.clj and then lein run should pick everything up
22:32phiatwhat is the jar you are using, back up a lil
22:32phiati have video.jar
22:32phiatwhat next?
22:33phiatits in my lib directory at the moment
22:33chordoh shit can't help you there, i only know how to include a jar dependency that you get from maven repository
22:33phiatright, thats cake, lovely lein!
22:34phiatbut to 'use' a jar file? i thought would be straight forward... or again, i'm just in left field not thinking right
22:35chordphiat: does this help? http://stackoverflow.com/questions/2404426/leiningen-how-to-add-dependencies-for-local-jars
22:35clojurebotPardon?
22:36phiatchord: reading...
22:37gfredericksI think that SO post is obsolete
22:38gfredericksphiat: I already linked you to the docs for the mvn command
22:38gfredericksyou need to pick a random group/artifact/version, install the jar under those coordinates, then enter them in your project.clj
22:38chordgfredericks: how does mvn help here with a local jar thats not part of a maven repository?
22:38gfredericksit will be part of your local maven repo as a result of you installing it
22:39phiatthanks, i was just typing those things in...
22:39gfredericksleiningen will not know the difference
22:40danielszmulewiczFrom the clojurescript wiki: While developing a new application, leave out the :optimizations option. Is this still the common practice? What about source maps?
22:44chordphiat how are you doing opengl in clojure
22:48phiatthrough quil
22:48phiatprocessing
22:48phiatI think I'm close... I keep getting a 'no algorithyms found' error when running lein deps... found a few forum posts, but no definitive answers make sense to me/work
22:49phiati got ":repositories {"local" "file:maven_repository"}" in my projects.clj and [processing/video "1.0.0"] in my deps
22:49phiatthe mvn command built with success
22:50jared314did you use mvn install or mvn deploy?
22:50phiatgonna try this now: http://www.elangocheran.com/blog/2013/03/installing-jar-files-locally-for-leiningen-2/
22:51phiatseems newest
22:51phiatmvn install
22:51jared314https://gist.github.com/stuartsierra/3062743
22:55chordwhy is it so damn complicated to manage a clojure project
22:55SegFaultAXchord: How do you mean?
22:55chordi mean what i mean
22:56SegFaultAXchord: Okay.
22:56jared314lein took a stand against no repo jars
22:56jared314so they made it hard
22:56jared314or just didn't make it easy
22:56callenarrdem: We're making good progress :)
22:57chordcallen: you finally back alive?
22:57chordSegFaultAX: it is so pathetic that I hade to read this entire blog just to understand wtf is going on http://blog.8thlight.com/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html
22:59technomancyit could be that clojure is not for you. have you considered node.js?
22:59jared314phiat: mvn deploy worked for me
22:59callenchord: I'm always here for you love.
23:00SegFaultAXchord: Well, namespaces have some rough edges. Nothing is perfect.
23:00chordtechnomancy: i have to deal with this clojure crap just to prove callen wrong that I can in fact make a game in clojure
23:01jared314wait, were you the guy wanting to make starcraft?
23:01SegFaultAXjared314: Yes.
23:01chordjared314: wow you got short term memory
23:02gws#groundhog-day
23:02phiatjared314: can you give a rundown of steps, from jar to success?
23:03chordjared314: you gonna help me with the game after i get the basics done?
23:03jared314phiat: mkdir repo in project folder
23:03jared314phiat: mvn deploy jar
23:03phiat(defn gold-and-riches-for-jared314 [] (if (success? phiat {:method :jared314}) (inc jared314) (try-again)))
23:04jared314phiat: add local repo to project.clj repositories
23:04jared314phiat: add dependency and lein deps
23:04jared314mvn deploy:deploy-file -DgroupId=org.hack -DartifactId=hack -Dversion=0.0.1 -Dpackaging=jar -Dfile=Hack.jar -Durl=file:repo
23:05jared314 :repositories {"local" ~(str (.toURI (java.io.File. "repo")))}
23:05phiatoooh im excited...
23:06chordphiat: whats your game?
23:07allenj12whats a better way of doing this? https://www.refheap.com/19094
23:07phiatits not a game, just a 3d video sketch i made (trying to port to clojure)
23:07phiattakes in video, converts bitmap to 3d boxes, looks cool
23:08phiati made it years ago, just trying to update it
23:08konr,(.replaceAll "\\" "\\\\" "\\\\\\\\")
23:08clojurebot"\\\\"
23:09phiatjared314: i'm gonna try a fresh project with those steps, because i still get no supported algorithms found error
23:09phiatafter lein deps
23:12phiatomg... a silent lein deps... lets test!
23:12dobry-denWhat's a solution for drying up (ns ...) requires? For instance, I'd like to define the (:require ...) in one place that every 'forum.controllers.* namespace will refer
23:12jared314lein reps :tree
23:13jared314lein reps :tree
23:13jared314autocorrect!!!!
23:13chordjared314 how do I call two functions such as println twice: (defn -main [& args] (println "hi") (println "bye"))
23:14jared314dobry-den: clojure or clojurescript?
23:14dobry-denjared314: clojure
23:15jared314dobry-den: I think you have to write a macro wrapping ns for that
23:15chordjared314 answer now
23:19jared314phiat: be warned, you may have it in your .m2 repo also. make sure to delete that one
23:19phiatjared314: what would i use in the repl to get at it? i think im close... (use 'org.hack) ?
23:20jared314phiat: before you do that, run a lein deps :tree to make sure it is there
23:21phiat[org.clojure/clojure "1.5.1"]
23:21phiat [org.hack/hack "0.0.1"]
23:21phiat:)
23:21phiatso close...
23:21phiatalmost
23:22jared314phiat: if this is the processing video jar, then you should be able to use that namespace
23:22jared314phiat: in the repl
23:22phiat... example ??? :)
23:23phiat(use 'processing.video) (use processing.video) (require ...
23:23allenj12i retract my post b4 i was dumb didnt realize partial was a term X:
23:23jared314i've never used the processing video jar
23:24phiatwell what would it BE?!?!?
23:24phiatyou said you had success... hmmm
23:24jared314i had success with using my jar
23:24phiat(use org.hack) ? im more confused now
23:24phiatwhat did you type into repl?
23:24jared314org.hack/hack is the mvn coords
23:24phiatyes
23:25jared314the namespace is in the jar file you used
23:25phiatyour jar... in the repl... what. did. you. type...
23:25phiatlein repl
23:27phiatyou enter the repl... you type what? im dying here.. whats the final step to import/use/require actually make/do your jar stuff?
23:27jared314phiat: i used (import '[Hack.Utilities Graph])
23:27phiatah
23:27jared314because that is in the jar
23:28jared314jd-gui your jar if you have to
23:30phiatjared314: this is the in the jar - processing/video/Video.class
23:31jared314try (import '[processing.video Video])
23:31phiatok i did, i get have to add processing as well i guess
23:31phiat(import '[processing.video Video]) - > ClassNotFoundException processing.core.PConstants java.net.URLClassLoader$1.run (URLClassLoader.java:202)
23:31phiathmm. i shoudl look into adding this into quill somehow
23:31phiatquil
23:32phiati'll be back later. thanks jared314
23:32phiatand all
23:32chordwtf is quil?
23:32phiatquil is a processing library for clojure
23:32jared314i thought quil had all this in it
23:32phiathttps://github.com/quil/quil
23:32jared314with processing v1
23:32phiati cant get the video stuff to work
23:32jared314quil is processing v1.5.1
23:32phiati can do most of the core with quil, but not the libraries
23:34chordjared314 are yout here i have a question
23:34phiatin other words, there is no quil api for the libraries (video, sound, network, etc)
23:36chordwhy does this work: (ns rts.core) (defn -main [& args] (println "testing"))
23:36chordbut this fails (ns rts.core (:require rts.gl)) (defn -main [& args] (println "testing"))
23:36chordException in thread "main" java.lang.IllegalArgumentException: Parameter declaration println should be a vector
23:37phiatdoes rts.gl overwrite core/println?
23:37chordrts.gl: (ns rts.gl) (defn hi (println "testing"))
23:37phiatdefn no []
23:38phiat(defn f [] <--- need that (println "x"))
23:38chordwtf how did the absense of [ ] give me that exception
23:38chordinstead of telling me parse error
23:39phiatdefn is macro? maybe
23:41jared314i thought defn was a function
23:41jared314maybe it is a macro
23:42phiatit is, i dont know if that is the reason for what chord wanted
23:48phiatok, i'm gonna venture into the quil lib and try to add support for the libraries (if that is the correct path).. wish me luck, any help much appreciated