[ANN] New Caribou Release: Version 0.14.0

2014-03-05 Thread Ryan Spangler
Hello Clojure People,

Happy to announce the release of a new version of Caribou!  
http://let-caribou.in/

There are a lot of improvements in this latest release.  We have tried to 
incorporate all of the feedback we have received since its initial release 
(which has been massive!).  A small selection of the improvements:

* *Heroku support fully integrated.*  This turned out to be a big deal for 
a lot of people, and there were some hoops to jump through before getting a 
database set up.  I am happy to say this has been vastly streamlined and 
improved, as well as fully documenting the process from provision to 
deploy: http://caribou.github.io/caribou/docs/deploying.html (at the bottom 
of that page).

* *Routing streamlined and simplified.  *We had this split into two steps 
before, but it is way simpler now.  Also fixed a couple issues people were 
having with HTTP methods in nested routes.  Polaris is also now fully 
integrated:  https://github.com/caribou/polaris

* *Immutant removed as a direct dependency.*  A lot of people complained 
about having to download all of Immutant even if they weren't using it! 
 This is no longer necessary, as you can now deploy to Immutant with 
options directly in your project.clj without ever making it a dependency of 
your project.

* *Templating engine can be swapped out for anything.*  You can now use 
whatever you want for templating, including Selmer:  
https://github.com/yogthos/Selmer  (yogthos himself contributed this pull 
request!)  Check out the bottom of this page for more details:  
http://caribou.github.io/caribou/docs/templates.html

And many more (check out the docs for a full list of features: 
http://caribou.github.io/caribou/docs/outline.html ).  

As there were a lot of changes (not all of them backwards compatible), we 
made a guide for upgrading Caribou to the latest version if you already 
have an instance running somewhere:

  http://caribou.github.io/caribou/docs/upgrading.html !

Hopefully that will help out for anyone has a Caribou site under 
development (let us know if anything comes up!)

Thanks to everyone who contributed feedback, issues and pull requests, and 
thanks to everyone who is using it to build awesome things.  We are working 
hard to make it as useful as possible, and having real world feedback has 
been invaluable to that cause.  

Lastly, check out the roadmap for the direction we are going:  
http://caribou.github.io/caribou/docs/roadmap.html  (Spoiler:  we got a UX 
person!)

We are open to any and all feedback on this or anything else!  Thanks again.

- Caribou Team

-- 
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/groups/opt_out.


Re: [ANN] Hoplon: web applications in Clojure and ClojureScript

2013-12-20 Thread Ryan Spangler


 The hlisp part of Hoplon - the compiler bit that converts HTML to 
 ClojureScript - was designed and implemented specifically to avoid having 
 to do this.  It's our opinion (and experience) that admission of the DOM as 
 a data structure instead of a piece of the program introduces tremendous 
 complexity.  This data structure must be explicitly interpreted, evaluated, 
 and updated in complicated ways that tend to couple tightly to both overall 
 state logic and DOM quirks.  That said, Hoplon markup can be manipulated as 
 data the way any other Lisp program sanely can - via hygienic macros. 


I am curious about this.  I have had the opposite experience.  Whenever I 
use a library based on macros I find myself wanting to do something with 
them the macro writer did not expect, and being forced to wrap the macros 
in functions so I can compose things programmatically (which seems to me 
like unnecessary complexity).  I can't pass macros around as arguments, 
store them in a list, or apply them to arguments in a general way.  

On the other hand, if I am just working with a data structure, I can write 
functions to manipulate the data in novel ways and even use many functions 
that already exist to manipulate data without having to recreate that 
functionality for a specific domain (like looping, merging, search and 
replace etc).  

So I am curious specifically what flexibility you are gaining by using 
macros (things you can't do with functions and data) that would offset the 
flexibility you sacrifice with macros?  I am open to being convinced on 
this point!

-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-25 Thread Ryan Spangler
Jim,

Thanks for the note!  Yeah we have been talking about ways to make the
immutant download optional, so that solves that problem, thanks!  It will
be coming out in the next release.

As for the app/ dir, it is configurable between environments, as long as
people know about it.  I can make that more clear in the docs for Immutant
deployment (actually it is an issue for tomcat deployment as well).

Great song btw.  Not direct inspiration, but maybe kicking around in the
subconscious there?

Thanks for Immutant as well, I am a big fan!  We run all of our Caribou
deployments on Immutant.  Still working on integrating some of the larger
features into our workflow.


On Sun, Nov 24, 2013 at 4:05 PM, Jim Crossley j...@crossleys.org wrote:

 Prasanna, Ryan and Justin,

 Hi. I just got around to playing with Caribou today. Very nice!

 I was happy to see you including Immutant config in the application
 template, but you don't need it. Immutant will happily bootstrap a deployed
 app using the :ring options map in project.clj. As long as you're including
 that, the immutant.clj file in the application template is redundant.
 Here's more info:
 http://immutant.org/builds/LATEST/html-docs/initialization.html#initialization-porting

 And I agree removing the immutant dependency in project.clj will greatly
 reduce the number of downloaded jars. Technically, you only need that
 dependency in project.clj when running *outside* of the Immutant container,
 e.g. when your tests refer to the immutant namespaces.

 The only other Immutant-related feedback I might offer is wrt the assets
 dir, app/. Relative paths like that are only gonna work if you start up
 Immutant in your project's directory, so in production you'll likely want
 that to be an absolute path.

 I especially like the project's name. It reminds me of the Pixies song:
 https://www.youtube.com/watch?v=x6m-pwWCDKU

 Thanks!
 Jim


 On Wed, Nov 13, 2013 at 1:25 AM, Ryan Spangler ryan.spang...@gmail.comwrote:

 Justin,

 As far as I know, Immutant is not a dependency, but an option.  Let me
 know if that is not true however.


 On Tuesday, November 12, 2013 10:13:17 PM UTC-8, Justin Smith wrote:

 Typically my first step making a caribou app is to remove the immutant
 dependency. It's pretty straightforward to take it out.

 On Tuesday, November 12, 2013 9:19:27 PM UTC-8, Prasanna Gautam wrote:

 This is really cool. Very easy to get up and running for first try. I
 have a few questions on the architecture.

 Why Immutant instead of plain ring as the default? I think the number
 of dependencies could be much lower with it.

 I know it's only alpha.. but I'm asking this on behalf of others who
 might be thinking the same.
 And, are there plans for NoSQL database support, like MongoDB, MapDB (
 http://www.mapdb.org/ - I just found out about it myself but this is
 the only decent in-memory NoSQL solution other than Berkeley DB)?

 On Tuesday, November 12, 2013 6:52:10 PM UTC-5, Ryan Spangler wrote:

 Hello Clojure,

 Excited to announce today the release of Caribou!
 http://let-caribou.in/

 We have been building web sites and web applications with it for over
 two years now and improving it every day.  Currently we have four people
 working on it and another ten using it to build things, so it is getting a
 lot of real world testing.

 It has been designed as a collection of independent libraries that
 could each be useful on their own, but which come together as a meaningful
 whole.

 We have been spending the last couple months getting it ready for a
 full open source release, and I am happy to say it is finally ready.
  Funded and supported by Instrument in Portland, OR:
 http://weareinstrument.com/  We have four projects using it in
 production, and several more about to be launched (as well as over a dozen
 internal things).

 Documentation is here:  http://caribou.github.io/
 caribou/docs/outline.html

 Source is here:  http://github.com/caribou/caribou (use this for
 issues, you don't actually need the source as it is installed through a
 lein template).

 Some of the independently useful libraries Caribou is built on are:

 * Polaris -- Routing with data (not macros) and reverse routing! :
 https://github.com/caribou/polaris
 * Lichen -- Image resizing to and from s3 or on disk:
 https://github.com/caribou/lichen
 * Schmetterling -- Debugging Clojure processes from the browser:
 https://github.com/prismofeverything/schmetterling
 * Antlers -- Useful extensions to mustache templating (helpers and
 blocks, among other things):  https://github.com/caribou/antlers
 * Groundhog -- Replay http requests: https://github.com/
 noisesmith/groundhog

 And many others.

 Basically this is an Alpha release, and I am announcing it here first
 in order to get as much feedback from the community as possible.  We have
 made it as useful as we can for our purposes and recognize that for it to
 improve from here, we really need as many people using it and building
 things

Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-19 Thread Ryan Spangler
David,

