[JOB] OkLetsPlay | SF Bay Area | Employee #3

2018-04-02 Thread Jeaye
Hey folks,

OkLetsPlay is a young startup building LetsBet, a patented social betting 
platform that enables real money and cryptocurrency betting on skill-based 
video games.

We're looking for an experienced and enthusiastic Clojure developer who will 
help pioneer both our distributed back-end and our mobile front-end. We like to 
keep things clean, elegant, and well-tested; we're interested in someone who 
feels the same. We're in the Bay Area and we're interested in a dev who is as 
well.

Front-end: ClojureScript + React Native + Firebase
Back-end: Clojure + Heroku + Postgres + Firebase

Apply here: 
https://angel.co/okletsplay/jobs/292089-software-engineer-clojure-developer

Or email me: hiring at okletsplay.com

Cheers,
Jeaye

-- 
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: Is it wrong that I'm thinking about this?

2018-01-03 Thread Jeaye
I'll note, Orchestra added defn-spec in November and I forgot to mention it 
here.

Docs: https://github.com/jeaye/orchestra#defn-spec

On Wed, Jan 03, 2018 at 10:43:16PM +, Steven Collins wrote:
> This thread is a bit older, but since my team and I used prismatic/schema a 
> lot and found the specification next to the definition of a function helpful, 
> I published a library (https://github.com/lomin/sayang) that makes our 
> migration from prismatic/schema to clojure/spec easier. Maybe this is helpful 
> for you as well.
> 
> -- 
> 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.


signature.asc
Description: PGP signature


Re: Clojure's long startup time analysis

2018-01-02 Thread Jeaye
Nice write up; thanks for spending the time to document this. It's my first 
time seeing clojure-goes-fast.com, but I think you already have some great 
posts.

On Tue, Jan 02, 2018 at 11:52:12AM +, Alexander Yakushev wrote:
> People often ask why Clojure is so slow to boot up. In this blog post, I 
> analyze the profile pictures of different ways to start Clojure — raw, with 
> Leiningen, and with Boot. Enjoy!
> 
> http://clojure-goes-fast.com/blog/clojures-slow-start/
> 
> -- 
> 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: Anyone mourns the loss of: tryclj.com ?

2017-12-16 Thread Jeaye
On Sat, Dec 16, 2017 at 03:59:11AM +, Zach Oakes wrote:
> I think a JVM clojure web repl is pretty hard to keep safe from mischief 
> since it needs to execute code server-side.

Or would it... http://plasma-umass.github.io/doppio-demo/

-- 
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: Help ship Clojure 1.9!

2017-09-28 Thread Jeaye
This has been the only issue we've run into with 1.9.0-beta1 ( ticket is here 
https://dev.clojure.org/jira/browse/CLJS-2352 ). On our back-end, all tests are 
good, but we can't currently use beta1 (or alpha20) on the front-end, since 
this issue causes CLJS to choke. I'm hoping that a new version of CLJS comes 
out before Clojure 1.9.0 so that people don't get the false impression that the 
latest of each is compatible with the other.

J

On Thu, Sep 28, 2017 at 11:13:43AM -0400, Stuart Halloway wrote:
> Hi Nathan,
> 
> I suspect that is the same as
> https://github.com/clojure/clojurescript/commit/89914d2ead964122f99e638edda0cd96d330cb66.
> I don't have a sense of how many CLJS project this is going to cascade
> into, or what all will be needed. Anyone?
> 
> Stu
> 
> On Thu, Sep 28, 2017 at 10:44 AM, Nathan Fisher 
> wrote:
> 
> > Hi Stuart,
> >
> > Working to create a minimal test case but upgrading from alpha19 to beta1
> > seems to have broken lein-cljsbuild.
> >
> > I get the following error:
> >
> > >> snip >>
> >
> > *SEVERE:
> > /Users/nathanfisher/workspace/mklpq/target/cljsbuild-compiler-0/cljs/core.js:3579:
> > ERROR - Parse error. primary expression expected*
> >
> > *case ##Inf:*
> >
> > *  ^*
> >
> >
> > *Sep 28, 2017 3:23:10 PM com.google.javascript.jscomp.LoggerErrorManager
> > printSummary*
> >
> > *WARNING: 1 error(s), 0 warning(s)*
> >
> > *ERROR: JSC_PARSE_ERROR. Parse error. primary expression expected at
> > /Users/nathanfisher/workspace/mklpq/target/cljsbuild-compiler-0/cljs/core.js
> > line 3579 : 6*
> > << snip <<
> >
> > Changes in my project.clj deps are as follows:
> >
> > *- [org.clojure/clojure "1.9.0-alpha19" :scope "provided"]*
> >
> > *+ [org.clojure/clojure "1.9.0-beta1" :scope "provided"]*
> >
> > A revert on my project.clj to alpha19 eliminates the error.
> >
> > Cheers!
> >
> > Nathan
> >
> > On Thu, 28 Sep 2017 at 15:00 Stuart Halloway 
> > wrote:
> >
> >> Clojure 1.9 has been quite stable throughout the alpha period, and we now
> >> hope to release after a very short beta. Please test your existing programs
> >> on the latest beta (see below), and respond on this thread ASAP if you
> >> discover anything you believe to be a regression.
> >>
> >> Thanks!
> >> Stu
> >>
> >> ;; Clojure deps.edn
> >> org.clojure/clojure {:mvn/version "1.9.0-beta1"}
> >>
> >> ;; lein & boot
> >> [org.clojure/clojure "1.9.0-beta1"]
> >>
> >> --
> >> 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.
> >>
> > --
> > - sent from my mobile
> >
> > --
> > 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 

Re: Is it wrong that I'm thinking about this?

2017-09-23 Thread Jeaye
Last I checked, on our Clojure back-end, instrumentation was taking up 2% of 
our total test running time. This is with jdbc's instrumentation disabled 
though; I think it's significantly slower due to its extensive usage of s/or 
s/alt and spec regexes. Our specs are almost entirely s/keys and clojure.core 
predicates.

Our fn spec coverage is 47% on the back-end. So the performance impact of 
instrumentation really hasn't been a concern.

On Fri, Sep 22, 2017 at 10:18:52PM -0700, Didier wrote:
> > The goal is to add the macro to orchestra, as a tool to help encourage 
> > spec'ing all functions.
> 
> That would be great. My macro for now was also not supporting all defn cases 
> yet. And it automatically instruments the fn with orchestra. So if orchestra 
> had a more complete one defacto, I wouldn't need one.
> 
> For performance, I've been thinking that caching validation (with some 
> configurable cache bounds), or having sample based validation, so validating 
> only a percentage of calls, and maybe even having the sampling rate 
> controlled by execution time metrics, or cpu metrics or call rates, etc. 
> would be interesting possibilities. So in prod, you could tweek the 
> validation to only get as much of it as you can afford.
> 
> -- 
> 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.


