#clojure log - Jul 20 2011

The Joy of Clojure
Main Clojure site
Google Group
IRC
List of all logged dates

0:00 dnolen_: so far it seems like a pretty even split, but I agree, these points should probably be made in the tutorial.

0:01 amalloy: dnolen_: yes, i see. if the analogy to #s had been drawn, i wouldn't really object

0:03 DeusExPikachu: so is geto defined elsewhere? the naming seems generic although what it does seems specific

0:03 dnolen_: hopefully my talk on this gets accepted to the conj. Personally I found myself scratching my head reading The Reasoned Schemer, I didn't really understand until I read the implementation.

0:03 like rhickey's persistent data structures graphics, I'd like to make the same explaining exactly what happens in a core.logic program.

0:04 it's actually really freaking cool.

0:05 DeusExPikachu: dnolen_, I hope it does too, I want to see what cool things I do with it, as a side note, I understand that a significant portion of watson (IBM) was written in prolog

0:05 dnolen_: DeusExPikachu: it's not defined elsewhere, it's called geto because it's somewhat similar to get in Clojure.

0:08 DeusExPikachu: I like the use of wild cards and list destructuring to act like familiar first, rest recursion we see in functional programming

0:08 for the definition of geto

0:09 I wonder if that analogy should be explicit in the tutorial

0:09 dnolen_: DeusExPikachu: amalloy: technomancy: all good feedback. I'll direct ambrose to this chat.

0:12 DeusExPikachu: I think the author's description of what the function is supposed to accomplish would go a long way

0:14 so who's going to be here 6:45 pm EST Wed?

0:15 dnolen_: DeusExPikachu: yes that's glaring omission - that geto is a relational goal for dealing with an associative data structure (vector of key/value pairs in this case)

0:15 DeusExPikachu: me.

0:16 brehaut: what is EST as UTC?

0:16 -4?

0:16 scottj_: stu's "no comment" on cinc at a recent recorded talk and rhickey's questions about protocols making bootstrapping more difficult lead me to think it's cinc related

0:19 DeusExPikachu: what's cinc?

0:19 icey: DeusExPikachu: clojure in clojure

0:20 amalloy: brehaut: starts in 18 hours

0:20 brehaut: amalloy: thanks :)

0:20 amalloy: 18:25 i guess

0:20 brehaut: 10am new zealand time; thats achievable

0:21 DeusExPikachu: my roomate is always watching livestreams about starcraft, it will be nice for me to do it on something I enjoy for a change

0:22 for future recommendations for streaming services, justin.tv seems to be a good host, I many livestreamers that switched for various reasons

0:24 cemerick: DeusExPikachu: where's "here"?

0:25 * cemerick wonders how many #clojure folk are NYC-local

0:25 DeusExPikachu: cemerick, #clojure

0:34 kumarshantanu: Is this still a rumor that the talk is about CinC?

0:39 amalloy: so i discovered that reify, deftype, and the like fail silently if you specify a class twice: (reify Map (size [this] 0), Counted (count [this] 0), Map (keySet [this] nil))

0:41 this because i was writing a macro to inject some automated implementations into your reify for you, and they collided. i ended up having to parse the reify body and unify everything for you; does anyone have an opinion about whether that would be a good behavior for reify to have by default?

0:46 technomancy: amalloy: reify wil also fail silently if you give it a fully qualified symbol as a local

0:47 amalloy: technomancy: not as a local, but as a function arg, i hope you mean? as a local would be extra-bizarre

0:47 technomancy: hm; you take local to mean let-bound only?

0:47 amalloy: technomancy: no, i don't. but local *includes* let-bound only

0:48 technomancy: oh, gotcha. yeah, I mean on parameter lists

0:48 amalloy: &(.count (reify clojure.lang.Counted (count [user/this] 1)))

0:48 lazybot: ⇒ 1

0:49 * technomancy goes back to jira

0:49 amalloy: &(.keySet (reify java.util.Map (keySet [user/this] user/this)))

0:49 lazybot: java.lang.Exception: No such var: user/this

0:49 amalloy: technomancy: nah, my example just sucked

0:50 technomancy: aha

0:50 http://dev.clojure.org/jira/browse/CLJ-348

0:51 not related except it may indicate that it's possibly intentional that reify doesn't stop you from doing stupid things I guess

0:52 amalloy: &(.size (reify Map (size [this] 0), Counted (count [this] 0), Map (keySet [this] nil)))

0:52 lazybot: java.lang.Exception: Unable to resolve symbol: Counted in this context

0:52 amalloy: &(.size (reify java.util.Map (size [this] 0), clojure.lang.Counted (count [this] 0), java.util.Map (keySet [this] nil)))

0:52 lazybot: java.lang.AbstractMethodError: sandbox26573$eval28671$reify__28683.size()I

0:55 amalloy: technomancy: it's especially annoying, because reify does all this extra work to mess things up, then expands into a reify* that would have worked fine

0:55 &(macroexpand '(reify java.util.Map (size [this] 0), clojure.lang.Counted (count [this] 0), java.util.Map (keySet [this] nil)))

0:55 lazybot: ⇒ (reify* [clojure.lang.Counted java.util.Map] (count [this] 0) (keySet [this] nil))

1:04 technomancy: geez

1:05 amalloy: technomancy: on the plus side, this got me reading the compiler again, and i discovered that the compiler contains a reference to a very special symbol: static Symbol dummyThis = Symbol.intern(null,"dummy_this_dlskjsdfower");

1:06 but it's only ever used in an unreachable code path: if (name != null) registerLocal((name == null) ? "dummy_this_dlskjsdfower" : name);

1:06 technomancy: man, languages without gensym crack me up

1:07 * technomancy notes that this qwertymash isn't just home-row.

1:07 amalloy: technomancy: crypotgraphically-secure gensyms are important for code that makes it into core

1:09 technomancy: also: languages that force conditions to be boolean expressions. hilarious!

1:35 amalloy: blech. i was going to submit a simple patch that stops doing the extra parsing, but (extend) uses the same parser as reify, and it *does* need the extra work

1:53 anyone know a good way to turn [:a 1, :b 2 3, :c :d 4] into {:a [1], :b [2 3], :c [], :d [4]}? that is, each keyword as a key, whose value is a seq of the numbers immediately after it?

1:54 i wanted to do something with (partition 2 (partition-by keyword? coll)), but then a keyword with no numbers gets lumped together with the one after it

1:55 maybe i'll farm the problem out to 4clojure; i'm sure someone will have a good answer

1:57 brehaut: amalloy: i settled on (juxt filter remove) for my not-pivot function yesterday; completely different result to what i was trying for but works fine

1:57 amalloy: ah

1:58 brehaut: i called it sieve but im not convinced its a good name

1:58 amalloy: brehaut: contrib calls it separate

1:58 brehaut: aha

1:58 amalloy: i think it's in seq-utils

1:59 brehaut: cheers

1:59 amalloy: brehaut: now come up with a name for the function i'm trying to get 4clojure to write

2:31 dbushenko: hi all!

4:02 lol :-) one more blub http://confluence.jetbrains.net/display/Kotlin/Welcome

5:34 vijaykiran: Hi .. I'm trying to understand ->> and -> macros. I think I understand what -> does (thanks to http://blog.fogus.me/2009/09/04/understanding-the-clojure-macro/), but seems like I don't get ->> can any one give me a simple example ..

5:34 kumarshantanu: vijaykiran: (->> [1 2 3 4 5 6] (map inc) (take 2))

5:35 ,(->> [1 2 3 4 5 6] (map inc) (take 2))

5:35 clojurebot: (2 3)

5:35 kumarshantanu: ->> puts the arg at the *end*

5:35 -> puts the arg at the first place

5:35 raek: vijaykiran: (-> x (f1 a b) (f2 c d)) is the same as (f2 (f1 x a b) c d) and (->> x (f1 a b) (f2 c d)) is the same as (f2 c d (f2 a b x))

5:43 vijaykiran: kumarshantanu, raek thanks!

8:23 khaliG: has someone here set up zeromq for clojure recently?

8:32 clgv: khaliG: you already read this blog entry? http://antoniogarrote.wordpress.com/2010/09/08/zeromq-and-clojure-a-brief-introduction/

8:34 khaliG: clgv, yes! that's the guide i've been following

8:39 clgv, i ran into problems with building zeromq so i used the latest instead, and that worked fine. the jzmq library built and installed fine. I run into problems trying to retrieve the deps using lein though

8:40 clgv: khalig: I didnt try it - I just wanted to know what it is and the blog entry told me ;)

8:40 khaliG: clgv, fair enough :)

8:40 clgv: khalig: I just posted it since there was a chance you might have not seen it

8:54 Are incanter operations on datasets lazy?

11:17 ahriman53072: hello how i can query GAE database with SQL-like queries from my clojure-compojure program? i've found appengine-clj but it don't have suitable methods.

11:28 Scriptor: latest enlive is at 1.0.0, right?

11:56 brettk: hi

11:56 quick question

11:56 using 'assoc' to *update* a map

11:57 if i understand correctly, assoc returns a new copy of the map

11:58 and does not change 'in place' the data structure

11:59 is that correct?

11:59 ambrosebs: yes

11:59 mprentice: essentially yes

11:59 technically, assoc doesn't have to make a new copy. it just can't change anything in the input map

11:59 brettk: it references the 'old' data structure where it makes sense

12:00 ambrosebs: called "structural sharing"

12:00 brettk: mprentice: ok

12:00 yep

12:00 ok... just wanted to make sure that i understood this aspect of clojure

12:01 this is also called *persistent* data structures, right?

12:02 mprentice: yes. also called immutable.

12:02 brettk: ok

12:02 but this immutability is all 'under the hood'

12:02 ?

12:03 clgv: brettk: what do you mean by that?

12:03 brettk: if i use assoc to change a map

12:04 do i need to 'wrap this up' in some kind of dosync form

12:04 clgv: brettk: the input object is not change, see: ##(let [a {:x 1}, b (assoc a :y 10)] (println a) (println b))

12:04 lazybot: ⇒ {:x 1} {:y 10, :x 1} nil

12:04 brettk: effectively, i am updating a data structure

12:05 ah... the *input* object is not changed

12:05 clgv: or even: ##(let [a {:x 1}, b (assoc a :x -10)] (println a) (println b))

12:05 lazybot: ⇒ {:x 1} {:x -10} nil

12:05 brettk: but what the function returns *is*

12:05 the new data structure

12:05 clgv: yes

12:06 brettk: and that is fine?

12:06 clgv: yes pretty much in most cases

12:07 brettk: what about this whole immutability/functional 'thing' in clojure?

12:07 what if several threads are referencing the map that i have just gone and 'updated'?

12:07 Scriptor: brettk: they reference the original map

12:07 when you 'update' you're creating an entirely new map

12:08 which those other threads don't know about

12:08 of course, things change when you use refs

12:08 brettk: so no need to wrap this 'update' in a dosync form?

12:08 clgv: brettk: if the thread shall see the updates you need either atoms or references

12:08 brettk: or something similar?

12:08 ok

12:08 Scriptor: brettk: you're using assoc right? Yup, no need

12:08 brettk: ok

12:08 wow

12:08 clgv: changing access to references has to be wrapped within dosynv

12:09 *dosync

12:09 Scriptor: there are just a few functions that actually update in-place that need to be inside dosync

12:09 brettk: ok

12:10 wow -> clojure is pretty radical [as in 'cool']

12:11 ok... thanks guys

12:11 Scriptor: brettk: a good exercise in fully grokking functional programming is to try and reimplement some of the more basic core functions

12:12 like map, filter, etc...

12:12 brettk: scriptor: i will give that try

12:12 a try

12:12 bpr: brettk: try playing around with labrepl

12:12 mprentice: the first 2 chapters of structure and interpretation of computer programs is purely functional and has you implement all of those as exercises

12:13 bpr: that too, SICP is foundational knowledge

12:13 Scriptor: the writing on higher-order functions is excellent

12:14 brettk: mprentice, bpr, scriptor: ok... will do. thanks for the advice

