#clojure logs

2015-12-17

00:29owlbirdThe jdbc API of clojure will return a list including the count of affected record, it's possible to get a number directly while querying count/sum with :result-set-fn first, but what's best way to get the number of affected records while updating?
00:30owlbirdI write (first (jdbc/xxx)), which seems ugly, and the result-set-fn was not supported by jdbc/update serials API
02:38kenrestivodoes something like this already exist? https://www.refheap.com/112791
02:39danneuowlbird: `with rows_affected as (UPDATE ... RETURNING 1) select count(*) from rows_affected`
02:39danneuidk
03:10keep_learningHello all
03:11keep_learningI am trying to parse web page but the data part is mostly rendered by javascript
03:11keep_learningso when ever I am downloading the page it contains javascript but not the data
03:11keep_learningCould some one please tell me how to simulate browser behaviour
03:11keep_learningto render the data
05:45TEttingerSorella! I remember you from livescript! I can't remember if you've used clojure before
05:46SorellaTEttinger: I've been using Clojure for a couple of years, did a few projects at work with it (including a VM for a live programming platform running a Self dialect, which was fun)
05:46TEttingercool!
05:46TEttingerI've been uh... mostly writing java
05:47TEttingertrying to avoid helsinki affliction
05:47TEttingerstockholm syndrome I've got plenty
06:53lkollarkeep_learning: you can use phantomjs to evaluate javascript
06:53lkollarhttp://blog.zolotko.me/2012/12/clojure-selenium-webdriver-and-phantomjs.html
07:53GonzihHi guys, we are organizing 1 day clojure conference in Amsterdam! more info here: http://clojuredays.org
07:58beakyhello
07:58beakywow
08:09Gonzihso yeah, it's free event btw :)
08:14lokien_Hello! What exercises do you guys recommend? I'm bored reading books all the time
08:15shokylokien_ https://www.4clojure.com/
08:16lokien_Thank you shoky
09:00oraclewhat's the meaning of the last parameter (where ...)?
09:00oracle(alter-var-root (var *driver*)
09:00oracle (constantly new-driver)
09:00oracle (when (thread-bound? (var *driver*))
09:00oracle (set! *driver* new-driver)))
09:01oraclethat (when ...) is a paramter, but it doesn't return anything.
09:13gfrederickshiredman: oh that was more succinct than I expected; thanks
09:32oracleI defined a var like (def firefox_brower some_specificiation_for_firefox)
09:32oracleand used core.aysnc, and then I found the code of (def firef...) run twice,
09:33oraclesince I saw two firefox stared up
09:33oraclesince core.async could kick off multiple threads, so will (def ...) run for each thread?
09:34oracleIf I run lein repl, then I only saw one firefox.
09:35oraclebut if run lein run, it will startup 2 firefox. But the main function doesn't call any code to startup firefox, only some code for core.async
10:21benjyz1hello
10:21benjyz1are there are any pure clojure TCP libraries?
10:21benjyz1or anybody aware of work in this area?
10:23beakyhello
10:24prateekbhattHi I am trying to setup ac-cider with cider
10:24prateekbhattI keep getting the error (error "Not a nREPL dict object: rem")
10:24prateekbhatton trying to autocomplete on any keyword
10:27dxlr8rsay I have go-loop with async/timeout in it. the loop runs for ever. is there any way to stop if from repl? or do I need to implement some logic inside the loop in order to stop it?
11:20socksyin the example projects for sente, the defmethods for a multimethod are defined inside of a (do) form. Is this a thing? What does it do differently from defining at the top level?
11:54dxlr8rtry and see :) I am looking at sente to atm
11:58socksyI mean, I am trying it, and not seeing a difference
12:03dxlr8ryeah, I looked at that block to. maybe he had more stuff in the block before and removed it
12:03dxlr8rback then I might had made sense, but not now
12:05socksybut even if he had more stuff in there, it doesn't make any sense to put it in a do
12:05socksysince it was only definitions
12:07dxlr8rtrue
12:07dxlr8rnow that I look at it, it actually makes sense
12:08dxlr8rI looked upon my modified version, where I had split the cljx file
12:09dxlr8rsince it's cljx he uses do in order to not type #+cljs in front of all the domethods
12:09dxlr8rreads better to I think, you know right away that all this is for cljs only, not clj
12:11socksyaha, i'm reading the boot-sente example, so in that case it was probably kept from that
12:11socksy(where clj and cljs are split)
12:12dxlr8r:)
12:48justin_smithoracle: generally you shouldn't ever have side effects at the top level - for example that def would start up firefox while building an uberjar or running your tests (probably not things you want)
12:52justin_smithoracle: a common way to deal with this are to use an atom or delay or promise that will hold the firefox-browser value, then an init function (called in your -main) that actually starts up firefox and connects your handle to the container
14:10devth_for a long time i've used ns-resolve to dynamically look up expected functions in two namespaces (e.g. irc and slack - they are chat adapters). should i use protocols and deftype instead? then I can create instances of the type in each instance and dispatch based on that. right? i've avoided protocols for years :/
14:11devth*in each namespace, and register them in some known place (i.e. swap an atom)
14:11justin_smithyes, protocols are the cleaner way to do this
14:12devththought so, just wanted to make sure i wasn't misunderstanding. thanks justin_smith
14:12justin_smithand yeah, you could use deftype, or defrecord, but for something which will only ever have one instance it can be easier to just use reify
14:13devthwouldn't irc and slack each have their own instance?
14:14justin_smithdevth: the idea with protocols is you can use them where you want the runtime app to be able to provide you with some thing, but you know you can do specific defined operations on that thing even if its definition isn't accessible to your code. You already do this with IFn probably - eg. map doesn't need to have access to your functions definition, the fact that it is IFn and because of that you can call it is all the map really needs :)
14:14devthsomething like (deftype Adapter [name] ...) (def slack (Adapter. "slack") (def irc (Adapater. "irc")
14:14justin_smithdevth: right irc, and slack, would each be a seperate reification
14:14justin_smithdevth: my point was that you wouldn't have two ircs, or two slacks
14:15devthoh, right
14:15justin_smith(but if you would have that, yeah, use deftype or defrecord instead of reify)
14:15devthgot it. thx!
14:16justin_smithdevth: but yeah, it's really not more complicated than how map can use anything that's an IFn
14:16devthright. i was always afraid it was too java-y or something :)
14:16justin_smithdevth: what separates this from java is that concrete inheretence is not possible
14:17justin_smithit's really closer to how haskell does it (and java just did a half ass version of what haskell was already doing anyway)
14:17devthare you referring to the ad-hoc nature of it?
14:18devthand i'm guessing you're referring to haskell's type classes
14:18justin_smithdevth: the fact that haskell had parametric polymorphism via typeclasses, and java copied that but mixed it with some grotesque OO garbage
14:18justin_smithwhat clojure does is closer to the haskell version (on top of java's vm, of course)
14:18devthright
14:19justin_smithright
14:19devthand then there's scala
14:19justin_smithmaybe other folks have something nice to say about scala, I'll hold back on that topic
14:20devthi use it but i don't mind bashing :)
14:45ghost_Hey, what are multimethods and what are they for? I tried to read about them on clojure.org but I don't understand anything
14:52postpunkjustinghost_: they let you do function dispatch on whatever you want. Similar to how some other languages let you overload functions based on the type of the argument, but more flexible.
14:53ghost_postpunkjustin: so, different actions on different arguments? on steroids?
14:54xemdetiaghost_, it's like having in an OO language an .add(String) and an .add(Int) for the same object but with steroids
14:54ddellacostaghost_: I think the top answer here is pretty good: http://stackoverflow.com/questions/8070368/clojure-multimethods-vs-protocols
14:54ghost_xemedetia: shh, I don't know OOP
14:54ddellacostaif you are just dispatching on type, a lot of the time using protocols is the way to go
14:54ghost_xemdetia*
14:55xemdetiaghost_, its like having a struct with an enum defining type and a union of multiple datatypes, and through a main dispatch function of add(struct) you call add_int(struct) and add_string(struct) to do what you need to do.
14:55ddellacostamikera's answer is worth reading too on that page
14:55xemdetia:)
14:55ghost_xemdetia: shh, I don't know C
14:55xemdetiaghost_, use lots of gotos
14:56ghost_xemdetia: oh, it's clear now
14:56ghost_ddellacosta: reading
14:56ddellacosta:-p
14:56ghost_nah, I'm just smiling
14:57ghost_"but if you need to dispatch based on the phase of the moon as seen from mars then multimethods are your best choice."
14:57ghost_yeah, very helpful, ddellacosta
14:57ddellacostaghost_: great
14:58ghost_nvm, I'll just read it. thanks for help
15:03ghost_ddellacosta: last question - so, I create a function, then write that multimethod which depends on output of that first function. yeah?
15:05ddellacostaghost_: sorry, are you asking about the dispatch function?
15:05dxlr8rsay I have go-loop with async/timeout in it. the loop runs for ever. is there any way to stop if from repl? or do I need to implement some logic inside the loop in order to stop it?
15:05ghost_ddellacosta: it's in the mikera's answer you linked me
15:05dxlr8ri tried close!
15:06ddellacostaghost_: i.e. what is "balance-available?" doing?
15:06mustereselHi. I need to write some simulation software. This simulation is going to be controllable by my students. As they only know Java, I thought about providing some interfaces for them to implement. On the other hand, I want to implement the simulation in clojure for obvious reasons. Is there a "standard" way of doing so? I know Java/Clojure interop is excellent, what I'm looking for is an "approach" such that the students will only s
15:06mustereseltheir interfaces (for example an interface IX) and a "Simulation" class such that in their code they'll have something like Simulation s = new Simulation(new IX() { /* Implement stuff */ }); s.run(); but won't have to deal with any clojure stuff.
15:06ddellacostabut yeah, that's your dispatch function
15:08justin_smithmusteresel: easiest is probably to make your interface in java, tell them to implement based on that, and then write clojure code that uses objects of that interface
15:08ghost_ddellacosta: generally, I know what they're doing. but I don't know if I got the concept correctly
15:09ghost_it's just as calling different functions depending on other function's output? but cleaner?
15:10ghost_like (if (true? withdraw) (call-first-function params) (call-second-function params))?
15:10justin_smithghost_: the dispatch function decides which of your implementation functions gets called, and you don't need to make a big case statement or whatever, yeah
15:10justin_smithor if
15:11ghost_justin_smith: that's what I meant. thanks a lot
15:12mustereseljustin_smith: I'm a bit concerned about immutability / mutability. Writing the simulation in idiomatic clojure I'm probably going for a purely functional approach. But then, using for example a plain java array (that needs to be rebuild in each simulation step) is going to be a costly thing. Can I somehow take advantage of clojure's persistent data structures without exposing them? Do they, for example, implement Java Interfaces l
15:12mustereselsay Collection? (I guess not)
15:13xemdetiamusteresel, only if you give them an interface to that resource
15:14xemdetiaif anything it sounds like what justin_smith described - students have to implement an interface, and if they need resources from the system you should provide another interface that you implement that tells them what they can ask for, and you can write up a simple java class to implement that interface and provide dummy data
15:15jjttjjuuhhh what's the word(s) to describe the (bad) use of defining top level vars in a library, for example (def)ing a connection var right in a database library (instead of leaving that for the user to do)
15:15jjttjjtoo much top-level state?
15:15xemdetiajjttjj, http://dl.acm.org/citation.cfm?id=953355
15:15xemdetiaprobably this
15:15ystaelmusteresel: The basic Clojure data structures do implement the Java interfaces you want them to, for instance, APersistentVector implements Iterable, List, Comparable, Serializable among others
15:16jjttjjxemdetia: thanks!
15:19mustereselystael: They do? That's awesome, I guess I can then just give them an interface (like xemedita suggested) wiht a method like Iterable<Data> getDataObjects(). I'll try that, it should do the trick :)
15:19mustereselThank you all :)
15:43cap10morganAnyone else seeing “Args out of range: -1, -1” errors in Emacs when you have a CIDER REPL running and you hit Enter to create a new line in a Clojure buffer (and then your code doesn’t auto-indent; the point stays at column 0)? Latest versions of all the things.
15:50justin_smithcap10morgan: in emacs "Args out of range: -1, -1" is a sign that some command wants to access a range of the buffer contents, but the range is not findable (you may already know this)
15:50cap10morganjustin_smith: I did not know that, thanks.
16:05justin_smithcap10morgan: also, did you just update recently?
16:06cap10morganjustin_smith: yes, I'm running CIDER 0.10 (and the latest versions of pretty much everything else)
16:06justin_smithcap10morgan: because cider often has the problem of things breaking if you try to update in place, so the best options are to completely uninstall then install the newer version, or to delete all your elc files
16:06cap10morganjustin_smith: ah, sure. good idea, I'll give that a try.
17:12sdegutisIs it possible to use ClojureScript with advanced-optimization enabled inside a Clojure process without actually touching the real filesystem for any of the compilation, and end up with a single string representing the entire JavaScript program after advanced compilation?
17:24benjyz1hi. what's the best way to update a map?
17:25justin_smithbenjyz1: what kind of update are you trying to do? usually you want assoc. But, to be pedantic, you can't change a map, you can only make a new map derived from it.
17:26benjyz1{:a b} => {:a c}
17:26benjyz1{:a :b} => {:a :c}
17:26benjyz1,(def m {:a :b})
17:26justin_smith,(assoc {:a :b} :a :c)
17:26clojureboteval service is offline
17:26clojureboteval service is offline
17:26blischalkIs it possible in prismatic schema to define a schemaless map? E.g In compojure-api I want to say that I want to accept a map but that the structure of the map can be anything.
17:31justin_smithblischalk: perhaps something like {s/Any s/Any}
17:31onehow can i use a variable as an idex for a map?
17:31justin_smithone: by using a variable as an index for a map
17:32justin_smith,(def idx :a)
17:32clojurebot#'sandbox/idx
17:32onei mean how do i pass it
17:32justin_smith,(assoc {} idx 0)
17:32clojurebot{:a 0}
17:32justin_smith,(get (assoc {} idx 0) idx)
17:32clojurebot0
17:32justin_smith,{idx 0}
17:32clojurebot{:a 0}
17:33oneif x is my map, {:abc 123}, and y = "abc"
17:34felixnhey is there a reason I would use (keyword 'foo) instead of :foo? is it there so I can escape a string if it's not written?
17:34justin_smith,(get {:abc 123} (keyword "abc"))
17:34clojurebot123
17:34onethan you
17:34amalloyone: are you sure you want the map to have keyword keys, if you're looking up strings in it? can you just make the map have strings?
17:34onethank
17:35justin_smithfelixn: (keyword 'foo) is weird
17:35justin_smithamalloy: excellent point
17:35oneits something im getting from an elastic search response
17:35amalloypeople so often seem to think only keywords are valid map keys
17:35oneit has to be grouped by a certain field that isnt determined
17:36justin_smithamalloy: see also, doing a tree walk and converting every string key to a keyword key, when you only access one value in the map
17:36amalloyi haven't seen that one much
17:37justin_smithamalloy: cargo culting while using json apis
17:37TEttinger,(defn random-string [] (apply str (repeatedly (+ 2 (rand-int 6)) #(char (+ (int \a) (rand-int 26))))))
17:37clojurebot#'sandbox/random-string
17:37TEttinger,(random-string)
17:38clojurebot"yorqj"
17:38TEttinger,(keyword (random-string))
17:38clojurebot:ygsg
17:38TEttinger,(keyword (random-string))
17:38clojurebot:id
17:38blischalkjustin_smith: It seems to give “Bad explicit key: schema.core.AnythingSchema”
17:38TEttingerha nice
17:38justin_smithblischalk: oh, I'm not sure what the answer is there
17:38justin_smithblischalk: is there a s/Map?
17:39blischalkjustin_smith: doesn’t seem to be
17:40blischalkjustin_smith: “No such var: s/Map”
17:41justin_smithblischalk: I figured it out in my repl
17:41blischalkjustin_smith: Awesome! What’d ya find?
17:42justin_smithblischalk: spoke too soon!
17:42justin_smithbut (s/check {} {}) works, haha
17:44justin_smithblischalk: wait - the first thing I suggested totally works (s/check {s/Any s/Any} {:a 0 :b 1}) -> nil
17:46justin_smithblischalk: that checks, and as expected the one way to make that check fail is to provide an arg that is not a map
17:47blischalkjustin_smith: using (s/defschema MySchema
17:47blischalk {:query {s/Any s/Any}
17:47blischalk :some_id java.lang.Long
17:47blischalk :foos {s/Any s/Any}
17:47blischalk :id String})
17:47blischalkschema.core in compojure-api is saying “Bad explicit key: schema.core.AnythingSchema”
17:48justin_smith blischalk that schema definition compiles here
17:49blischalkjustin_smith: It compiles but when I visit the swagger ui it throws a runtime exception
17:49justin_smithblischalk: I am using schema 0.4.3, what's your version? sounds like a swagger bug
17:49Deraenblischalk: Use {s/Keyword s/Any}
17:50felixnis there an idiomatic way to create enums? I googled and someone said use keywords, but now I want to parameterize the data type (:foo [1 2 3]) is no good XD I guess I could use a list/map, but is that idiomatic?
17:51justin_smithfelixn: clearly you don't mean jvm enums
17:51justin_smithfelixn: why not [:foo [1 2 3]] ?
17:51felixnreally just algebraic data types like haskell
17:52felixnok yea, list works then!
17:52justin_smithfelixn: vector
17:52amalloyfelixn: there's not really good support for ADTs
17:52justin_smithtis true
17:53blischalkjustin_smith: [prismatic/schema "1.0.4"] is what compojure-api is using currently
17:53justin_smithblischalk: yeah, I had no idea I was using such an old version...
17:53justin_smithone moment, going to see how things look when I bump my version
17:55justin_smithblischalk: {s/Any s/Any} is still a valid schema that passes for any hash map (including empty) as of 1.0.4, I just upgraded
17:56blischalkDeraen: That seems to work!
17:56blischalkThanks justin_smith and Deraen.
17:56ridcully(inc justin_smith)
17:57justin_smithblischalk: https://www.refheap.com/112831
17:57ridcullythat reboot every second seems not that much to be on the workind side of things?
17:57justin_smithridcully: I'm not sure where things ended up with lazybot
17:58ridcullyi have a genral idea i don't like to share
17:58justin_smithblischalk: seems like compojure-api is doing something unusual there
17:58DeraenRing-swagger doesn't currently support s/Any as key, I don't remember if there's specific reason for it but the problem is schema.core/explicit-schema-key call here: https://github.com/metosin/ring-swagger/blob/master/src/ring/swagger/json_schema.clj#L240
17:59justin_smithDeraen: thanks! good to have that info
18:00justin_smithDeraen: I guess they assume the keys would really need to all be keywords, which in that domain could make sense
18:02DeraenYeah, at leason on JSON the keys are always keywords (or strings) so s/Any doesn't make that much sense. Anyway, if someone has usecase for s/Any as schema key, an issue is welcome.
18:04justin_smithyeah, {{:foo 0} :a} isn't going to work in json, so it makes sense there
18:05DeraenUnfortunately s/Str doesn't work as key either and it probably should
18:07DeraenAh, s/Keyword works because it's defined as (pred keyword?) and ring-swagger filters predicates out. It should probably do the same for classes.
18:20rbxbx_Has anyone here used mcohen01's amazonica lib for dynamodb? Specifically performing a scan query with key-conditions.
18:20rbxbx_Having a difficult time sussing out the exact sort of heterogenous map it's expecting ;)
18:20oracleautomate.core=> (get-thread-bindings)
18:20oracle
18:20oracleStackOverflowError clojure.lang.PersistentHashMap$BitmapIndexedNode.index (PersistentHashMap.java:677)
18:20oracle
18:20oraclewhy called get-thread-biddings failed?
18:24rbxbx_oracle: (take 1 (get-thread-bindings)) ;; => ([#'clojure.core/*err* #object[java.io.PrintWriter 0x47c1094 "java.io.PrintWriter@47c1094"]])
18:24rbxbx_It looks like it's returning an infinite sequence so you'll have to grab the part you want.
18:26oracleget-thread-biddings is the build-in function in clojure, why it return infinite sequence? it get the bidding vars, the vars should be finite, right?
18:29amalloy*1 is a thread-binding referring to the last thing returned by the repl
18:29amalloyif *1 is the result of get-thread-bindings, it's an infinitely self-recursive data structure
18:30amalloywhich is fine, but when you try to print it you'll run out of stack
18:40oraclehow to use add-watch for a var?
18:40oraclesince a var is a per thead data, how could know which thread change?
19:06aaelony__Is anyone familiar with converting a msgpack file to a tab delimited file? I'm looking at [clojure-msgpack "1.1.2"] and trying (-> testfile io/input-stream java.io.DataInputStream. msg/unpack-stream), but instead of seeing data for my file, it returns 31...
19:07aaelony__https://github.com/edma2/clojure-msgpack/blob/master/src/msgpack/core.clj
19:11justin_smithoracle: I wonder if your add-watch can check which thread it is in when it gets called? not sure, I've never tried that combination of features
20:02xeqiI've been profiling some code and its basically 93% hashCode / 7% PersistantHashMap.cloneAndSet related to a deftype being used as keys in a hashmap. After implementing IHashEq and caching .hashcode in a volatile it gets to 66 % hashCode / 33% PersistantHashMap.cloneAndSet
20:02xeqiAre there any guides to implementing a good/fast hashcode for use in PHMs? or any other techniques around optimizing this area?
20:03xeqi* for use as objects as keys in PHMs
20:03TEttingerwowza
20:03xeqithats what IRC is for right? harder, esoteric questions :p
20:04TEttingerI'd guess looking up bob jenkins' hashing page would help, maybe not for JVM stuff
20:04TEttingerwhat kind of stuff are you hashing?
20:05xeqijust a deftype. See LVar in https://github.com/xeqi/aurelius/blob/master/src/aurelius/unify.clj
20:07TEttingermy first instinct is that having any fn named . is a bad idea
20:07TEttingerno idea if it interoperates with .hashCode
20:07TEttinger,(macroexpand '(.hashCode "hey"))
20:08clojurebot(. "hey" hashCode)
20:10xeqihaha, that hasn't been a problem yet. but fair point about the expanded interop form
20:10xeqiI might end up doing something more along the lines of core.logic's LCons later, but was trying that out for now
20:11TEttingerso here's how flatland's ordered maps do their hashing https://github.com/amalloy/ordered/blob/5c07c3a72d476f19818eeffe4a07afdb63b0bbed/src/flatland/ordered/map.clj#L85-L92
20:12TEttingernot the type hints, use of unchecked and bitwise operations, and not relying on the default (slow) .hashCode method of objects
20:12TEttinger*note the
20:28slesterhey there
20:29slesterare there any places that one could help develop / contribute to clojure?
20:38amalloyTEttinger, xeqi: the stuff in flatland/ordered is just direct theft from clojure.core/hash-nordered-coll
20:38amalloysince i wanted it to work in versions of clojure prior to that function's addition
20:39amalloyand i think hashing the map itself is not actually interesting to xeqi anyway, who wanted to know how to create key objects whose hashes are good
21:03xeqiits semi-relevant, but since I'm not making container objects its less so.
21:05xeqiIf I just make a global counter and inc it for each one, providing them each with unique (but linear) hashes, it ends up being 10% faster or so, and then 99% of time is in PHM/cloneAndSet
21:05xeqiso either I can't get much better without changing datastructures, or the visualvm sampler is not effective
21:06xeqior pruning the call tree somehow
21:29socksyi have a cyclic dependency, anyone feeling up to suggesting some refactors?
21:30socksyusing danielsz's system library, i have a defsystem in a systems NS
21:30socksyit has a DB, Sente, HTTP Kit
21:31socksythe second two things are depended upon a NS "server", which has an event handler that's needed to set up Sente
21:31socksyone of the sente events is to parse something, this is in a namespace "parser"
21:32socksythe parser needs access to the DB, which is in "systems"
21:32socksyso i have parser -> systems -> server -> parser
21:32socksy(server's event handler is calling the parser)
21:33socksyshort of scrapping system altogether, or putting everything in one NS, I can't see a way around it currently
21:33futurosocksy: what about pulling the db code out into it's own namespace?
21:33socksybut then it doesn't get reloaded with the system, right?
21:34socksybut yeah, that's the best idea i've got so far
21:34socksyi suppose i can make a separate persistent state system, and treat the sente/http-kit as a system for web interaction
21:35futuroso the dep graph would just have the things that depend on the db declaring as such
21:35futuroand the db has it's own lifecycle, no?
21:36futuroso that triggering a restart on a higher level system causes a restart on the things it depends on
21:37socksymm
21:37clojurebotexcusez-moi
21:37socksyi guess i don't really get systems well enough yet :)
21:38futurothat'd be my recommendation. Split out the code so that each ns does one thing, then use the system library to declare your dependencies so everything gets loaded in the right order
21:38fierycatnetCan someone help me out with simple Reagent example. I have this code from their page http://pastebin.com/u6JK1ZvE but I can't figure out how to render the main BMI component in home-page
21:39socksythanks futuro :)
21:40futuronp, best of luck
21:41futuroI am really jazzed about om.next so far
21:42futuroI highly recommend anyone on the fence about checking it out to give it a look
21:42fierycatnetany open source projects use it yet? I'd like to check out the whole SPA to study.
21:43futurofierycatnet: There are some examples using om.next, but I'm not sure about anything OSS and large using it
21:44futurohttps://github.com/swannodette/om-next-demo
21:44futurothat comes to mind
21:46fierycatnetCool, I'll look into it later if I get my reagent page to work.
21:47futuroI know mfikes has tied it into ambly/React Native, so he got the autocomplete demo to run on his iphon
21:47futuroiphone*
22:00socksynooo i can only have one system at a time
22:04felixn(logic/run* [q] (logic/== q (lvar "foo" false))) <-- hey, anyone know if it's possible to keep track of original names of variables after solving?
22:09felixnhttps://gist.github.com/anonymous/f4551c7afa01f4f892dd <-- this is the only approach i've came up with, then I iterate through the result reapplying the old names (only the first if a variable is shared), and if there's a new variable I generate a new name. it takes a lot of work!
23:09slesterare there things that need to be done for clojure that a newb could do?