signature.asc
Description: PGP signature


Re: Is it wrong that I'm thinking about this?

2017-09-22 Thread Jeaye
I think you're on the right track, personally. We've had a macro similar to 
that which we've been using for a handful of months. Just this week, I rewrote 
it using the defn specs from clojure.specs.alpha to support all of the forms 
which defn supports, including multiple arities with different specs for each. 
The goal is to add the macro to orchestra, as a tool to help encourage spec'ing 
all functions.

A lot of people are separating their specs from their functions and can make 
some arguments for why it should be done. For my team, in practice, it's been 
much easier to keep them as close as possible to their functions. This helps 
minimize time spent maintaining them, ensures that they don't fall out of date, 
and encourages their use, as you've demonstrated, by inlining them into the 
typical defn-like environment.

On Tue, Sep 19, 2017 at 02:29:33PM -0700, Didier wrote:
> I've been thinking since using Clojure.spec fdef that I'd like something 
> like this:
> 
> (defns foo
>   [x string? y int?] string?
>forms)
> 
> Where an s/fdef spec automatically build of this form:
> 
> (s/fdef foo
>   :args (s/cat :x string? :y int?)
>   :ret string?))
> 
> 
> And obviously the foo var and function would also be created.
> 
> I feel like the core team didn't choose this route though, and so I'm 
> curious why, and if its actually a bad idea?
> 
> -- 
> 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.


signature.asc
Description: PGP signature


Re: [ANN] Clojure 1.9.0-alpha20

2017-09-08 Thread Jeaye
Similar to Tommi, I'm also seeing issues with the new syntax when combined with 
JS on our front-end:

[org.clojure/clojure "1.9.0-alpha20"]
[org.clojure/clojurescript "1.9.908"]

> SEVERE: my-project/client/target/android/cljs/core.js:3579: ERROR - Parse 
> error. primary expression expected
> case ##Inf:

This is in the definition of cljs.core.hash. It looks like folks using Clojure 
+ ClojureScript should hold off on using alpha20.