Certainly.  There is already a facility to change them, I just haven't
exposed that to the user yet!  This will come out in the next release.


On Tue, Nov 19, 2013 at 3:39 AM, David Simmons shortlypor...@gmail.comwrote:

 Hi Khalid

 yes I'm aware you can change the template tags (and the pitfalls :-)). I
 thought it would be easier to see if we could avoid this problem all
 together by using a different set of tags (especially as Caribou is Alpha
 release and hopefully open to change). BTW I don't intend to miss Angular
 and Caribou templates tags in the same page, I just want to be able to use
 the Caribous admin etc AND have my own pages use Angular.

 cheers

 Dave

 --
 --
 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 a topic in the
 Google Groups Clojure group.
 To unsubscribe from this topic, visit
 https://groups.google.com/d/topic/clojure/KeyaMJERW0o/unsubscribe.
 To unsubscribe from this group and all its topics, send an email to
 clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.


-- 
-- 
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/groups/opt_out.


Re: Do web apps need Clojure?

2013-11-18 Thread Ryan Spangler
I just ran this in the Caribou repl:

(caribou.model/gather :field {:where {:created-at {:=
(java.util.Date.)} :model-id 1}})

And got a bunch of results.  No string coercion necessary!  (also, dashes
not underscores!)

We looked at Korma and found it lacking (similar problem as Compojure:
macros).  For that reason we built an entire query engine that works on
data directly, so that you can build up queries programmatically just like
you would any other data structure (!)

Check out the section on retrieving content here:
http://caribou.github.io/caribou/docs/content.html

You can do a bunch of cool stuff (logic operations, in queries,
conditions that span associations, selecting certain fields, seamless
queries over join tables etc).

Let me know if there is something you expect out of a query engine that
Caribou doesn't do, we will add it (if it makes sense!)

All this stuff is in caribou-core (which you can use independently of the
rest of Caribou): https://github.com/caribou/caribou-core

Maybe I should call it something else to emphasize it is a standalone
library... (and replacement for korma)