12:21 ahriman53072: function returns some maps, how can i get one map from this list?

12:28 dnolen: ahriman53072: do you need to get a specific one?

12:28 ahriman53072: dnolen yes

12:29 dnolen: ahriman53072: you could use some

12:30 ahriman53072: dnolen ? dont understand

12:30 dnolen: ,(doc some)

12:30 clojurebot: "([pred coll]); Returns the first logical true value of (pred x) for any x in coll, else nil. One common idiom is to use a set as pred, for example this will return :fred if :fred is in the sequence, otherwise nil: (some #{:fred} coll)"

12:30 ambrosebs: come get some

12:44 cemerick: See you all in NYC later… ;-)

13:37 ieure: technomancy, Hah, is ElasticSearch working okay for you?

13:37 I went looking for a Clojure client wrapper, and your ML post was the first hit.

13:38 I see that your wrapper repo is dead.

13:45 technomancy: ieure: it's been working out pretty well. a co-worker spun off a separate wrapper lib that is probably going to be a better bet going forward: https://github.com/drewr/esperanto

13:54 cch1: (using Midje) Anybody got a good meme for testing a sequence of maps for a particular structure?

13:55 myseq => (has every? (contains {:key1 string? :key2 number?})) does NOT do it

13:59 amalloy: cch1: i never could get the hang of midje syntax

13:59 cch1: amalloy: Yeah, the checkers are powerful abstractions, but they are not consistently compasable (AFAICT).

14:00 amalloy: in "real" clojure i'd just write (every? identity (for [m maps, [key pred] {:key1 string? :key2 number?}] (pred (key m))]))

14:59 technomancy: ieure: I have been advised that esperanto may not be "ready"

14:59 so caveat emptor

15:00 drewr: ieure: it's a good start; it's mostly served as a sandbox for debugging production issues

15:01 flazz: what is the clojure analog of zip in haskell?

15:01 amalloy: technomancy: any day now esperanto will take the world by storm. it's such a useful, unbiased, standardized language

15:01 drewr: ieure: but there's a sweet lazy index-seq that I'm using to build an automated reindexing functionality

15:01 amalloy: $heval zip [1, 2] [3 4]

15:01 lazybot: ⟹ No instance for (GHC.Num.Num (t -> b)) arising from the literal `3' at <interactive>:3:12-14Possible fix: add an instance declaration for (GHC.Num.Num (t -> b))

15:01 technomancy: amalloy: it's no match for lojban!

15:01 amalloy: $heval zip [1, 2] [3, 4]

15:01 lazybot: ⟹ [(1,3),(2,4)]

15:01 amalloy: &(map vector [1 2] [3 4])

15:01 lazybot: ⇒ ([1 3] [2 4])

15:02 amalloy: flazz: ^

15:02 flazz: amalloy: just map? wow

15:03 amalloy: flazz: clojure's map generalizes, combining features from a number of related-but-different functions in other languages

15:03 eg with 2+ seq args it's basically zipWith

15:04 flazz: amalloy: thanks

15:05 nathanmarz: technomancy: do you know if anyone has worked on a scala compiler plugin for leiningen?

15:06 technomancy: nathanmarz: if they have, they've been keeping quiet about it. =)

15:06 nathanmarz: those bastards

15:06 how hard do you think it would be to implement something like that?

15:07 technomancy: probably not difficult

15:07 the javac task is like 40 LOC

15:07 nathanmarz: i see

15:07 i'll take a look at how that's implemented

15:07 technomancy: they ought to have an ant task you can call

15:08 most of the code in javac is just translating project.clj into ant-land, so it depends on how much flexibility you want to expose

15:09 nathanmarz: flexibility as in the javac-options?

15:09 technomancy: right

15:09 nathanmarz: cool

15:09 technomancy: I think the javac task supports multiple source roots for some reason

15:17 arj: in how many hours will the talk by Rich start? Not too good with the time zones :)

15:18 amalloy: 3.5

15:18 arj: ok, will be 1am here then

15:18 it better be good then :)

15:20 Bronsa: same for me

15:20 i will not sleep tonight i think

15:20 arj: :)

15:21 ahriman53072: if i have sequence of maps how can i get all values from all of maps in this seq?

15:21 tbatchelli_: I believe ustream events are automatically saved for offline viewing

15:21 Bronsa: arj: you german?

15:21 scottj: in end-of-block? at http://fogus.me/fun/marginalia/#marginalia.core is there any reason to have the (when (or...) true)? isn't (or ...) always sufficient?

15:21 amalloy: &(mapcat keys [{:a 1}, {:b 2}])

15:21 lazybot: ⇒ (:a :b)

15:21 amalloy: or vals, i guess

15:22 arj: Bronsa: Danish, you?

15:22 Bronsa: italian

15:22 ahriman53072: amalloy thanks.

15:23 bpr: what's the url for watching Rich's talk?

15:23 i assume there is one?

15:24 scottj: http://www.ustream.tv/channel/clojurenyc

15:24 bpr: ty

15:48 uberjar: clojure on heroku! google app engine can now go away and die.

15:53 ahriman53072: sorry again, how i can remove all keys from sequence of maps?

15:56 hv: that is not clear, could you give us an example with the expected output?

15:59 ahriman53072: imagine: [{:a 1 :b 2 :c 3}, {:a 1 :b 3 :c 7}]. Exp. output (exclude A key): [{:b 2 :c 3}, {:b 3 :c 7}].

16:00 amalloy: &(for [m [{:a 1 :b 2 :c 3}, {:a 1 :b 3 :c 7}]] (dissoc m :a))?

16:00 lazybot: ⇒ ({:b 2, :c 3} {:b 3, :c 7})

16:00 ahriman53072: as always, elegant and great. thanks.

16:01 i begin to love clojure.

16:38 fliebel: when is/was the clojurenyc thing?

16:39 amalloy: 02:05 from now

16:39 fliebel: that's like 00:30 here... :(

16:40 chouser: fliebel: get your sleep. you can read all about it in the morning. :-)

16:40 fliebel: Yea, I guess I'll do that. No fanboy points for me today :)

16:40 amalloy: fliebel: just set up some speakers around your bed, and you'll absorb it while you sleep

16:41 fliebel: nice idea...

16:42 joly: any idea how long the talk is supposed to run?

16:47 abedra: I would imagine at least an hour and a half

16:54 * raek prepares an extensive batch of coffee for the event

16:59 * amalloy prepares some plausible-sounding claims about the talk to tease the sleepy foreigners with

17:00 * fliebel prepares his pillow

17:06 fliebel: Does Alex Miller come in here? His site is blank.

17:07 amalloy: fliebel: puredanger, right? i'm sure i've seen him here once or twice, but i'd just tweet him

17:29 TimMc: yeah

17:29 wrong window

17:30 ahriman53072: ok

17:45 * devn waves

17:47 * brehaut hopes the stream is available in lo-def

17:52 chouser: less than an hour to go now

17:53 gertalot: Will he wear a turtleneck and go "one more thing..." ? ;)

17:54 brehaut: hi gertalot

17:54 gertalot: hi brehaut!

17:54 sorry I missed you last weekend

17:54 brehaut: gertalot: likewise

17:54 hv: where can we watch the talk?

17:54 brehaut: hv http://www.ustream.tv/channel-popup/clojurenyc ?

17:55 hv: brehaut: thanks. perhaps that could be in topic ;)

17:56 ohpauleez: chouser: I set a phone alarm one hour prior

17:56 Bronsa: im fucking awake

17:59 ohpauleez: haha

18:01 aaelony: hi, I have a data structure that will contain an arbitrary number of :datamap keywords. Each :datamap will have map values with many (n~100) keywords (and values) below it. I'd like to create a set of that contains all the keywords found in all the datamaps. clojure.set/union seems like a option, but I am not sure how to create the (sub)sets that will be union-ed together. Snippet of code is here http://pastie.org/2245208 . any help appreciated..

18:03 the part I need is the "something-that-creates-a-set-of-distinct-keys-over-all-ids"

18:06 raek: aaelony: so raw-data is a sequence of maps with the keys :id, :file and :datamap? and the value associated with :datamap is also a map? and you want to collect all keys that occurrs in those maps?

18:06 aaelony: raek: correct

18:07 raek: also, #(get-runid-data %1) is equivalent to just get-runid-data

18:07 aaelony: well, there is a vector of ids coming in, and each id produces

18:07 raek: well, first you can map :datamap over the sequence: (let [datasets (map :datamap raw-data)] ...)

18:08 aaelony: the :id :file :datamap

18:08 yeah, my "datamap" has that

18:08 raek: then map 'keys' over those: (let [dataset-keys (->> raw-data (map :datamap) (map keys))] ...)

18:09 aaelony: interesting...

18:09 raek: then concatenate those and turn it into a set

18:09 (let [dataset-keys (->> raw-data (map :datamap) (map keys) (apply concat) (set))] ...)

18:09 aaelony: once I have the sets, I guess I'll try using reduce into

18:10 raek: the apply concat step will turn ((:key1 :key2) (:key3 :key4)) into (:key1 :key2 :key3 :key4)

18:10 calling set on that will remove any duplicates

18:11 (set coll) is equivalent to (into #{} coll)

18:11 aaelony: yes, that's what I want. I'll give that a try. thanks!

18:11 chouser: or use mapcat instead of map, apply concat

18:11 ohpauleez: +1 mapcat

18:12 aaelony: cool... thanks guys, I'll give it a try

18:12 raek: oh, that one's better!

18:12 brehaut: or flip it round to a for

18:12 raek: (set (mapcat (comp :datamap keys) raw-data))

18:12 mudge: you guys going to watch Rich's talk tonight?

18:13 raek: I'm staying up for it

18:13 devn: I hope there's a sock hop afterwards.

18:13 Or a box social.

18:14 mudge: devn: i prefer sock hop

18:15 amalloy: raek: (comp keys :datamap), right? the other way round doesn't make much sense

18:15 mudge: I wonder if irc will play a part in Rich's talk tonight, if we could ask questions or something

18:17 amalloy: mudge: http://groups.google.com/group/clojure/msg/887c9af1eb373f5f claims they'll be "covering the talk" live in IRC, but it's not clear what that means

18:17 chouser: some people who are at the talk will also be here

18:17 dunno if they'll relay questions, but you can try

18:17 mudge: cool

18:17 chouser, will you be there?

18:18 at the talk

18:18 raek: maybe that means that something like "we have a question from the internet" will happen

18:18 aaelony: thanks, raek and amalloy that works well

18:18 raek: amalloy: yupp. my bad.

18:19 abedra: basically we will be around to answer any questions that come up

18:19 amalloy: abedra: question: tell us what the talk will be about

18:19 abedra: we will try to have a channel to get the questions relayed

18:19 amalloy :)

18:19 not yet

18:20 miltondsilva: hmm interesting http://disclojure.org/wp-content/uploads/2011/07/rh-poll1.jpg out of all the options the most voted is also the one that is arguably not new

18:21 * devn just realized that poll spells distributed, 'distrubuted'

18:21 mudge: abedra: cool,

18:22 abedra: devn off by 1 error

18:22 devn: abedra: :)

18:25 romanroe: Do you know if Rich's talk will start on time? I have to decide now if go to bed or stay up :-)

18:26 Bronsa: it was said it will be after 2.5 hours from the start of the conf

18:27 abedra: Bronsa, everything should start close to on time

18:28 Bronsa: 12:30AM here

18:28 hope i will stay awake

18:28 ahriman53072: 5:28 AM. Hope too.

18:28 romanroe: oh, I thought it starts in 15 min

18:28 mudge: should start soon

18:28 i think

18:29 abedra: yeah

18:29 i'm asking right now

18:29 looking for a positive confirmation

18:29 Bronsa: ahriman53072: did you just wake up or you still have to sleep?

18:29 abedra: i haven't heard anything otherwise though

18:29 so it should be on time

18:29 stuarthalloway, you might know

18:29 do you expect things to kick off on time?

18:30 stuarthalloway: probably start in earnest on the hour

18:30 they won't even let civilians into the building yet

18:30 brehaut: stuarthalloway: whats the local time for you?

18:30 abedra: ah

18:30 stuarthalloway: 6:30 pm

18:30 abedra: 6:30 pm

18:30 stuarthalloway: we are setting up for the talk

18:30 brehaut: thanks

18:30 stuartsierra: LIVE from NEW YORK!

18:31 ohpauleez: hahah

18:31 Awesome!

18:31 arj: :)

18:31 alandipert: setting up the stream

18:31 20mb up from google hq!

18:31 abedra: stuartsierra, I believe we were promised a show before things kick off

18:31 Bronsa: cool!

18:31 abedra: 2 Stuarts walk into a google...

18:32 Hey your live!

18:32 Bronsa: woo

18:32 arj: yeah!

18:32 joegallo: there's a man in computer!

18:32 Bronsa: lo

18:32 abedra: We don't notice the delay

18:32 it's smooth

18:32 ohpauleez: Rich!

18:32 brehaut: is there any way to ge a lo def stream?

18:32 romanroe: perfect quality

18:32 abedra: not that I know of

18:33 brehaut: abedra: thanks :/

18:33 Bronsa: it's perfect

18:33 ohpauleez: "That's too high-def"

18:33 that line alone made this talk

18:33 miltondsilva: yeah to hi def for me :p

18:33 SergeyD: So... is this "something new" about religious sect?

18:33 brehaut: im way the hell on the other side of the world with a narrow pipe; youtube is too high def ;)

18:34 Bronsa: lol

18:34 gertalot: the stream actually looks really awesome for me, and I'm at the same other end of the world :)

18:34 alandipert: brehaut: we'll have not-too-high-def recordings for you :)

18:34 brehaut: alandipert: great, thanks :)

18:34 naeu: stream looks perfect for me too

18:34 ohpauleez: haha :)

18:34 kovasb: don't downgrade it looks awesome

18:35 alandipert: kovasb: we might be able to do both

18:35 ohpauleez: chouser: You didn't make the trip too did you?

18:36 mudge: rr

18:36 abedra: it's funny to watch the total views numbers start climbing on ustream

18:36 stuartsierra: Where are we at?

18:36 mudge: yea

18:36 abedra: 121

18:36 ohpauleez: 97

18:36 abedra: 97 current

18:37 ohpauleez: 124 total

18:37 stuartsierra: Are we live-broadcasting this in a meetup group anywhere?

18:37 mudge: this is fun already

18:37 mabes: http://www.ustream.tv/channel/clojurenyc

18:37 ohpauleez: yeah, we should do this as a community more often

18:37 mabes: thats guys for setting this up!

18:37 icey: the quality on the stream is surprisingly good

18:37 mabes: yeah

18:37 stuartsierra: We'll see how it holds up. Thank Google for awesome bandwidth.

18:37 no_mind: maybe we can use google hangout

18:37 abedra: mudge, woah, I just noticed the nick, are you _the_ mudge?

18:38 chouser: ohpauleez: oh, no.

18:38 mudge: abedra: no not that mudge, not the security guy

18:38 abedra: mudge, ah ok

18:38 mudge: abedra: i'm nick mudge

18:38 romanroe: yes, thanks for the setup and sharing!!! you make the world smaller :-)

18:38 abedra: just checking :)

18:38 devn: Haha. Poor Rich stuck in front of the camera.

18:38 DeusExPikachu: keep wheeling around

18:38 Bronsa: ahahah

18:38 mabes: lol

18:38 romanroe: can you dance?

18:38 naeu: he's live

18:38 Bronsa: woah

18:39 DeusExPikachu: hey its stu

18:39 devn: Give the people what they want!

18:39 Bronsa: this is big

18:39 naeu: hello everyone

18:39 abedra: awwwww

18:39 mudge: hey stewart

18:39 redinger: Proof that Rich and Stu are not the same person!

18:39 megakorre: shooo cure

18:39 scottj: that room is going to fit 70?

18:39 gertalot: cute :)

18:39 romanroe: people count: internet 1:0 local

18:39 naeu: perhaps people will be sitting on the desks

18:39 stuartsierra: mudge: which one?

18:39 mudge: both of ya

18:39 stuartsierra: hi

18:39 megakorre: hello :D

18:39 mudge: i wonder what the rest of the room looks like

18:40 naeu: are there hooks on the wall for people on hammocks?

18:40 stuarthalloway: please make requests for the camera...

18:40 redinger: alandipert: talk about the conj to all the early viewers

18:40 devn: Down Dipert's pants?

18:40 mudge: nice room

18:40 devn: hahaha

18:41 abedra: oooooooohhhh

18:41 naeu: i bet it's going to be super crammed in a moment

18:41 abedra: did I just log into chat roulette ?

18:41 naeu: seething masses of people..

18:41 charliekilo: all those New Yorkers look pissed of at ruckus the Carolina boys are making

18:41 mabes: up to 120 internet viewers already :)

18:41 abedra: charliekilo, that's how we roll

18:42 redinger: Cheermosas!

18:42 ohpauleez: haha

18:42 abedra: +1

18:42 ohpauleez: I'm excited to be moving back to NYC (Sept 1), and hanging out with a lot of these guys

18:42 Also, bring Clojure into yet another company

18:43 s/bring/bringing/

18:43 alandipert: clojure nyc is poppin'!

18:43 lnostdal-laptop: watching from Norway :)

18:43 cool stuff

18:43 naeu: hey Norway!

18:43 megakorre: ey sweden here :D

18:43 stuartsierra: abedra: our workshops are at Strangeloop in September, right?

18:43 naeu: England here

18:43 SergeyD: ohpauleez: yeah Clojure is great for picking up girls. We should note it somewhere

18:44 lnostdal-laptop: ey guys :]

18:44 Bronsa: Italy here

18:44 abedra: stuarthalloway, yes

18:44 raek: sweden here

18:44 ohpauleez: Awesome, I really love this. We should try to encourage this in the community more often

18:44 cemerick: Western Mass. hinterlands, represent. :-P

18:44 abedra: stuarthalloway, they're all sold out though

18:44 ohpauleez: cemerick: I expect live commentary :)

18:44 mudge: Florida here

18:45 joly_: Oklahoma :P

18:45 ohpauleez: Currently Oregon

18:45 kovasb: FiDi, SF

18:45 pmbauer: Phoenix, AZ

18:45 devn: SergeyD: I think that's under "Rationale" on clojure.org: Lisp, Chicks Dig It

18:45 romanroe: how to spot the geek in the room: check who is watching the stream on his laptop

18:45 ohpauleez: haha

18:45 scottj: romanroe: irl is too high def

18:45 naeu: my cat is watching the stream too

18:46 his eyes are half shut though :-)

18:46 but he is purring

18:46 ohpauleez: devn: There's some joke in there for sure

18:46 devn: I feel like if there's ever been an opportunity to say "People of Earth", this is it.

18:46 abedra: naeu, clojurrrrrrrrrrre

18:46 SergeyD: devn: :) nice fooling

18:46 naeu: abedra: hahahaha

18:46 mdeboard: wru pie

18:47 I want to watch the Fabio commercial 5 more times pls

18:47 naeu: abedra: actually he's probably a bit pissed of with Clojure given the amount of annoying noises I've made him listen too whilst hacking on Overtone

18:47 redinger: ads?

18:47 clojurebot: monads is "yea, though I should walk in the valley of imperative code, I shall fear no evil, for your monad comforts me" - seen in #haskell

18:47 naeu: s/of/off/

18:47 mdeboard: redinger: Yeah, on ustream

18:47 ohpauleez: naeu: haha

18:47 redinger: Wish I had known I could have bought advertising....

18:47 charliekilo: does that feel like the Presidential Address to the Nation to anyone else?

18:47 abedra: naeu, lol yeah, you'll have that

18:47 ohpauleez: that is a hilarious scenario to picture

18:47 mdeboard: charliekilo: Yes, if Geoffrey Rush was president, surrounded by nerds

18:47 stuartsierra: Reminder: live stream of Clojure NYC at http://www.ustream.tv/channel/clojurenyc

18:48 abedra: charliekilo, nah, the presidential address isn't this interesting

18:48 ztellman: charliekilo: who's sequestered in case of a terrorist attack?

18:48 Scriptor: so the talk discussion is gonna be here, right?

18:48 redinger: Don't worry, members of Clojure/core are distributed

18:48 abedra: Scriptor, yes

18:48 charliekilo: ztellman: knowing the Relevance guys, they are more afraid of a Zombie attack ;)

18:48 Scriptor: well, nobody better have clojure problems starting 7 :p

18:49 abedra: Clojure/core and others involved are standing by

18:49 ztellman: whoever isn't onsite is officially the secretary of agriculture for Clojure

18:49 mdeboard: everyone quiet, the're starting

18:49 antares_: how long will the talk be? It is nearly 3 a.m. here :)

18:49 naeu: charliekilo: fast or slow zombies?

18:49 ;-)

18:49 semperos: heh

18:49 devn: "People of Earth..."

18:49 ohpauleez: abedra: who of your team/family is up there?

18:49 paraseba: so, now we know it wasn't a hair accident, everything is OK

18:49 `fogus: slow