On Fri, Sep 08, 2017 at 12:11:38PM +0100, Nicola Mometto wrote:
> That looks like a cljs issue, it shouldn't emit NaNs at all there, not
> relevant to the clojure change around how they are printed.
> 
> On 8 Sep 2017 8:03 a.m., "Tommi Reiman"  wrote:
> 
> Hi.
> 
> The combo:
> 
> [org.clojure/clojure "1.9.0-alpha20"]
> [org.clojure/clojurescript "1.9.660"]
> 
> seems to be emitting broken js:
> 
> return new cljs.core.PersistentVector(null, 2, 5,
> cljs.core.PersistentVector.EMPTY_NODE, [##NaN,##NaN], null);
> 
> With 1.9.0-alpha19 it gives:
> 
> return new cljs.core.PersistentVector(null, 2, 5,
> cljs.core.PersistentVector.EMPTY_NODE, [NaN,NaN], null);
> 
> regards,
> 
> Tommi
> 
> perjantai 8. syyskuuta 2017 0.48.51 UTC+3 Alex Miller kirjoitti:
> >
> > Clojure 1.9.0-alpha20 is now available.
> >
> > Try it via
> >
> > - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.9.0-
> > alpha20
> > - Leiningen: [org.clojure/clojure "1.9.0-alpha20"]
> >
> > 1.9.0-alpha20 includes the following changes since 1.9.0-alpha19:
> >
> > - CLJ-1074 - (new) add new ## reader macro for symbolic values, and
> >read/print support for double vals ##Inf, ##-Inf, ##NaN
> > - CLJ-1454 - (new) add swap-vals! and reset-vals! that return both old and
> > new values
> > - CLJ-2184 - (errors) propagate meta in doto forms to improve error
> > reporting
> > - CLJ-2210 - (perf) cache class derivation in compiler to improve compiler
> > performance
> > - CLJ-2070 - (perf) clojure.core/delay - improve performance
> > - CLJ-1917 - (perf) reducing seq over string should call String/length
> > outside of loop
> > - CLJ-1901 - (perf) amap - should call alength only once
> > - CLJ-99   - (perf) min-key and max-key - evaluate k on each arg at most
> > once
> > - CLJ-2188 - (perf) slurp - mark return type as String
> > - CLJ-2108 - (startup time) delay loading of spec and core specs (still
> > more to do on this)
> > - CLJ-2204 - (security) disable serialization of proxy classes to avoid
> > potential issue when deserializing
> > - CLJ-2048 - (fix) specify type to avoid ClassCastException when stack
> > trace is elided by JVM
> > - CLJ-1887 - (fix) IPersistentVector.length() - implement missing method
> > - CLJ-1841 - (fix) bean - iterator was broken
> > - CLJ-1714 - (fix) using a class in a type hint shouldn't load the class
> > - CLJ-1398 - (fix) clojure.java.javadoc/javadoc - update doc urls
> > - CLJ-1371 - (fix) Numbers.divide(Object, Object) - add checks for NaN
> > - CLJ-1358 - (fix) doc - does not expand special cases properly (try,
> > catch)
> > - CLJ-1705 - (fix) vector-of - fix NullPointerException if given
> > unrecognized type
> > - CLJ-2170 - (doc) fix improperly located docstrings
> > - CLJ-2156 - (doc) clojure.java.io/copy - doc char[] support
> > - CLJ-2051 - (doc) clojure.instant/validated docstring - fix typo
> > - CLJ-2104 - (doc) clojure.pprint docstring - fix typo
> > - CLJ-2028 - (doc) filter, filterv, remove, take-while - fix docstrings
> > - CLJ-1873 - (doc) require, *data-readers* - add .cljc files to docstrings
> > - CLJ-1159 - (doc) clojure.java.io/delete-file - improve docstring
> > - CLJ-2039 - (doc) deftype - fix typo in docstring
> > - CLJ-1918 - (doc) await - improve docstring re shutdown-agents
> > - CLJ-1837 - (doc) index-of, last-index-of - clarify docstrings
> > - CLJ-1826 - (doc) drop-last - fix docstring
> > - CLJ-1859 - (doc) zero?, pos?, neg? - fix docstrings
> >
> -- 
> 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
> 

Re: [ANN] Clojure 1.9.0-alpha20

2017-09-07 Thread Jeaye
All of our tests are passing with this, so it looks good to me.

Thanks!

On Thu, Sep 07, 2017 at 02:48:51PM -0700, Alex Miller wrote:
> Clojure 1.9.0-alpha20 is now available.
> 
> Try it via
> 
> - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.9.0-alpha20
> - Leiningen: [org.clojure/clojure "1.9.0-alpha20"]
> 
> 1.9.0-alpha20 includes the following changes since 1.9.0-alpha19:
> 
> - CLJ-1074 - (new) add new ## reader macro for symbolic values, and
>read/print support for double vals ##Inf, ##-Inf, ##NaN
> - CLJ-1454 - (new) add swap-vals! and reset-vals! that return both old and 
> new values
> - CLJ-2184 - (errors) propagate meta in doto forms to improve error 
> reporting
> - CLJ-2210 - (perf) cache class derivation in compiler to improve compiler 
> performance
> - CLJ-2070 - (perf) clojure.core/delay - improve performance
> - CLJ-1917 - (perf) reducing seq over string should call String/length 
> outside of loop
> - CLJ-1901 - (perf) amap - should call alength only once
> - CLJ-99   - (perf) min-key and max-key - evaluate k on each arg at most 
> once
> - CLJ-2188 - (perf) slurp - mark return type as String
> - CLJ-2108 - (startup time) delay loading of spec and core specs (still 
> more to do on this)
> - CLJ-2204 - (security) disable serialization of proxy classes to avoid 
> potential issue when deserializing
> - CLJ-2048 - (fix) specify type to avoid ClassCastException when stack 
> trace is elided by JVM
> - CLJ-1887 - (fix) IPersistentVector.length() - implement missing method
> - CLJ-1841 - (fix) bean - iterator was broken
> - CLJ-1714 - (fix) using a class in a type hint shouldn't load the class
> - CLJ-1398 - (fix) clojure.java.javadoc/javadoc - update doc urls
> - CLJ-1371 - (fix) Numbers.divide(Object, Object) - add checks for NaN
> - CLJ-1358 - (fix) doc - does not expand special cases properly (try, catch)
> - CLJ-1705 - (fix) vector-of - fix NullPointerException if given 
> unrecognized type
> - CLJ-2170 - (doc) fix improperly located docstrings
> - CLJ-2156 - (doc) clojure.java.io/copy - doc char[] support
> - CLJ-2051 - (doc) clojure.instant/validated docstring - fix typo
> - CLJ-2104 - (doc) clojure.pprint docstring - fix typo
> - CLJ-2028 - (doc) filter, filterv, remove, take-while - fix docstrings
> - CLJ-1873 - (doc) require, *data-readers* - add .cljc files to docstrings
> - CLJ-1159 - (doc) clojure.java.io/delete-file - improve docstring
> - CLJ-2039 - (doc) deftype - fix typo in docstring
> - CLJ-1918 - (doc) await - improve docstring re shutdown-agents
> - CLJ-1837 - (doc) index-of, last-index-of - clarify docstrings
> - CLJ-1826 - (doc) drop-last - fix docstring
> - CLJ-1859 - (doc) zero?, pos?, neg? - fix docstrings
> 
> -- 
> 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.


signature.asc
Description: PGP signature


Re: Entity–component–system and Clojure

2017-08-15 Thread Jeaye
Alex Kehayias gave a talk about designing a functional game engine in 
ClojureScript, using components, here: 
https://www.youtube.com/watch?v=TW1ie0pIO_E I thought it was a superb talk.

There's also Arcadia, here: https://github.com/arcadia-unity/Arcadia which 
wrap's Unity3D in Clojure, but Unity takes about the most imperative approach 
to components as possible.

In general, and as Alex shows, the entity-component approach can work very well 
with game engines. The issues of coupling can either be tackled with explicit 
dependency declaration or by a more flexible async notification/inbox system. I 
haven't yet built something like this, though I'd like to, but, if/when I do, 
my design would be very much along the lines of Alex's.

J

On Tue, Aug 15, 2017 at 05:52:38PM -0700, Didier wrote:
> I recently stumbled upon the entity-component-system design pattern which 
> is popular in game engine 
> design: 
> https://en.wikipedia.org/wiki/Entity%E2%80%93component%E2%80%93system, 
> and really liked what I saw, thought it could be a good fit for Clojure.
> 
> Basically, it has three concepts:
> 
> 1) Components are pure data grouped together as per a given domain. In a 
> game engine that would be for example the 3D positional data related to 
> positioning of objects in the 3D scene. So one component would be 
> PositionComponent and it would have :X, :Y.
> 
> 2) Entities are collections of Components with a unique ID.
> 
> 3) Systems are processing functions that take an entity, transforming their 
> components' data, or performing side effects from them.
> 
> Generally, in games, they inverse the entities, so instead of having 
> entities contain components, they have components stored in an array with 
> the index being the entity ID, and another array which contains the set of 
> components for the entity at that index. All of this is kept track of by a 
> world container.
> 
> (def world
>   {:entities []
>:comp1 []
>:comp2 []
>...})
> 
> 
> So say you want to create an entity which is composed of comp1 and comp2, 
> you would just add to the world :entities at index 0 a set #{:comp1 
> :comp2}, and to the world :comp1 and :comp2 vectors at index 0 an initial 
> component1 and component2 data structure. In games, for performance, they 
> use a bitmask instead of a set for the entry of :entities.
> 
> 
> I'm not sure this structure is necessary if trying to use the pattern not 
> for game, but it doesn't hurt either I think.
> 
> What I like about this, is I'm thinking its possible to use it to do 
> data-driven functional object modeling in Clojure. A problem I face, and I 
> feel other faces in Clojure, is how do you model entities without OOP? I 
> find this creates a kind of OO that is functional and data driven.
> 
> You would spec a bunch of component, they're pure data. Then you'd define 
> systems (aka functions) which take an entity, and operate on the entity's 
> components (aka its data). At first glance, this appears to just be OOP, 
> but there's no inheritance here, and functions that operate or related data 
> are decoupled from the data. Systems are implicitly mapped to components, 
> based on what they work on. So you can extend all entities with more 
> functionality easily. You can also create entities from components on the 
> fly.
> 
> On second glance, I wonder what's different about this from just functions 
> operating over data. I think its just a more rigid means to do so when you 
> need the concept of entities. In a way, entities act as a class, in that 
> they're a template of data. A system works over that template.
> 
> Has anyone experimented with this in Clojure?
> 
> -- 
> 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 