On Mon, Nov 18, 2013 at 11:07 AM, Marcus Blankenship
mar...@creoagency.comwrote:

 Brian,

 Yeah, and I realize I’m going to take darts for this, but coming from
 Django’s ORM / Rails ActiveRecord makes Korma and these other tools feel
 like stone-age tools.  I’d rather do it all in SQL than fight something to
 get out of my way, or reveal it’s magic.

 I know I’m probably not thinking about the problem right, but here’s an
 example of something that I still can’t get to work in Korma.  G….

 *lein-repl commands*
 (use [`advent2.models.db] :reload-all)
 (get-unlocked-videos-for-campaign 1)



 *models/db.clj function*
 (defn format-todays-date []
   (let [date (java.util.Date.)]
 (prn date)
 (str \' (.format (java.text.SimpleDateFormat. -MM-dd) date) \'
 )))


 (defn get-unlocked-videos-for-campaign [campaign]
   (let [c_id (:id campaign)]
 (select videos (where {:unlock_date [= (format-todays-date)]
 :campaign_id c_id}



 *output*
 user= (get-unlocked-videos-for-campaign 1)
 #inst 2013-11-18T19:06:09.595-00:00
 Failure to execute query with SQL:
 SELECT videos.* FROM videos WHERE (videos.unlock_date = ? AND
 videos.campaign_id IS NULL)  ::  ['2013-11-18']
 PSQLException:
  Message: ERROR: operator does not exist: date = character varying
   Hint: No operator matches the given name and argument type(s). You might
 need to add explicit type casts.
   Position: 63
  SQLState: 42883
  Error Code: 0

 PSQLException ERROR: operator does not exist: date = character varying
   Hint: No operator matches the given name and argument type(s). You might
 need to add explicit type casts.
   Position: 63
  org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse
 (QueryExecutorImpl.java:2102)






 On Nov 18, 2013, at 10:23 AM, Brian Craft craft.br...@gmail.com wrote:

 Re: korma, and sql dsls, I've been moving between korma, honeysql, and raw
 sql, without being satisfied with any of them. Desirable traits of the db
 layer in my problem domain are 1) eliminating boilerplate (e.g. setting up
 default keys, and indexes, and performing standard joins across relations),
 2) isolating view layers from data access layers (so the view doesn't need
 to know if a subselect or a join is required to span some relation, for
 example), 3) ability to progressively optimize by dropping back to sql when
 required, 4) ability to safely expose a general purpose query API over the
 data.

 korma eliminates a very, very small part of the boilerplate. It's almost
 not worth the effort. Falling back to raw sql smoothly is difficult in
 korma, and I've had to drop it entirely in places where I need performance.
 Honeysql eliminates no boilerplate, but representing queries with data
 structures does make it easy to expose a sql-like query API with db
 firewalling (by matching on the incoming structure). Korma appears to also
 represent queries as data structures, but it's not part of the documented
 API. You have to reverse-engineer it, and I expect it's subject to change.


 On Monday, November 18, 2013 8:19:28 AM UTC-8, Marcus Blankenship wrote:

 Brian, I certainly will.  I’ll type up something later this week as we
 progress.  The current pain point is Korma, and generally learning clojure.




 On Nov 16, 2013, at 10:25 AM, Brian Craft craft...@gmail.com wrote:

 Marcus -- I hope you will post updates to the list with your experiences.
 It would be very interesting.

 This thread has drifted a bit from (roughly) What can you do with
 clojure web tooling? toward What can you imagine some day doing with the
 clojure web tooling of the future?, which are both interesting questions,
 but have somewhat different audiences. And the answers inform each other.


 On Friday, November 15, 2013 8:20:32 AM UTC-8, Marcus Blankenship wrote:

 Me too!  Thanks to everyone who’s contributed, it’s been *very* helpful!

 On 

Re: Do web apps need Clojure?

2013-11-18 Thread Ryan Spangler
Marcus,

Good to hear!  I am have never used Drupal, what do you mean by
pseudo-table?

Also, looking into this I think the one caveat to using Caribou for your
query engine is that it requires that you have a table for both model and
field that contain the descriptions of the model you are querying.  If
you create the model using Caribou in the first place this will exist, but
it probably won't if you are trying to use it on a non-caribou db.

This could be mitigated by providing the model descriptions in some kind of
configuration step... that wouldn't be too hard.  I will ponder on how best
to support that.


On Mon, Nov 18, 2013 at 12:40 PM, Marcus Blankenship
mar...@creoagency.comwrote:

 Ryan,

 Awesome!  We’re playing with Caribou now, and are loving it.  At first we
 thought “Oh, this is going to be like Drupal, with all it’s pseudo-tables
 and crap.  But it’s not, and we’re having fun with it!

 I’ll try the query engine now.  Thanks!

 On Nov 18, 2013, at 12:31 PM, Ryan Spangler ryan.spang...@gmail.com
 wrote:

 I just ran this in the Caribou repl:

 (caribou.model/gather :field {:where {:created-at {:=
 (java.util.Date.)} :model-id 1}})

 And got a bunch of results.  No string coercion necessary!  (also, dashes
 not underscores!)

 We looked at Korma and found it lacking (similar problem as Compojure:
 macros).  For that reason we built an entire query engine that works on
 data directly, so that you can build up queries programmatically just like
 you would any other data structure (!)

 Check out the section on retrieving content here:
 http://caribou.github.io/caribou/docs/content.html

 You can do a bunch of cool stuff (logic operations, in queries,
 conditions that span associations, selecting certain fields, seamless
 queries over join tables etc).

 Let me know if there is something you expect out of a query engine that
 Caribou doesn't do, we will add it (if it makes sense!)

 All this stuff is in caribou-core (which you can use independently of the
 rest of Caribou): https://github.com/caribou/caribou-core

 Maybe I should call it something else to emphasize it is a standalone
 library... (and replacement for korma)


 On Mon, Nov 18, 2013 at 11:07 AM, Marcus Blankenship 
 mar...@creoagency.com wrote:

 Brian,

 Yeah, and I realize I’m going to take darts for this, but coming from
 Django’s ORM / Rails ActiveRecord makes Korma and these other tools feel
 like stone-age tools.  I’d rather do it all in SQL than fight something to
 get out of my way, or reveal it’s magic.

 I know I’m probably not thinking about the problem right, but here’s an
 example of something that I still can’t get to work in Korma.  G….

 *lein-repl commands*
 (use [`advent2.models.db] :reload-all)
 (get-unlocked-videos-for-campaign 1)



 *models/db.clj function*
 (defn format-todays-date []
   (let [date (java.util.Date.)]
 (prn date)
 (str \' (.format (java.text.SimpleDateFormat. -MM-dd) date) \'
 )))


 (defn get-unlocked-videos-for-campaign [campaign]
   (let [c_id (:id campaign)]
 (select videos (where {:unlock_date [= (format-todays-date)]
 :campaign_id c_id}



 *output*
 user= (get-unlocked-videos-for-campaign 1)
 #inst 2013-11-18T19:06:09.595-00:00
 Failure to execute query with SQL:
 SELECT videos.* FROM videos WHERE (videos.unlock_date = ? AND
 videos.campaign_id IS NULL)  ::  ['2013-11-18']
 PSQLException:
  Message: ERROR: operator does not exist: date = character varying
   Hint: No operator matches the given name and argument type(s). You
 might need to add explicit type casts.
   Position: 63
  SQLState: 42883
  Error Code: 0

 PSQLException ERROR: operator does not exist: date = character varying
   Hint: No operator matches the given name and argument type(s). You
 might need to add explicit type casts.
   Position: 63
  org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse
 (QueryExecutorImpl.java:2102)






 On Nov 18, 2013, at 10:23 AM, Brian Craft craft.br...@gmail.com wrote:

 Re: korma, and sql dsls, I've been moving between korma, honeysql, and
 raw sql, without being satisfied with any of them. Desirable traits of the
 db layer in my problem domain are 1) eliminating boilerplate (e.g. setting
 up default keys, and indexes, and performing standard joins across
 relations), 2) isolating view layers from data access layers (so the view
 doesn't need to know if a subselect or a join is required to span some
 relation, for example), 3) ability to progressively optimize by dropping
 back to sql when required, 4) ability to safely expose a general purpose
 query API over the data.

 korma eliminates a very, very small part of the boilerplate. It's almost
 not worth the effort. Falling back to raw sql smoothly is difficult in
 korma, and I've had to drop it entirely in places where I need performance.
 Honeysql eliminates no boilerplate, but representing queries with data
 structures does make it easy to expose a sql-like query API with db
 firewalling

Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-18 Thread Ryan Spangler
Mark,

Yes, you can do nested loops.  Say you have a structure like this:

{:title Hello 
 :slides 
 [{:caption World
   :images 
   [{:path /img/world.png}
{:path /img/space.png}]}
  {:caption Jupiter
   :images
   [{:path /img/callisto.png}
{:path /img/ganymede.png}]}]}

You can render this using the following template:

{{title}}
{{#slides}}
  {{caption}}
  {{#images}}
img src={{path}} /
  {{/images}}
{{/slides}}

to produce this output:

Hello
  World
img src=/img/world.png /
img src=/img/space.png /
  Jupiter
img src=/img/callisto.png /
img src=/img/ganymede.png /

There are even loop vars to reference the item and outer items from inside 
the loop:

{{loop.item}}
{{loop.outer.item}}
{{loop.outer.outer.item}}

You can also bind each item in the loop if you don't like the implicit 
context:

{{title}}
{{#slides:slide}}
  {{slide.caption}}
  {{#slide.images:image}}
img src={{image.path}} /
  {{/images}}
{{/slides}}

For the full list of loop variables available from inside a loop check out 
the template docs:  http://caribou.github.io/caribou/docs/templates.html


On Sunday, November 17, 2013 11:47:12 PM UTC-8, puzzler wrote:

 The template example shows a notation for doing something special on the 
 last iteration of a loop, but it doesn't look like this syntax can handle 
 nested loops.  Is there any mechanism for nested loops?
  

-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-18 Thread Ryan Spangler
David,

Yes, if you created a Customer model there will be a customer table
inside the h2 db (lowercase).  Can you create customer instances?  If so it
is all working as it should, and you might just be missing the tables
somewhere.


On Mon, Nov 18, 2013 at 12:04 AM, David Simmons shortlypor...@gmail.comwrote:

 Hi Ryan

 If I create a model Customer - will Caribou create a specific table
 Customer. I ask because using H2 Console I can't find any of the tables I'd
 have expected to find having created my model. (This may be user error as
 I'm not used to using H2).

 cheers

 Dave

 --
 --
 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 a topic in the
 Google Groups Clojure group.
 To unsubscribe from this topic, visit
 https://groups.google.com/d/topic/clojure/KeyaMJERW0o/unsubscribe.
 To unsubscribe from this group and all its topics, send an email to
 clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.


-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-17 Thread Ryan Spangler
Ronen,

No sample app yet!  The screencast goes through building an app from 
scratch, but a larger example is a great idea.  We'll get something 
together here in the coming weeks (we have many projects using Caribou, 
just means pulling something abstract out of one of them).  

On Saturday, November 16, 2013 6:36:50 AM UTC-8, Ronen Cohen wrote:

 This look great! Is there a sample app anywhere?

 On Wednesday, November 13, 2013 1:52:10 AM UTC+2, Ryan Spangler wrote:

 Hello Clojure,

 Excited to announce today the release of Caribou!  http://let-caribou.in/

 We have been building web sites and web applications with it for over two 
 years now and improving it every day.  Currently we have four people 
 working on it and another ten using it to build things, so it is getting a 
 lot of real world testing.

 It has been designed as a collection of independent libraries that could 
 each be useful on their own, but which come together as a meaningful whole.

 We have been spending the last couple months getting it ready for a full 
 open source release, and I am happy to say it is finally ready.  Funded and 
 supported by Instrument in Portland, OR:  http://weareinstrument.com/ We 
 have four projects using it in production, and several more about to be 
 launched (as well as over a dozen internal things).

 Documentation is here:  
 http://caribou.github.io/caribou/docs/outline.html

 Source is here:  http://github.com/caribou/caribou (use this for issues, 
 you don't actually need the source as it is installed through a lein 
 template).

 Some of the independently useful libraries Caribou is built on are:

 * Polaris -- Routing with data (not macros) and reverse routing! :  
 https://github.com/caribou/polaris
 * Lichen -- Image resizing to and from s3 or on disk: 
 https://github.com/caribou/lichen
 * Schmetterling -- Debugging Clojure processes from the browser:  
 https://github.com/prismofeverything/schmetterling
 * Antlers -- Useful extensions to mustache templating (helpers and 
 blocks, among other things):  https://github.com/caribou/antlers
 * Groundhog -- Replay http requests: 
 https://github.com/noisesmith/groundhog

 And many others.

 Basically this is an Alpha release, and I am announcing it here first in 
 order to get as much feedback from the community as possible.  We have made 
 it as useful as we can for our purposes and recognize that for it to 
 improve from here, we really need as many people using it and building 
 things with it as possible.  The documentation also needs to be put through 
 its paces:  we need to see how well people are able to use it who know 
 nothing about it, based only on the existing docs.

 All feedback welcome!  

 Thanks for reading!  I hope you find it useful.



-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-17 Thread Ryan Spangler
Justin:  I believe he is asking for a repo of an example Caribou site that 
does something useful (like a blog that posts comments or something).  

David:  That is right, you don't have model files which describe your 
model.  Instead, there is a Model model (with a collection of instances of 
a Field model) which is just data in the db like any other model. 
 Manipulating Model data, either through the admin or programmatically, 
modifies the schema in the background, meaning basically that there is a 
table for each Model and (roughly) a column for each Field (though there 
are more complex fields, like assets or collections, that have multiple 
fields or refer to other tables behind the scenes).  

There are many advantages to this, including being able to generate the 
admin and api automatically, (as well as letting our frontend guys add 
properties they need in a model without pestering the backend guys to make 
schema updates!).  If manipulating schemas through the admin makes you 
nervous, you can always write migrations for your model 
changes: http://caribou.github.io/caribou/docs/migrations.html

Also you can export your Models (or any data for that matter) using the 
content export/import API.  This means you can build your models using the 
admin and h2, export the schema as edn, and import it into a Postgres db. 
 Then you have a file which represents your Models that you can check into 
version control or modify directly etc.  I realize now I haven't written 
docs for this process (I'll fix that shortly), but it is in the 
caribou-core repo under src/caribou/io.clj

Part of why Caribou is alpha is that we want to make sure the automatic 
schema modification process is bulletproof, as well as solve the various 
issues that arise in migrating schemas between environments and dbs in the 
cleanest and most seamless way possible.  We have a lot of ideas and 
already things are working pretty well, but are also open to all 
suggestions on that.

The automatic schema migrations are one of the most powerful parts of 
Caribou, but also take some careful thought to ensure they are not also 
getting in the way or potentially messing things up.  In practice, we don't 
have any issues and the ability to modify the schema transparently has been 
a huge boon to the development process on teams with multiple people.  

As for field validation, that is a great idea.  Currently nothing is in 
place for ranges of numbers, but I am once again open to any suggestions. 
 I will add it to the list!

 

On Sunday, November 17, 2013 1:03:43 PM UTC-8, David Simmons wrote:

 Hi Ryan

 Congratulations on the release of Caribou. I've got a couple of questions.

 1. If I create a model via the Admin UI, am I right in thinking that this 
 does not actually create a clj file containing the details of the model 
 which I could edit later via a text editor? 
 2. Do you the concept of model validations so that a field must be numeric 
 and between 10 and 50?

 many thanks for you help.

 Dave


-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-17 Thread Ryan Spangler
Mark, 

Luminus is great, it is at its heart a lein template that gathers together 
a number of useful Clojure web libraries and stitches them into a whole. 
 It provides a good starting point with many options without preventing you 
from adapting it in any way you see fit.  Caribou is more of an integrated 
framework that is built in layers from the data model up to 
routing/controllers, template rendering, image resizing, to the automatic 
Admin and HTTP API generation.  It is like Django in that it comes with an 
Admin out of the box that can be customized as necessary.  

That said, we worked hard to ensure that it does not trap you into any 
workflow.  You can use any library you want, and in the end it is just 
Clojure so you really have as much flexibility as you need.  We even know 
someone who has a project that doesn't use a db!  So in this way it is like 
Luminus:  a good starting point that you can adapt as you see fit.  

On Sunday, November 17, 2013 1:09:02 PM UTC-8, puzzler wrote:

 I'm reading through the documentation right now.  Looks interesting -- 
 reminds me a lot of Django.

 Could someone give a brief compare/contrast with Luminous?



-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-17 Thread Ryan Spangler
The migrations are run one time to set up the models (or anything else), 
they don't represent the current state of the models.  In general, we use 
either the Admin to edit models, in which case we export the schema as edn 
to migrate between different environments, or we use the built in 
migrations and leave the admin models alone.  But there is no reason you 
couldn't use both.  

If you are looking for something to represent the current state of the 
model schema, you want the export API, which renders your current schema as 
an edn file which can be applied to any database universally.  

In general, there is always a potential disconnect between the schema and 
the code in any system.  If you have model descriptors, nothing guarantees 
your schema conforms to that.  You have to run migrations that line up with 
your model descriptions.  In Caribou, the database contains the model 
descriptions, and the system just reads those descriptions from the db to 
construct the models that the rest of the code is using.  So in a way, the 
Caribou models always reflect the state of the db, and don't depend on code 
to describe something that may not be in sync with what is in the db in the 
first place.  

It is different from any system I have seen though, so I understand your 
confusion!  Part of our challenge is providing a way to explain this 
clearly and to mitigate any issues that could arise from this approach.  

On Sunday, November 17, 2013 2:02:07 PM UTC-8, puzzler wrote:

 On Sun, Nov 17, 2013 at 1:58 PM, Ryan Spangler 
 ryan.s...@gmail.comjavascript:
  wrote:

 There are many advantages to this, including being able to generate the 
 admin and api automatically, (as well as letting our frontend guys add 
 properties they need in a model without pestering the backend guys to make 
 schema updates!).  If manipulating schemas through the admin makes you 
 nervous, you can always write migrations for your model changes: 
 http://caribou.github.io/caribou/docs/migrations.html


 I'm a little confused about this.  If you write some code to set up 
 models, and then you make changes to the admin interface, isn't your code 
 out-of-sync with the underlying reality? 
  

-- 
-- 
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/groups/opt_out.


Re: Do web apps need Clojure?

2013-11-14 Thread Ryan Spangler
Marcus,

To answer your original question, the main reason we use Clojure is that we 
were originally using Ruby, and once our sites got to a certain level of 
traffic they fell over badly.  Rewriting the system in Clojure meant 
literally two orders of magnitude performance increase, which at the level 
of clients we are dealing with now is not just a huge win, it is critical.

I've also used Python extensively (and we still have some projects in it), 
but there is a lot of complexity in just dealing with the environments and 
dependencies (virtualenv is a standard practice now?)  Once people have 
lein installed, they can download one of our Clojure projects and we know 
everyone is using the same version of everything without any hassle.  It 
just works.  

Also, the benefit of being able to spin off a new thread to do some 
background task is not to be overlooked.  Python and Ruby are still 
fundamentally single threaded and each has its own flavors of what are 
basically hacks to get around that limitation.

As our applications begin to demand more and more asynchronous handling 
Clojure really is starting to shine.  Once you have core.async at your 
disposal, all of a sudden it is hard to imagine how you ever lived without 
it.  Seriously.  What a brilliant abstraction and solution for what was 
previously a complex architecture task.

So can you still use Django and Rails to build webapps?  Of course, these 
are mature and tested platforms for doing standard things.  But Clojure is 
the future.  There is always a choice to be made between going with the 
sanctioned solutions of today or blazing the trails of tomorrow.  I 
remember when Django and Rails were the platforms of the future and people 
thought they were risky or strange and untested.  People are always making 
a case for the safe established choice.  But somehow progress gets made 
anyway.

(I am biased of course.  But I made that decision years ago and never 
looked back.  I can't imagine going back to python or ruby now, but I can't 
speak for everyone.)

On Wednesday, November 13, 2013 2:38:49 PM UTC-8, Marcus Blankenship wrote:

 Hi Folks,

 We’re a Python / Django shop, and some folks are getting excited about 
 using Clojure for building web apps.  Certainly there are numerous 
 open-source options to assist us (Pedastal, Ring, Compojure, Caribou, etc), 
 but I think it begs a larger question: *as a rule, do web applications 
 need the power that Clojure brings to the table?*

 Other folks on my team are telling me that solutions built with Python / 
 Django (or even RubyOnRails) fully satisfy the needs of 99% of the web apps 
 we have built, and that Clojure offers nothing new to this problem space.  

 So, here’s the question: *How are you are actually using Clojure, and why 
 did you choose to use it, particularly in the “web application” space? * 

 Thanks,
 Marcus



 marcus blankenship
 \\\ Partner, Problem Solver, Linear Thinker
 \\\ 541.805.2736 \ @justzeros \ skype:marcuscreo
  


-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-13 Thread Ryan Spangler
Hi Leonardo,

It seems that on certain default java installs keys are restricted to 16 
bytes: 
http://stackoverflow.com/questions/6900542/java-security-invalidkeyexception-illegal-key-size

I just released a version that creates 16 byte keys for the cookie store. 
 Try that!  (or edit the key in your src/{project-name}/core.clj and drop 
half the chars).

On Wednesday, November 13, 2013 1:20:18 AM UTC-8, Leonardo Borges wrote:

 Hi Ryan, 

 Love the website and the idea. Gave it a try but it gives me this when 
 trying to browse to the app: 

 java.security.InvalidKeyException: Illegal key size 

 It's coming from ring's cookie store. It seems the generated key isn't 
 valid. 

 I had a similar problem recently where I had to base64 decode the 
 string before passing it to the cookie-store. Not sure this is the 
 case here. 

 FWIW, I'm running Java 1.7 and Lein 2.3.3 

 Cheers, 
 Leonardo Borges 
 www.leonardoborges.com 


 On Wed, Nov 13, 2013 at 5:25 PM, Ryan Spangler 
 ryan.s...@gmail.comjavascript: 
 wrote: 
  Justin, 
  
  As far as I know, Immutant is not a dependency, but an option.  Let me 
 know 
  if that is not true however. 
  
  
  On Tuesday, November 12, 2013 10:13:17 PM UTC-8, Justin Smith wrote: 
  
  Typically my first step making a caribou app is to remove the immutant 
  dependency. It's pretty straightforward to take it out. 
  
  On Tuesday, November 12, 2013 9:19:27 PM UTC-8, Prasanna Gautam wrote: 
  
  This is really cool. Very easy to get up and running for first try. I 
  have a few questions on the architecture. 
  
  Why Immutant instead of plain ring as the default? I think the number 
 of 
  dependencies could be much lower with it. 
  
  I know it's only alpha.. but I'm asking this on behalf of others who 
  might be thinking the same. 
  And, are there plans for NoSQL database support, like MongoDB, MapDB 
  (http://www.mapdb.org/ - I just found out about it myself but this is 
 the 
  only decent in-memory NoSQL solution other than Berkeley DB)? 
  
  On Tuesday, November 12, 2013 6:52:10 PM UTC-5, Ryan Spangler wrote: 
  
  Hello Clojure, 
  
  Excited to announce today the release of Caribou! 
  http://let-caribou.in/ 
  
  We have been building web sites and web applications with it for over 
  two years now and improving it every day.  Currently we have four 
 people 
  working on it and another ten using it to build things, so it is 
 getting a 
  lot of real world testing. 
  
  It has been designed as a collection of independent libraries that 
 could 
  each be useful on their own, but which come together as a meaningful 
 whole. 
  
  We have been spending the last couple months getting it ready for a 
 full 
  open source release, and I am happy to say it is finally ready. 
  Funded and 
  supported by Instrument in Portland, OR:  http://weareinstrument.com/ We 
  have four projects using it in production, and several more about to 
 be 
  launched (as well as over a dozen internal things). 
  
  Documentation is here: 
  http://caribou.github.io/caribou/docs/outline.html 
  
  Source is here:  http://github.com/caribou/caribou (use this for 
 issues, 
  you don't actually need the source as it is installed through a lein 
  template). 
  
  Some of the independently useful libraries Caribou is built on are: 
  
  * Polaris -- Routing with data (not macros) and reverse routing! : 
  https://github.com/caribou/polaris 
  * Lichen -- Image resizing to and from s3 or on disk: 
  https://github.com/caribou/lichen 
  * Schmetterling -- Debugging Clojure processes from the browser: 
  https://github.com/prismofeverything/schmetterling 
  * Antlers -- Useful extensions to mustache templating (helpers and 
  blocks, among other things):  https://github.com/caribou/antlers 
  * Groundhog -- Replay http requests: 
  https://github.com/noisesmith/groundhog 
  
  And many others. 
  
  Basically this is an Alpha release, and I am announcing it here first 
 in 
  order to get as much feedback from the community as possible.  We 
 have made 
  it as useful as we can for our purposes and recognize that for it to 
 improve 
  from here, we really need as many people using it and building things 
 with 
  it as possible.  The documentation also needs to be put through its 
 paces: 
  we need to see how well people are able to use it who know nothing 
 about it, 
  based only on the existing docs. 
  
  All feedback welcome! 
  
  Thanks for reading!  I hope you find it useful. 
  
  -- 
  -- 
  You received this message because you are subscribed to the Google 
  Groups Clojure group. 
  To post to this group, send email to clo...@googlegroups.comjavascript: 
  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 javascript: 
  For more options, visit this group at 
  http://groups.google.com/group/clojure?hl=en 
  --- 
  You received this message because

Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-13 Thread Ryan Spangler
Brian,

Thanks for the heads up!  I fixed some of the formatting issues I found, 
I'll keep a lookout for this issue (using a md-html converter which 
apparently requires spaces at the end of lines in lists?)

And yes, data modeling is one of our main concerns.  All models are also 
data, which means they can be manipulated like any other data structure. 
 This is what enables us to generate the admin and api automatically!  (as 
well as a host of other benefits)

On Wednesday, November 13, 2013 8:07:52 AM UTC-8, Brian Craft wrote:

 Looks very cool. I'm happy to see that data modeling is taken seriously, 
 which in my experience is the biggest piece lacking in other clojure web 
 tools.

 The docs have a lot of layout problems with words running together, like 
 so: data from oneenvironment. Looks like a string joining operation 
 that's not quite right.

 On Tuesday, November 12, 2013 3:52:10 PM UTC-8, Ryan Spangler wrote:

 Hello Clojure,

 Excited to announce today the release of Caribou!  http://let-caribou.in/

 We have been building web sites and web applications with it for over two 
 years now and improving it every day.  Currently we have four people 
 working on it and another ten using it to build things, so it is getting a 
 lot of real world testing.

 It has been designed as a collection of independent libraries that could 
 each be useful on their own, but which come together as a meaningful whole.

 We have been spending the last couple months getting it ready for a full 
 open source release, and I am happy to say it is finally ready.  Funded and 
 supported by Instrument in Portland, OR:  http://weareinstrument.com/ We 
 have four projects using it in production, and several more about to be 
 launched (as well as over a dozen internal things).

 Documentation is here:  
 http://caribou.github.io/caribou/docs/outline.html

 Source is here:  http://github.com/caribou/caribou (use this for issues, 
 you don't actually need the source as it is installed through a lein 
 template).

 Some of the independently useful libraries Caribou is built on are:

 * Polaris -- Routing with data (not macros) and reverse routing! :  
 https://github.com/caribou/polaris
 * Lichen -- Image resizing to and from s3 or on disk: 
 https://github.com/caribou/lichen
 * Schmetterling -- Debugging Clojure processes from the browser:  
 https://github.com/prismofeverything/schmetterling
 * Antlers -- Useful extensions to mustache templating (helpers and 
 blocks, among other things):  https://github.com/caribou/antlers
 * Groundhog -- Replay http requests: 
 https://github.com/noisesmith/groundhog

 And many others.

 Basically this is an Alpha release, and I am announcing it here first in 
 order to get as much feedback from the community as possible.  We have made 
 it as useful as we can for our purposes and recognize that for it to 
 improve from here, we really need as many people using it and building 
 things with it as possible.  The documentation also needs to be put through 
 its paces:  we need to see how well people are able to use it who know 
 nothing about it, based only on the existing docs.

 All feedback welcome!  

 Thanks for reading!  I hope you find it useful.



-- 
-- 
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/groups/opt_out.


Re: Step by step debugging

2013-11-12 Thread Ryan Spangler
 Sounds like a fun project, but probably non-trivial. 
 Too bad... unless someone wants to have that fun and then share it with 
the rest of us :-)

I have started a project that does this:  a browser based debugger that 
breaks on exceptions (it attaches to a dt_socket port): 
 https://github.com/prismofeverything/schmetterling

I should have locals displaying this week sometime (you can currently get 
their value, it just doesn't show them to you by default yet).  I am 
planning on adding breakpoints, stepping and source viewing.

Just started this... looking for feedback!

On Thursday, November 7, 2013 1:16:17 AM UTC-8, Bastien Guerry wrote:

 I'm a big fan of edebug, the Emacs debugger, which allows step through 
 debugging (and breakpoints, and some more fun.) 

 Is there anything similar for Clojure? 

 For example, from an Emacs (cider) REPL, I'd evaluate some Clojure 
 expression, then a window would let me go through a buffer containing 
 a copy of the function being evaluated, while allowing me to stop at 
 any step, and to show the result of each step in the minibuffer. 

 (I'm aware of LightTable live REPL, but this is not exactly what 
 I describe above.) 

 Thanks for any hints/pointers, 

 -- 
  Bastien 


-- 
-- 
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/groups/opt_out.


Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-12 Thread Ryan Spangler
Hello Clojure,

Excited to announce today the release of Caribou!  http://let-caribou.in/

We have been building web sites and web applications with it for over two 
years now and improving it every day.  Currently we have four people 
working on it and another ten using it to build things, so it is getting a 
lot of real world testing.

It has been designed as a collection of independent libraries that could 
each be useful on their own, but which come together as a meaningful whole.

We have been spending the last couple months getting it ready for a full 
open source release, and I am happy to say it is finally ready.  Funded and 
supported by Instrument in Portland, OR:  http://weareinstrument.com/  We 
have four projects using it in production, and several more about to be 
launched (as well as over a dozen internal things).

Documentation is here:  http://caribou.github.io/caribou/docs/outline.html

Source is here:  http://github.com/caribou/caribou (use this for issues, 
you don't actually need the source as it is installed through a lein 
template).

Some of the independently useful libraries Caribou is built on are:

* Polaris -- Routing with data (not macros) and reverse routing! : 
 https://github.com/caribou/polaris
* Lichen -- Image resizing to and from s3 or on disk: 
https://github.com/caribou/lichen
* Schmetterling -- Debugging Clojure processes from the browser: 
 https://github.com/prismofeverything/schmetterling
* Antlers -- Useful extensions to mustache templating (helpers and blocks, 
among other things):  https://github.com/caribou/antlers
* Groundhog -- Replay http requests: https://github.com/noisesmith/groundhog

And many others.

Basically this is an Alpha release, and I am announcing it here first in 
order to get as much feedback from the community as possible.  We have made 
it as useful as we can for our purposes and recognize that for it to 
improve from here, we really need as many people using it and building 
things with it as possible.  The documentation also needs to be put through 
its paces:  we need to see how well people are able to use it who know 
nothing about it, based only on the existing docs.

All feedback welcome!  

Thanks for reading!  I hope you find it useful.

-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-12 Thread Ryan Spangler
Marcus,

Great to hear!  You never know when building something like this.

Let me know if you have any trouble getting things up and running with the 
docs.

On Tuesday, November 12, 2013 5:22:44 PM UTC-8, Marcus Blankenship wrote:

 Oh, sweet!  We’re down here in Klamath Falls, and have a total ManCrush on 
 Instrument.  :-)  I had no idea you are a clojure shop, but am thrilled to 
 see you on the bandwagon. 

 Thanks again for releasing this, it looks amazing! 

 Best, 
 Marcus 


 On Nov 12, 2013, at 5:21 PM, Sean Corfield seanco...@gmail.comjavascript: 
 wrote: 

  Funded and supported by Instrument in Portland, OR: 
  http://weareinstrument.com/  
  
  On Tue, Nov 12, 2013 at 5:03 PM, Marcus Blankenship 
  mar...@creoagency.com javascript: wrote: 
  Very nice, Ryan!  Is there a company that’s shepherding the product? 
  
  Best, 
  Marcus 
  
  On Nov 12, 2013, at 5:02 PM, Sean Corfield 
  seanco...@gmail.comjavascript: 
 wrote: 
  
  Wow... That's pretty impressive for an initial alpha release! 
  
  Sean 
  
  On Tue, Nov 12, 2013 at 3:52 PM, Ryan Spangler 
  ryan.s...@gmail.comjavascript: 
 wrote: 
  Hello Clojure, 
  
  Excited to announce today the release of Caribou!  
 http://let-caribou.in/ 
  
  We have been building web sites and web applications with it for over 
 two 
  years now and improving it every day.  Currently we have four people 
 working 
  on it and another ten using it to build things, so it is getting a 
 lot of 
  real world testing. 
  
  It has been designed as a collection of independent libraries that 
 could 
  each be useful on their own, but which come together as a meaningful 
 whole. 
  
  We have been spending the last couple months getting it ready for a 
 full 
  open source release, and I am happy to say it is finally ready. 
  Funded and 
  supported by Instrument in Portland, OR:  http://weareinstrument.com/ We 
  have four projects using it in production, and several more about to 
 be 
  launched (as well as over a dozen internal things). 
  
  Documentation is here:  
 http://caribou.github.io/caribou/docs/outline.html 
  
  Source is here:  http://github.com/caribou/caribou (use this for 
 issues, you 
  don't actually need the source as it is installed through a lein 
 template). 
  
  Some of the independently useful libraries Caribou is built on are: 
  
  * Polaris -- Routing with data (not macros) and reverse routing! : 
  https://github.com/caribou/polaris 
  * Lichen -- Image resizing to and from s3 or on disk: 
  https://github.com/caribou/lichen 
  * Schmetterling -- Debugging Clojure processes from the browser: 
  https://github.com/prismofeverything/schmetterling 
  * Antlers -- Useful extensions to mustache templating (helpers and 
 blocks, 
  among other things):  https://github.com/caribou/antlers 
  * Groundhog -- Replay http requests: 
 https://github.com/noisesmith/groundhog 
  
  And many others. 
  
  Basically this is an Alpha release, and I am announcing it here first 
 in 
  order to get as much feedback from the community as possible.  We 
 have made 
  it as useful as we can for our purposes and recognize that for it to 
 improve 
  from here, we really need as many people using it and building things 
 with 
  it as possible.  The documentation also needs to be put through its 
 paces: 
  we need to see how well people are able to use it who know nothing 
 about it, 
  based only on the existing docs. 
  
  All feedback welcome! 
  
  Thanks for reading!  I hope you find it useful. 
  
  -- 
  -- 
  You received this message because you are subscribed to the Google 
  Groups Clojure group. 
  To post to this group, send email to 
  clo...@googlegroups.comjavascript: 
  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 javascript: 
  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 javascript:. 
  For more options, visit https://groups.google.com/groups/opt_out. 
  
  
  
  -- 
  Sean A Corfield -- (904) 302-SEAN 
  An Architect's View -- http://corfield.org/ 
  World Singles, LLC. -- http://worldsingles.com/ 
  
  Perfection is the enemy of the good. 
  -- Gustave Flaubert, French realist novelist (1821-1880) 
  
  -- 
  -- 
  You received this message because you are subscribed to the Google 
  Groups Clojure group. 
  To post to this group, send email to clo...@googlegroups.comjavascript: 
  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 javascript: 
  For more options, visit this group at 
  http://groups.google.com/group

Re: Step by step debugging

2013-11-12 Thread Ryan Spangler
Lee, 

Thank you for pointing that out!  The README has been updated with more 
explicit instructions.  For those who don't know, to open a dt_socket from 
your project.clj simply add this line:

:jvm-opts [-agentlib:jdwp=transport=dt_socket,server=y,suspend=n]

Schmetterling is still very new (I just started it last week!) and not 
really meant to be released yet, but it is still useful.  And actually the 
earlier people start using it the earlier I can start improving it in ways 
that are relevant to people.  I'll have an official announcement once it is 
ready to be released, but until then I welcome any feedback.

On Tuesday, November 12, 2013 8:33:57 PM UTC-8, Lee wrote:


 Very excited by this. Thanks also to Justin for the pointer. 

 From my perspective a particularly nice additional would be to provide 
 minimal instructions on how to get this running for people who don't know 
 (or necessarily want to have to know) what a dt_socket is. 


 On Nov 12, 2013, at 7:11 PM, Ryan Spangler wrote: 

   Sounds like a fun project, but probably non-trivial. 
   Too bad... unless someone wants to have that fun and then share it 
 with the rest of us :-) 
  
  I have started a project that does this:  a browser based debugger that 
 breaks on exceptions (it attaches to a dt_socket port):  
 https://github.com/prismofeverything/schmetterling 
  
  I should have locals displaying this week sometime (you can currently 
 get their value, it just doesn't show them to you by default yet).  I am 
 planning on adding breakpoints, stepping and source viewing. 
  
  Just started this... looking for feedback! 



-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-12 Thread Ryan Spangler
Prasanna,

It supports Ring as well.  You should be able to just 

lein ring server

in the root of your new project and it will boot up.  The ring options are 
in the project.clj so you can change the port etc.  

It also supports Immutant, Tomcat, HTTPKit, Heroku and Beanstalk.  If you 
know of another good target let me know and we'll support that too!

As for NoSQL, a lot of the Model and Association stuff in Caribou is 
naturally relational, but all of the db interactions are abstracted by a 
DbAdapter protocol, so we (or someone) would just have to write an adapter 
for it.  Maybe some of the Association stuff would be trickier, but there's 
no reason it couldn't be done.  

We are planning to support many more backends in the future, but for now it 
just supports Postgres, Mysql and H2.  There has been talk of supporting 
Datomic as well, we will see what the future holds.  

All that said, there is no reason why you couldn't put a NoSQL db in front 
of the various model queries right now as a kind of caching layer.  As a 
primary data store, that would take some work.  I will see how much 
interest there is!



On Tuesday, November 12, 2013 9:19:27 PM UTC-8, Prasanna Gautam wrote:

 This is really cool. Very easy to get up and running for first try. I have 
 a few questions on the architecture.

 Why Immutant instead of plain ring as the default? I think the number of 
 dependencies could be much lower with it. 

 I know it's only alpha.. but I'm asking this on behalf of others who might 
 be thinking the same.
 And, are there plans for NoSQL database support, like MongoDB, MapDB (
 http://www.mapdb.org/ - I just found out about it myself but this is the 
 only decent in-memory NoSQL solution other than Berkeley DB)?

 On Tuesday, November 12, 2013 6:52:10 PM UTC-5, Ryan Spangler wrote:

 Hello Clojure,

 Excited to announce today the release of Caribou!  http://let-caribou.in/

 We have been building web sites and web applications with it for over two 
 years now and improving it every day.  Currently we have four people 
 working on it and another ten using it to build things, so it is getting a 
 lot of real world testing.

 It has been designed as a collection of independent libraries that could 
 each be useful on their own, but which come together as a meaningful whole.

 We have been spending the last couple months getting it ready for a full 
 open source release, and I am happy to say it is finally ready.  Funded and 
 supported by Instrument in Portland, OR:  http://weareinstrument.com/ We 
 have four projects using it in production, and several more about to be 
 launched (as well as over a dozen internal things).

 Documentation is here:  
 http://caribou.github.io/caribou/docs/outline.html

 Source is here:  http://github.com/caribou/caribou (use this for issues, 
 you don't actually need the source as it is installed through a lein 
 template).

 Some of the independently useful libraries Caribou is built on are:

 * Polaris -- Routing with data (not macros) and reverse routing! :  
 https://github.com/caribou/polaris
 * Lichen -- Image resizing to and from s3 or on disk: 
 https://github.com/caribou/lichen
 * Schmetterling -- Debugging Clojure processes from the browser:  
 https://github.com/prismofeverything/schmetterling
 * Antlers -- Useful extensions to mustache templating (helpers and 
 blocks, among other things):  https://github.com/caribou/antlers
 * Groundhog -- Replay http requests: 
 https://github.com/noisesmith/groundhog

 And many others.

 Basically this is an Alpha release, and I am announcing it here first in 
 order to get as much feedback from the community as possible.  We have made 
 it as useful as we can for our purposes and recognize that for it to 
 improve from here, we really need as many people using it and building 
 things with it as possible.  The documentation also needs to be put through 
 its paces:  we need to see how well people are able to use it who know 
 nothing about it, based only on the existing docs.

 All feedback welcome!  

 Thanks for reading!  I hope you find it useful.



-- 
-- 
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/groups/opt_out.


Re: Releasing Caribou today: Open Source Clojure Web Ecosystem

2013-11-12 Thread Ryan Spangler
Justin,

As far as I know, Immutant is not a dependency, but an option.  Let me know 
if that is not true however.

On Tuesday, November 12, 2013 10:13:17 PM UTC-8, Justin Smith wrote:

 Typically my first step making a caribou app is to remove the immutant 
 dependency. It's pretty straightforward to take it out.

 On Tuesday, November 12, 2013 9:19:27 PM UTC-8, Prasanna Gautam wrote:

 This is really cool. Very easy to get up and running for first try. I 
 have a few questions on the architecture.

 Why Immutant instead of plain ring as the default? I think the number of 
 dependencies could be much lower with it. 

 I know it's only alpha.. but I'm asking this on behalf of others who 
 might be thinking the same.
 And, are there plans for NoSQL database support, like MongoDB, MapDB (
 http://www.mapdb.org/ - I just found out about it myself but this is the 
 only decent in-memory NoSQL solution other than Berkeley DB)?

 On Tuesday, November 12, 2013 6:52:10 PM UTC-5, Ryan Spangler wrote:

 Hello Clojure,

 Excited to announce today the release of Caribou!  
 http://let-caribou.in/

 We have been building web sites and web applications with it for over 
 two years now and improving it every day.  Currently we have four people 
 working on it and another ten using it to build things, so it is getting a 
 lot of real world testing.

 It has been designed as a collection of independent libraries that could 
 each be useful on their own, but which come together as a meaningful whole.

 We have been spending the last couple months getting it ready for a full 
 open source release, and I am happy to say it is finally ready.  Funded and 
 supported by Instrument in Portland, OR:  http://weareinstrument.com/ We 
 have four projects using it in production, and several more about to be 
 launched (as well as over a dozen internal things).

 Documentation is here:  
 http://caribou.github.io/caribou/docs/outline.html

 Source is here:  http://github.com/caribou/caribou (use this for 
 issues, you don't actually need the source as it is installed through a 
 lein template).

 Some of the independently useful libraries Caribou is built on are:

 * Polaris -- Routing with data (not macros) and reverse routing! :  
 https://github.com/caribou/polaris
 * Lichen -- Image resizing to and from s3 or on disk: 
 https://github.com/caribou/lichen
 * Schmetterling -- Debugging Clojure processes from the browser:  
 https://github.com/prismofeverything/schmetterling
 * Antlers -- Useful extensions to mustache templating (helpers and 
 blocks, among other things):  https://github.com/caribou/antlers
 * Groundhog -- Replay http requests: 
 https://github.com/noisesmith/groundhog

 And many others.

 Basically this is an Alpha release, and I am announcing it here first in 
 order to get as much feedback from the community as possible.  We have made 
 it as useful as we can for our purposes and recognize that for it to 
 improve from here, we really need as many people using it and building 
 things with it as possible.  The documentation also needs to be put through 
 its paces:  we need to see how well people are able to use it who know 
 nothing about it, based only on the existing docs.

 All feedback welcome!  

 Thanks for reading!  I hope you find it useful.



-- 
-- 
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/groups/opt_out.