18:49 lnostdal-laptop: 5 more minutes; i can grab more coffee :)

18:49 naeu: can we see the room again?

18:49 technomancy: devn: Greetings, programs!

18:49 abedra: ohpauleez, stuarthalloway stuartsierra and alandipert are up there

18:49 Scriptor: antares_: an hour or so?

18:49 naeu: it would be interesting to see how packed it is now

18:49 ohpauleez: cool

18:50 antares_: Scriptor: ok, I can handle that :)

18:50 raek: technomancy: lol

18:50 Scriptor: naeu: 70 people rsvp'd I think

18:50 oh, there we go

18:50 devn: technomancy: ha, yes, it just seems like you'd be squandering an opportunity by not starting off with "People of Earth"

18:50 ohpauleez: thanks camera hand

18:50 romanroe: now thats what I call a remote control!

18:50 naeu: oh nice

18:50 Scriptor: man, I just had to go home this summer

18:50 ohpauleez: I also vote for People of Earth

18:50 naeu: thanks

18:51 are we all sitting comfortably?

18:51 megakorre: im laying down :D

18:51 Scriptor: hi stuart

18:51 ohpauleez: I'm in a hammock

18:51 just sayin'

18:51 bmillare: awww ad... :(

18:51 ohpauleez: haha

18:52 175

18:52 devn: (inc ohpauleez)

18:52 gertalot_: UGH I hate the commercial breaks at crucial moments

18:52 brehaut: commercials from the people sponsoring the bandwidth?

18:52 lnostdal-laptop: it continues at the same spot afterwards, right?

18:52 Scriptor: not sure if they're sponsoring it directly

18:52 but they pay for the site

18:53 daniel123: hi all. anybody have a link to the talk?

18:53 naeu: hmmm, i don't want to make my home "healthier and happier"

18:53 gertalot_: no I missed part of stuart's stuff

18:53 lnostdal-laptop: daniel123, http://www.ustream.tv/channel/clojurenyc

18:53 oh, the ad went away (i didn't click it)

18:53 daniel123: ty, lnostdal-laptop

18:53 devn: oh god, ads

18:53 Scriptor: gertalot_: he just said that he'll be doing a talk early august for lispnyc

18:53 devn: make the bad man stop

18:53 redinger: Woah, that Clojure/conj sounds really good

18:53 charliekilo: whos doing the training?

18:54 gertalot_: cheers

18:54 alandipert: clojure/conj, be there!

18:54 Scriptor: charliekilo: the clojure/core team

18:54 gertalot_: YAY

18:54 go rich

18:54 arj_: woooo

18:54 ohpauleez: yessssss

18:54 this is awesome!

18:54 charliekilo: Scriptor: all of them?!?

18:54 Scriptor: *drum roll*

18:54 megakorre: whats clojure :O

18:54 Scriptor: charliekilo: a fair number, I think

18:54 ohpauleez: DAMN!

18:54 Scriptor: clj2js?

18:54 mudge: the browser

18:54 megakorre: event loop

18:54 SergeyD: it's widespread

18:54 daniel123: hofs

18:54 SergeyD: Javascript

18:54 jsigmon1: dynamic

18:54 frou100: reach

18:54 gertalot_: javascript?!

18:54 Scriptor: so is php :p

18:55 daniel123: frou100 got it.

18:55 redinger: charliekilo:# of instructors depends how many people sign up

18:55 lnostdal-laptop: haa, i voted javascript :)

18:55 joly_: O_o

18:55 jsigmon1: oh boy

18:55 gertalot_: no way!

18:55 daniel123: interessstiiiiinnnng

18:55 * daniel123 is excited.

18:55 Scriptor: but...hasn't it been done?

18:55 abedra: Scriptor, not like this

18:55 cemerick: Scriptor: keep watching :-)