Re: [ANN] expound 0.1.2

2017-07-29 Thread Jeaye
This looks superb, Ben, thanks for the awesome work.

On Tue, Jul 25, 2017 at 04:16:44PM -0700, Ben Brinckerhoff wrote:
> Expound formats clojure.spec errors in a way that is optimized for humans 
> to read. Expound works in Clojure and Clojurescript.
> 
> This release provides human-optimized error messages when using a number of 
> spec features, including instrumentation and `assert`.
> 
> More information is available in the README 
> .
> 
> -- 
> 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.


signature.asc
Description: PGP signature


[ANN] Orchestra 2017.07.04-1 (now supporting ClojureScript)

2017-07-08 Thread Jeaye
Folks,

I'm happy to announce that a new version of Orchestra has been released this 
past week.

# Where to find it?
https://github.com/jeaye/orchestra
[orchestra "2017.07.04-1"]

# What is it?
Orchestra is a Clojure(Script) library made as a drop-in replacement for 
clojure.spec.test.alpha, which provides custom instrumentation that validates 
all aspects of function specs. By default, clojure.spec will only instrument 
:args. This leaves out :ret and :fn from automatic validation; Orchestra checks 
all of them for you.

# What changed since 0.3.0?
ClojureScript support!

# Any more info?
You can read my call to arms for instrumentation here: 
https://blog.jeaye.com/2017/05/31/clojure-spec/ Also, some notes on porting 
Orchestra to ClojureScript, which extend to porting Clojure projects to 
ClojureScript in general, here: 
https://blog.jeaye.com/2017/06/30/orchestra-cljs/

