Re: core.typed question (maybe a bug?)

2015-04-17 Thread Sven Richter
Hm, 

Is it possible that core.typed may be influenced by the repl state? New day 
and a new try I got these both working:

(t/ann dt-hiccup [(t/HVec [Keyword (t/U Keyword (t/HVec [Keyword Number])) 
t/Any t/Any *]) - html-form-group])
(defmulti dt-hiccup (t/fn [col :- (t/HVec [Keyword (t/U Keyword (t/HVec 
[Keyword Number])) t/Any t/Any *])]
   (if (vector? (second col))
 (first (second col))
 (second col

and

(t/ann dt-hiccup [(t/HVec [Keyword (t/U Keyword (t/HVec [Keyword Number])) 
t/Any t/Any *]) - html-form-group])
(defmulti dt-hiccup (t/fn [col :- (t/HVec [Keyword (t/U Keyword (t/HVec 
[Keyword Number])) t/Any t/Any *])]
   (let [[_ s] col]
 (if (vector? s) (first s) s

Which are the same basically regarding type declarations. Sorry for making such 
a noise, 
maybe a simple repl restart would have fixed this.

Thanks,
Sven



Am Donnerstag, 16. April 2015 22:43:41 UTC+2 schrieb Sven Richter:

 Hi,

 I tried both destructuring and the nth form instead of second and first. 
 None of which worked.

 However, if I change the Union to Intersection in 

 (t/HVec [Keyword (t/U Keyword (t/HVec [Keyword Number])) t/Any t/Any *])

 it works for the definition of the multimethod. Does that make sense? I 
 thought Union was either one type or the other.

 Thanks,
 Sven


 Am Donnerstag, 16. April 2015 21:44:25 UTC+2 schrieb Ambrose 
 Bonnaire-Sergeant:

 I don't think second's type is is smart enough.

 Try using nth or destructuring instead:

 (let [[f s] v]
   (if (vector? s) (first s) s))

 or

 (if (vector? (nth v 1)) (first (nth v 1)) s)

 Thanks,
 Ambrose

 On Thu, Apr 16, 2015 at 3:39 PM, Sven Richter sve...@googlemail.com 
 wrote:

 Hi,

 I have this code:

 (defalias html-label (t/HVec [Keyword (t/HMap :mandatory {:for String}) 
 String]))
 (defalias html-form (t/HVec [Keyword (t/HMap :mandatory {:id String}) t/Any 
 *]))
 (defalias html-form-group (t/HVec [html-label html-form]))
  
 (t/ann dt-hiccup [(HVec [Keyword (U Keyword (HVec [Keyword Number])) t/Any 
 t/Any *]) - 
html-form-group])
 (defmulti dt-hiccup (t/fn [col :- pt/et-column]
(if (vector? (second col))
  (first (second col))
  (second col

 And here comes the error message when checking this function:

 Type Error (leiningen/td_to_hiccup.clj:25:34) Polymorphic function first 
 could not be applied to arguments:
 Polymorphic Variables:
 x
  
 Domains:
 (t/HSequential [x t/Any *])
 (t/Option (t/EmptySeqable x))
 (t/NonEmptySeqable x)
 (t/Option (clojure.lang.Seqable x))
  
 Arguments:
 (t/U Keyword (t/HVec [clojure.lang.Keyword java.lang.Number]))
  
 Ranges:
 x :object {:path [(Nth 0)], :id 0}
 nil
 x
 (t/Option x)
  
 in: (first (second col))
 in: (first (second col))
  
  
 ExceptionInfo Type Checker: Found 1 error  clojure.core/ex-info (core.
 clj:4403)

 My assumption is that the check (if (vector? (second col will return 
 only true if it is this type: (HVec [Keyword Number]). However, I have 
 the impression that core.typed does not resolve the if expression properly.
 Or maybe I am missing something completely.

 Any hints or recommendations?

 Thanks,
 Sven


  -- 
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@googlegroups.com
 Note that posts from new members are moderated - please be patient with 
 your first post.
 To unsubscribe from this group, send email to
 clojure+u...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 --- 
 You received this message because you are subscribed to the Google 
 Groups Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send 
 an email to clojure+u...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.




-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: core.typed question (maybe a bug?)

2015-04-17 Thread Sven Richter
I added your explanation the the wiki of core.typed: 
https://github.com/clojure/core.typed/wiki/Intersection-vs.-Union I hope 
that is fine for you.



Am Donnerstag, 16. April 2015 23:25:42 UTC+2 schrieb Ambrose 
Bonnaire-Sergeant:

 It might help thinking in terms of Java interfaces, Foo and Bar.

 (definterface Foo
   (foo []))
 (definterface Bar
   (bar []))

 (I Foo Bar) is a value that extends both Foo and Bar.

 (deftype IImp []
   Foo
   (foo [this])
   Bar
   (bar [this]))

 (-IImp) is of type Foo, Bar, (I Foo Bar) and (U Foo Bar).

 Assuming we assign (-IImp) the type (I Foo Bar), we can call these safely:

 (let [i :- (I Foo Bar), (-IImp)]
  (.foo i)
  (.bar i))

 A type that just implements Foo is not a Bar, so we can't claim it's a Foo 
 *and* a Bar.

 (deftype UImp []
   Foo
   (foo [this]))

 (-UImp) is of type Foo, and (U Foo Bar).

 Assuming we assign (-UImp) the type (U Foo Bar), the same operations now 
 must cast at runtime.

 (let [i :- (U Foo Bar), (-UImp)]
  (if (instance? Foo)
   (.foo i)
   (.bar i))


 Thanks,
 Ambrose

 On Thu, Apr 16, 2015 at 5:15 PM, Sven Richter sve...@googlemail.com 
 javascript: wrote:

 I meant when I change:

 (t/HVec [Keyword (t/U Keyword (t/HVec [Keyword Number])) t/Any t/Any *])  
 to  (t/HVec [Keyword (t/I Keyword (t/HVec [Keyword Number])) t/Any t/Any *])
 
 ^^   
   
 to  ^^
 Still I think that making an intersection of it is wrong conceptually.


 Thanks,
 Sven

 Am Donnerstag, 16. April 2015 23:08:30 UTC+2 schrieb Ambrose 
 Bonnaire-Sergeant:

 I don't see an intersection, what do you mean?

 Thanks,
 Ambrose

 On Thu, Apr 16, 2015 at 4:43 PM, Sven Richter sve...@googlemail.com 
 wrote:

 Hi,

 I tried both destructuring and the nth form instead of second and 
 first. None of which worked.

 However, if I change the Union to Intersection in 

 (t/HVec [Keyword (t/U Keyword (t/HVec [Keyword Number])) t/Any t/Any *])

 it works for the definition of the multimethod. Does that make sense? I 
 thought Union was either one type or the other.

 Thanks,
 Sven


 Am Donnerstag, 16. April 2015 21:44:25 UTC+2 schrieb Ambrose 
 Bonnaire-Sergeant:

 I don't think second's type is is smart enough.

 Try using nth or destructuring instead:

 (let [[f s] v]
   (if (vector? s) (first s) s))

 or

 (if (vector? (nth v 1)) (first (nth v 1)) s)

 Thanks,
 Ambrose

 On Thu, Apr 16, 2015 at 3:39 PM, Sven Richter sve...@googlemail.com 
 wrote:

 Hi,

 I have this code:

 (defalias html-label (t/HVec [Keyword (t/HMap :mandatory {:for String
 }) String]))
 (defalias html-form (t/HVec [Keyword (t/HMap :mandatory {:id String}) 
 t/Any *]))
 (defalias html-form-group (t/HVec [html-label html-form]))
  
 (t/ann dt-hiccup [(HVec [Keyword (U Keyword (HVec [Keyword Number])) 
 t/Any t/Any *]) - 
html-form-group])
 (defmulti dt-hiccup (t/fn [col :- pt/et-column]
(if (vector? (second col))
  (first (second col))
  (second col

 And here comes the error message when checking this function:

 Type Error (leiningen/td_to_hiccup.clj:25:34) Polymorphic function 
 first could not be applied to arguments:
 Polymorphic Variables:
 x
  
 Domains:
 (t/HSequential [x t/Any *])
 (t/Option (t/EmptySeqable x))
 (t/NonEmptySeqable x)
 (t/Option (clojure.lang.Seqable x))
  
 Arguments:
 (t/U Keyword (t/HVec [clojure.lang.Keyword java.lang.Number])
 )
  
 Ranges:
 x :object {:path [(Nth 0)], :id 0}
 nil
 x
 (t/Option x)
  
 in: (first (second col))
 in: (first (second col))
  
  
 ExceptionInfo Type Checker: Found 1 error  clojure.core/ex-info (core
 .clj:4403)

 My assumption is that the check (if (vector? (second col will return 
 only true if it is this type: (HVec [Keyword Number]). However, I 
 have the impression that core.typed does not resolve the if expression 
 properly.
 Or maybe I am missing something completely.

 Any hints or recommendations?

 Thanks,
 Sven


  -- 
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@googlegroups.com
 Note that posts from new members are moderated - please be patient 
 with your first post.
 To unsubscribe from this group, send email to
 clojure+u...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 --- 
 You received this message because you are subscribed to the Google 
 Groups Clojure group.
 To unsubscribe from this group and stop receiving emails from it, 
 send an email to clojure+u...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


  -- 
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this 

[ANN] SF Reagent Meetup TODAY 6:30pm @Loyal3 @Meerkat

2015-04-17 Thread Marc Fawzi
   - Thursday, April 16, 2015

   6:30 PM
   -
   Loyal3
   
http://maps.google.com/maps?f=qhl=enq=150+California+St+Ste+400%2C+San+Francisco%2C+CA%2C+US

   150 California St Ste 400, San Francisco, CA (edit map
   
http://www.meetup.com/Reagent-Minimalistic-React-for-ClojureScript/events/221710610/
   )
   - *two blocks from the Embarcadero BART on California and Front*
   -

   *SF Reagent *Meetup Agenda:

   IMPORTANT: We will be streaming the event live MEERKAT @ 7:00PM PDT (GMT
   time -7 hours) today! -- Follow @marcfawzi on Twitter for live updates.

   To watch on the web (non-interactive mode)

   http://meerkatapp.co/marcfawzi/sch-1a612560-df50-4d13-a00c-c828eee742c9

   Meerkat is available on iOS and viewers are encouraged to download the
   app (interactive mode)

   https://itunes.apple.com/us/app/meerkat-tweet-live-video/id954105918?mt=8


   Unofficial Meerkat app for Android - made with love by Meerkat's
   engineers (interactive mode)

   https://play.google.com/store/apps/details?id=co.getair.meerkathl=en

   1. 6:30pm - 7:00pm:

   meet  greet, food and drinks, social

   2. 7:00pm - 7:30pm: (LIVE STREAM via Meerkat)

   Intro to Reagent-Template (repo:
   https://github.com/reagent-project/reagent-template) --- by its
author Dmitri
   Sotnikov(also author of Luminus.) Dmitri will be presenting via Google
   hangout on a big screen and you will be able to ask him questions live.
   This should be interesting.


   3. 7:30pm - 7:45pm:  (LIVE STREAM via Meerkat)

   Re-frame and Reagent port of Angular's phonecat (repo:
   https://github.com/dhruvp/angular-phonecat-re-frame) -- by its author
   Dhruv Parthasarathy (MIT)


   4. 7:45-8:00pm  (LIVE STREAM via Meerkat, updated description):

   Reusable Reagent Components with App-State Driven CSS Transitions
   (watch: http://imgur.com/04OaRw3) -- by Marc Fawzi -- this live demo
   will include Learning Outcomes for smooth animations, component styling,
   and sharing the components via internal maven repo Artifactory and our
   TeamCity deploy pipeline, among other things.


   *A professionally produced video of the event that includes screen
   captures of on-stage and Google Hangout presentations will be shared within
   a week of the event.*


*SF FOLKS, HOPE TO SEE YOU IN PERSON! *

   *LOCAL BEER CHOICES AND SAME AWESOME PIZZAS (w/ GF/DF options)*
   -

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Back to Periscope (What The Hey!) Re: [ANN] SF Reagent Meetup TODAY 6:30pm @Loyal3 @Meerkat

2015-04-17 Thread Marc Fawzi
Sorry guys, we were really excited about moving to Meerkat but when we
tried it just a while ago it gave us a frozen picture and was logging not
ready in a loop.

So back to Periscope.

Please follow my Twitter handle @marcfawzi from Periscope and we'll be live
at 7pm.

We have a fun meetup ahead. Hope to see you.

:)

On Thu, Apr 16, 2015 at 7:34 AM, Marc Fawzi marc.fa...@gmail.com wrote:


- Thursday, April 16, 2015

6:30 PM
-
Loyal3

 http://maps.google.com/maps?f=qhl=enq=150+California+St+Ste+400%2C+San+Francisco%2C+CA%2C+US

150 California St Ste 400, San Francisco, CA (edit map

 http://www.meetup.com/Reagent-Minimalistic-React-for-ClojureScript/events/221710610/
)
- *two blocks from the Embarcadero BART on California and Front*
-

*SF Reagent *Meetup Agenda:

IMPORTANT: We will be streaming the event live MEERKAT @ 7:00PM PDT
(GMT time -7 hours) today! -- Follow @marcfawzi on Twitter for live updates
.

To watch on the web (non-interactive mode)

http://meerkatapp.co/marcfawzi/sch-1a612560-df50-4d13-a00c-c828eee742c9

Meerkat is available on iOS and viewers are encouraged to download the
app (interactive mode)


https://itunes.apple.com/us/app/meerkat-tweet-live-video/id954105918?mt=8


Unofficial Meerkat app for Android - made with love by Meerkat's
engineers (interactive mode)

https://play.google.com/store/apps/details?id=co.getair.meerkathl=en

1. 6:30pm - 7:00pm:

meet  greet, food and drinks, social

2. 7:00pm - 7:30pm: (LIVE STREAM via Meerkat)

Intro to Reagent-Template (repo:
https://github.com/reagent-project/reagent-template) --- by its author 
 Dmitri
Sotnikov(also author of Luminus.) Dmitri will be presenting via Google
hangout on a big screen and you will be able to ask him questions live.
This should be interesting.


3. 7:30pm - 7:45pm:  (LIVE STREAM via Meerkat)

Re-frame and Reagent port of Angular's phonecat (repo:
https://github.com/dhruvp/angular-phonecat-re-frame) -- by its author
Dhruv Parthasarathy (MIT)


4. 7:45-8:00pm  (LIVE STREAM via Meerkat, updated description):

Reusable Reagent Components with App-State Driven CSS Transitions
(watch: http://imgur.com/04OaRw3) -- by Marc Fawzi -- this live demo
will include Learning Outcomes for smooth animations, component styling,
and sharing the components via internal maven repo Artifactory and our
TeamCity deploy pipeline, among other things.


*A professionally produced video of the event that includes screen
captures of on-stage and Google Hangout presentations will be shared within
a week of the event.*


 *SF FOLKS, HOPE TO SEE YOU IN PERSON! *

*LOCAL BEER CHOICES AND SAME AWESOME PIZZAS (w/ GF/DF options)*
-





-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN] descjop v0.1.0

2015-04-17 Thread Kazuhiro Hara
Hi, 

descjop v0.1.0 (https://github.com/karad/lein_template_descjop)
has just been released today!
A Leiningen template for Web based desktop 
application with Atom-Shell(https://github.com/atom/atom-shell/).

you can try this.

$ lein new descjop YOUR_APP_NAME

Check it out!
https://github.com/karad/lein_template_descjop
https://clojars.org/descjop/lein-template


Kazuhiro Hara
Kazuhiro Hara (Greative LLC http://greative.jp/) 
{:mail kazuhi...@gmail.com 
 :twitter https://twitter.com/kara_d}

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [reagent] Re: [ANN] SF Reagent Meetup TODAY 6:30pm @Loyal3 @Meerkat

2015-04-17 Thread Marc Fawzi
yes, will post link here sometime next week

all 3 presentations were screen captured too so it will be very easy to follow 

Sent from my iPhone

 On Apr 17, 2015, at 7:12 AM, Jeremy Vuillermet jeremy.vuiller...@gmail.com 
 wrote:
 
 Will the event video be uploaded somewhere ? 
 If yes, where !? Missed the live stream unfortunately. Living in France 
 doesn't help ...
 
 
 On Thursday, April 16, 2015 at 4:35:38 PM UTC+2, marc fawzi wrote:
 Thursday, April 16, 2015
 6:30 PM
 
 
 Loyal3
 150 California St Ste 400, San Francisco, CA (edit map)
 two blocks from the Embarcadero BART on California and Front
 
 SF Reagent Meetup Agenda: 
 IMPORTANT: We will be streaming the event live MEERKAT @ 7:00PM PDT (GMT 
 time -7 hours) today! -- Follow @marcfawzi on Twitter for live updates.
 To watch on the web (non-interactive mode)
 http://meerkatapp.co/marcfawzi/sch-1a612560-df50-4d13-a00c-c828eee742c9
 Meerkat is available on iOS and viewers are encouraged to download the app 
 (interactive mode)
 https://itunes.apple.com/us/app/meerkat-tweet-live-video/id954105918?mt=8 
 
 Unofficial Meerkat app for Android - made with love by Meerkat's engineers 
 (interactive mode)
 https://play.google.com/store/apps/details?id=co.getair.meerkathl=en 
 
 1. 6:30pm - 7:00pm:  
 meet  greet, food and drinks, social 
 2. 7:00pm - 7:30pm: (LIVE STREAM via Meerkat)
 Intro to Reagent-Template (repo: 
 https://github.com/reagent-project/reagent-template) --- by its author 
 Dmitri Sotnikov(also author of Luminus.) Dmitri will be presenting via 
 Google hangout on a big screen and you will be able to ask him questions 
 live. This should be interesting.
 
 
 3. 7:30pm - 7:45pm:  (LIVE STREAM via Meerkat)
 Re-frame and Reagent port of Angular's phonecat 
 (repo:https://github.com/dhruvp/angular-phonecat-re-frame) -- by its author 
 Dhruv Parthasarathy (MIT) 
 
 
 
 4. 7:45-8:00pm  (LIVE STREAM via Meerkat, updated description): 
 Reusable Reagent Components with App-State Driven CSS Transitions  (watch: 
 http://imgur.com/04OaRw3) -- by Marc Fawzi -- this live demo will include 
 Learning Outcomes for smooth animations, component styling, and sharing the 
 components via internal maven repo Artifactory and our TeamCity deploy 
 pipeline, among other things.
 
 
 A professionally produced video of the event that includes screen captures 
 of on-stage and Google Hangout presentations will be shared within a week of 
 the event.
 
 
 SF FOLKS, HOPE TO SEE YOU IN PERSON! 
 LOCAL BEER CHOICES AND SAME AWESOME PIZZAS (w/ GF/DF options)
 
 -- 
 You received this message because you are subscribed to the Google Groups 
 Reagent-Project group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to reagent-project+unsubscr...@googlegroups.com.
 To post to this group, send email to reagent-proj...@googlegroups.com.
 Visit this group at http://groups.google.com/group/reagent-project.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] SF Reagent Meetup TODAY 6:30pm @Loyal3 @Meerkat

2015-04-17 Thread Jeremy Vuillermet
Will the event video be uploaded somewhere ? 
If yes, where !? Missed the live stream unfortunately. Living in France doesn't 
help ...


On Thursday, April 16, 2015 at 4:35:38 PM UTC+2, marc fawzi wrote:
 Thursday, April 16, 2015
 6:30 PM
 
 
 Loyal3
 150 California St Ste 400, San Francisco, CA (edit map)
 two blocks from the Embarcadero BART on California and Front
 
 SF Reagent Meetup Agenda: 
 IMPORTANT: We will be streaming the event live MEERKAT @ 7:00PM PDT (GMT time 
 -7 hours) today! -- Follow @marcfawzi on Twitter for live updates.
 To watch on the web (non-interactive mode)
 http://meerkatapp.co/marcfawzi/sch-1a612560-df50-4d13-a00c-c828eee742c9
 Meerkat is available on iOS and viewers are encouraged to download the app 
 (interactive mode)
 https://itunes.apple.com/us/app/meerkat-tweet-live-video/id954105918?mt=8 
 
 Unofficial Meerkat app for Android - made with love by Meerkat's engineers 
 (interactive mode)
 https://play.google.com/store/apps/details?id=co.getair.meerkathl=en 
 
 1. 6:30pm - 7:00pm:  
 meet  greet, food and drinks, social 
 2. 7:00pm - 7:30pm: (LIVE STREAM via Meerkat)
 Intro to Reagent-Template (repo: 
 https://github.com/reagent-project/reagent-template) --- by its author Dmitri 
 Sotnikov(also author of Luminus.) Dmitri will be presenting via Google 
 hangout on a big screen and you will be able to ask him questions live. This 
 should be interesting.
 
 
 3. 7:30pm - 7:45pm:  (LIVE STREAM via Meerkat)
 Re-frame and Reagent port of Angular's phonecat 
 (repo:https://github.com/dhruvp/angular-phonecat-re-frame) -- by its author 
 Dhruv Parthasarathy (MIT) 
 
 
 
 4. 7:45-8:00pm  (LIVE STREAM via Meerkat, updated description): 
 Reusable Reagent Components with App-State Driven CSS Transitions  (watch: 
 http://imgur.com/04OaRw3) -- by Marc Fawzi -- this live demo will include 
 Learning Outcomes for smooth animations, component styling, and sharing the 
 components via internal maven repo Artifactory and our TeamCity deploy 
 pipeline, among other things.
 
 
 A professionally produced video of the event that includes screen captures of 
 on-stage and Google Hangout presentations will be shared within a week of the 
 event.
 
 
 SF FOLKS, HOPE TO SEE YOU IN PERSON! 
 LOCAL BEER CHOICES AND SAME AWESOME PIZZAS (w/ GF/DF options)

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] SF Reagent Meetup TODAY 6:30pm @Loyal3 @Meerkat

2015-04-17 Thread Jeremy Vuillermet
On Thursday, April 16, 2015 at 4:35:38 PM UTC+2, marc fawzi wrote:
 Thursday, April 16, 2015
 6:30 PM
 
 
 Loyal3
 150 California St Ste 400, San Francisco, CA (edit map)
 two blocks from the Embarcadero BART on California and Front
 
 SF Reagent Meetup Agenda: 
 IMPORTANT: We will be streaming the event live MEERKAT @ 7:00PM PDT (GMT time 
 -7 hours) today! -- Follow @marcfawzi on Twitter for live updates.
 To watch on the web (non-interactive mode)
 http://meerkatapp.co/marcfawzi/sch-1a612560-df50-4d13-a00c-c828eee742c9
 Meerkat is available on iOS and viewers are encouraged to download the app 
 (interactive mode)
 https://itunes.apple.com/us/app/meerkat-tweet-live-video/id954105918?mt=8 
 
 Unofficial Meerkat app for Android - made with love by Meerkat's engineers 
 (interactive mode)
 https://play.google.com/store/apps/details?id=co.getair.meerkathl=en 
 
 1. 6:30pm - 7:00pm:  
 meet  greet, food and drinks, social 
 2. 7:00pm - 7:30pm: (LIVE STREAM via Meerkat)
 Intro to Reagent-Template (repo: 
 https://github.com/reagent-project/reagent-template) --- by its author Dmitri 
 Sotnikov(also author of Luminus.) Dmitri will be presenting via Google 
 hangout on a big screen and you will be able to ask him questions live. This 
 should be interesting.
 
 
 3. 7:30pm - 7:45pm:  (LIVE STREAM via Meerkat)
 Re-frame and Reagent port of Angular's phonecat 
 (repo:https://github.com/dhruvp/angular-phonecat-re-frame) -- by its author 
 Dhruv Parthasarathy (MIT) 
 
 
 
 4. 7:45-8:00pm  (LIVE STREAM via Meerkat, updated description): 
 Reusable Reagent Components with App-State Driven CSS Transitions  (watch: 
 http://imgur.com/04OaRw3) -- by Marc Fawzi -- this live demo will include 
 Learning Outcomes for smooth animations, component styling, and sharing the 
 components via internal maven repo Artifactory and our TeamCity deploy 
 pipeline, among other things.
 
 
 A professionally produced video of the event that includes screen captures of 
 on-stage and Google Hangout presentations will be shared within a week of the 
 event.
 
 
 SF FOLKS, HOPE TO SEE YOU IN PERSON! 
 LOCAL BEER CHOICES AND SAME AWESOME PIZZAS (w/ GF/DF options)

Will the event video be uploaded somewhere ?
If yes, where !? Missed the live stream unfortunately. Live in France doesn't 
help ...

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ClojureScript] Re: [reagent] Re: [ANN] SF Reagent Meetup TODAY 6:30pm @Loyal3 @Meerkat

2015-04-17 Thread Jamie Orchard-Hays
Excellent. I tried to watch on periscope, but it never showed up.

Jamie
On Apr 17, 2015, at 10:20 AM, Marc Fawzi marc.fa...@gmail.com wrote:

 yes, will post link here sometime next week
 
 all 3 presentations were screen captured too so it will be very easy to 
 follow 
 
 Sent from my iPhone
 
 On Apr 17, 2015, at 7:12 AM, Jeremy Vuillermet jeremy.vuiller...@gmail.com 
 wrote:
 
 Will the event video be uploaded somewhere ? 
 If yes, where !? Missed the live stream unfortunately. Living in France 
 doesn't help ...
 
 
 On Thursday, April 16, 2015 at 4:35:38 PM UTC+2, marc fawzi wrote:
 Thursday, April 16, 2015
 6:30 PM
 
 
 Loyal3
 150 California St Ste 400, San Francisco, CA (edit map)
 two blocks from the Embarcadero BART on California and Front
 
 SF Reagent Meetup Agenda: 
 IMPORTANT: We will be streaming the event live MEERKAT @ 7:00PM PDT (GMT 
 time -7 hours) today! -- Follow @marcfawzi on Twitter for live updates.
 To watch on the web (non-interactive mode)
 http://meerkatapp.co/marcfawzi/sch-1a612560-df50-4d13-a00c-c828eee742c9
 Meerkat is available on iOS and viewers are encouraged to download the app 
 (interactive mode)
 https://itunes.apple.com/us/app/meerkat-tweet-live-video/id954105918?mt=8 
 
 Unofficial Meerkat app for Android - made with love by Meerkat's engineers 
 (interactive mode)
 https://play.google.com/store/apps/details?id=co.getair.meerkathl=en 
 
 1. 6:30pm - 7:00pm:  
 meet  greet, food and drinks, social 
 2. 7:00pm - 7:30pm: (LIVE STREAM via Meerkat)
 Intro to Reagent-Template (repo: 
 https://github.com/reagent-project/reagent-template) --- by its author 
 Dmitri Sotnikov(also author of Luminus.) Dmitri will be presenting via 
 Google hangout on a big screen and you will be able to ask him questions 
 live. This should be interesting.
 
 
 3. 7:30pm - 7:45pm:  (LIVE STREAM via Meerkat)
 Re-frame and Reagent port of Angular's phonecat 
 (repo:https://github.com/dhruvp/angular-phonecat-re-frame) -- by its author 
 Dhruv Parthasarathy (MIT) 
 
 
 
 4. 7:45-8:00pm  (LIVE STREAM via Meerkat, updated description): 
 Reusable Reagent Components with App-State Driven CSS Transitions  (watch: 
 http://imgur.com/04OaRw3) -- by Marc Fawzi -- this live demo will include 
 Learning Outcomes for smooth animations, component styling, and sharing the 
 components via internal maven repo Artifactory and our TeamCity deploy 
 pipeline, among other things.
 
 
 A professionally produced video of the event that includes screen captures 
 of on-stage and Google Hangout presentations will be shared within a week 
 of the event.
 
 
 SF FOLKS, HOPE TO SEE YOU IN PERSON! 
 LOCAL BEER CHOICES AND SAME AWESOME PIZZAS (w/ GF/DF options)
 
 -- 
 You received this message because you are subscribed to the Google Groups 
 Reagent-Project group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to reagent-project+unsubscr...@googlegroups.com.
 To post to this group, send email to reagent-proj...@googlegroups.com.
 Visit this group at http://groups.google.com/group/reagent-project.
 For more options, visit https://groups.google.com/d/optout.
 
 -- 
 Note that posts from new members are moderated - please be patient with your 
 first post.
 --- 
 You received this message because you are subscribed to the Google Groups 
 ClojureScript group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to clojurescript+unsubscr...@googlegroups.com.
 To post to this group, send email to clojurescr...@googlegroups.com.
 Visit this group at http://groups.google.com/group/clojurescript.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ClojureScript] Re: [reagent] Re: [ANN] SF Reagent Meetup TODAY 6:30pm @Loyal3 @Meerkat

2015-04-17 Thread Marc Fawzi
a few people were able to see it but these free streaming apps are still
hit or miss ...or hit then miss ...

since google hangouts worked really well for our remote presenter we might
just use it next time to broadcast to everyone

Because Google :)

http://www.google.com/+/learnmore/hangouts/onair.html

On Fri, Apr 17, 2015 at 8:25 AM, Jamie Orchard-Hays jamie...@gmail.com
wrote:

 Excellent. I tried to watch on periscope, but it never showed up.

 Jamie
 On Apr 17, 2015, at 10:20 AM, Marc Fawzi marc.fa...@gmail.com wrote:

  yes, will post link here sometime next week
 
  all 3 presentations were screen captured too so it will be very easy to
 follow
 
  Sent from my iPhone
 
  On Apr 17, 2015, at 7:12 AM, Jeremy Vuillermet 
 jeremy.vuiller...@gmail.com wrote:
 
  Will the event video be uploaded somewhere ?
  If yes, where !? Missed the live stream unfortunately. Living in France
 doesn't help ...
 
 
  On Thursday, April 16, 2015 at 4:35:38 PM UTC+2, marc fawzi wrote:
  Thursday, April 16, 2015
  6:30 PM
 
 
  Loyal3
  150 California St Ste 400, San Francisco, CA (edit map)
  two blocks from the Embarcadero BART on California and Front
 
  SF Reagent Meetup Agenda:
  IMPORTANT: We will be streaming the event live MEERKAT @ 7:00PM PDT
 (GMT time -7 hours) today! -- Follow @marcfawzi on Twitter for live updates.
  To watch on the web (non-interactive mode)
 
 http://meerkatapp.co/marcfawzi/sch-1a612560-df50-4d13-a00c-c828eee742c9
  Meerkat is available on iOS and viewers are encouraged to download the
 app (interactive mode)
 
 https://itunes.apple.com/us/app/meerkat-tweet-live-video/id954105918?mt=8
 
  Unofficial Meerkat app for Android - made with love by Meerkat's
 engineers (interactive mode)
  https://play.google.com/store/apps/details?id=co.getair.meerkathl=en
 
  1. 6:30pm - 7:00pm:
  meet  greet, food and drinks, social
  2. 7:00pm - 7:30pm: (LIVE STREAM via Meerkat)
  Intro to Reagent-Template (repo:
 https://github.com/reagent-project/reagent-template) --- by its author
 Dmitri Sotnikov(also author of Luminus.) Dmitri will be presenting via
 Google hangout on a big screen and you will be able to ask him questions
 live. This should be interesting.
 
 
  3. 7:30pm - 7:45pm:  (LIVE STREAM via Meerkat)
  Re-frame and Reagent port of Angular's phonecat (repo:
 https://github.com/dhruvp/angular-phonecat-re-frame) -- by its author
 Dhruv Parthasarathy (MIT)
 
 
 
  4. 7:45-8:00pm  (LIVE STREAM via Meerkat, updated description):
  Reusable Reagent Components with App-State Driven CSS Transitions
 (watch: http://imgur.com/04OaRw3) -- by Marc Fawzi -- this live demo will
 include Learning Outcomes for smooth animations, component styling, and
 sharing the components via internal maven repo Artifactory and our TeamCity
 deploy pipeline, among other things.
 
 
  A professionally produced video of the event that includes screen
 captures of on-stage and Google Hangout presentations will be shared within
 a week of the event.
 
 
  SF FOLKS, HOPE TO SEE YOU IN PERSON!
  LOCAL BEER CHOICES AND SAME AWESOME PIZZAS (w/ GF/DF options)
 
  --
  You received this message because you are subscribed to the Google
 Groups Reagent-Project group.
  To unsubscribe from this group and stop receiving emails from it, send
 an email to reagent-project+unsubscr...@googlegroups.com.
  To post to this group, send email to reagent-proj...@googlegroups.com.
  Visit this group at http://groups.google.com/group/reagent-project.
  For more options, visit https://groups.google.com/d/optout.
 
  --
  Note that posts from new members are moderated - please be patient with
 your first post.
  ---
  You received this message because you are subscribed to the Google
 Groups ClojureScript group.
  To unsubscribe from this group and stop receiving emails from it, send
 an email to clojurescript+unsubscr...@googlegroups.com.
  To post to this group, send email to clojurescr...@googlegroups.com.
  Visit this group at http://groups.google.com/group/clojurescript.

 --
 You received this message because you are subscribed to the Google Groups
 Reagent-Project group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to reagent-project+unsubscr...@googlegroups.com.
 To post to this group, send email to reagent-proj...@googlegroups.com.
 Visit this group at http://groups.google.com/group/reagent-project.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop 

Core async pipeline should return to channel.

2015-04-17 Thread Claudius Nicolae
Since issue tracker for core.async is disabled on github, I'll spill this 
here.
I think pipeline should return the to channel, to make it 
threading-friendly:

(- (range 100)
   (a/to-chan)
   (a/pipeline 10 (a/chan) (map inc))
   (a/pipeline 2 (a/chan) (filter odd?)))

Currently return value is incidental.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[ANN} Aleph 0.4.0 released, plus Manifold, Dirigiste, and a whole host of other libraries

2015-04-17 Thread Zach Tellman
Hey all,

In preparation for Clojure/West, I'm formally releasing the latest Aleph 
and the libraries that surround it.  Aleph 0.4.0 has been running in 
production at Factual for half a year now, and across a variety of services 
is handling at peak 600k HTTP requests/sec (spread across 15-20 machines).  

Since the landscape of Clojure HTTP servers is pretty crowded these days, 
it's worth taking some time to explain how Aleph differs.  To be clear, 
most Clojure deployments likely use Jetty, and should continue to do so. 
 However, Aleph has some unique properties:

* It uses the Netty library, which is a high-performance and very 
battle-tested network layer for the JVM
* It is the only HTTP server that has *ubiquitous* asynchronous streams 
wherever data can be received or sent (all other libraries can only 
represent streaming requests using InputStreams, or like http-kit don't 
support streaming HTTP requests at all)
* It is the only server that has a WebSocket implementation with any 
support for per-connection backpressure.  I won't make this post even 
longer by going into why this is important, but this will be a central 
theme of my talk at Clojure/West next week if you're interested in hearing 
more.
* It uses consistent abstractions to represent network connections over a 
variety of protocols, which makes it straightforward to use the same 
application logic for all of them.

Again, none of these points mean you should immediately drop whatever 
you're using and move over to Aleph instead.  However, I do feel it 
represents the only (current) good option for using core.async or a similar 
stream abstraction to represent network data, which is an idea a number of 
people seem to be playing with lately.  Some examples of this can be found 
at http://ideolalia.com/aleph/literate.html.

A full list of the libraries:

aleph - https://github.com/ztellman/aleph - uses the excellent Netty 
library to expose HTTP, TCP, and UDP using a consistent asynchronous stream 
representation.

manifold - https://github.com/ztellman/manifold - an unopinionated stream 
representation designed to cleanly interoperate with other stream 
representations (Clojure's seqs, core.async channels, Java's 
BlockingQueues, and others).  This is the base stream representation for 
all network sources and sinks in Aleph.

dirigiste -  https://github.com/ztellman/dirigiste - a pure-Java library 
that provides instrumented, dynamically sized thread and object pools. 
 This is used for thread pools in Aleph's HTTP server, and for connection 
pools in Aleph's HTTP client.

byte-streams -  https://github.com/ztellman/byte-streams - a means of 
translating any byte representation into another.  Want to turn a 
core.async channel that emits byte-arrays into an InputStream, or maybe the 
other way around?  Look no further.  The library's conversion mechanism is 
extensible, which is used in Aleph to make Netty's custom byte 
representations interoperable with more familiar representations.

byte-transforms -  https://github.com/ztellman/byte-transforms - a curated 
collection of byte compression, hashing, and encoding mechanisms, which can 
work on anything byte-streams can convert.

While all these libraries are used in concert to create Aleph, I've been 
very careful to make sure any of them can be used by themselves.  If anyone 
has questions about them, the best place to get my attention is the Aleph 
mailing list: https://groups.google.com/forum/#!forum/aleph-lib.

I will be mentioning some of these libraries at my upcoming Clojure/West 
talk (http://clojurewest.org/speakers#ztellman), but I've also set aside an 
Unsession for specifically discussing these 
libraries: https://github.com/clojurewest/clojurewest2015/wiki/Unsessions. 
 If you're interested, please add your name to the list.

Zach

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN} Aleph 0.4.0 released, plus Manifold, Dirigiste, and a whole host of other libraries

2015-04-17 Thread adrian . medina
You really hit the ball out of the park with Aleph 0.4.0's API. You have 
set the standard for simplicity and power in a Clojure API with this 
release as far as I'm concerned. Thank for your your contribution! 

On Friday, April 17, 2015 at 5:06:30 PM UTC-4, Zach Tellman wrote:

 Hey all,

 In preparation for Clojure/West, I'm formally releasing the latest Aleph 
 and the libraries that surround it.  Aleph 0.4.0 has been running in 
 production at Factual for half a year now, and across a variety of services 
 is handling at peak 600k HTTP requests/sec (spread across 15-20 machines).  

 Since the landscape of Clojure HTTP servers is pretty crowded these days, 
 it's worth taking some time to explain how Aleph differs.  To be clear, 
 most Clojure deployments likely use Jetty, and should continue to do so. 
  However, Aleph has some unique properties:

 * It uses the Netty library, which is a high-performance and very 
 battle-tested network layer for the JVM
 * It is the only HTTP server that has *ubiquitous* asynchronous streams 
 wherever data can be received or sent (all other libraries can only 
 represent streaming requests using InputStreams, or like http-kit don't 
 support streaming HTTP requests at all)
 * It is the only server that has a WebSocket implementation with any 
 support for per-connection backpressure.  I won't make this post even 
 longer by going into why this is important, but this will be a central 
 theme of my talk at Clojure/West next week if you're interested in hearing 
 more.
 * It uses consistent abstractions to represent network connections over a 
 variety of protocols, which makes it straightforward to use the same 
 application logic for all of them.

 Again, none of these points mean you should immediately drop whatever 
 you're using and move over to Aleph instead.  However, I do feel it 
 represents the only (current) good option for using core.async or a similar 
 stream abstraction to represent network data, which is an idea a number of 
 people seem to be playing with lately.  Some examples of this can be found 
 at http://ideolalia.com/aleph/literate.html.

 A full list of the libraries:

 aleph - https://github.com/ztellman/aleph - uses the excellent Netty 
 library to expose HTTP, TCP, and UDP using a consistent asynchronous stream 
 representation.

 manifold - https://github.com/ztellman/manifold - an unopinionated stream 
 representation designed to cleanly interoperate with other stream 
 representations (Clojure's seqs, core.async channels, Java's 
 BlockingQueues, and others).  This is the base stream representation for 
 all network sources and sinks in Aleph.

 dirigiste -  https://github.com/ztellman/dirigiste - a pure-Java library 
 that provides instrumented, dynamically sized thread and object pools. 
  This is used for thread pools in Aleph's HTTP server, and for connection 
 pools in Aleph's HTTP client.

 byte-streams -  https://github.com/ztellman/byte-streams - a means of 
 translating any byte representation into another.  Want to turn a 
 core.async channel that emits byte-arrays into an InputStream, or maybe the 
 other way around?  Look no further.  The library's conversion mechanism is 
 extensible, which is used in Aleph to make Netty's custom byte 
 representations interoperable with more familiar representations.

 byte-transforms -  https://github.com/ztellman/byte-transforms - a 
 curated collection of byte compression, hashing, and encoding mechanisms, 
 which can work on anything byte-streams can convert.

 While all these libraries are used in concert to create Aleph, I've been 
 very careful to make sure any of them can be used by themselves.  If anyone 
 has questions about them, the best place to get my attention is the Aleph 
 mailing list: https://groups.google.com/forum/#!forum/aleph-lib.

 I will be mentioning some of these libraries at my upcoming Clojure/West 
 talk (http://clojurewest.org/speakers#ztellman), but I've also set aside 
 an Unsession for specifically discussing these libraries: 
 https://github.com/clojurewest/clojurewest2015/wiki/Unsessions.  If 
 you're interested, please add your name to the list.

 Zach


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Are keys and vals guaranteed to return in the same order?

2015-04-17 Thread Michael Blume
In other people's Clojure code I sometimes see things like

(zipmap
  (map some-fn (keys m))
  (map other-fn (vals m)))

If it were my code I'd be much more inclined to write

(into {}
  (for [[k v] m]
[(some-fn k) (other-fn v)]))

Is this a to-each-their-own thing or is the latter preferred?

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Are keys and vals guaranteed to return in the same order?

2015-04-17 Thread Ambrose Bonnaire-Sergeant
keys/vals are documented
https://github.com/clojure/clojure/blob/028af0e0b271aa558ea44780e5d951f4932c7842/src/clj/clojure/core.clj#L1478
to return the same order as seq. This is a safe assumption.

Thanks,
Ambrose

On Fri, Apr 17, 2015 at 5:39 PM, Michael Blume blume.m...@gmail.com wrote:


 In other people's Clojure code I sometimes see things like

 (zipmap
   (map some-fn (keys m))
   (map other-fn (vals m)))

 If it were my code I'd be much more inclined to write

 (into {}
   (for [[k v] m]
 [(some-fn k) (other-fn v)]))

 Is this a to-each-their-own thing or is the latter preferred?

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Core async pipeline should return to channel.

2015-04-17 Thread Francis Avila
Core.async issues are reported on Clojure's 
JIRA: http://dev.clojure.org/jira/browse/ASYNC

pipeline does not have an incidental return value: it returns a channel 
which closes when there are no more transformation results, i.e. when the 
pipelining process is finished. There is no other way to get this 
information, especially when close? is false.

You're right this hurts threading, but sometimes you do need to monitor 
when pipelining is done. In fact, the pipe function does return the to 
channel like you suggest, and I had to write my own version that returned 
its inner go-loop because I needed to monitor the piping 
process. 
https://gist.github.com/favila/8e7ad6ea5b01bd7466ff#file-async-util-clj-L27


On Friday, April 17, 2015 at 2:33:58 PM UTC-5, Claudius Nicolae wrote:

 Since issue tracker for core.async is disabled on github, I'll spill this 
 here.
 I think pipeline should return the to channel, to make it 
 threading-friendly:

 (- (range 100)
(a/to-chan)
(a/pipeline 10 (a/chan) (map inc))
(a/pipeline 2 (a/chan) (filter odd?)))

 Currently return value is incidental.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Are keys and vals guaranteed to return in the same order?

2015-04-17 Thread Ambrose Bonnaire-Sergeant
Clearly this assumes immutable maps.

On Fri, Apr 17, 2015 at 5:42 PM, Ambrose Bonnaire-Sergeant 
abonnaireserge...@gmail.com wrote:

 keys/vals are documented
 https://github.com/clojure/clojure/blob/028af0e0b271aa558ea44780e5d951f4932c7842/src/clj/clojure/core.clj#L1478
 to return the same order as seq. This is a safe assumption.

 Thanks,
 Ambrose

 On Fri, Apr 17, 2015 at 5:39 PM, Michael Blume blume.m...@gmail.com
 wrote:


 In other people's Clojure code I sometimes see things like

 (zipmap
   (map some-fn (keys m))
   (map other-fn (vals m)))

 If it were my code I'd be much more inclined to write

 (into {}
   (for [[k v] m]
 [(some-fn k) (other-fn v)]))

 Is this a to-each-their-own thing or is the latter preferred?

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.




-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Are keys and vals guaranteed to return in the same order?

2015-04-17 Thread Andy Fingerhut
And it assumes that they are _identical_ maps that you are calling keys and
vals on.

Equal (via =) not-sorted maps do *not* guarantee that they will have the
same seq order as each other, and in some cases do not, due to hash
collisions in hash maps having items in a linked list in whatever order
they happened to be added to the map.  Similarly for array maps.

Andy

On Fri, Apr 17, 2015 at 2:44 PM, Ambrose Bonnaire-Sergeant 
abonnaireserge...@gmail.com wrote:

 Clearly this assumes immutable maps.

 On Fri, Apr 17, 2015 at 5:42 PM, Ambrose Bonnaire-Sergeant 
 abonnaireserge...@gmail.com wrote:

 keys/vals are documented
 https://github.com/clojure/clojure/blob/028af0e0b271aa558ea44780e5d951f4932c7842/src/clj/clojure/core.clj#L1478
 to return the same order as seq. This is a safe assumption.

 Thanks,
 Ambrose

 On Fri, Apr 17, 2015 at 5:39 PM, Michael Blume blume.m...@gmail.com
 wrote:


 In other people's Clojure code I sometimes see things like

 (zipmap
   (map some-fn (keys m))
   (map other-fn (vals m)))

 If it were my code I'd be much more inclined to write

 (into {}
   (for [[k v] m]
 [(some-fn k) (other-fn v)]))

 Is this a to-each-their-own thing or is the latter preferred?

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send
 an email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.



  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN} Aleph 0.4.0 released, plus Manifold, Dirigiste, and a whole host of other libraries

2015-04-17 Thread Dmitri
I'd like to add Aleph to the Luminus template and I was wondering if 
there's an equivalent of dev mode available for other servers where it 
watches for changes in source and reloads them. I did a cursory look but 
didn't spot anything like a -dev option.

On Friday, April 17, 2015 at 5:06:30 PM UTC-4, Zach Tellman wrote:

 Hey all,

 In preparation for Clojure/West, I'm formally releasing the latest Aleph 
 and the libraries that surround it.  Aleph 0.4.0 has been running in 
 production at Factual for half a year now, and across a variety of services 
 is handling at peak 600k HTTP requests/sec (spread across 15-20 machines).  

 Since the landscape of Clojure HTTP servers is pretty crowded these days, 
 it's worth taking some time to explain how Aleph differs.  To be clear, 
 most Clojure deployments likely use Jetty, and should continue to do so. 
  However, Aleph has some unique properties:

 * It uses the Netty library, which is a high-performance and very 
 battle-tested network layer for the JVM
 * It is the only HTTP server that has *ubiquitous* asynchronous streams 
 wherever data can be received or sent (all other libraries can only 
 represent streaming requests using InputStreams, or like http-kit don't 
 support streaming HTTP requests at all)
 * It is the only server that has a WebSocket implementation with any 
 support for per-connection backpressure.  I won't make this post even 
 longer by going into why this is important, but this will be a central 
 theme of my talk at Clojure/West next week if you're interested in hearing 
 more.
 * It uses consistent abstractions to represent network connections over a 
 variety of protocols, which makes it straightforward to use the same 
 application logic for all of them.

 Again, none of these points mean you should immediately drop whatever 
 you're using and move over to Aleph instead.  However, I do feel it 
 represents the only (current) good option for using core.async or a similar 
 stream abstraction to represent network data, which is an idea a number of 
 people seem to be playing with lately.  Some examples of this can be found 
 at http://ideolalia.com/aleph/literate.html.

 A full list of the libraries:

 aleph - https://github.com/ztellman/aleph - uses the excellent Netty 
 library to expose HTTP, TCP, and UDP using a consistent asynchronous stream 
 representation.

 manifold - https://github.com/ztellman/manifold - an unopinionated stream 
 representation designed to cleanly interoperate with other stream 
 representations (Clojure's seqs, core.async channels, Java's 
 BlockingQueues, and others).  This is the base stream representation for 
 all network sources and sinks in Aleph.

 dirigiste -  https://github.com/ztellman/dirigiste - a pure-Java library 
 that provides instrumented, dynamically sized thread and object pools. 
  This is used for thread pools in Aleph's HTTP server, and for connection 
 pools in Aleph's HTTP client.

 byte-streams -  https://github.com/ztellman/byte-streams - a means of 
 translating any byte representation into another.  Want to turn a 
 core.async channel that emits byte-arrays into an InputStream, or maybe the 
 other way around?  Look no further.  The library's conversion mechanism is 
 extensible, which is used in Aleph to make Netty's custom byte 
 representations interoperable with more familiar representations.

 byte-transforms -  https://github.com/ztellman/byte-transforms - a 
 curated collection of byte compression, hashing, and encoding mechanisms, 
 which can work on anything byte-streams can convert.

 While all these libraries are used in concert to create Aleph, I've been 
 very careful to make sure any of them can be used by themselves.  If anyone 
 has questions about them, the best place to get my attention is the Aleph 
 mailing list: https://groups.google.com/forum/#!forum/aleph-lib.

 I will be mentioning some of these libraries at my upcoming Clojure/West 
 talk (http://clojurewest.org/speakers#ztellman), but I've also set aside 
 an Unsession for specifically discussing these libraries: 
 https://github.com/clojurewest/clojurewest2015/wiki/Unsessions.  If 
 you're interested, please add your name to the list.

 Zach


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN} Aleph 0.4.0 released, plus Manifold, Dirigiste, and a whole host of other libraries

2015-04-17 Thread Zach Tellman
Hey Dmitri,

I haven't used any sort of dev-mode before (I just update stuff in the REPL
when necessary), but it seems like something like that belongs in
middleware, not the server.  The server is just calling a function, it
shouldn't care if something else is changing that function's behavior.

If other servers have this behavior embedded, maybe it can be extracted
into a standalone library?

Zach

On Fri, Apr 17, 2015 at 3:47 PM, Dmitri dmitri.sotni...@gmail.com wrote:

 I'd like to add Aleph to the Luminus template and I was wondering if
 there's an equivalent of dev mode available for other servers where it
 watches for changes in source and reloads them. I did a cursory look but
 didn't spot anything like a -dev option.

 On Friday, April 17, 2015 at 5:06:30 PM UTC-4, Zach Tellman wrote:

 Hey all,

 In preparation for Clojure/West, I'm formally releasing the latest Aleph
 and the libraries that surround it.  Aleph 0.4.0 has been running in
 production at Factual for half a year now, and across a variety of services
 is handling at peak 600k HTTP requests/sec (spread across 15-20 machines).

 Since the landscape of Clojure HTTP servers is pretty crowded these days,
 it's worth taking some time to explain how Aleph differs.  To be clear,
 most Clojure deployments likely use Jetty, and should continue to do so.
 However, Aleph has some unique properties:

 * It uses the Netty library, which is a high-performance and very
 battle-tested network layer for the JVM
 * It is the only HTTP server that has *ubiquitous* asynchronous streams
 wherever data can be received or sent (all other libraries can only
 represent streaming requests using InputStreams, or like http-kit don't
 support streaming HTTP requests at all)
 * It is the only server that has a WebSocket implementation with any
 support for per-connection backpressure.  I won't make this post even
 longer by going into why this is important, but this will be a central
 theme of my talk at Clojure/West next week if you're interested in hearing
 more.
 * It uses consistent abstractions to represent network connections over a
 variety of protocols, which makes it straightforward to use the same
 application logic for all of them.

 Again, none of these points mean you should immediately drop whatever
 you're using and move over to Aleph instead.  However, I do feel it
 represents the only (current) good option for using core.async or a similar
 stream abstraction to represent network data, which is an idea a number of
 people seem to be playing with lately.  Some examples of this can be found
 at http://ideolalia.com/aleph/literate.html.

 A full list of the libraries:

 aleph - https://github.com/ztellman/aleph - uses the excellent Netty
 library to expose HTTP, TCP, and UDP using a consistent asynchronous stream
 representation.

 manifold - https://github.com/ztellman/manifold - an unopinionated
 stream representation designed to cleanly interoperate with other stream
 representations (Clojure's seqs, core.async channels, Java's
 BlockingQueues, and others).  This is the base stream representation for
 all network sources and sinks in Aleph.

 dirigiste -  https://github.com/ztellman/dirigiste - a pure-Java library
 that provides instrumented, dynamically sized thread and object pools.
 This is used for thread pools in Aleph's HTTP server, and for connection
 pools in Aleph's HTTP client.

 byte-streams -  https://github.com/ztellman/byte-streams - a means of
 translating any byte representation into another.  Want to turn a
 core.async channel that emits byte-arrays into an InputStream, or maybe the
 other way around?  Look no further.  The library's conversion mechanism is
 extensible, which is used in Aleph to make Netty's custom byte
 representations interoperable with more familiar representations.

 byte-transforms -  https://github.com/ztellman/byte-transforms - a
 curated collection of byte compression, hashing, and encoding mechanisms,
 which can work on anything byte-streams can convert.

 While all these libraries are used in concert to create Aleph, I've been
 very careful to make sure any of them can be used by themselves.  If anyone
 has questions about them, the best place to get my attention is the Aleph
 mailing list: https://groups.google.com/forum/#!forum/aleph-lib.

 I will be mentioning some of these libraries at my upcoming Clojure/West
 talk (http://clojurewest.org/speakers#ztellman), but I've also set aside
 an Unsession for specifically discussing these libraries:
 https://github.com/clojurewest/clojurewest2015/wiki/Unsessions.  If
 you're interested, please add your name to the list.

 Zach

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 

[ANN] Immutant 2.0.0

2015-04-17 Thread Toby Crawley
We released Immutant 2.0.0 today, which includes many improvements
over 1.x, the most notable being an application server is no longer
required. For details on the release, see
http://immutant.org/news/2015/04/17/announcing-2-final/.

With 2.0.0, Immutant has evolved from an application server for
Clojure to an integrated suite of Clojure libraries for web,
messaging, scheduling, transactions, and caching. And though they are
now fully-functional embedded within your app, they each become
automatically enhanced (session replication, load-balanced message
distribution, linearly scalable caches, HA singleton jobs and daemons)
when deployed to a WildFly cluster.

2.0.0 has a much smaller footprint, a very fast Undertow web server,
async web support (websockets, streaming HTTP, Server-Sent Events), a
more permissive Apache license, and cleaner API's when compared
to 1.x.

# Immutant at Clojure/West

I'll be hosting an unsession at Clojure/West Monday night
(https://github.com/clojurewest/clojurewest2015/wiki/Unsessions), drop
in if you are attending and interested, or find me in the hallway.

- Toby

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.