18:55 devn: wait for it... :)

18:55 ohpauleez: this means you can do all your HTML5 apps in Clojure

18:55 maacl: Yeah!

18:55 bmillare: i am excited

18:55 maacl: ClojureScript!

18:56 ohpauleez: and run on all portables and windows8

18:56 Scriptor: cemerick: didn't you work on this? I guess some of it was included?

18:56 ohpauleez: this is a great move

18:56 arj_: hmm

18:56 cemerick: Scriptor: No, I've sadly been too busy to be able to contribute. :-(

18:56 Scriptor: ah

18:56 abedra: Scriptor, he did work on it some though

18:56 daniel123: turn off ur phones peoples!

18:56 * daniel123 is griping about the live audience.

18:56 gertalot_: daniel123: +1

18:57 arj_: i tend to like javascript :) But this will be interesting

18:57 Scriptor: I wonder how he did the sequences, COW or tries

18:57 abedra: Scriptor, the source will be opened later

18:58 Scriptor, you will be able to check it out for yourself

18:58 bmillare: is there no JS bytecode?

18:58 daniel123: hi stu.

18:58 Scriptor: abedra: awesome

18:58 ohpauleez: But wouldn't Clojure-in-Clojure make this an easier/more complete project?

18:58 Scriptor: bmillare: nope

18:58 js vm's don't let you input bytecode directly

18:58 stuarthalloway: we have great bandwidth, but I keep getting booted from irc

18:58 no_mind: I am waiting for the source code of clojurescript...

18:58 mabes_: sounds like clojure may be using google's closure.. that won't be confusing at all :)

18:58 abedra: mabes_, :)

18:58 redinger: mabes_: Be thankful we didn't name it Cloture

18:59 Scriptor: mabes_: funny, because rich talked a bit about it last clojurenyc meetup

18:59 lnostdal-laptop: stuarthalloway, freenode kicks when too many connections come from the same IP

18:59 Scriptor: (talked about closure, that is)

18:59 redinger: Otherwise, we would have to write an O'reilly book with a bird on the cover

18:59 chouser: ohpauleez: perhaps, but clojure-in-clojure itself will be much carder than this

18:59 ohpauleez: true

18:59 (I was a PyPy dev)

18:59 mdeboard: ohpauleez: Was?

18:59 mabes_: stuarthalloway: yeah, you can tell the freenode ops your IP and they can fix it for you

18:59 ohpauleez: mdeboard: I don't contribute code anymore

18:59 mdeboard: GOD WHAT

19:00 frou100: this is cool. I had no interest in getting good at js, maybe this will let us leapfrog the lang

19:00 mdeboard: AN AD?!?!?!?

19:00 What the hell

19:00 anyone else getting na interstitial??

19:00 Scriptor: mdeboard: gotta pay for the bandwith somehow

19:00 mdeboard: RIght but... an interstitial?

19:00 icey: mdeboard: they pop-in every so often; not sure about the frequency

19:00 daniel123: I had an awesome fabio ad.

19:00 stuartsierra: Ads come from ustream, not under our control. Sorry.

19:00 xeon123: hi all

19:00 mdeboard: stuartsierra: I know, frowning at ustream

19:00 alandipert: ad-less recording forthcoming

19:00 abedra: rich turns into fabio every now and then

19:00 bmillare: anyone watch the slides about html5 + clojure + JS + google app engine? now we can eliminate JS :)

19:00 xeon123: I'm trying to understand what's the capabilities of clojure.

19:01 Scriptor: ooh, nice work with that

19:01 xeon123: with clojure, I can debug java code?

19:01 mdeboard: xeon123: There is plenty of documentation to get you started with Clojure.

19:01 stuartsierra: Intros to Clojure available at http://clojure.org/

19:01 Scriptor: xeon123: you can load up java classes and interact with them on the repl

19:02 stuarthalloway: ClojureScript is written in Clojure -- core is amazing to read

19:02 xeon123: thanks for the help.

19:02 stuarthalloway: compared to the Java stuff

19:02 abedra: chouser, possibly change the channel topic to include a link to what's going on right now?

19:02 xeon123: I will look at the site. Bye.

19:02 daniel123: stuarthalloway, I can't wait to see it.

19:02 xeon123: \leave

19:02 ohpauleez: stuarthalloway: I imagine, that's going to be a great read

19:02 YESS CinC

19:03 chouser: abedra: I'm on it!

19:03 devn: +1 on reading the source for ClojureScript -- It's really interesting.

19:03 Scriptor: hmm, I don't know much about protocols, but I'd be interested in learning how it works with js, since I thought it mostly had to do with interfaces

19:04 ohpauleez: this project is a true and clear demonstration of how powerful those features are (deftype.. etc)

19:04 devn: ohpauleez: yeah, exactly right.

19:04 frou100: yo dawg..

19:04 abedra: frou100, :)

19:04 dsop: I want to play around with it right now. I talked with a few people in implemeitng something like that, luckily rich saves me from doing that and it's obviously better than what I would came up with

19:05 abedra: dsop, you'll get to soon enough

19:06 bah, fabio is back

19:06 Scriptor: how soon, end of the talk soon? :)

19:06 stuarthalloway: Scriptor: yes

19:06 abedra: chouser, thanks!

19:06 Scriptor: man, he used the exact same slides last time, should've seen it coming

19:06 chouser: Scriptor: :-)

19:06 stuarthalloway: if my git forking fu is up to it

19:06 ieure: Okay, cool, so, what exactly is ClojureScript?

19:07 Scriptor: ieure: a large subset clojure compiled to javascript

19:07 ieure: Other than TERRIBLY EXCITING.

19:07 Scriptor: *subset of

19:07 ohpauleez: ieure: It's Clojure on top of JS

19:07 ieure: Hm.

19:07 Source? Link?

19:07 ohpauleez: ieure: written in Clojure and ClojureScript

19:07 stuartsierra: source coming

19:07 after this talk

19:07 daniel123: stuartsierra: on github?

19:07 stuartsierra: yes, sources will be on github after the talk

19:08 Scriptor: so, when you use the clojurescript compiler, you're actually running the js it's compiled to, which in turn is compiled to tjvm bytecode?

19:08 arj_: stuartsierra: and documentation I guess :)

19:08 stuartsierra: Well, we'll get there… ;)

19:08 pmbauer: Exciting, but I fear debugging Clojure-generated JS is going to be equally ... exciting?

19:08 stuarthalloway: pmbauer writes bugs, nah nah

19:08 Scriptor: pmbauer: well, considering coffeescript is already pretty successful, I don't think it'd be that big of a problem

19:09 ieure: Any mention of how agents are handled in an environment with zero parallelism?

19:09 stuarthalloway: seriously: the Google Closure stuff has some good tools, including a Firebug plugin

19:09 community effort to help leverage that welcome

19:09 pmbauer: CoffeeScript maintainers allow that is a weakness

19:09 stuartsierra: I can hear the Google Closure compiler saying in a prim voice, "That (function) was uncalled for."

19:09 brehaut: ieure: webworkers are fully parallel where available

19:09 daniel123: ieure, I think he said earlier that it was a subset.

19:09 Scriptor: can it output well-formatted code that's not run through GClosure?

19:09 stuarthalloway: Scriptor: yes

19:09 stuartsierra: You can see the JS output before it goes to GClosure.

19:09 daniel123: ieure, so, not sure what it's 'missing' yet.

19:09 abedra: grrrr, Jeep comercial makes me angry at Jeep

19:10 bmillare: so is clojure.org going to be partly written in clojurescript soon? :)

19:10 stuartsierra: probably not; it's just HTML after all.

19:10 redinger: clojure.org isn't exactly an app :)

19:10 ohpauleez: Whoa, it just set in, as HTML5 apps become the normal cross-platform app, Clojure is a first class citizen to do your implementation with no extra work

19:10 redinger: ohpauleez: you got it

19:10 abedra: ohpauleez, yep

19:10 Scriptor: oh, also, any leaks on how the reader/parser is written, what libraries are used for them?

19:10 ohpauleez: way awesome (I just finished an HTML5 game engine for work)

19:10 brehaut: enlive running on the server and browser is going to be great

19:11 stuarthalloway: source code is read by clojure's reader

19:11 stuartsierra: ClojureScript only depends on the Google Closure libraries.

19:11 bmillare: redinger: i just meant, add some cool features where the server would emit some clojurescript

19:11 stuarthalloway: data can be read by the new data reader in ClojureScript

19:11 Scriptor: ah, that'd be cool to read through

19:11 mabes_: my guess is that jquery is closure "advanced mode" safe, correct?

19:11 antares_: stuarthalloway: is it going to be pushed to github later today?

19:11 stuarthalloway: and this makes a compelling alternative to JSON

19:11 anares_ yes

19:12 lnostdal-laptop: mabes_, jquery is tiny

19:12 stuartsierra: manbes_: jQuery does not work in GClosure advanced mode out of the box, but there are attempts to fix that ongoing by others.

19:12 thickey: jquery proper isn't advanced mode compatible.

19:12 bmillare: so I guess rich has been procrastinating on writing some JS and wrote clojurescript instead? :P

19:12 stuartsierra: pretty much

19:12 mabes_: stuartsierra: cool, nice too know.

19:12 Scriptor: can't wait to see how they did interop, since js's style is completely different from java's

19:12 mabes_: s/too/to/

19:12 Guest47370: <mabes_> stuartsierra: cool, nice to know.

19:13 SergeyD: Yes, it's quite difficult to write JS in advanced mode. I had this experience with Google Closure

19:14 stuarthalloway: SergeyD: it is easy now

19:14 ohpauleez: stuarthalloway: :) I'm excited about that

19:14 SergeyD: I too just went through that

19:14 mdeboard: I'm never buying a jeep

19:15 ever

19:15 daniel123: mdeboard lol

19:15 yess!!!!

19:15 bmillare: so its like advanced mode JS is like the JS bytecode

19:15 lnostdal-laptop: weird, i don't see the ads

19:15 Bronsa: nor do i

19:16 alandipert: lnostdal-laptop: are you here in nyc as well?

19:16 lnostdal-laptop: nope, i'm here in norway

19:16 SergeyD: This can promote Clojure even more. Nice move!

19:16 Scriptor: bmillare: kinda...but bytecode optimization is different than node tree optimization, I think

19:16 stuartsierra: lnostdal-laptop: Hi! I was in Norway just a month or so ago.

19:16 daniel123: I'm so excited about seeing the CS compiler innards.

19:17 ohpauleez: hahaha

19:17 touche Rich

19:17 lnostdal-laptop: stuarthalloway, cool, the thing in Oslo? .. i missed that

19:17 brehaut: did rich just 'oh, one more thing' ?

19:17 stuartsierra: lnostdal-laptop: yes, I talked about Clojure there.

19:17 devn: Do: Read the Closure book.

19:17 gertalot_: he hasn't said "insanely great" yet, fortunately

19:18 Scriptor: damn, arity overloading in js...

19:18 brehaut: what about 'boom' ?

19:18 ohpauleez: this is awesome

19:19 paraseba: it's all there! protocols, deftyes,macros!

19:19 devn: :)

19:19 Scriptor: pfft, cross-language macros...

19:20 ohpauleez: that was a great design choice

19:20 so sound

19:21 icey: does google's closure lib use typed arrays for perf? it would be interesting if clojurescript allowed type hinting to improve performance