# When should I use it?
I strongly believe we can benefit from this instrumentation throughout the 
entire development cycle, so I recommend both your tests and your developments 
builds use instrumentation by default. If any functions misbehave, you'll know 
immediately and you'll have the context to find out why.

Cheers,
Jeaye

-- 
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: was Re: ANN: Orchestra, complete instrumentation for clojure.spec

2017-04-06 Thread Jeaye
On Thu, Apr 06, 2017 at 01:47:17PM -0700, Raoul Duke wrote:
> I am writing to ignorantly sincerely ask how spec + Orchestra compares to
> other statically typed out of the box JVM languages. What are the succint
> wins over not Scala shudder but eg Kotlin Ceylon, heck Frege, et. al.?

clojure.spec validates data at run-time. spec's instrumentation, and thus 
Orchestra's, checks function arguments, return values, etc _when the function 
is called_, not during AOT compilation.

In contrast, a static type system would catch theses errors before the program 
itself even runs. In my opinion, clojure.spec + Orchestra still falls quite 
short of a static type system, but it's the best setup I've seen for automated 
data validation as it moves through all parts of your Clojure programs. Even in 
languages with static type systems (C++, even), you almost certainly won't get 
automatic validation of the data, for each function call, return, etc, given 
only a declarative spec. In that way, clojure.spec alone provides something of 
great value.

Aside from that, you're talking about the gains of Clojure versus all of those 
languages you listed. That's not related to Orchestra and would likely be 
better answered by people more knowledgeable than me.

-- 
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.


signature.asc
Description: PGP signature


Re: ANN: Orchestra, complete instrumentation for clojure.spec

2017-04-06 Thread Jeaye
On Thu, Apr 06, 2017 at 11:31:46AM -0700, Didier wrote:
> Looks good. May I ask, what kind of support are we looking at? Is this 
> something you reasonably see being carried to the release of 1.9? Or was it 
> more of an experiment?

I'm not entirely sure what you mean by "carried to the release of 1.9" here. I 
don't expect that Alex, Rich, et al. will change their minds, again, about 
clojure.spec's instrument validating :ret and :fn specs. As such, I intend for 
Orchestra to exist up until, and well beyond, Clojure 1.9.

Orchestra is an integral part of my workflow and likely the biggest improvement 
to my Clojure toolchain, along with clojure.spec, in the past few years.

Let me know if I can help any further.

-- 
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.


signature.asc
Description: PGP signature


ANN: Orchestra, complete instrumentation for clojure.spec

2017-04-05 Thread Jeaye
Folks,

tl;dr -- https://github.com/jeaye/orchestra

I'd like to announce the release of Orchestra, which tackles an opinionated 
issue of clojure.spec's instrumentation not checking :ret and :fn specs. For 
those who side against the decision to elide those checks, I encourage you to 
drop Orchestra in, with nothing but a (:require) change.

In my development, since making Orchestra, _every error_ I've seen has been a 
spec error. Compared to an accidental nil somewhere, in new, untested code, 
which trickled into some other place before rearing its head, spec errors are 
superb. My workflow has since become oriented around writing specs for 
functions as I write those functions and then knowing, since I'm instrumenting, 
whenever I use it incorrectly (ever so often).

Note that I'm not suggesting that Orchestra should replace the need for unit 
tests, or spec's generative testing, or any other form of test writing outside 
the scope of just running your application. Since test writing often happens 
after the fact, however, in between sprints or otherwise, Orchestra provides a 
stern look at your data as it passes through your Clojure machine.

Best,
Jeaye

-- 
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.


signature.asc
Description: PGP signature


Re: Trying to make an uberjar

2017-03-04 Thread Jeaye
On Sat, Mar 04, 2017 at 02:44:31PM +0100, Cecil Westerhof wrote:
> 2017-03-04 8:13 GMT+01:00 Jeaye <cont...@jeaye.com>:
> 
> > On Sat, Mar 04, 2017 at 08:09:39AM +0100, Cecil Westerhof wrote:
> > > 2017-03-04 7:44 GMT+01:00 Jeaye <cont...@jeaye.com>:
> > >
> > > > Cecil,
> > > >
> > > > > But when running:
> > > > > lein uberjar
> > > > > I still get:
> > > > > This code is executed when starting Clojure.
> > > > > Compiling quotes.core
> > > > > Warning: The Main-Class specified does not exist within the jar. It
> > may
> > > > not
> > > > > be executable as expected. A gen-class directive may be missing in
> > the
> > > > > namespace which contains the main method, or the namespace has not
> > been
> > > > > AOT-compiled.
> > > > > Created /home/cecil/Clojure/Quotes/target/quotes-0.0.1.jar
> > > > > Created /home/cecil/Clojure/Quotes/target/quotes-0.0.1-
> > standalone.jar
> > > > >
> > > > > What do I need to change to make an uberjar. (Jars are generated, but
> > > > > cannot be used.)
> > > >
> > > > The warning which lein provided is trying to tell you exactly what you
> > > > need to do. In the `ns` form of your quotes.core namespace, you should
> > add
> > > > a (:gen-class). Example:
> > > >
> > > > ```clojure
> > > > (ns quotes.core
> > > >   (:gen-class))
> > > > ```
> > > >
> > >
> > > ​That was what was needed. Thanks.
> > >
> > > And I could remove the added:
> > > :profiles {
> > > :uberjar {:aot :all}
> > >   }
> >
> > For the best performance, you likely want AOT (ahead-of-time) compilation.
> > In general, I'd recommend keeping that uberjar profile with `{:aot :all}`.
> >
> 
> ​That is why it is smart to communicate small non essential changes: people
> can set you on the right track. :-)
> 
> I put that back. I now removed the ‘:aot [quotes.core]’, or should I keep
> that also?
> 
> When I first got the error I found two different pieces of advice. One for
> both changes. When those did not work I asked here.
> 
> 
> I should pick up Clojure again. I only did one little project (long ago) to
> try it out. But that is no way to learn a language. Sadly there is no real
> use here for it. :'-(

There's no need for `:aot [quotes.core]` if you're using `:aot :all` in your 
uberjar profile. The only other reason you'd want it is to AOT that namespace 
outside of the uberjar profile. That's up to you, but typically not a concern.

-- 
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.


signature.asc
Description: PGP signature


Re: Trying to make an uberjar

2017-03-03 Thread Jeaye
On Sat, Mar 04, 2017 at 08:09:39AM +0100, Cecil Westerhof wrote:
> 2017-03-04 7:44 GMT+01:00 Jeaye <cont...@jeaye.com>:
> 
> > Cecil,
> >
> > > But when running:
> > > lein uberjar
> > > I still get:
> > > This code is executed when starting Clojure.
> > > Compiling quotes.core
> > > Warning: The Main-Class specified does not exist within the jar. It may
> > not
> > > be executable as expected. A gen-class directive may be missing in the
> > > namespace which contains the main method, or the namespace has not been
> > > AOT-compiled.
> > > Created /home/cecil/Clojure/Quotes/target/quotes-0.0.1.jar
> > > Created /home/cecil/Clojure/Quotes/target/quotes-0.0.1-standalone.jar
> > >
> > > What do I need to change to make an uberjar. (Jars are generated, but
> > > cannot be used.)
> >
> > The warning which lein provided is trying to tell you exactly what you
> > need to do. In the `ns` form of your quotes.core namespace, you should add
> > a (:gen-class). Example:
> >
> > ```clojure
> > (ns quotes.core
> >   (:gen-class))
> > ```
> >
> 
> ​That was what was needed. Thanks.
> 
> And I could remove the added:
> :profiles {
> :uberjar {:aot :all}
>   }

For the best performance, you likely want AOT (ahead-of-time) compilation. In 
general, I'd recommend keeping that uberjar profile with `{:aot :all}`.

-- 
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.


signature.asc
Description: PGP signature


Re: Trying to make an uberjar

2017-03-03 Thread Jeaye
Cecil,

> But when running:
> lein uberjar
> I still get:
> This code is executed when starting Clojure.
> Compiling quotes.core
> Warning: The Main-Class specified does not exist within the jar. It may not
> be executable as expected. A gen-class directive may be missing in the
> namespace which contains the main method, or the namespace has not been
> AOT-compiled.
> Created /home/cecil/Clojure/Quotes/target/quotes-0.0.1.jar
> Created /home/cecil/Clojure/Quotes/target/quotes-0.0.1-standalone.jar
> 
> What do I need to change to make an uberjar. (Jars are generated, but
> cannot be used.)

The warning which lein provided is trying to tell you exactly what you need to 
do. In the `ns` form of your quotes.core namespace, you should add a 
(:gen-class). Example:

```clojure
(ns quotes.core
  (:gen-class))
```

Cheers,
Jeaye

-- 
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.


signature.asc
Description: PGP signature


Re: [ANN] Instaparse 1.4.5

2016-12-31 Thread Jeaye
Mark,

Thanks for the 1.4.5 fixes; defparser is now working properly with 
clojure.java.io/resources and :auto-whitespace in my compiler. :)