19:21 paraseba: just unbelievable...

19:21 stuartsierra: JS doesn't have typed arrays yet.

19:21 Scriptor: icey: gclosure has a full type system, but it's built on top of js so I don't think it really helps performance

19:21 devn: icey: closure needs annotations for advanced mode compilation, but no, no typed arrays.

19:22 ohpauleez: OH MY HEAD!!! This means we can use Clojure Client-Server for data formats

19:22 YES

19:22 lnostdal-laptop: hmmmm, this is very nice

19:22 ohpauleez: that's going to be HUGE

19:22 darevay: atoms, refs, and agents?

19:22 devn: darevay: there's been some talk about using gclosure's web workers

19:22 stuarthalloway: not to that point of the talk yet, but ...

19:22 kovasb: wow

19:22 stuarthalloway: atoms yes

19:22 agents probably

19:22 joly_: wow

19:23 stuarthalloway: refs would need a use case

19:23 stuartsierra: first 'boom'

19:23 darevay: yep. seems reasonable.

19:23 gertalot_: :)

19:23 icey: damn, that's awesome

19:23 bmillare: is the . syntax the same?

19:23 stuarthalloway: bmillare: except where JavaScript has more capability than Java

19:23 the corner case being (. x foo)

19:24 where (in JavaScript) that could mean give me the function foo, or call the function foo

19:24 this ambiguity is not possible in Java

19:24 `fogus: Scriptor: GClosure's types are mainly for correctness checks

19:24 abedra: Jeep, you're pissing me off man

19:24 Scriptor: `fogus: right, which is why they won't really help performance

19:24 ohpauleez: abedra: Don't leave focus on your browser, that's been working for me

19:25 abedra: ohpauleez, i've got that + irc + other channels open right now :)

19:25 ohpauleez: I just realized this "fixes" Clojure as a script language. Node + ClojureScript

19:26 awesome

19:26 stuartsierra: ohpauleez: you're catching on quick :)

19:26 chouser: ohpauleez: keep watching!

19:26 ohpauleez: :)

19:26 devn: ohpauleez: yeah, chouser did some work on node :)

19:26 redinger: It gets better :)

19:26 abedra: ohpauleez, yep, what chouser said

19:26 ohpauleez: I can't wait to contribute to this

19:26 mabes_: dunno why you would want to use node or any JS VM on the server side though.. the JVM is pretty good ;)

19:26 Scriptor: mabes_: so is v8 :)

19:27 daniel123: stuartsierra is there a todo list in the repo?

19:27 abedra: daniel123, yes

19:27 stuartsierra: But with node, you can write command-line apps that start up faster than the JVM.

19:27 daniel123: schweet.

19:27 mabes_: yeah, startup time is huge

19:27 lnostdal-laptop: V8 is single core; you want multi-core/thread on a server with many people on it .. the client only has 1 user tho

19:27 devn: there's also a lot of design discussion in the repo

19:27 worth reading if you decide to contribute

19:27 gertalot_: stuartsierra: that might be quite cool for pallet and stevedore

19:28 ohpauleez: devn: Thanks for that hint

19:28 ahriman53072: there is a problem

19:28 mdeboard: What is meant by in-browser eval?

19:28 Can someone give me example?

19:28 SergeyD: I think Flash runtime would be very easy after JS is done

19:28 stuartsierra: we're not doing a REPL in the browser.

19:28 gertalot_: great stuff everyone, thanks!

19:29 daniel123: yess!!!

19:29 lol

19:29 devn: but...someone else could do a REPL in the browser...if they wanted to... :)

19:29 ahriman53072: http://paste.org.ru/?a5p5u9 my code. every attempt to invoke /post with needed args leads to adding record with all values as NIL. Why?

19:29 thickey: forking hardcore indeed

19:29 scottj: https://github.com/clojure/clojurescript

19:29 ahriman53072: where are there NILs from?

19:29 icey: I put it on HN here: https://github.com/clojure/clojurescript

19:29 ahriman53072: *these

19:29 icey: derp

19:29 Scriptor: by the way, how is integration with lein?

19:29 daniel123: thanks scottj

19:29 icey: http://news.ycombinator.com/item?id=2787851

19:30 ohpauleez: Scriptor: Good question +1

19:30 devn: Scriptor: it's not there yet. or at least, I didn't make an attempt to use lein while hacking on clojurescript. There is some decent tooling in place to get you up and running though.

19:30 redinger: Durham!

19:30 jdwbell: will Conj be streamed? hint, hint, nudge, nudge....

19:31 bmillare: is this clojurescript or something else? http://nicknick851120.blogspot.com/?zx=4bc09ef6a1863f28

19:31 Scriptor: devn: cool, is it still possible to use swank with it?

19:31 pbuckley: jdwbell - it would be a miracle if the conj had a working network connection

19:31 ohpauleez: Just a quick related announcement, I just moved into the CTO position for Tutorspree and we'll be doing clojure work and I'll be contributing on my Friday's work

19:31 redinger: jdwbell: Not streamed, but we're working out the recording details

19:31 stuartsierra: bmillare's link is spam

19:31 devn: Scriptor: I've been using inferior-lisp while working on it.

19:31 stuarthalloway: redinger is your point of contact for joining us on Fridays...

19:31 ztellman: I missed a bit of the talk, was there any discussion of how to specify a javascript version of some java built-in (i.e. execute this callback in n milliseconds)

19:31 bmillare: crap

19:31 sorry

19:32 scgilardi: https://github.com/clojure/clojurescript

19:32 bmillare: that is not what I wanted

19:32 stuartsierra: no worries

19:32 bmillare: http://clojurescript.n01se.net/repl/

19:32 abedra: alandipert, do you have a body dragging from that camera?

19:32 ohpauleez: inching forward inch-by-inch is too funny

19:32 alandipert: people of the internet: text legible?

19:32 abedra: no

19:32 stuartsierra: bmillare: no, that is an older attempt at the same project by Chris Houser.

19:32 ohpauleez: can we zoom it in?

19:32 Danny_Collins: can't read it at all

19:32 daniel123: blurry

19:32 ohpauleez: NO

19:32 bmillare: ok

19:32 devn: bmillare: that's chouser's clojurescript

19:32 redinger: ohpauleez: You need some Clojure consulting with that new gig? :)

19:32 abedra: alan it's not all that bad

19:32 maacl: blurry and very small

19:32 Bronsa: maximize the video

19:32 it will be clear

19:33 ohpauleez: Thanks Bronsa

19:33 no_mind: cant makeout anything of demo on the stream

19:33 ieure: Haha

19:33 Scriptor: no_mind: it's a little better if you full-screen it

19:34 redinger: no_mind: pop out the video and you can enlarge it

19:34 scottj: does it work fine with slime?

19:34 freakwit: go back

19:34 mabes_: it looks like he is using emacs... doesn't that mean he is using slime?

19:34 abedra: scottj, yes, almost all of us work in that environment

19:34 Scriptor: mabes_: it's inferior-lisp apparently

19:34 raek: no, he's using inferior-lisp

19:34 devn: mabes_: he's using inferior-lisp

19:34 freakwit: (sorry, didn't mean to type that)

19:34 mabes_: ah

19:34 ohpauleez: hahaha

19:35 raek: see http://dev.clojure.org/display/doc/Getting+Started+with+Emacs

19:35 abedra: yes, but it has worked fine in slime for me

19:35 devn: M-x cd PATH_TO_CLOJURESCRIPT_REPO, M-x set-variable inferior-lisp-program "script/repljs"

19:35 Scriptor: abedra: how do you start up swank?

19:35 devn: M-x inferior-lisp

19:35 maacl: the repl works on my machine :-)

19:35 abedra: Scriptor instructions will show up as well

19:35 Scriptor: sweet

19:35 mdeboard: Anyone getting a repl working on Ubuntu (with openJDK)

19:36 no_mind: Will you guys accept questions from IRC ?

19:36 gertalot_: repljs is melting my poor old macbook

19:36 abedra: mdeboard, I use ubuntu explicitly

19:36 stuartsierra: no_mind: maybe at the end

19:36 daniel123: awesome.

19:36 mdeboard: abedra: I mean the cljs repl

19:36 abedra: mdeboard, yes, I used Ubuntu the whole time I was working on cljs

19:37 devn: bmillare: the http://clojurescript.n01se.net/repl/ link you posted earlier now points in the right direction

19:37 mdeboard: abedra: Ah, ok. Getting an unexpected error. Are you using openjdk or sun

19:37 bmillare: devn: thanks

19:37 abedra: mdeboard, sun

19:37 mdeboard, I don't use the openjdk

19:38 mdeboard: I see

19:38 dsop: mdeboard: what error do you get?

19:38 mdeboard: dsop: Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: sun.org.mozilla.javascript.internal.Context, compiling:(cljs/compiler.clj:919)

19:38 kwbeam: openjdk has issues with this:

19:38 yep, you beat me to it

19:38 dsop: same here

19:38 abedra: mdeboard, it must be missing the proper rhino bits

19:38 `fogus: ClojureScript brought to you by Old Spice

19:39 no_mind: Cant access clojurescript wiki at https://github.com/clojure/clojurescript/wiki . Is it up ?

19:39 stuartsierra: wiki coming soon

19:39 Scriptor: the repl relies on rhino, right? Does anything else?

19:39 frou100: I'm on my 3rd condom ad

19:39 mdeboard: abedra: Got it, thanks

19:39 scottj: no ads broguht to you by adblock

19:39 abedra: Programmers, look at your cljs, now at js, now back to cljs... Sadly, your js is not cljs but IT COULD BE!

19:39 devn: how apropos frou100

19:39 `fogus: (inc abedra)

19:39 devn: abedra: haha!

19:39 Guest47370: ⟹ 1

19:40 ohpauleez: frou100: and now you know about SAFE JS and SAFE Sex

19:40 dsantiago: How is debugging in a browser going to work here?

19:40 dsop: mdeboard: does it work?

19:40 darevay: works for me ... and since it's on Rhino, it preserves the beloved Java stack traces! ;)

19:40 Scriptor: dsantiago: I guess you'd have to tell it to not minify/optimize the code and find the js error, then trace that back to the clj code

19:40 brehaut: dsantiago: closure apparently has a firebug pluggin, and chrome webkit recently landed a patch to allow compilers to add debugging hooks

19:41 chouser: Scriptor: no, just the repl

19:41 no_mind: If I am working on a clojure web based project. WIll it make sense to use Google closure, keeping migration to clojurescript migration in future ?

19:41 alandipert: dsantiago: http://code.google.com/closure/compiler/docs/inspector.html maybe

19:41 mdeboard: dsop: Dunno, I'm trying to install sun-java6-jdk

19:41 devn: dsop: brehaut: It's not there yet, but it's definitely possible. It's absent at the moment.

19:41 chouser: ISeq is a protocol

19:41 abedra: mdeboard, just add the partner ppa

19:41 ohpauleez: that is GORGEOUS code

19:42 dsop: hmpfl

19:42 bmillare: is clojurescript written in clojurescript + clojure or just clojurescript?

19:42 ohpauleez: so subtle, simple, and powerful

19:42 mdeboard: abedra: ya

19:42 dsop: i don't want to install sun-sdk for that