On Fri, Dec 30, 2016 at 04:02:02PM -0800, Mark Engelberg wrote:
> Instaparse is a library for generating parsers from context-free grammars.
> https://github.com/engelberg/instaparse
> 
> This new release fixes a regression reported in 1.4.4, released last week,
> involving the application of `insta/parser` to a URL.
> 
> Also, 1.4.4's new macro `defparser` now properly supports all the relevant
> optional parameters from the function `parser`, as suggested by user Jeaye
> Wilkerson.
> 
> Thanks to Alex Engelberg for implementing these fixes/enhancements:
> https://github.com/Engelberg/instaparse/pull/151
> 
> -- 
> 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.


signature.asc
Description: PGP signature


Re: [ANN] Instaparse 1.4.4

2016-12-24 Thread Jeaye
This is great to see; instaparse is crucial for some of my projects and I 
appreciate the ongoing development.

I've noticed two issues with 1.4.4 which I want to run by you:

1. insta/parser has a breaking change, in that it no longer accepts resources 
directly

  I can work around this easily by slurping before hand, but this may've been 
an accidental breakage.

2. insta/defparser doesn't support the same optional parameters as insta/parser

  Specifically, I've found that it doesn't like when I specify 
:auto-whitespace, which is a feature on which I rely heavily for my grammar.

Finally, given the possible performance benefits, do you recommend everyone 
(Clojure and ClojureScript) prefer defparser, where possible?

Thanks!

On Fri, Dec 23, 2016 at 04:52:12PM -0800, Mark Engelberg wrote:
> Instaparse is a library for generating parsers from context-free grammars.
> https://github.com/engelberg/instaparse
> 
> The big news for this release is that Alex Engelberg has combined the
> Clojure version with the Clojurescript version of instaparse (initiated by
> Lucas Bradstreet in 2014) so that moving forward, we can maintain both
> versions as part of the same codebase.  Instaparse leverages a number of
> Clojure interfaces and subtle features that differ between Clojure and
> Clojurescript, so merging the ports was a significant effort.
> 
> Also, to achieve backwards compatibility, Alex wrote the cljsee leiningen
> plugin which splits cljc files into clj and cljs files for compatibility
> with Clojure 1.5 and 1.6.  Check out cljsee if you are interested in
> maintaining backwards compatibility in your own cljc-based projects.  (
> https://github.com/aengelberg/cljsee)
> 
> The one new feature is a defparser macro, especially relevant to the
> Clojurescript port because it makes it possible to build the parser at
> compile time so the Clojurescript code will execute more quickly.
> 
> Other than that one addition, the behavior should be identical to the prior
> release.
> 
> -- 
> 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.


signature.asc
Description: PGP signature


Re: migae: clojure on Google App Engine

2016-12-17 Thread Jeaye
I was recently informed about https://github.com/nickbauman/cljgae-template 
which aims to provide a GAE template for leiningen projects. As it didn't exist 
when I started with GAE, I wrote up a summary of my experience bootstrapping 
things here: https://blog.jeaye.com/2016/08/23/clojure-app-engine/

Hopefully these prove useful.

On Fri, Dec 16, 2016 at 10:00:20AM -0600, Gregg Reynolds wrote:
> On Fri, Dec 16, 2016 at 6:13 AM,  wrote:
> 
> > Hi Gregg,
> >
> > Recently switched from python to clojure.
> > Is migae still ok for starting out for building applications on app engine
> > (the last commit is from 2015) ?
> >
> > Thank You,
> > Claudiu
> >
> 
> Hi Claudiu,
> 
> Thanks for asking.  The answer is yes and no.  Yes: I did a bunch of work
> on it last summer, switching to boot,  etc.  No: the documentation, while
> plentiful, is probably pretty outdated, and I haven't looked at it for six
> months so I'm not sure what works and what doesn't. It does work, I'm just
> going to have to spend some time cleaning things up.  Fortunately I'm due
> to start using it in anger for a Real Project next week, so I expect to
> have an update available soon.  In the meantime poke around in
> https://github.com/migae, especially boot-migae
> , and let me know how things go.
> 
> Thanks,
> 
> Gregg
> 
> 
> >
> >
> > On Saturday, August 29, 2015 at 9:49:43 PM UTC+3, Gregg Reynolds wrote:
> >>
> >> Hi list,
> >>
> >> If you have any interest in Clojure on Google App Engine you might want
> >> to take a look at migae .  Currently it
> >> just contains several basic demos showing how to structure Clojure apps on
> >> GAE, running from raw java interop, to ring, to compojure, to
> >> compojure-api.  Dynamic code reloading makes rapid development possible.
> >> Not quite a true repl, but almost as good for servlet development at least.
> >>
> >> The technique is straightforward and surprisingly simple, but has not (to
> >> my knowledge) been explained or demoed before.  (A web search for "clojure
> >> on app engine" turns up surprisingly few recent results.)  It turns out to
> >> be very easy to have multiple servlets, filters and a quasi-repl using
> >> basic techniques (and some minor hackery) rather than a specialized
> >> library.  It's not at all like appengine-magic.  AE-magic is fine, but it's
> >> a little long in the tooth, and more important, Google's switch to a
> >> gradle-based build system renders much of AE-magic's logic unnecessary.
> >> Also, I wanted the service libs to be independently usable.
> >>
> >> I'd appreciate any feedback, especially on my explanation of how it works
> >> - why dynamic loading works even though everything is aot-compiled.  I'm
> >> not entirely sure I understand how Clojure's loading mechanism dovetails
> >> with the servlet/jvm loading mechanism, so I made an educated guess.  Also,
> >> I've tried to make the README relatively basic so those not familiar with
> >> servlet programming can grok it.
> >>
> >> As for GAE service libraries, that'll take a while, and it's probably too
> >> much for me alone, so any who wants to help out is welcome.  I've got what
> >> I think is a promising approach to the Datastore API but will describe that
> >> in another message.
> >>
> >> Thanks,
> >>
> >> Gregg
> >>
> > --
> > 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 

Re: [ANN] 2016 State of Clojure Community Survey

2016-12-13 Thread Jeaye
Time for a redo?

In the future, it might be beneficial to submit the questions to the mailing 
list first, in hopes of ruling out more of these ambiguities and 
misinterpretations. Unfortunately, the results for some of these questions, 
primarily the ranking, won't be representative of the community's actual stance.

On Tue, Dec 13, 2016 at 11:48:21AM -0800, Terje Norderhaug wrote:
> Should've been a separate question for choice of rank order... :-)
> 
> On Tue, Dec 13, 2016 at 7:49 AM, Colin Yates  wrote:
> 
> > Oh the joys of a lack of a ubiquitous language :-). I was only
> > surprised it didn't start at 0 ;-).
> >
> > On 13 December 2016 at 15:46, Jose Figueroa Martinez 
> > wrote:
> > > Me too :-|
> > >
> > >
> > > El martes, 13 de diciembre de 2016, 2:44:08 (UTC-6), Patrick Kristiansen
> > > escribió:
> > >>
> > >> On Tuesday, December 13, 2016 at 2:00:10 AM UTC+1, Mike Rodriguez wrote:
> > >>>
> > >>> Uh oh. I should have asked. I ranked my priorities in the exact
> > opposite
> > >>> order since I thought 1 was lowest.
> > >>
> > >>
> > >> I did too.
> > >
> > > --
> > > 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.

-- 
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.


signature.asc
Description: PGP signature


Re: clojure.spec

2016-05-25 Thread jeaye
On Wed, May 25, 2016 at 05:38:53PM -0700, Daniel wrote:
> I'd love to see a blog which shows an example app leveraging core.typed, 
> clojure.spec, and core.contracts to gradually provide greater confidence in 
> a codebase.  Sort of a step-by-step.

Agreed, that'd be great. clojure.spec is documented on its own, as are
the others, but tying them together is how we're going to get best
coverage.

-- 
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.


signature.asc
Description: PGP signature


Re: Mutual Recursion Doesn't Compile

2016-03-31 Thread jeaye
On Thu, Mar 31, 2016 at 10:36:45AM -0700, Lucas Sloan wrote:
> I have some mutually recursive code as follows:
> 
> (ns tester.core
>   (:require [clojure.data.json :as json])
>   (:gen-class))
> 
> (defn getValuePathPairs
>   [json]
>   (cond
> (instance? clojure.lang.PersistentVector json) (getVectorValuePathPairs 
> json)
> (instance? clojure.lang.PersistentArrayMap json) (getMapValuePathPairs 
> json)
> (instance? Boolean json) [[json ""]]
> (instance? Number json) [[json ""]]
> (instance? String json) [[json ""]])
> )
> 
> (defn getVectorValuePathPairs
>   [vec]
>   (mapcat (fn [[i e]] 
>  (for [[leaf-value path] (getValuePathPairs e)] 
>[leaf-value (str "[" i "]" path)]))
>(map-indexed vector vec))
> )
> 
> 
> (defn getMapValuePathPairs
>   [m]
>   (mapcat (fn [[k v]]
> (for [[leaf-value path] (getValuePathPairs v)]
>   [leaf-value (str "[" k "]" path)]))
>   m)
> )
> 
> (defn -main
>   "I don't do a whole lot ... yet."
>   [& args]
>   (println (getValuePathPairs ["Blah" 1 true])))
> 
> getValuePathPairs calls getVectorValuePathPairs and getMapValuePathPairs, 
> which in turn call getValuePathPairs.  When I try to compile and run this 
> code I get the following error:
> 
> Exception in thread "main" java.lang.RuntimeException: Unable to resolve 
> symbol: getVectorValuePathPairs in this context, 
> compiling:(tester/core.clj:8:52)
> 
> 
> It appears from my experimentation that the issue is that when compiling 
> getValuePathPairs, 
> the function getVectorValuePathPairs isn't yet defined, as when I compile 
> this into a CIDER repl with the recursion taken out, then compiled again 
> with it put back it runs just fine.
> 
> 
> Googling about mutual recursion in clojure provides a lot of hits about 
> lack of tail call optimization, but no one saying that it's impossible to 
> do (given short recursive depths).  In this particular piece of code, I 
> could just inline the two inner functions, but I'd be giving up a lot of 
> readability.  Is there a way to compile mutually recursive code?  If not, 
> is there a good way to structure this sort of code so I can pull out small 
> functions and name them without running into this problem?

Why not forward declare the required functions with (declare ...)?

-- 
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.


signature.asc
Description: PGP signature