19:42 `fogus: no_mind: You are not required to use GClosure for js interop nor migration.

19:42 ohpauleez: bmillare: Clojure and ClojureScript

19:42 Scriptor: obligatory nyc sirens

19:42 ohpauleez: the core is all ClojureScript

19:42 abedra: ahhhh we know it is NYC

19:42 * daniel123 is giggling at the firetruck.

19:42 daniel123: Is he just sitting out front honking his horn?

19:43 lnostdal-laptop: lol

19:43 bmillare: ohpauleez: how is it written in clojure if there's no jvm?

19:43 devn: they're coming to steal our new secret weapon

19:43 redinger: It's just like pairing with stuartsierra.

19:43 devn: haha redinger

19:43 rimmjob_: how good with javascript should i be before using this stuff?

19:43 redinger: sirens in the background

19:43 ohpauleez: bmillare: Clojure does the compilation piece

19:43 bmillare: ok, got it

19:43 ahriman53072: ÷å ðàçãóí

19:44 abedra: redinger, yeah, I haven't paired with stuartsierra in a bit, so I forgot about that

19:44 mabes_: 300k -> 40k (6k with compression)!

19:44 thats pretty sweet

19:44 ohpauleez: wow, 40Kb with compression over the wire for webapps will be awesome

19:44 devn: Yeah, it's really nice.

19:45 ohpauleez: wow

19:45 I still can't get over the reader being on the client side

19:45 mabes_: I didn't realize how powerful closure was

19:45 ohpauleez: mabes_: You really have to use Closure Lib and follow some guidelines to get that power

19:45 and it's a little painful

19:45 dsop: hmpfl

19:45 ahriman53072: !!!

19:45 gertalot: goodness. my laptop didn't like the 550mb java process that repljs started

19:46 `fogus: ohpauleez: Yeah, that's pretty cool huh? :-)

19:46 mabes_: ohpauleez: but I guess a big selling point of ClojureScript that only it's compiler needs to know those rules, right?

19:46 daniel123: stuartsierra, the compiled javascript gets deployed?

19:46 SergeyD: mabes_: right

19:46 mdeboard: Ok so uninstalling openjdk and replacing with sun jdk = win

19:46 redinger: Because one build tool is never enough for us

19:46 ohpauleez: `fogus: for sure!

19:46 abedra: mdeboard, you don't have to uninstall open

19:46 update-java-alternatives

19:46 jdwbell: but an advantage of something like a large 'static' library, something like JQuery on Google's CDN, is the caching.

19:46 hv: mdeboard: :( I don't want to do that

19:47 ohpauleez: mabes_: most definitely

19:47 Scriptor: gah, have to head out, but this has been really good, can't wait to play with it

19:47 mdeboard: abedra: Well, I don't do anything with openjdk in any way, Clj is literally the only reason I even know it exists

19:47 dsantiago: Will it be possible to write .cljs files and include those as parts of clojure programs to share code?

19:47 abedra: mdeboard, you can switch on command

19:47 ohpauleez: Scriptor: later

19:47 stuartsierra: jdwbell: you can still use cached copies of things like jQuery

19:47 SergeyD: jdwbell: yes, that is why Google Closure and now ClojureScript is more advatageous for big apps

19:47 daniel123: schweeet!

19:48 ahriman53072: åáò

19:48 SergeyD: jdwbell: I mean your own custom large codebase

19:48 dsop: hm okay looks like i have to wait for a openjdk compatible version

19:48 devn: ahriman53072: Rich is showing off the demo app.

19:49 ahriman53072: devn where

19:50 * bmillare likes the meat grinder point

19:50 rimmjob_: what was google using this for?

19:50 devn: ahriman53072: http://www.ustream.tv/channel-popup/clojurenyc

19:50 gertalot: what are the memory requirements for a clojurescript repl? I can't have -Xmx2G, that explodes my laptop.

19:50 mdeboard: wow

19:50 yeah

19:50 devn: rimmjob_: their production apps.

19:50 mdeboard: the repl just vomited everywhere

19:50 ssideris: so clojurescript is the "something new" that Rich was going to talk about (sorry, just started watching the stream)

19:50 mdeboard: WHY ISN'T THIS ALPHA RELEASE RUNNING FLAWLESSLY ON MY MACHINE?!?!?!

19:50 gertalot: haha

19:51 devn: ssideris: that's correct.

19:51 mdeboard: Someone please show Mr. Hickey what a buffer is :(

19:51 ssideris: devn: thanks

19:51 ahriman53072: omg

19:51 mdeboard: in emacs

19:51 kovasb: this is so awesome

19:52 stuartsierra: Wiki is public: https://github.com/clojure/clojurescript/wiki

19:52 scottj: (add-hook 'clojure-mode-hook 'toggle-truncate-line)

19:52 no_mind: Where can I access the demo application code ?

19:52 stuartsierra: Demo code is in the samples/ dir of the ClojureScript Git repo.

19:52 `fogus: LOL. Rich doing a code review

19:53 redinger: I still remember writing code thinking "Oh wait, Rich is going to see this..."

19:53 ohpauleez: yes! I see lazy-seq

19:53 stuartsierra: redinger: try hacking the implementation of ClojureScript `fn`

19:54 devn: stuarthalloway: haha

19:54 redinger: We'll work on that routine for Clojure/conj

19:54 ohpauleez: chouser: Ok, I'm getting ready now! :)

19:54 brehaut: `fogus: the link you just tweeted is broken

19:54 daniel123: haha

19:54 abedra: go figure, stuarthalloway is now the center of the universe

19:54 :)

19:54 bmillare: lol

19:54 ohpauleez: abedra: haha

19:55 stuartsierra: abedra: "Like pouring gasoline on a flame."

19:55 ahriman53072: uhuhuh

19:55 abedra: I DON'T WANT CHICKENS, I WANT CLOJURESCRIPT

19:55 devn: bahaha

19:55 pmbauer: Is there a test suite someplace to verify clojure (JVM) and ClojureScript fidelity where it makes sense? (see cut-n-pasted parts)

19:55 stuartsierra: There are some tests, yes.

19:55 bmillare: woot startup time

19:56 stuartsierra: Not aiming for full Clojure compatibility yet.

19:56 hv: I fixed that on unix!

19:56 ahriman53072: is it possible to do something like (map #(str "||" %1 "||" %2)(mapcat vals [{:b 1},{:b2 2}]))) ??

19:56 no_mind: can I use closure templates in clojurescript or is it yet to be ported ?

19:56 devn: pmbauer: You'll find a lot of simple tests of all the important bits at the bottom of core.cljs

19:56 hv: (startup time, similar to nailgun yet better)

19:56 daniel123: fast.

19:56 devn: no_mind: I smell an opportunity. ;)

19:56 * daniel123 is impressed.

19:56 pmbauer: stuartsierra: Thanks ... use case would be sharing, say, validation code browser/server side.

19:56 raek: *clapclapclap*

19:56 ohpauleez: YES!

19:56 Amazing work team

19:57 no_mind: devn: I wont mind working on porting closure temlates. If no one else is working on it

19:57 technomancy: scottj: uh oh; that doesn't sound good =\

19:57 daniel123: abedra are you using this in your new book?

19:57 devn: no_mind: I worked on it with Luke Vanderhart awhile back, but we went at it from the Java side. I'd be interested in contributing on that, though, as I'm guessing Luke V. would as well.

19:57 abedra: daniel123, it may make an appearance :)

19:58 ohpauleez: I'm already emailing O'Reilly for "ClojureScript: Client-side Clojure"

19:58 haha

19:58 redinger: stuarthalloway already tweeted it would show up abedra

19:58 maacl: Has anyone tried the hello demo? Isn't it suppose to pop an alert box?

19:58 pmbauer: devn: thanks...couldn't find the test suite

19:58 abedra: redinger, ok well there you go :)

19:58 devn: (test-stuff) is the ticket :)

19:58 redinger: Whether you like it or not :)

19:58 stuarthalloway: abedra: I am willing to do the work if necessary :-)

19:58 daniel123: abedra, do you recommend any other literature in the meantime? I have Stu's book, fogus & chouser's, Amit's book...

19:59 no_mind: devn: sure. Where do I start from ?

19:59 mdeboard: I bought Practical Clojure yesterday when it was $10

19:59 stuartsierra: I think the "hello" demo is missing some loads from its HTML.

19:59 * daniel123 supposes he needs to learn the Closure libraries.

19:59 mdeboard: It killed my dog :-\

19:59 ahriman53072: sorry

19:59 is it possible to do something like (map #(str "||" %1 "||" %2)(mapcat vals [{:b 1},{:b2 2}]))) ??

19:59 devn: hahaha, this explanation will be fun

19:59 stuartsierra: The "hello" demo should work if you recompile it with cljsc.

19:59 pmbauer: devn: re:test-stuff ... yea, surprised tests ended up all in one function ...

19:59 ohpauleez: haha

19:59 Bronsa: ahahah

19:59 devn: where's my klingon destroyer UTF-8 char?

19:59 abedra: daniel123, don't forget practical clojure

19:59 daniel123: k

20:00 stuartsierra: pmbauer: that's temporary

20:00 Thanks, abedra. :)

20:00 pmbauer: stu: ah

20:00 ohpauleez: Does anyone see this as a huge statement that this talk JUST happened to be when Java Language Summit is going on :)

20:00 abedra: stuarthalloway, i wouldn't mind if you did it, there's still a bunch left to tackle

20:00 clojurebot: It's greek to me.

20:00 maacl: stuarthalloway: I just recompiled it and no alert box

20:01 stuartsierra: I meant in advanced mode.

20:01 devn: ohpauleez: it's conference season, I wouldn't read too much into it. :)

20:01 stuarthalloway: we should split the simple/advanced hello into separate html target fiels

20:01 ohpauleez: devn: true true

20:01 technomancy: ohpauleez: yeah, the absence from the JVMLS seemed pretty surprising

20:01 hv: ahriman53072: as you may have felt, there is an important show going on somewhere, and most people here are watching it.

20:01 daniel123: Can you repeat the questions?

20:01 no_mind: Someone post clojure script in slashdot

20:01 alandipert: question was TCO

20:01 devn: thanks alandipert

20:01 brehaut: ahriman53072: how about you ask what you want to solve, rather than providing a nonsense solution?

20:02 mabes_: what is js/node's equivalent of maven? i.e. how do you declare and pull in your deps?

20:02 devn: mabes_: npm?

20:02 Scorchin: mabes_: npm

20:02 ohpauleez: npm

20:02 mabes_: :) thanks

20:02 stuartsierra: Google Closure has a dependency mechanism, though it does not handle downloading external dependencies.

20:02 maacl: stuartsierra: I just recompiled it and no alert box

20:02 abedra: ok IRC folks, get your questions ready

20:03 stuartsierra: maacl: sorry, I think the HTML file is missing some pieces.

20:03 The "Hello" demo got dropped while everyone was working on Twitterbuzz.

20:03 licoresse: this is awesome!!!

20:03 alandipert: slides will be available

20:03 david`: I guess there's no Java interop in Clojurescript?

20:03 maacl: stuartsierra: check

20:03 mdeboard: god these NYC guys are time-hogs :(

20:03 stuartsierra: david`: no :)

20:03 Scorchin: QUESTIONS FROM THE INTERNET!!!

20:03 chouser: david`: no, but there's javascript interop

20:03 david`: very nice

20:03 * daniel123 clams up.

20:04 naeu: which refs are supported?

20:04 stuartsierra: only Atom so far.

20:04 Maybe Agents later.

20:04 mjg123: chouser: it's for any js or do you have to wrap?

20:04 stuartsierra: Any JS!

20:04 hv: question: can (when) cljs be able to be embedded inside a clojure web app?

20:04 devn: If anyone here is interested in what you can do with google's closure libraries, you can look in clojurescript/closure/library/closure/goog/demos, and open index.html

20:04 l0st3d: do we still get agents?

20:04 no_mind: Is there a TODO list for clojurescript ?

20:04 stuarthalloway: maacl: did you open hello-dev.html?

20:04 Scorchin: Questoin from the Internet: What's the interop with things like jQuery, YUI and underscore.js?

20:04 stuartsierra: hv: You can't run the ClojureScript in the browser.

20:04 stuarthalloway: Just tried it here and it works

20:04 mdeboard: description files

20:05 bmillare: what parts of clojure language won't work well even in the future in clojure script?

20:05 maacl: stuartsierra: nope - silly me :-)

20:05 gfodor: question from the interwebs: how feasible to hoist the compiler into the browser? will it be possible to easily write and compile clojure code from within a browser-based editor?

20:05 dsantiago: Question: Is any of this work useful for putting back into Clojure as part of CinC?

20:05 devn: no_mind: yes, devnotes/todo.org

20:05 ohpauleez: This sounds like a "tooling" and "ecosystem" problem (technomancy :) )

20:05 hv: stuarthalloway: well, is it like cljs -> google closure -> js -> web app -> client ?

20:05 mdeboard: Question: What is the rationale of excluding (in-browser) eval?

20:05 raek: dsantiago++

20:05 hv: oops!

20:05 mdeboard: (inc dsantiago(

20:05 lnostdal-laptop: Question: Does this mean ClojureInClojure is next? ...or at least closer, perhaps based on the experience implementing this?

20:05 stuarthalloway: devn: those dev notes may not be up to date -- ask first if something doesn't make sense

20:05 mdeboard: (inc dsantiago)

20:05 Guest47370: ⟹ 1

20:06 hv: stuartsierra: well, is it like cljs -> google closure -> js -> web app -> client ?

20:06 amalloy: mdeboard: you couldn't use the whole-program optimizations with eval, i think

20:06 daniel123: <dsantiago> Question: Is any of this work useful for putting back into Clojure as part of CinC?

20:06 `fogus: mdeboard; Good question. Hopefully stuarthalloway picks it. :-)

20:06 ahriman53072: ^(

20:06 frou100: QUESTION: Has there been any anecdotal performance testing on iPhone/Android?

20:06 stuartsierra: not yet

20:06 Raynes: Question: How long has this been being done on the down low? I've seen very few awesome secrets like this kept well.

20:06 stuarthalloway: Raynes: as long as it takes to build something in a powerful language. Check the git history

20:06 mdeboard: crystal meth for javascript

20:06 Raynes: Especially given the number of people.

20:06 licoresse: :-)

20:07 daniel123: lol

20:07 devn: crystal math, cooking up a batch of derivatives and inverse functions to get your fix

20:07 ohpauleez: Please take frou100's question

20:07 redinger: Raynes: All the contributors were threatened with death if they leaked info

20:07 abedra: what about the bacon of javascript

20:07 Raynes: redinger: I bet. ;)

20:07 mjg123: frou100++

20:07 daniel123: core.logic

20:07 ?

20:07 david`: can I come to relevance on Friday and try to add clojurescript support to rails 3.1?

20:07 stuarthalloway: daniel123: I like your question

20:07 thickey: is enlive ported yet?

20:07 mabes_: so for clarification... if you don't want to go through the work of making a JS lib closure compliant (e.g. a JS graphing lib) can you still use and forgo the benefits?

20:07 redinger: I think it was in dev for 6 weeks, right?

20:07 stuartsierra: frou100: We haven't tested on mobile platforms yet, but it's all just JS, so whatever works there.

20:07 `fogus: daniel123: I see no reason why core.logic will not work

20:08 ohpauleez: thanks david!

20:08 frou100: alright - thanks

20:08 devn: there's a lot of optimization in core.logic

20:08 redinger: Atlas?

20:08 daniel123: Thanks stuarthalloway.

20:08 redinger: cemerick: :)

20:09 no_mind: devn: cant figure out the url for devnotes/todo.org

20:09 kriyative: @stuarthalloway How long has ClojureScript been in development?

20:09 devn: no_mind: it's in the clojurescript repo

20:09 redinger: no_mind: https://github.com/clojure/clojurescript/blob/master/devnotes/todo.org

20:09 gfodor: sorry to repost in case my q was missed :)

20:09 question from the interwebs: how feasible to hoist the compiler into the browser? will it be possible to easily write and compile clojure code from within a browser-based editor

20:09 devn: redinger: thanks :)

20:09 gfodor: (sorry if i missed this jumped into the talk late)

20:09 stuarthalloway: kriyative: hammock time or coding time?

20:09 kriyative: @stuarthalloway yes.

20:09 @stuarthalloway I mean, both.

20:10 cemerick: redinger: :-) I leaned pretty heavily on lots of libs. We'll see what a cljs impl of the atlas frontend would look like soon, hopefully.

20:10 ahriman53072: ^(

20:10 bmillare: holy crap thats fast 3months

20:10 kriyative: @stuarthalloway very cool, thanks.

20:11 gfodor: i'm on it! :)

20:11 ohpauleez: haha

20:11 hv: stuarthalloway: I want to invoke (embed) cljs in the clj, not put the cljs compiler in the browser.

20:12 daniel123: "do you get your knowledge from your hair? if so, please slow down because we do not all have nice hair."

20:12 ohpauleez: I'm curious about moving forward, what kind of unified ecosystem are we shooting for

20:12 kovasb: question: whats the debugging story?

20:12 ohpauleez: as a community

20:12 no_mind: ah! I was looking for devnotes in jira

20:12 ohpauleez: ie: unify on node? unify with current tools (lein?)

20:12 devn: no_mind: no worries.

20:12 hv: like (to-html [:html [:head [:script (cljs (def a 10)]]] [:body ...]])

20:12 licoresse: kovasb; +++

20:12 pmbauer: Will design docs for ClojureScript (going forward) live in Jira?

20:13 (discussions, etc)

20:13 stuarthalloway: pmbauer: in all probability

20:13 we have been very busy and that decision was not on the path for delivering tonight

20:13 anybody running the twitterbuzz thing on your own?

20:13 l0st3d: is there an agents implementation that uses timeouts in the browser?

20:13 ohpauleez: haha

20:14 yes

20:14 exactly

20:14 and tools for both places

20:14 bmillare: what clojure language features won't ever be in clojurescript?

20:14 stuartsierra: bmillare: Java interop. ;)

20:14 bmillare: besides javainterop :)

20:14 brehaut: bmillare: that implies you expect javascript etc to not change

20:14 ohpauleez: haha

20:14 touche

20:14 pmbauer: Zing!

20:15 ohpauleez: ok

20:15 I'm satisfied with that

20:15 daniel123: Repeat the q, please.

20:15 devn: ^^

20:15 alandipert: question was about unifying clojure/clojurescript core

20:15 hv: merge clojure.core with clojure.org

20:15 ?

20:16 sorry, I thought that was the question

20:16 naeu: will we therefore see more utility fns where we might typically have been encouraged to use direct java methods - i.e. (.endsWith "foo" "o")

20:16 alandipert: hv: the 'core' library in both languages is similar but not identical

20:16 kephale: W.R.T unifying clojure/clojurescript, is it plausible to have shared memory between a server app in clojure and a client in clojurescript?

20:16 daniel123: lol

20:16 Raynes: They should have cut his hair out of the stream. I haven't heard a word he said, given my focus has been entirely on his beautiful hair.

20:16 stuartsierra: kephale: umm, no.

20:16 Scorchin: Raynes: :D

20:17 stuarthalloway: kephale: you have to be kidding

20:17 ohpauleez: haha

20:17 frou100: naeu: good question

20:17 daniel123: I know Raynes. I think it's where he gets his knowledge.

20:17 cemerick: Raynes: Wow.

20:17 :-D

20:17 devn: hahaha

20:17 Scorchin: hahaha

20:17 abedra: how probable ?

20:17 maacl: that's just sick

20:18 david`: since clojurescript has js interop, does the clojurescript coe over in place?

20:18 hv: maybe he wants easily shared state?

20:18 lnostdal-laptop: Question: Might already have been mentioned this, but does stuff like add-watch etc. work?

20:18 rimmjob_: 19:09 <gfodor> question from the interwebs: how feasible to hoist the compiler into the browser? will it be possible to easily write and compile clojure code from within a browser-based editor

20:18 oops

20:18 ohpauleez: Thank you so much Rich, and the whole team that worked on this

20:18 amazing stuff

20:18 daniel123: thanks everybody!!! stuarthalloway, ustream worked out great.

20:18 mjg123: indeed - thanks all

20:18 stuartsierra: Thanks everyone for listening.

20:18 maacl: hickey for president

20:18 david`: that was great

20:18 gfodor: yes this awesome! thanks so much

20:18 alandipert: thanks everybody. and for sticking with us through the condom ads

20:18 jdwbell: awesome! thanks for streaming this!

20:18 devn: rimmjob_: I gotta say man, your nick, so hard to tell if you're a troll...

20:18 mudge: thank you

20:18 devn: alandipert: Oh, I was sticking through it alright.

20:18 stuarthalloway: heading to the bar ...

20:18 bmillare: great job to all who worked on the project

20:18 alandipert: devn: bazinga

20:19 stuarthalloway: bye y'all

20:19 pbuckley: What? They're going out for dinner and drinks?!? And we're not going to be treated to another hour of beautiful streaming shots of hair?

20:19 bmillare: stuarthalloway: have a good time

20:19 lnostdal-laptop: cool stuff, good night .. have fun at the pub .. heh :)

20:19 devn: you new york kids have fun.

20:19 Scorchin: nice job guys!

20:19 ohpauleez: see ya guys

20:19 naeu: right, bedtime for me - enjoy the bar everyone

20:19 devn: ciao

20:19 scottj: for calling a javascript method in clojurescript do you use .foo?

20:19 alandipert: time to drink enough to forget javascript's bad parts

20:19 pmbauer: Big congrats to clojure/core

20:19 ahriman53072: say please how can i iterate through sequence of maps.

20:19 amalloy: thanks for the broadcast guys, it was very nice

20:19 devn: alandipert: impossible.

20:19 stuartsierra: Thank you all for listening!

20:19 `fogus: Awesome that the video was crystal clear.

20:19 stuartsierra: Check out the GitHub repo, and continue the discussions on the Clojure mailing list.

20:20 * kephale applauds

20:20 hv: I missed the beginning. does ustream store it?

20:20 frou100: cheers stuartsierra

20:20 pbuckley: hv I don't think so, I think it was live only

20:20 Raynes: hv: A video is planned to be made available later.

20:20 neotyk: Kudos to clojure/core and big thanks for streaming it

20:20 abedra: hv it was recorded

20:20 hv: thanks

20:21 abedra: hv, it will be available later

20:22 tbatchelli: great job putting this online guys!

20:23 stuartsierra: thanks!

20:23 Good night all!

20:28 maacl: I get ReferenceError: goog is not defined when trying to run the node examples

20:30 the-kenny: Clojurescript fits perfectly into my current hobby project :) Thanks for this great work!

20:31 devn: the-kenny: link me?

20:32 the-kenny: devn: I call it netwars, it's on my github account (https://github.com/the-kenny/netwars-clj). It's a clone of a turn-based strategy game for the Gameboy Advance / Nintendo DS (Advance Wars)

20:33 devn: Sorry, I have to sleep now. It's 2:30AM here :/ Good night!

20:33 Bronsa: yeah me too

20:34 good night everybody

20:34 devn: the-kenny: night!

20:34 maacl: Can anyone compile the node samples?

20:40 Anyone?

20:40 clojurebot: Please do not ask if anyone uses, knows, is good with, can help you with <some program or library>. Instead, ask your real question and someone will answer if they can help.

20:42 kriyative: xk

20:56 chouser: maacl: is it not working for you?

20:56 maacl: chouser: got the hellonode working - but nodels compiles but does nothing

20:57 chouser: maacl: are you running it as shown in the quickstart wiki?

20:59 maacl: nope - was just trying same approach as for hellonode - will try the wiki way now

21:00 chouser: well, if it compiled, you may only need to add a directory to the command-line args

21:01 maacl: ls

21:02 brehaut: maacl: Clojurescript.iml devnotes readme.txt src bin epl-v10.html samples closure lib script

21:03 Scriptor: will clojurescript and clojure continue to share the same irc channel, or will there be a split sometime soon?

21:04 redinger: Scriptor: Current plan is to continue using Clojure channel

21:07 maacl: chouser: yeah - if I add the main src dir it works

21:07 chouser: cool!

21:08 maacl: chouser: why does't what it need end up in the out dir?

21:08 dsop: hmm getting it work with openjdk doesn't seem to be a 2min fix

21:13 mattmitchell: could someone recommend how i could recursively modify key values in a map?

21:13 chouser: dsop: the compiler or the repl?

21:14 Raynes: technomancy: Ping.

21:14 amalloy: mattmitchell: uhhmmmm, sounds like reduce or iterate but you haven't been very specific

21:14 dsop: chouser: the repl at the moment

21:14 chouser: and the compiler. at least require cljs.compiler fails

21:15 gfodor: so clojurescript doesn't support runtime compilation, but does it support runtime macro expansion?

21:15 mattmitchell: amalloy: ok something like: {:address {:line-1 "xxx" :city-name "xxx"}} becomes {:address {:line_1 "xxx" :city_name "xxx}}

21:15 Scriptor: gfodor: seems so

21:15 technomancy: Raynes: about to head out, but shoot

21:15 gfodor: neat

21:15 chouser: dsop: openjdk doesn't include rhino, does it? That'll be a showstopper for the repl.

21:15 mattmitchell: amalloy: just changing hyphens to underscores

21:16 chouser: gfodor: even clojure doesn't support runtime macro expansion

21:16 Raynes: technomancy: Does leiningen do anything if a dependency is listed without a version: :dependencies [[foo]]

21:16 dsop: chouser: well you can install it, but it's a different namesapce then

21:16 chouser: gfodor: so no, clojurescript doesn't support that

21:16 Raynes: Cake defaults to whatever is latest, and I'm trying to reconcile marginalia's output.

21:16 mattmitchell: amalloy: but there are many maps, all with varying depths/keys

21:16 chouser: dsop: ah

21:16 gfodor: thx chouser

21:17 technomancy: Raynes: no, leiningen doesn't encourage "just give me whatever" versions

21:17 dsop: chouser: sun.org.mozilla.. is gone obviously in that case, so I try to move it to org.mozilla, but at the moment I get stuck as (:global repl-env) implements a ExternalScriptable from the sun namespace and I have to fix that

21:17 to use the mozilla rhino namespace

21:17 instead of the sun one

21:17 Raynes: technomancy: Thanks.

21:17 technomancy: I mean, you can specify ranges if that's what you want, but it has to be explicit

21:17 amalloy: mattmitchell: sounds like a job for clojure.walk, i guess

21:17 Raynes: technomancy: Well, I certainly wasn't implying that it was a good idea. ;)

21:17 mattmitchell: amalloy: ok thanks

21:17 amalloy: you could implement it by hand without too much work, i think

21:18 technomancy: Raynes: I blame the rubyists

21:18 Raynes: I blame television.

21:18 technomancy: they are still discovering the perils of open-ended version ranges

21:19 * gfodor sadly opens back up PHP code for work

21:19 chouser: dsop: the compiler will be easier to fix, and probably necessary anyway for the repl

21:20 dsop: chouser: I don't think it's taht easy. it's the interaction between javax.script.ScriptEngineManager and the mozilla rhino stuff

21:20 but I have to dig deeper into the javadocs before I can say what exactly causes it.

21:21 amalloy: &((fn dash-keys [m] (if-not (map? m) m, (into {} (for [[k v] m] {(keyword (clojure.string/replace (name k) #"-" "_")) (dash-keys v)})))) {:test-me {:data {:val-here 1}}}) ;; mattmitchell

21:21 lazybot: ⇒ {:test_me {:data {:val_here 1}}}

21:21 Scriptor: gfodor: would you like to do that PHP...in lisp?

21:21 amalloy: haha Scriptor, way to jump on that opportunity

21:21 gfodor: I wish i could

21:22 are you the guy who wrote that php lisp thing?

21:22 Scriptor: yep

21:22 gfodor: nice :) that looked awesome

21:22 mattmitchell: amalloy: wow awesome! i'll check it out :)

21:22 gfodor: sadly, I'd have a hard time getting the powers that be to agree to it

21:22 i couldn't even get clojure allowed in our JVM environment

21:23 Scriptor: amalloy: must convert moar

21:23 dsop: Scriptor: which one?

21:24 * dsop is intersted in clj php stuff

21:24 Scriptor: gfodor: yea, I know what you mean. Everybody on the project would still have to learn Pharen, though you could try the tactic that's suggested with Clojure of starting by using it for testing firs

21:24 dsop: it's not really clojure, but kinda close, http://scriptor.github.com/pharen/

21:25 I've taken a lot of ideas from clojure though, so a lot of looking at its source :)

21:25 gfodor: yeah, not gonna happen. we have a culture of basically PHP or die

21:25 which is fine for certain things but not others

21:25 Raynes: gfodor: Mutiny. Take over the company. Conquer!

21:25 gfodor: helps spread code around, but if you want to do something hard, good luck!

21:25 Scriptor: I'll help :p

21:26 dsop: Scriptor: ah quite nice, but probably not very suitable in bigger environments with other devs working in non-lisp mode on the php sources

21:27 Scriptor: exactly, but then again when it comes to cross-language work coffeescript has done nicely

21:27 and now there's cljs!

21:27 dsop: if i would just get it to work :)

21:27 gfodor: yes, I am overcome with guilt thinking I might have to break up with coffeescript

21:28 Scriptor: hmm, very different coding styles, js was partially meant to be somewhat functional anyway

21:28 so going all the way would be nice

21:29 gfodor: you can't beat client/server parity

21:29 coffee you get node of course but having the jvm is the elephant in the room

21:29 amalloy: the jvm is in fact an actual elephant

21:29 gfodor: yup

21:29 pmbauer: It doesn't look like any of the clojure/core devs have tried ClojureScript on windows

21:29 Scriptor: elephants have a high top speed, so that's an accurate analogy

21:30 pmbauer: getting a Pattern error when executing (re-pattern java.io.File/separator) on win

21:30 separator = "\\" on windows ... not a valid regex

21:31 cljs/compiler.clj:1096

21:31 amalloy: pmbauer: (re-pattern (java.util.regex.Pattern/quote (java.io.File/separator))) would work

21:32 &(re-pattern (java.util.regex.Pattern/quote (java.io.File/separator))) would work

21:32 lazybot: ⇒ #"\Q/\E"

21:32 pmbauer: amalloy: indeed ... fixed

21:32 Scriptor: trying to run the bootstrap script on windows under mingw32, it says it can't find clojure/compiler/compiler.jar

21:32 pmbauer: ...and thanks

21:32 Scriptor: oh, nvm

21:33 unzip command not found -.-

21:37 pmbauer: Hm ... running into more path issues with the generated .js

21:38 ...will have to try again when I get back to my linux box

21:38 ...definitely not portable yet

21:48 Does anyone know how to file bug reports/patches for ClojureScript?

21:51 redinger: pmbauer: For now, please post the bug report to the Clojure mailing list. Our reporting system will be in place soon.

21:51 pmbauer: Okay

21:52 Should I post patches there as well?

21:52 (signed CA)

21:54 seancorfield_: will there be a clojurescript mailing list? or do you expect both implementations to be served by one list?

21:55 redinger: pmbauer: I don't have a good answer yet, unfortunately.

21:56 seancorfield_: Currently we're planning on a single mailing list

21:57 pmbauer: I don't see us taking patches prior to Friday.

21:57 Hopefully Friday we'll have something setup for that

21:57 seancorfield_: cool, thanx redinger!!

22:03 ahriman53072: i have seq of maps with counters like {:googleCount 10 :dz 20} and so on. I need to form HTML page with table with this data like: <tr><td style="...style1...">:googleCount</td><td style="...style2,..">:dz</td></tr>. How can i make this?

22:09 buddywilliams: good evening

22:09 I am wondering how you eval a form that's quoted?

22:10 let me pull together a quick example

22:10 (apply func (first lst))

22:11 gets me a java.lang.Integer cannot be cast to clojure.lang.Ifn

22:11 exception

22:11 I would like something like (quote (first lst))

22:13 maybe everyone is sleeping at this hour?

22:18 kephale: ,(apply (fn [x] x) (first (list 1 2)))

22:18 clojurebot: java.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Integer

22:18 kephale: ,((fn [x] x) (first (list 1 2)))

22:18 clojurebot: 1

22:49 amalloy: hmmm, having trouble with bootstrapping. (require 'cljs.compiler) fails with CompilerException java.lang.RuntimeException: java.lang.ClassNotFoundException: sun.org.mozilla.javascript.internal.Context, compiling:(cljs/compiler.clj:919). i'll look into it shortly, but has anyone else had this problem?

23:12 technomancy: I wonder if the moratorium on single-segment namespaces will be carried over into clojurescript out of habit.

23:13 chouser: amalloy: are you sure you're using sun jvm not openjdk or something else?

23:14 amalloy: chouser: not at all. i'm certain i'm using openjdk

23:15 i don't see anywhere in the wiki that it says i need sun; i'm happy to take your word for it but it seems like it should be documented

23:15 chouser: amalloy: ah, yeah, that won't work. yet, anyway.

23:17 amalloy: technomancy: habit? it's critical for those folks who want to write their app once and run it on clr/jvm/js!

23:18 technomancy: amalloy: write once, run anywhere except openjdk?

23:19 dsantiago: Seems we're a long way from that being possible for non-trivial programs.

23:19 technomancy: dsantiago: I think amalloy is joking

23:19 amalloy: i assume a C backend is just days away

23:19 technomancy: dsantiago: rich has explicitly stated that's a non-goal.

23:19 dsantiago: technomancy: I know, but I did not pick up a malloy's sarcasm.

23:20 technomancy: he's certainly a sly one

23:22 dsantiago: It wouldn't be unreasonable to hope for that in Clojure one day, given how far other languages have gone on that path either.

23:22 technomancy: that sounds like a stretch. JS doesn't even have integers.

23:22 chouser: amalloy: updated the quickstart wiki, thanks.

23:23 dsantiago: Well, I'm still not used to JS being part of this world.

23:23 technomancy: I've toyed with the idea of an elisp port

23:23 dsantiago: JVM/CLR is not so crazy.

23:23 chouser: technomancy: easier now that before!

23:24 technomancy: chouser: yeah, I've been putting it off because I didn't want to be the first one

23:24 amalloy: on a crazy scale from 1 to 5, i give jvm/clr a 3

23:26 hv: how should I turn munged names like class_QMARK_ back to class? ?

23:27 technomancy: ok, brainstorming time, if you don't mind. notable lowly minions from fiction. go.

23:27 all i've got so far is oompa lompas and the peons from Warcraft.

23:28 maybe drinnols, but that's a stretch.

23:28 dsantiago: ewoks

23:28 * hv hears about peons. nice "people". quickly scrolls back to get the context ...

23:29 technomancy: ewoks don't really serve an overlord; I'm not sure they'd count as minions as they're self-ruled.

23:29 Penten: goblins in lots of fantasy settings

23:29 technomancy: except for that part with C3PO

23:29 dsantiago: They don't until people land and tell them to build traps and stuff.

23:30 technomancy: also, lucasfilm is trigger-happy with the trademark C&Ds; see droid.

23:31 hv: what are you naming?

23:31 technomancy: hv: http://p.hagelb.org/minions.clj.html

23:31 work queueing in under 100 loc

23:32 it'll probably grow to 150 once I add timeouts and pooling though.

23:33 dsantiago: borg?

23:34 * hv looks at his own "Puppets" lib.

23:36 technomancy: https://github.com/orionz/minion <= already a very similar ruby lib

23:38 hv: it is more like a wisp than a peon

23:39 thorstadt_: golem?

23:40 stuarthalloway: Evening all...

23:42 Scriptor: evening stuarthalloway

23:50 technomancy: golem's not bad

23:51 hugod: oliver twist

23:52 technomancy: but "die roboter" would allow me to quote German in the readme: http://www.vinylsearcher.com/largeImages/894072.jpg

23:54 amalloy: technomancy: nanites aren't *exactly* minions, but...

23:54 dsantiago: But, libraries with first and last names is a trend you've started.

23:54 technomancy: dsantiago: well, due to the single-segment namespace moratorium.

23:55 amalloy: too good to remain unclaimed, unfortunately: http://www.rubyinside.com/nanite-self-assembling-cluster-of-ruby-daemons-1245.html

23:56 amalloy: technomancy: i have good news: ruby code is namespaced differently than clojure code

23:56 technomancy: amalloy: heh; true. but from a fictional angle it's a stretch.

23:56 amalloy: yes

23:58 technomancy: honeybees, except you want something with a proper name

Logging service provided by n01se.net