[Survey] Clojure/Script app monitoring service

2023-08-10 Thread Peter Taoussanis
Hi everyone, I’m looking for some assistance.

I’m considering building a paid service for businesses using Clojure/Script 
to help easily observe/monitor their production applications (things like 
tracing, log aggregation, performance measurement, anomaly detection, etc.).

This is a problem I’ve had to tackle myself repeatedly over many years, and 
I’ve been repeatedly dissatisfied with the services currently available.

My next step is to gather some early info from potential users, to help 
understand if what I have in mind might be viable.

So if you or your company have a Clojure/Script application in production, 
please consider helping me out by taking a few minutes to answer a short 
survey at https://www.taoensso.com/clojure/monitoring-survey

It’s 8 questions and takes about 5 minutes.

If it turns out there's interest, I'll share more info later re: the 
specific ideas I have in mind.

Thanks a lot, cheers! :-)

- Peter

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/1946c04b-77c8-4ed1-be29-0b5ddb8c5d43n%40googlegroups.com.


Re: [ANN] 6x new major lib updates incl. HTTP-Kit, Sente, Timbre, Carmine

2020-09-23 Thread Peter Taoussanis
You're very welcome Brent! Cheers :-)

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/9562c16c-971f-4928-9e64-1599ede269e3n%40googlegroups.com.


[ANN] 6x new major lib updates incl. HTTP-Kit, Sente, Timbre, Carmine

2020-09-22 Thread Peter Taoussanis
Hi everyone,

I managed to get an opportunity recently to spend some non-trivial time on 
open-source for a few days! Have cut new releases of several libraries 
below. 

In all cases a big thanks to contributors!

As usual, please check the CHANGELOGs carefully and please do report any 
issues.

Have a great week everyone, enjoy!

Cheers :-)


*- HTTP-Kit v2.5.0*

HTTP-Kit is a simple high-performance event-driven HTTP client+server with 
WebSocket support for Clojure.

v2.5.0 includes GraalVM Native Image compatibility, misc improvements for 
modern JDKs, and a couple new features.

https://github.com/http-kit/http-kit/releases/tag/v2.5.0


*- Sente v1.16.0*

Sente is a library for Clojure + ClojureScript to help build reliable, 
high-performance realtime web applications over WebSockets and Ajax.

v1.16.0 includes Jetty 9 + Undertow adapters, Clojure client support, and 
more.

https://github.com/ptaoussanis/sente/releases/tag/v1.16.0


*- Timbre v5.0.0*

Timbre is a pure Clojure + ClojureScript logging library that's easily 
configured with plain Clojure data and fns.

v5.0.0 includes per-namespace minimum log levels to match Tufte, new Syslog 
+ UDP appenders, improved documentation, and much more.

https://github.com/ptaoussanis/timbre/releases/tag/v5.0.0


*- Carmine v3.0.0*

Carmine is a pure Clojure client for Redis. It includes a basic message 
queue.

v3.0.0 includes an important security fix (via Nippy update), and 
significant reliability improvements to Pub/Sub.

https://github.com/ptaoussanis/carmine/releases/tag/v3.0.0


*- Nippy v3.0.0*

Nippy is the fastest schema-less serialization library for Clojure, and can 
be used as a drop-in replacement for Clojure's reader.

v3.0.0 includes easier upgrading from <= v2.14, options to exclude metadata 
on freeze/thaw, and more.

https://github.com/ptaoussanis/nippy/releases/tag/v3.0.0


*- Tufte v2.2.0*

Tufte is a s simple Clojure + ClojureScript performance profiling + 
monitoring library. Can be used to monitor application performance in 
dev/staging/production/etc.

v2.2.0 includes  optional per-namespace minimum levels to match Timbre.

https://github.com/ptaoussanis/tufte/releases/tag/v2.2.0

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/4a492a2e-6d7d-4b93-8f8c-7436c4b28cd3n%40googlegroups.com.


[Ann] Tempura, a Clj+Cljs i18n translations lib with support for React

2016-10-25 Thread Peter Taoussanis
Hi folks!

So this is the 1st of 4 libs I’ve been meaning to publish for forever.

Available at: https://github.com/ptaoussanis/tempura
Other libs (as usual) at: https://www.taoensso.com/clojure

Enjoy, cheers! :-)

\- Peter Taoussanis, [@ptaoussanis](https://twitter.com/ptaoussanis)

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


[ANN] http-kit 2.2.0 final is out

2016-07-12 Thread Peter Taoussanis
On Clojars, and GitHub at: https://github.com/http-kit/http-kit/releases

This release was put together with the help of (23!) individual 
contributors.

Enjoy, cheers! :-)

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


Re: [ANN] Tufte, simple profiling and performance monitoring for Clojure/Script

2016-07-11 Thread Peter Taoussanis
Thanks Gary, happy to hear that :-)

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


[ANN] Tufte, simple profiling and performance monitoring for Clojure/Script

2016-07-11 Thread Peter Taoussanis


On Clojars, and GitHub at: https://github.com/ptaoussanis/tufte


Basically took the weekend to clean up Timbre's old profiling ns, 
generalize it, and move it to its own lib. Biggest difference for most 
folks will probably be the new documentation.


Enjoy, cheers! :-)

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


Re: [ANN] better-cond 1.0.1

2016-07-02 Thread Peter Taoussanis
Really, really like this. Thank you Mark!

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


Re: [ANN] Truss, an assertions lib for Clojure/Script

2016-01-16 Thread Peter Taoussanis

>
> Wow, this feels exactly right. I am eager to start using it, and delighted 
> it will be so easy.
>

Very happy to hear that James, thanks for saying so :-)

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


Re: [ANN] Truss, an assertions lib for Clojure/Script

2016-01-12 Thread Peter Taoussanis
 

> Thanks Peter, I like it a lot, I mean a lot…
>

Heh heh, thanks mimmo - appreciate that :-)

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


Re: [ANN] Truss, an assertions lib for Clojure/Script

2016-01-12 Thread Peter Taoussanis
BTW have had some folks comment on the length of the video.

This wasn't clear, so will point it out now: if you're looking for a quick 
overview I'd start with the Quickstart 
(https://github.com/ptaoussanis/truss#quickstart) and examples 
(https://github.com/ptaoussanis/truss#detailed-usage) rather than the talk.

The lib's *really* small and takes 2 seconds to learn - the talk's mostly 
there to go into motivations behind the lib and its design choices. If that 
stuff's obvious to you (or not interesting), feel free to just dive in to 
the examples.

Only warning: the examples are mostly for syntax, not use case. You can 
certainly use Truss for simple type assertions, but that's rarely where 
it's most interesting. Personally, I've found it most useful in verifying 
assumptions about application state and that sort of thing. Or for more 
subtle type assertions in hairy code (e.g. re: the presence of nils, blank 
strings, number ranges, specific collection types or counts, conditions 
w/in `reduce`(or transducer) calls, etc.).

Sweet spot's often in larger and/or more complex code but that's largely to 
taste.

Litmus test: if you're writing a complex piece of code and you find 
yourself making implementation choices based on context that's currently 
clear to you from your understanding of how the application works or the 
state it'd be in if this code is running - that context might be worth 
formally capturing in a Truss assertion.

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


[ANN] Truss, an assertions lib for Clojure/Script

2016-01-12 Thread Peter Taoussanis
Hi all,

Quick update: have published a new assertions lib today for Clojure and 
ClojureScript called Truss.

tl;dr - can help you improve Clojure/Script error messages in high-value 
locations.

Docs and info at: https://github.com/ptaoussanis/truss
Introductory talk at: https://youtu.be/gMB4Y-EIArA

Hope someone finds this useful. As usual, please feel free to ping with 
questions/etc.

Happy Tuesday! 

Cheers :-)

- Peter Taoussanis

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


Re: [ANN] core.async-0.2.371

2015-10-28 Thread Peter Taoussanis
Excellent \o/, much appreciated!

-- 
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: Boxed math in transducers

2015-09-23 Thread Peter Taoussanis
Sorry- that should read "a little better", not "little better" ;-)

-- 
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: Boxed math in transducers

2015-09-23 Thread Peter Taoussanis
Hey Alex,

Not sure I follow. If we deref (volatile! 5), the dereffed val is a number.

`(inc @(volatile! 5))` will involve boxed math but `(inc ^long @(volatile! 
5))` won't.

So, for example:

(defn core-take ; As in clojure.core
  ([n]
   (fn [rf]
 (let [nv (volatile! n)]
   (fn
 ([] (rf))
 ([result] (rf result))
 ([result input]
  (let [n @nv
nn (vswap! nv dec)
result (if (pos? n)
 (rf result input)
 result)]
(if (not (pos? nn))
  (ensure-reduced result)
  result

(defn new-take ; Without boxed math
  ([^long n]
   (fn [rf]
 (let [nv (volatile! n)]
   (fn
 ([] (rf))
 ([result] (rf result))
 ([result input]
  (let [^long n @nv
^long nn (vswap! nv #(dec ^long %))
result (if (pos? n)
 (rf result input)
 result)]
(if (not (pos? nn))
  (ensure-reduced result)
  result

Timing on the latter is little better. Does that make sense, or am I 
missing something?

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


Boxed math in transducers

2015-09-23 Thread Peter Taoussanis
Hi all,

Just noticed some use of boxed math in a couple of the Clojure 1.7 
transducers (e.g. `take`). Would there be interest in a PR to add some 
numerical type hints?

Cheers :-)

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


[ANN] Recent clj/s library updates - September 2015

2015-09-06 Thread Peter Taoussanis
*Sente - v1.7.0-beta2 / 2015 Sep 4 (2 days ago)*
*==*
*Realtime web comms for Clojure/Script (think Socket.IO for Clojure).*
https://github.com/ptaoussanis/sente/releases
Notable recent changes:
* Switched to Timbre v4 for cross-platform logging
* Added support for nginx-clojure server
* Fixed an important issue w/ Immutant server over Ajax


*Timbre - v4.1.1 / 2015 Aug 16 (21 days ago)*
*==*
*Pure Clojure/Script logging + profiling.*
https://github.com/ptaoussanis/timbre/releases
Notable recent changes:
* Full ClojureScript support, incl. logging call elision in prod
* Support for MDC-like contexts
* `get-env`, `log-env` macros
* Signf. perf improvements, code refactor


*Carmine - v2.12.0-beta1 / 2015 Aug 31 (6 days ago)*
*==*
*Clojure Redis client + message queue.*
https://github.com/ptaoussanis/carmine/releases
Notable recent changes:
* Added CAS swap utils: `swap`, `hswap` (these work for arbitrary vals, 
incl. serialized Clojure values)
* Continued performance work


*Nippy - v2.9.0 / 2015 June 1 (92 days ago)*
*==*
*High-performance Clojure binary serialization.*
https://github.com/ptaoussanis/nippy/releases
Notable recent changes:
* Significant speed+space improvements when serializing small vals
* Continued misc performance improvements


*Faraday - v1.7.1 / 2015 July 4 (94 days ago)*
*==*
*Clojure DynamoDB client.*
https://github.com/ptaoussanis/faraday/releases
Notable recent changes:
* Support for new DDB types (Boolean, Null, Map, List)
* Bunch of minor fixes/tweaks


*Tower - v3.1.0-beta4 / 2015 Jul 13 (55 days ago)*
*==*
*i18n and L10n library for Clojure.*
https://github.com/ptaoussanis/tower/releases
Notable recent changes:
* Lib updates are on hold; have a pair of new libs that I'd like to replace 
Tower with in future, just need to find time to cut releases.


*Touchstone - v2.0.2 / 2014 Mar 30 (547 days ago)*
*==*
*A/B testing for Clojure.*
https://github.com/ptaoussanis/touchstone/releases
Notable recent changes:
* Stable. Planning an update to add Cljs support in future.


*Encore - v2.7.0 / 2015 Sep 6 (today)*
*==*
*General cross-platform Clojure/Script utils.*
https://github.com/ptaoussanis/encore/releases
Notable recent changes:
* v2.x branch has dropped support for Clojure 1.4


*Upcoming stuff*
*==*
Bunch of libs I'd like to try release over the next few months, just need 
to find time to write docs + cut releases.


*Useful links*
*==*
Libs homepage: https://www.taoensso.com/clojure
Twitter (lib announcements, etc.): https://twitter.com/ptaoussanis


As usual, please feel free to ping with any 
questions/problems/suggestions/whatever.

Happy hacking, cheers! :-)

-- 

*Peter Taoussanis*ptaoussanis at taoensso.com

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


Re: [ANN] Clojure 1.8.0-alpha2

2015-07-20 Thread Peter Taoussanis
 Seems like a bug to me.

Thanks Alex, was about to open an issue but seems you beat me to it :-)

For anyone interested: http://dev.clojure.org/jira/browse/CLJ-1781



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


Re: [ANN] Clojure 1.8.0-alpha2

2015-07-19 Thread Peter Taoussanis
Hey Alex,

Looks terrific, thank you! Particularly excited about CLJ-703 and tuples.

Quick question: are tuples intended to implement :kv-reduce?

Currently (with 1.8.0-alpha2):
(reduce-kv (fn [acc idx in] acc) nil [1 2 3 4 5 6 7]) ; = nil
(reduce-kv (fn [acc idx in] acc) nil [1 2])
;; =  No implementation of method: :kv-reduce of protocol:
;; #'clojure.core.protocols/IKVReduce found for class: clojure.lang.Tuple$T2

Cheers :-)



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


Surprised by behaviour of `compile` vs positional constructor fns

2014-09-22 Thread Peter Taoussanis
Hi all!

Ran into some behaviour today that I wasn't expecting and am wondering if 
someone could shed some light.

Steps to reproduce (reproducible with at least Clojure 1.4.0 and 
1.7.0-alpha2):
1. Setup a namespace with `(defrecord Foo [x])`.
2. Call cider's `cider-load-current-buffer` in Emacs.
3. Evaluate `(compile 'the-ns)` in that namespace.

At this point, we have:

(instance? Foo (Foo.  bar)) = true
(instance? Foo (-Foo bar)) = false

I wouldn't normally call `compile` like this, but I'm curious if someone 
has any idea what's actually happening? The `build-positional-factory` code 
seems to just call the `new` constructor anyway so it's not obvious to me 
why the behaviour would differ. Are the class files getting out of sync 
somehow?

Thanks a lot, cheers! :-)

-- 
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: Surprised by behaviour of `compile` vs positional constructor fns

2014-09-22 Thread Peter Taoussanis
Hi Jozef, thanks a lot for the pointer - that does seem to be the cause! 
Will continue to track from there.

Cheers :-)

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


Re: ClojureScript: Keyword Breaking Change Around the Corner

2014-09-17 Thread Peter Taoussanis
Sorry for digging this up, just got bit hard by this behaviour and I'm 
wondering what the rationale was for not defining `identical?` as 
`keyword-identical?` currently is, and instead adding an additional 
`fast-identical?`.

This way Clojure/ClojureScript code using `identical?` remains portable without 
breaking, and `fast-identical?` could be used internally and by folks familiar 
with the platform-specific ramifications.

Or am I missing a subtlety here?

Thanks a lot, cheers! :-)

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


Re: [ANN] Taoensso library updates / 2014 September

2014-09-07 Thread Peter Taoussanis


 No problem. I just wanted to check that it was an intentional change, and 
 not some unknown bug that had crept in.


Sure, appreciate that. And one had (buggy CHANGELOG) - so good that you 
checked ;-)

I just switched my app from Om/Sablono + Sente to Reagent + Sente and I'm 
 currently working on cleaning things up now that Reagent has allowed for 
 quite a bit of simplification so I'm in refactoring mode at the moment... 


Reagent's great, can't recommend it enough.
 

 About the only thing I could ask for is IE8 compatibility :)


Hmm, yeah - haven't looked into that myself. Can't think of anything 
off-hand that'd make it impossible, PR would absolutely be welcome.

Cheers!

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


Re: [ANN] Taoensso library updates / 2014 September

2014-09-06 Thread Peter Taoussanis
Hi Sean, thank you for pinging about this.

The upgrade to v1.0.0 *is* actually breaking *if* you've been reading from 
the client-side :ch-recv directly. Most folks use the provided router 
utils, so it slipped my mind to document that - I'm really sorry.

Will update the README and CHANGELOG now.

In the meantime, the change you need to make:
Server-side :ch-recv used to receive `event-msg` maps, and still does (no 
change).
Client-side :ch-recv used to receive `event` vectors, and now instead 
receives `event-msg` maps like the server.

Server-side `event-msg` maps contain keys: :ch-recv, :send-fn, 
:connected-uids, :client-uuid, :ring-req, :event, :?reply-fn.
Client-side `event-msg` maps contain keys: :ch-recv, :send-fn, :state, 
:event.

So (:event event-msg) will get you the old event vector.

Motivations behind this change:
1. Client+server :ch-recv values are now consistent (both receive 
`event-msg`s).
2. Client+server routing is therefore now consistent.
3. The extra data in `event-msg`s makes it easier to write functional event 
handlers (i.e. that don't need access to a global send-fn or ch-recv).
4. That all event handlers now take a map makes future changes 
easier/non-breaking (we can add extra interesting keys in time w/o needing 
event handlers to change, etc.).

Definitely should be documented though, again - really sorry about that!
Please feel free to drop me an email if you run into any more trouble.

Cheers! :-)

- Peter Taoussanis



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


A very short explanation of transducers (a comparison to Ring middleware)

2014-09-04 Thread Peter Taoussanis
Seems a lot of folks have been having trouble grokking Clojure 1.7's new 
transducers stuff, which is a pity because they're wicked cool.

Figured an analogy with something familiar might be helpful, so here's a 
very quick comparison with Ring middleware:
https://gist.github.com/ptaoussanis/e537bd8ffdc943bbbce7 (updated since 
yesterday with a clarification by Rich).

Hope that's helpful to someone. Please feel free to suggest 
improvements/corrections/whatever.

Cheers! :-)

-- 

*Peter Taoussanis*ptaoussanis at taoensso.com

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


Re: [ANN] Taoensso library updates / 2014 September

2014-09-03 Thread Peter Taoussanis
Thanks Sun, appreciate all your input on v2.7 - cheers! :-)

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


[ANN] Taoensso library updates / 2014 September

2014-09-02 Thread Peter Taoussanis
(All new releases are now on BreakVersioning, 
https://github.com/ptaoussanis/encore/blob/master/BREAK-VERSIONING.md).

*Sente - v1.0.0 / 2014 Sep 2 (today)*
*==*
*Realtime web comms for Clojure/Script (think Socket.IO but with Transit  
core.async).*
https://github.com/ptaoussanis/sente/releases
Notable recent changes: v1 release, optional Transit support, efficiency 
improvements (perf+bandwidth).

*Carmine - v2.7.0 / 2014 Aug 27 (-6days)*
*==*
*Clojure Redis client + message queue.*
https://github.com/ptaoussanis/carmine/releases
Notable recent changes: lock-free Apache Commons Pool 2 pooling, updated 
Redis commands.

*Faraday - v1.5.0 / 2014 July 26 (-38days)*
*==*
*Clojure DynamoDB client.*
https://github.com/ptaoussanis/faraday/releases
Notable recent changes: allow reading of unserialized bin values written 
with other clients.

*Nippy - v2.7.0-RC1 / 2014 Aug 27 (-6days)*
*==*
*High-performance Clojure binary serialization.*
https://github.com/ptaoussanis/nippy/releases
Notable recent changes: ~40% perf bump over v2.6.0, LZ4 compressor, id'd 
extension types, Fressian comparison benchmarks.

*Timbre - v3.3.0 / 2014 May 8 (-4months)*
*==*
*Pure-Clojure logging + profiling.*
https://github.com/ptaoussanis/timbre/releases
Recent changes: some minor fixes, appender updates.

*Tower - v3.0.0 / 2014 Aug 28 (-5days)*
*==*
*i18n and L10n library for Clojure.*
https://github.com/ptaoussanis/tower/releases
Recent changes: final ClojureScript support, a bunch of general API 
improvements.

*Touchstone - v2.0.2 / 2014 Mar 30 (-5months)*
*==*
*A/B testing for Clojure.*
https://github.com/ptaoussanis/touchstone/releases
Recent changes: stable.

*Encore - v1.7.3 / 2014 Sep 1 (yesterday)*
*==*
*General cross-platform Clojure/Script utils.*
https://github.com/ptaoussanis/encore/releases
Recent changes: nothing major- a few new utils, a few fixes.


*Useful links*
*==*
Libs on GitHub: https://github.com/ptaoussanis?tab=repositories
Libs homepage: https://www.taoensso.com/clojure-libraries
Twitter (lib announcements, etc.): https://twitter.com/ptaoussanis


As usual, please feel free to ping with any 
questions/problems/suggestions/whatever.

Happy hacking/Tuesday, cheers! :-)

-- 

*Peter Taoussanis*ptaoussanis at taoensso.com

-- 
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: Sente - is it possible to close a connection?

2014-08-25 Thread Peter Taoussanis
Hi guys,

 (sente/chsk-reconnect! my-chsk) to disconnect (and then reconnect) a 
connection.

Yup, you can call `chsk-reconnect!` from the client to reset its 
connections. This is useful mostly for picking up possible session changes 
after authentication, etc.

There isn't currently a client-side `disconnect!` fn, but it'd be trivial 
to add (GitHub issue/PR welcome).


 I think you can send :chsk/close:

Yeah, Sam's right (thanks Sam!). The server can send a `[:chsk/close]` 
event to a user-id to have all of those user's connections terminated. If 
any clients are still active though, they'll just automatically attempt to 
reconnect again.

You'd normally send this event during the server's normal procedure to 
logout+cleanup a user.


 It seems that both chsk-reconnect! and :chsk/close events will let the 
client control its connection state, but there doesn't seem to be any way 
for the server to do so.

Note that the `[:chsk/close]` special event is issued from the server, not 
the client. Reason it isn't documented yet is that it's still subject to 
change and may actually be dropped in future. Any change to the current 
behaviour will be listed in the CHANGELOG though.


 Still, I'd like the server to be able to sever connections, although its 
not a big deal since I can have the server send an event to tell the client 
to do so.

Sure. One minor clarification: Sente intentionally decouples the notion of 
connection status and intention. It'll never assume that a dropped 
connection is _intentional_ - so it'll always try to recover.

Connections come and go. It's the (higher-level) channel socket that you 
must close to convey that you're done with all comms and don't want any 
more connections. The (higher-level) channel socket can only be closed 
intentionally, it won't ever close due to changing network conditions, etc.

Clients can indicate that they're done with all comms with a 
`(chsk/disconnect! client-chsk)` call.

To do this from the server's end, the server may send some notification 
event to a user's clients - and those clients may choose to honour the 
termination request with `(chsk/disconnect! client-chsk)` calls.

Does that make sense?

So it sounds like the client-side `disconnect!` fn is what you want. Again 
- issues/PR welcome! Otherwise will try get this in by Wednesday, just busy 
juggling some urgent tasks.

Cheers! :-)



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


Re: [ANN] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-08-17 Thread Peter Taoussanis
Hey Henrik,
 

 Yes, thanks for Sente, Peter!
 Will Sente eventually use/support Transit? :-)


Good question. Haven't actually taken a proper look at Transit yet, but 
definitely planning to when I can find some time. Issue / PR welcome till 
then if you or anyone else has some specific ideas in mind :-)

Cheers!

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


Re: [ANN] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-08-15 Thread Peter Taoussanis
You're very welcome Andrew, thanks for saying so!

Cheers! :-)

-- 
*Peter Taoussanis*
taoensso.com https://www.taoensso.com

-- 
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 Getting Sente to Work

2014-07-30 Thread Peter Taoussanis


 Ok, new github issues is here 
 https://github.com/ptaoussanis/sente/issues/58.


Great, thanks - will follow up there later today! Cheers :-)

-- 
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 Getting Sente to Work

2014-07-28 Thread Peter Taoussanis
Hey Tim, sorry for not responding earlier - didn't notice your post till 
now (not often on the group).

Glad you found a solution (thanks Dan, Bob!). 

Just to clarify one thing though - a CSRF middleware is definitely 
recommended, but shouldn't be _necessary_. If Sente detects that no CSRF 
token is present in the Ring request during handshake, it'll print a 
warning to the JS console - but it should still continue to function 
normally after that.

It sounds to me like the issue you were having was with the default 
`chsk-url-fn`. A misconfigured CSRF middleware would result in a 403 error 
(forbidden), not a 404 error (not found).

The change you made for Austin looks good, but you will need to make an 
allowance for cases where the `websocket?` argument is false (i.e. for Ajax 
connections). You can see the `default-chsk-url-fn` as an example:

(def default-chsk-url-fn
  `window-location` keys:
:href ; \http://www.example.org:80/foo/bar?q=baz#bang\;
:protocol ; \http:\ ; Note the :
:hostname ; \example.org\
:host ; \example.org:80\
:pathname ; \/foo/bar\
:search   ; \?q=baz\
:hash ; \#bang\
  (fn [path {:as window-location :keys [protocol host pathname]} websocket?]
(str (if-not websocket? protocol (if (= protocol https:) wss: 
ws:))
 // host (or path pathname


I've also amended the relevant docstrings to hopefully make all this 
clearer for folks in future. Feel free to ping me here or on GitHub if I 
was unclear somewhere or if you've got any follow-up questions.

Cheers! :-)

-- 
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 Getting Sente to Work

2014-07-28 Thread Peter Taoussanis
The new 
docstring: 
https://github.com/ptaoussanis/sente/blob/65fcf8d9be14bfc69a7798b5c159780d1d2a3804/src/taoensso/sente.cljx#L787

-- 
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 Getting Sente to Work

2014-07-28 Thread Peter Taoussanis


 Wrt the CSRF issue, I'll try running again without it.


Out of curiosity, sure - but if you've already gone to the effort of 
setting up the CSRF I'd leave it in (better to have it) :-)
 

 Now, a port changed fixed the issue for me. But before I passed in a 
 *chsk-url-fn*, I was still getting a 404, even when trying with a browser 
 (ie, using the correct port).


Not sure about that, may be that something in your setup is tripping up the 
default `chsk-url-fn`. Would appreciate a GitHub issue on it and I'll take 
a closer look - may be a bug.

That 404 went away when I included the CSRF middleware. I still had to pass 
 in a custom *chsk-url-fn*, but I could use it through the browser, for 
 example. 


My guess is that the 404 is going away because you're passing in a custom 
`chsk-url-fn`, not because of the CSRF middleware. I.e. it's a broken chsk 
url that's causing the 404, not anything to do with the CSRF.


And I'm just grokking the false `*websocket?`* allowance now. Ie, an https 
 ajax connection would give me a sente URL of *wws://172.28.128.5:8090/chsk 
 http://172.28.128.5:8090/chsk*. Is that right? What about plain http?


The `chsk-url-fn` will be called with:
1. The path as given to the client-side `make-channel-socket!` fn (usu. 
/chsk).
2. A window location map of the current page.
3. A bool indicating whether Sente is requesting a WebSocket (true) or Ajax 
(false) connection.

From these, your fn will need to produce an URL that matches your 
server-side channel socket route.

For WebSocket connections you'll want the URL to start with ws:// 
(insecure) or wss:// (secure).
For Ajax connections you'll want the URL to start with http://; (insecure) 
or https://; (secure).

I wouldn't stress too much about that though - let's start with a GitHub 
issue since it's quite possible I can mod the default fn to cover your 
use-case automatically. Ideally you shouldn't need to fiddle with any of 
this :-)

Cheers!


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


Re: [ANN] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-04-17 Thread Peter Taoussanis
For those that might be following, have pushed `v0.10.0` so 
long: https://github.com/ptaoussanis/sente/releases/tag/v0.10.0

The server-side `make-channel-socket!` fn's return value now includes a 
`:connected-uids` atom key. You can deref that to get a realtime snapshot 
of all connected user-ids, or you can attach a watch to get notified of any 
changes as they happen.

This makes something like a who's online now trivial, and is a good 
foundation for higher-order stuff like subscriptions, etc.

Also updated the reference example to show how one would use this for a 
simple broadcast.

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


Re: [ANN] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-04-16 Thread Peter Taoussanis


 So yeah, I think that exposing a list will get us pretty far. The missing 
 piece, then, would be the ability for a a client to send a connection 
 request for a specific channel.


I'll be honest I'm a little hesitant to add any kind of room/subscription 
facilities to Sente itself...

My thinking currently goes:
* Far as I can tell (?), this is always _very_ easy to do application-side.
* Doing it application-side gives a lot more flexibility. For example, what 
if you've got multiple servers and want a distributed/db-backed 
subscription index?
* For general hygiene I prefer keeping state (like subscriptions) separate 
from the comms mechanism itself. Keeping subscription info in Sente makes 
it tricky to get to if you want to do something unexpected with it. When 
you control the shape+location of the relevant data/atom(s), you're free to 
use it and bash on it however you like.

Instead, I'd propose to just expose a set of currently-connected uids. You 
can then intersect that set against any subscription/channel logic you may 
have.

Having said all that, I'm not sure what Socket.IO's rationale was when they 
chose to bundle subscription semantics into the core API so I might well be 
missing something...
Does that make sense? What do you think? Is your concern more that 
maintaining your own subscription data will be a nuisance, or that it's 
difficult to do? Am definitely open to ideas I may not have thought of.

  

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


Re: [ANN] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-04-15 Thread Peter Taoussanis
Hey Sam!

it doesn't look like the list of all connected users is available in the
 API.


Yeah, that's right. Have been punting on this...

For the moment have left it up to applications to decide who they're
interested in broadcasting to. This might be everyone that's connected,
everyone that's connected with certain credentials, everyone subscribed to
certain topics, etc.

Basically the application's expected to keep an appropriate index of
event-types - user-ids.

Haven't thought much about what kind of help the core API could offer.
Probably a good starting point would be a simple set of all currently
connected uids. Then folks could intersect that against their own
subscriptions, etc.

Would that be helpful in your case? Otherwise, like I say - haven't thought
much about this so ideas would be very welcome.

Cheers! :-)

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


[ANN] Taoensso library updates / Apr 2014

2014-04-07 Thread Peter Taoussanis
Hi all, quick batched update on some libs that I put out. Hope someone 
finds these useful. As usual, API docs are available on each GitHub page.

Have fun, cheers :-)


*Sente - v0.9.0 / 2014 Mar 29 (NEW)*
*==*
*Realtime web comms for Clojure*
https://github.com/ptaoussanis/sente/releases
Recent changes: efficiency+performance improvements, doc improvements.

*Carmine - v2.6.0 / 2014 Apr 1*
*==*
*Clojure Redis client + message queue*
https://github.com/ptaoussanis/carmine/releases
Recent changes: performance+reliability updates, prep for Redis Cluster 
support, HyperLogLog support.

*Faraday - v1.3.0 / 2014 Mar 30*
*==*
*Clojure DynamoDB client*
https://github.com/ptaoussanis/faraday/releases
Recent changes: better DynamoDB number support, more connection options.

*Nippy - v2.6.0 / 2014 Mar 30*
*==*
*High-performance Clojure binary serialization*
https://github.com/ptaoussanis/nippy/releases
Recent changes: efficiency improvements, API improvements, some new utils. 
Benchmarks now include Fressian comparison.
Work on v2.7.0 is also underway with an additional ~40% perf bump.

*Timbre - v3.1.6 / 2014 Mar 16*
*==*
*Pure-Clojure logging + profiling*
https://github.com/ptaoussanis/timbre/releases
Recent changes: some minor fixes, mostly relating to profiling.

*Tower - v2.1.0 pre-release / 2014 Mar 30*
*==*
*i18n and L10n library for Clojure*
https://github.com/ptaoussanis/tower/releases
Recent changes: added ClojureScript translation support.

*Touchstone - v2.0.2 / 2014 Mar 30*
*==*
*A/B testing for Clojure*
https://github.com/ptaoussanis/touchstone/releases
Recent changes: stable.
ClojureScript support is in the pipeline.


*Useful links*
*==*
Libs homepage: https://www.taoensso.com/clojure-libraries
Twitter (lib announcements, etc.): https://twitter.com/ptaoussanis

-- 

*Peter Taoussanis*ptaoussanis at gmail.com

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


Re: [ANN] Taoensso library updates / Apr 2014

2014-04-07 Thread Peter Taoussanis
You're very welcome Leif, cheers :-)

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


Unexpected core.async timeout behaviour

2014-03-28 Thread Peter Taoussanis
Hi all, quick question:

`(dotimes [_ 5] (go (! (async/timeout 100` runs as expected.
`(dotimes [_ 5] (go (! (async/timeout (+ 50 (rand-int 100))` 
produces an error:

( (.size takes) impl/MAX-QUEUE-SIZE) java.lang.AssertionError: Assert 
failed: No more than 1024 pending takes are allowed on a single channel.

It appears (?) that there's a (surprisingly low?) limit to the number of 
unique timeout timestamps that can be simultaneously queued. 

Is this the expected behaviour running Clojure 1.6.0, core.async 
0.1.278.0-76b25b-alpha?

Much appreciated, thanks! Cheers :-)
 

-- 
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: Unexpected core.async timeout behaviour

2014-03-28 Thread Peter Taoussanis
Hi Tim, thanks for the info!

It's not clear to me that this is the same issue, unfortunately. (Though I 
may be missing something obvious).

In the example I've provided above, we're actually creating a _new_ channel 
for each take. The problem appears to be either some interaction between 
the loop and core.async that I'm not aware of, or something on the 
_implementation-end_ that is bumping up against the referenced issue (i.e. 
an insufficiently-buffered channel somewhere).

So there's actually no channel here that I could be buffering, since it's 
not my channel that's overflowing. Again, modulo me missing something 
obvious :-)

Does that make sense?

  

-- 
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: Unexpected core.async timeout behaviour

2014-03-28 Thread Peter Taoussanis
Please, not at all! Appreciate any ideas :-)

-- 
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: Unexpected core.async timeout behaviour

2014-03-28 Thread Peter Taoussanis
Okay, fantastic - appreciate the detailed info Timothy!

This did actually came up in staging today; reduced it to the toy example 
here. Now that I understand what's happening, let me think about it a 
little and get back to you.

BTW I don't think I've ever thanked you personally for your work on 
core.async. It's incredible, a real game changer and a pleasure to work 
with - so thank you.



-- 
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: Unexpected core.async timeout behaviour

2014-03-28 Thread Peter Taoussanis
One thing I'm not clear on: if I've understood your explanation correctly, 
I would expect the 100ms timeout to produce this error _more_ (not less) 
often.

So can I just confirm some things here?

1. `async/timeout` calls can (always?) get cached to the nearest 
TIMEOUT_RESOLUTION_MS.
2. In this tight loop example, that means that `!` is sometimes getting 
called against the same (cached) timeout channel.
3. It's happening sufficiently often (do to the high loop count+speed) to 
overflow the [unbuffered] timeout channel's implicit take buffer.

Is that all right?

If so, why isn't the fixed `(async/timeout 100)` channel producing the same 
(or worse) behaviour? Is something preventing it from being cached in the 
same way?

-- 
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: Clojure 1.6.0-RC1 - LAST CHANCE, PLEASE TEST

2014-03-19 Thread Peter Taoussanis
I've got RC1 running in a number of places, all working 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.


Re: [ANN] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-03-02 Thread Peter Taoussanis
Hi Mark,

I'm trying to learn Sente using the LightTable browser connected repl.


Ahh, nice. Haven't tried LightTable yet myself, but I'd think it should
work okay.



 From the JS console, I see repeated, failed attempts to connect the server.


The URL is what's tripping you up here. Is there a reason you specifically
want to provide an absolute URL? At the moment `make-channel-socket!` just
takes a path (like /chsk). The host and port, etc. will all be determined
for you automatically. /chsk is a reasonable choice btw - it's not
user-facing so doesn't need to be particularly meaningful to anyone but you.

Taking a very quick look at the source for the CLJS make-channel-socket!,
 it seems that it tries to resolve the url using the CLJS chsk-url function
 which, in turn, uses encore/get-window-location.


That's correct. It just grabs the host and protocol of whatever page is
serving the JavaScript. HTTPS protocols will be converted to WSS,
everything else goes to WS. You should be fine there, I'd think.

 (put! ch-chsk From client!)

Note that you'll never be putting to the `ch-chsk` yourself, it's for
receiving only. To send events you'll use the `chsk-send!` fn (the API is
described at https://github.com/ptaoussanis/sente#now-what).

I also updated the repo a couple days ago to include a working example
project that you could pull into LightTable to hack on. Otherwise feel free
to open a GitHub issue if you have any other questions - am happy to help.

Cheers :-)

- Peter

-- 
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] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-03-02 Thread Peter Taoussanis


 and that necessitated delivering my HTML through http-kit rather than the 
 shortcut of reading it from the file system using file://...  


Yes, good catch - sorry, forgot to mention that.
 

 Once I did that, an assertion nicely documented the use of chsk-send! 
 (thanks for that!).  One small thing that tripped me up: It seems the event 
 id must be a namespaced keyword.  I haven't thoroughly rtfm yet so if 
 that's doc'd, bad on me.


It's documented but easy to miss - I'll add an extra assertion to print on 
malformed event ids (thanks for the feedback!).

Cheers :-)

  

-- 
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] clojure.test.check (previously, simple-check)

2014-02-28 Thread Peter Taoussanis
Congrats Reid, thanks a lot for all your work on this!

Have only been using simple-check for a little while now, but it's already 
paid big dividends in production. One of the most concretely useful testing 
tools I've ever used. For folks that haven't tried it, I'd absolutely 
recommend taking a look.

Great stuff.

Cheers! :-)

- Peter

-- 
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] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-02-27 Thread Peter Taoussanis
@Base

This looks great!  can't wait to try it out. 
 Well done.


Much appreciated, hope it's useful :-)

 @edbond

Thanks. Can you compare sente with chord?


Sure, I can try - have never actually used Chord though (it wasn't around 
when I wrote Sente's predecessor) - so I can only comment superficially on 
what I've gleaned from the README now (would appreciate any corrections!).

Similarities:
* Both seem to offer edn WebSocket messages over core.async channels.
* Both seem to require http-kit for the moment.

Primary difference seems to be that Chord supports only WebSockets (?) 
whereas Sente will fall back to Ajax when WebSockets are unavailable. This 
has ramifications for the API where Chord seems to prefer working with the 
channel directly and Sente uses a send fn to wrap away some of the protocol 
differences.

Sente's wrapping extends to allow things like optional callbacks over 
WebSockets (something not natively available) and broadcasting to multiple 
clients (e.g. when a particular user has multiple browser tabs and/or 
devices connected simultaneously, etc.) which I've found important in 
practice. Some web apps don't do this very well (even Google seems to 
struggle with it), so having a sensible solution baked in can be helpful.

Am not sure what Chord's doing in the way of reconnects, etc.

tl;dr Chord seems be a relatively close-to-the-metal mapping of WebSockets 
to edn channels where Sente is more like Socket.io with edn channels.

I'd probably select between the two based on use-case though, again, I'm 
not at all familiar with Chord or other alternatives so I may well be off 
here.

Hope that helps a little, cheers! :-)

-- 
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] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-02-27 Thread Peter Taoussanis
Quick addendum: I've had a few folks ask about various security 
implementations.

So first up - as I mention in the REAME, I have had to make some changes to 
the codebase for the public release so I wouldn't quite trust anything 
pre-1.0 in production just yet (there's likely at least minor bugs). Having 
said that, the general model has played out well in practice elsewhere.

A few specifics that have come up:

 * Tools.reader's read-string is used server-side, so arbitrary code 
evaluation isn't an issue.
 * It _is_ possible for the server to receive malformed or hostile requests 
(as it would be via any other protocol). The implementation itself doesn't 
depend on the accuracy of any information provided by the client, but the 
usual security measures will apply server-side for code you write: only 
respond to well-formed requests, ensure users are authenticated+authorised 
where appropriate, etc. Auth stuff is beyond the scope of Sente, but it 
won't do anything to get in your way.
 * Ring session information _is_ made available server-side for all 
requests (including WebSocket requests), so the commonest session-based 
auth methods basically work out-the-box.
 * The client-side user-id *can* be forged, but it isn't used for anything 
that's security sensitive. It's there only as an optimisation to disable 
Ajax long-polling when a user clearly isn't logged in. If someone were to 
fudge the id, the only negative effect would be an the creation of an 
unnecessary long-polling connection that is never used (the server will 
never acknowledge it).
 * HTTPS works seamlessly, even for WebSockets. When the page is served 
over HTTPS, Sente will work over HTTPS.
 * CSRF protection is baked in, but you need to do a few things on your end 
to enable it. A client-side warning will be printed when no CSRF code is 
provided. Recommend checking out the example project for details (it 
includes CSRF protection).

So tl;dr - there's a bit going on, but nothing that's fundamentally 
different from the usual Ring security model. Auth and CSRF are the 
responsibility of the app as usual, but Sente provides hooks in the 
appropriate places to plug in whatever you're using.

Will try update the README later today with the info above.

Hope that helps, happy Friday! :-)

- Peter

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


[ANN] Sente - Clojure(Script) + core.async + WebSockets/Ajax

2014-02-26 Thread Peter Taoussanis
Hi folks,

Quick post to announce a new lib release: 
https://github.com/ptaoussanis/sente

From the README:
*Sente* is small client+server library that makes it easy to build *reliable, 
high-performance realtime web applications with Clojure*.

* *Bidirectional a/sync comms* over both *WebSockets* and *Ajax* 
(auto-selecting).
* *Robust*: auto keep-alives, buffering, mode fallback, reconnects.
* edn rocks. So *send edn, get edn*: no json here.
* *Tiny, simple API*: make-channel-socket! and you're good to go.
* Automatic, sensible support for users connected with *multiple clients* 
and/or 
devices simultaneously.
* *Flexible model*: use it anywhere you'd use WebSockets or Ajax.
* *Fully documented, with examples* (more forthcoming).
* Small: *less than 600 lines of code* for the entire client+server 
implementation.
* *Supported servers*: currently only http-kit, but easily extended.

---
Have been using something like this in production since a little after 
core.async came out, and wouldn't want to go back. Note that I tweaked a 
few things for the public release so there may be some rough edges 
initially. 

An example project's included (new as of today) and there's a Leiningen 
alias configured to handle all the fiddly bits like getting the Cljx and 
Cljs to compile: just download, `lein start-dev` at a terminal, and you're 
good to go.

Any questions/problems/whatever, you can reach me here or on GitHub.

That's it! Happy hacking, cheers! :-)
- *Peter Taoussanis*
https://twitter.com/ptaoussanis
https://www.taoensso.com/clojure-libraries

-- 
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: Clojure web server benchmarks

2014-01-20 Thread Peter Taoussanis
Thanks Jim, that's terrific!

For those following, updated results now 
available: https://github.com/ptaoussanis/clojure-web-server-benchmarks

-- 
-- 
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: Clojure web server benchmarks

2014-01-14 Thread Peter Taoussanis
Oh wow, that's fantastic!

For those watching: Xfeep's fixed a number of config issues, updated all
the servers, and completely updated the chart.

Absolutely well worth a look if you're interested in Clojure web server
performance.

* Results are here:
https://github.com/ptaoussanis/clojure-web-server-benchmarks
* His GitHub page: https://github.com/xfeep
* His nginx/clojure lib: https://github.com/xfeep/nginx-clojure

Cheers! :-)

-- 
*Peter Taoussanis*

-- 
-- 
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: Clojure web server benchmarks

2014-01-12 Thread Peter Taoussanis
Hi Xfeep,

Thank you, I could never understand what configuration (setting) was wrong.
I do not have time to update the project now, but if you give me your
GitHub user name - I can add you to the repo?

You can update the tests and/or results if you want to.

Thank you also for your work on nginx-Clojure!

Cheers :-)

-- 
*Peter Taoussanis*

https://www.taoensso.com

-- 
-- 
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: Clojure web server benchmarks

2014-01-12 Thread Peter Taoussanis

 You are welcome.
 My Github user name is xfeep.
 I'm glad to join the repo. Thanks for your invitation!


Okay, great - I have added you. You can make any changes you like. I would
be happy if you or someone else wants to maintain (update) the repo.

Cheers :-)

-- 
*Peter Taoussanis*

-- 
-- 
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] Cloact 0.1.0 - Yet another React wrapper for ClojureScript

2014-01-11 Thread Peter Taoussanis
Hi Dan,

This seems like a really smart approach to me. I've been playing with a 
number of ways of structuring a large Cljs application recently - and the 
way Cloact cooperates with atom derefs is pretty inspired. It's flexible, 
it's fast, it's natural - and it makes transition from a non-React codebase 
easy (trivial in my case since I already using Hiccup).

Seriously great stuff, thank you for sharing this!

BTW for those looking for single-state snapshots (for undos, tooling, 
debugging, etc.) - all you'd need to do is merge any individual atom 
snapshots that constitute your full application state. It should be easy to 
extend Cloact (or something like Reflex https://github.com/lynaghk/reflex) 
to do the state tracking automatically.

Cheers! :-)

- Peter Taoussanis

-- 
-- 
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: [ClojureScript] [ANN] Cloact 0.1.0 - Yet another React wrapper for ClojureScript

2014-01-11 Thread Peter Taoussanis

 Quite another thing is if it is a good idea to do that :-) If possible, I'd 
 say it is better to keep state that belongs together in a single atom.

Am looking at this from a performance point of view. You're marking components 
as dirty when there's any change in an atom being deref'ed by the component, 
right?

But I'm guessing it's quite common for a component to be dealing with only a 
small subset of the data within a larger state atom. (This is what Om's cursors 
are addressing, it seems). In that case (please correct me if I'm wrong) - the 
number of needless rerenders will grow with the number of component-irrelevant 
bits of information in each atom.

One simple way of addressing that is to use more, smaller atoms - or to use 
views on atoms (as Reflex does). For example instead of marking a component 
as dirty when @my-atom changes, we could mark it as dirty only when 
`(:relevant-submap @my-atom)` changes.

Does that make sense, or am I misunderstanding something?

-- 
-- 
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: [ClojureScript] [ANN] Cloact 0.1.0 - Yet another React wrapper for ClojureScript

2014-01-11 Thread Peter Taoussanis

 But it would probably be better to just pass (:relevant-submap @my-atom) to a 
 sub-component. The subcomponent will only be re-rendered when its arguments 
 (i.e the params map and possible children) changes.

Ahh, gotcha. Of course, thank you!

 Also, React is fast enough that a few re-renderings won't even be noticeable 
 most of the time. Unless React actually has to change the DOM the cost is 
 very low.

Okay, also good to know. Very excited to start playing with this properly soon.

All the best, cheers! :-)

-- 
-- 
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: Quick library status updates (logging, Redis, i18n, etc.)

2013-12-05 Thread Peter Taoussanis
Have had some folks ask about the Carmine appender performance I quoted - 
the 50k/sec figure is conservative if we're talking about server hardware. 
If you're not logging awfully large arguments (large state maps, etc.) - 
you'll basically see standard [unpipelined] Redis write performance for 
your system.

Each log entry consists of a serialization and 2 Redis ops (ZSET, HSET). 
Log entry garbage collection is done infrequently so the amortised cost is 
low.

I see around 250k writes/sec on an Intel Xeon E3-1270 Quadcore Haswell. 
That's an upper-limit for the Redis server, the actual bottleneck will 
likely be the clients making the logging calls.

-- 
*Peter Taoussanis*

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


Quick library status updates (logging, Redis, i18n, etc.)

2013-12-04 Thread Peter Taoussanis
Hi all, quick batched update on some libs that I'm maintaining:

*Timbre - v3.0.0-RC2 - 2013-12-04*
==
Logging  profiling tools

Major recent changes:
* Carmine (Redis) appender that serializes log entries to length-limited, 
rotating lists by log level. Allows easy querying+manipulation of log as a 
Clojure value: the log is just a vector of ordered maps. Works great with 
Datomic's query engine, or regular seq fns (filter, group-by, sort-by, 
etc.).
* Support for ad hoc logging config - no longer reliant on a global config 
atom (though it's still there for convenience).
* Appender rate limiter has been made a lot more flexible, useful by 
default.

https://github.com/ptaoussanis/timbre
https://github.com/ptaoussanis/timbre/blob/master/CHANGELOG.md
http://ptaoussanis.github.io/timbre/ - API docs


*Carmine v2.4.0 - 2013-11-18*
===
Redis client  message queue

Major recent changes:
* Completely rewrote message queue system - numerous big improvements, 
incl. important reliability improvements.
* Completely rewrote reply parsing system for robustness + flexibility.
* Brought Tundra out of alpha, added S3 datastore. Allows automatic data 
replication to a secondary data store, and an option to automatically evict 
cold keys from memory. Basically provides a convenient way of running Redis 
against much larger datasets than can fit in memory.
* Big improvements to atomic operations API - everything has been unified 
behind a single interface.
* A ton of other small improvements, including bug fixes.

https://github.com/ptaoussanis/carmine
https://github.com/ptaoussanis/carmine/blob/master/CHANGELOG.md
http://ptaoussanis.github.io/carmine/ - API docs


*Nippy v2.5.1 - 2013-12-04*
=
Extendable, high-performance, binary serialization

Major recent changes:
* Continued performance work. Think it's ballpark about as fast as it's 
going to get.
* LZMA2 very-high-compression compressor (ahem).
* New Java Serializable fallback support. Basically serializes anything you 
can throw at it - will select the best available method. Notably Throwables 
of all types are now covered.

https://github.com/ptaoussanis/nippy
https://github.com/ptaoussanis/nippy/blob/master/CHANGELOG.md
http://ptaoussanis.github.io/nippy/ - API docs


*Tower v2.0.1 - 2013-11-06*
=
Internationalisation (i18n) and localisation (L10n) tools

Major recent changes:
* Stable.

https://github.com/ptaoussanis/tower
https://github.com/ptaoussanis/tower/blob/master/CHANGELOG.md
http://ptaoussanis.github.io/tower/ - API docs


*Faraday v1.0.1 - 2013-12-04*
==
Amazon DynamoDB client

Major recent changes:
* Went 1.0, production-ready.

https://github.com/ptaoussanis/faraday
https://github.com/ptaoussanis/faraday/blob/master/CHANGELOG.md
http://ptaoussanis.github.io/faraday/ - API docs


*Touchstone v2.0.1 - 2013-11-25*
=
High performance, rapidly converging A/B testing tool

Major recent changes:
* Stable.

https://github.com/ptaoussanis/touchstone
https://github.com/ptaoussanis/touchstone/blob/master/CHANGELOG.md
http://ptaoussanis.github.io/touchstone/ - API docs


*General status*


Tower still requires Clourescript dictionary support - hope to find some 
time to look into that in the coming weeks. Carmine's got a bunch of 
changes coming up to support Redis Cluster  Sentinel - though I'm waiting 
on the specs there to get finalised first. Everything else should 
(hopefully) stay more or less stable from here (modulo bugs).

Carmine's in good shape as of v2.4. Timbre's in good shape as of v3, though 
the RC will need some time to settle before I'm confident it's good for 
production.

Ahh- yeah, nothing else I can think of.

Hit me up if you have any questions/problems/wanna-say-hi/whatever.

Cheers! :-)

-- 

*Peter Taoussanis*ptaoussanis at gmail.com
https://twitter.com/ptaoussanis

-- 
-- 
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: Quick library status updates (logging, Redis, i18n, etc.)

2013-12-04 Thread Peter Taoussanis
Thanks Baishampayan, Karsten - appreciate it!

-- 
-- 
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: Quick library status updates (logging, Redis, i18n, etc.)

2013-12-04 Thread Peter Taoussanis
Hi Colin,

Timbre looks quite cool but just a bit surprised to see it using spit.
 Surely thats not particularly performant or is there something I'm missing?


Spit does alright in a lot of cases (certainly for prototyping, etc.). The
example appenders are there mostly to show how appenders are written so the
goal was brevity+clarity. In production you'll generally be writing to a db
or some other form of distributed storage, so you'll be using your own
appender.

The Carmine appender is performant out-the-box (~50k+ writes/sec on decent
hardware).

-- 
*Peter Taoussanis*

-- 
-- 
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] Carmine (Redis client) v2, Nippy (serializer) v2 are out

2013-07-23 Thread Peter Taoussanis
Thanks Las, much appreciated! Just shout if there's anything I can assist 
with.

- Peter

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




[ANN] Carmine (Redis client) v2, Nippy (serializer) v2 are out

2013-07-22 Thread Peter Taoussanis
Hey all, quick update: just pushed *Carmine v2.0.0* and *Nippy v2.0.0* to 
Clojars.

Carmine: GitHub https://github.com/ptaoussanis/carmine | 
Changeloghttps://github.com/ptaoussanis/carmine/blob/master/CHANGELOG.md| API 
docs http://ptaoussanis.github.io/carmine/ | [com.taousso/carmine 
2.0.0.0]
Nippy: GitHub https://github.com/ptaoussanis/nippy | 
Changeloghttps://github.com/ptaoussanis/nippy/blob/master/CHANGELOG.md
 | API docs http://ptaoussanis.github.io/nippy/ | [com.taousso/nippy   
 2.0.0.0]

Thanks to all the folks that helped get these ready. Happy hacking, cheers!

- Peter Taoussanis (taoensso.com https://www.taoensso.com/)

-- 
-- 
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: core.async

2013-06-29 Thread Peter Taoussanis
 

Oh man, how is everyone _not_ running around screaming about this right now?

It seems to me that the Clojure space suffers from an unusual malady: it's 
busy sitting here quietly advancing half of applied computer science, and 
no one seems to notice the full extent of its import.

Man, I'm sometimes forced to just stop for a moment and sit in awe at how 
lucky I've been to see this stuff develop and to get to use it.

Clojure was huge. And before we're close to digesting its potential, 
there's protocols. And Clojurescript. Then Datomic. Reducers. Now this.

And it's not about everything being necessarily _novel_, though there is 
often novelty. For me it's largely about the cohesiveness of the design and 
the consistency of the overarching vision. Everything _fits_. I feel like 
I'm using tools and ideas that weren't just developed with care, or 
cleverness, or experience, but all of those things in a kind of harmony 
that's vanishingly rare to find in any field.

I honestly feel like I'm witnessing history being made.

Thank you Rich Hickey, and everyone else in this community for making my 
work every day so enjoyable.

- Peter Taoussanis

-- 
-- 
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: Looking for Clojure freelancers

2013-06-28 Thread Peter Taoussanis
Hi Xavi, thanks for getting in touch. Really sorry for taking forever to
get back to you about this!

I've got your details on file now (thanks for that!). Will get in touch if
any projects come up for which I think I could use you. In that case I'll
send you an email with the project details (what I need, what the timeframe
is, payment info, etc.) - and you can get back to me if you're interested.

All the best, cheers!


On 5 June 2013 04:57, xavi xavi.caba...@gmail.com wrote:

 Hi Peter,

 (I'm going to follow your suggestion and reply publicly.)

 I would be interested in collaborating with you. You'll find my contact
 details and a summary of my experience in xavi.caballe.pro .

 I come from the Rails world (I'm also an ex-Objective-C, ex-Java, and
 ex-Perl developer). I still work with Rails but my current language of
 choice is Clojure.

 My main open-source contribution is noir-auth-app, a base web app with
 authentication, https://github.com/xavi/noir-auth-app . This is a
 byproduct of a side-project that I'm developing in Clojure. Also, recently
 I worked for a month in an all-Clojure shop doing the full-stack
 development (Clojure + ClojureScript + Datomic) of a new feature.

 I'm more a generalist and I am happy working both in the back-end and the
 front-end. As for databases, I'm comfortable with SQL, but with Clojure
 I've only worked with MongoDB and Datomic for now.

 I'm based in Barcelona and my rate is €25/hr but I'm open to negotiate it.

 Cheers!

 Xavi Caballé
 http://xavi.caballe.pro


 On Monday, June 3, 2013 1:38:20 PM UTC+2, Peter Taoussanis wrote:

 Hi all,

 From time to time I have need for one or two extra hands (or, would that
 be pairs of hands?) on larger projects. Specifically, am looking for
 Clojure developers that'd be interested in occasional adhoc/freelance
 development work.

 Most of my work is on the web application side, but it can vary.

 What I'd like to ask is this: if anyone's interested, drop me an email 
 (*ptaoussanis
 at taoensso.com*) with some basic info including:

- Contact details (would prefer an international telephone number
also if possible).
- Your experience / informal CV (open-source stuff is my preferred
reference, especially if it's Clojure-based).
- Any particular areas of interest/expertise (e.g. you especially
want to work with Datomic, backend services, Clojurescript, whatever).
- Your rate + how negotiable it'd be and/or how it'd scale with
longer-term jobs.

 I can then keep your details on file and give an occasional shout if
 something comes up that I could potentially use you for.

 Whole thing'd be about as informal as it gets: terms will vary based on
 the particular job, but I'll include all of that in the email so you can
 decide if/when something grabs your fancy.

 Cheers!

 - Peter (taoensso.com https://www.taoensso.com)

  --
 --
 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/DNWXn8gi-Wg/unsubscribe?hl=en.
 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.






-- 
*Peter Taoussanis*
ptaoussa...@gmail.com
taoensso.com https://www.taoensso.com

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




[ANN] Taoensso library updates (major: Carmine v2-beta1, Nippy v2-RC1)

2013-06-26 Thread Peter Taoussanis
 

Hey all, a bunch of (batched) library updates for today - happy Wednesday! 

Sorted in order of update size since last group post:

*Carmine* - Redis client  message queue 
(GitHubhttps://github.com/ptaoussanis/carmine
)
Current version: *2.0.0-beta1* -* *MAJOR RELEASE (BREAKING)
Clojure dependency: 1.4+
Recent changes: API improvements, integration with *Nippy v2* for pluggable 
compression+crypto, improved performance, additional message queue 
features, and *Tundra* - an API for archiving cold data to an additional 
datastore. (A *Faraday* DynamoDB implementation is included).

Tundra is probably the most exciting change IMO, though it's still early 
alpha. It's easily extendable to any K/V-capable datastore. Checkout the 
README https://github.com/ptaoussanis/carmine#tundra for details.

Thanks to Ronen (narkisr), Max Penet (mpenet), 'ToBeReplaced', and others 
for their help with this release.

*Nippy* - serialization library (GitHubhttps://github.com/ptaoussanis/nippy
)
Current version: *2.0.0-RC1 - *MAJOR RELEASE (NON-breaking)
Clojure dependency: 1.4+
Recent changes: *big* performance improvement over 1.x, and the 
introduction of pluggable compression and encryption. Snappy and AES128 
implementations are provided out-the-box.

There's also a new header format that's allowed a number of API 
improvements including auto-detection of when frozen data is compressed, 
etc.

Fully backwards-compatible with 1.x, though I'd test before deploying to a 
production env.

Special thanks to Max Penet (mpenet) for his assistance with the perf work!

*Faraday* - DynamoDB client (GitHub https://github.com/ptaoussanis/faraday
)
Current version: *0.10.1
*Clojure dependency: 1.5+
Recent changes: A number of bug fixes and conveniences like blockable table 
updates, multi-request batch ops (e.g. to get past throughput limits), 
multi-stage throughput updates, and some new sugar for bulk ops and result 
destructuring.

I'll have the opportunity to start rolling this into production soon, so 
any lingering issues should hopefully be resolved quickly and the countdown 
to 1.0 can start. BTW thoroughly enjoying DynamoDB so far - don't think 
it's seeing the kind of publicity it deserves.

*Timbre* - logging  profiling library 
(GitHubhttps://github.com/ptaoussanis/timbre
)
Current version: *2.1.2
*Clojure dependency: 1.4+
Recent changes: Nothing major - bug fixes, etc.

*Tower* - i18n  L10n library (GitHub https://github.com/ptaoussanis/tower
)
Current version: *1.7.1
*Clojure dependency: 1.4+
Recent changes: Nothing major - bug fixes, etc.

*Touchstone* - A/B testing library 
(GitHubhttps://github.com/ptaoussanis/touchstone
)
Current version: *1.0.0
*Clojure dependency: 1.4+
Recent changes: Stable.

As usual, all libs available at 
https://www.taoensso.com/clojure-libraries.Feedback and pull-requests very 
welcome!

Happy hacking, cheers!

- Peter Taoussanis (taoensso.com https://www.taoensso.com/)

-- 
-- 
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] Taoensso library updates (major: Carmine v2-beta1, Nippy v2-RC1)

2013-06-26 Thread Peter Taoussanis
Oh Emlyn Corrin (emlyn) just reminded me that he's also been adding some 
new appenders to Timbre! There's a socket appender, IRC appender, and 
MongoDB (Congomongo) appender (just awaiting merging now).

Cheers

-- 
-- 
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: [pre-ANN] test2, the last Clojure testing framework

2013-06-09 Thread Peter Taoussanis
Ooh, okay a little off topic here, but Expectations looks fantastic. Thanks 
a lot Jay!

-- 
-- 
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] Library updates (Redis DynamoDB clients, logging+profiling, i18n+L10n, serialization, A/B testing)

2013-06-04 Thread Peter Taoussanis
Have had one or two people ask me about this - all libraries are under the EPL 
v1.0 http://www.eclipse.org/legal/epl-v10.html, the same license as 
Clojure itself. Cheers! - Peter

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




[ANN] Library updates (Redis DynamoDB clients, logging+profiling, i18n+L10n, serialization, A/B testing)

2013-06-03 Thread Peter Taoussanis
Hi folks, just a quick update on some libraries - figure I'll do this and 
future updates in batches to keep from spamming the group. Hoping the 
formatting comes through here...

*Carmine* - Redis client  message queue 
(GitHubhttps://github.com/ptaoussanis/carmine
)
Current version: *1.9.1*
Clojure dependency: 1.4+
Recent changes: message queue features, distributed locks, performance 
improvements.
Thanks to Ronen (narkisr) for most of the new features.

*Faraday* - DynamoDB client (GitHub https://github.com/ptaoussanis/faraday) 
- NEW LIBRARY
Current version: *0.5.0*
Clojure dependency: 1.5+
Recent changes: full DynamoDB v2 API coverage.
Thanks to James Reaves whose library (Rotary) provided the basis for 
Faraday.

*Nippy* - serialization library (GitHubhttps://github.com/ptaoussanis/nippy
)
Current version: *1.2.1*
Clojure dependency: 1.3+
Recent changes: sorted set+map support, performance improvements.

*Timbre* - logging  profiling library 
(GitHubhttps://github.com/ptaoussanis/timbre
)
Current version: *2.0.0 *- MAJOR RELEASE
Clojure dependency: 1.4+
Recent changes: tools.logging support.

*Touchstone* - A/B testing library 
(GitHubhttps://github.com/ptaoussanis/touchstone
)
Current version: *1.0.0* - MAJOR RELEASE
Clojure dependency: 1.4+
Recent changes: inherited test-config support, marked API as stable.

*Tower* - i18n  L10n library (GitHub https://github.com/ptaoussanis/tower
)
Current version: *1.7.0*
Clojure dependency: 1.4+
Recent changes: Nothing major.


I've started to push new releases (like Faraday) to Clojure 1.5+ but will 
maintain backwards-compatibility with 1.4+ where possible. Nippy is an 
exception which I'll keep at Clojure 1.3+  for at least 
the foreseeable future.

For those interested I've now setup a page at 
https://www.taoensso.com/clojure-libraries to keep track of the libraries 
I'm currently maintaining. In any event, will update the group from time to 
time when there's a bunch of significant changes queued like today.

As always, am very happy to take ideas/comments/PRs/whatever - a lot of the 
recent improvements above were a result of direct/indirect input from other 
folks (thank you!).

Have an awesome Monday, cheers!

- Peter Taoussanis (taoensso.com https://www.taoensso.com)

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




Looking for Clojure freelancers

2013-06-03 Thread Peter Taoussanis
Hi all,

From time to time I have need for one or two extra hands (or, would that be 
pairs of hands?) on larger projects. Specifically, am looking for Clojure 
developers that'd be interested in occasional adhoc/freelance development 
work.

Most of my work is on the web application side, but it can vary.

What I'd like to ask is this: if anyone's interested, drop me an email 
(*ptaoussanis 
at taoensso.com*) with some basic info including:

   - Contact details (would prefer an international telephone number also 
   if possible).
   - Your experience / informal CV (open-source stuff is my preferred 
   reference, especially if it's Clojure-based).
   - Any particular areas of interest/expertise (e.g. you especially want 
   to work with Datomic, backend services, Clojurescript, whatever).
   - Your rate + how negotiable it'd be and/or how it'd scale with 
   longer-term jobs.

I can then keep your details on file and give an occasional shout if 
something comes up that I could potentially use you for.

Whole thing'd be about as informal as it gets: terms will vary based on the 
particular job, but I'll include all of that in the email so you can decide 
if/when something grabs your fancy.

Cheers!

- Peter (taoensso.com https://www.taoensso.com)

-- 
-- 
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: Looking for Clojure freelancers

2013-06-03 Thread Peter Taoussanis
Just occurs to me: it'd probably also be useful if you post some of your 
details here in case anyone else is also looking for devs.

-- 
-- 
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: Looking for Clojure freelancers

2013-06-03 Thread Peter Taoussanis
Hi Laszlo, 

Actually good point - I should clarify: all the work would be completely 
remote. I'll normally work through some combination of GitHub, Basecamp + 
Trello.

Payment would be through PayPal.

-- 
-- 
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] core.rrb-vector -- RRB-Tree-based confluently persistent vectors

2013-06-01 Thread Peter Taoussanis
That looks great Michał, thanks for your work!

Have use cases for something like this popping up quite regularly - 
definitely looking forward to a production-ready implementation. Cheers! 

- Peter

-- 
-- 
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: I18n

2013-05-26 Thread Peter Taoussanis
Since this thread seems to come up from time to time, just adding a quick 
pointer to Tower: https://github.com/ptaoussanis/tower

This gives (among other things) a translation tool using standard Clojure 
maps for content, Markdown support, translation fallbacks, Ring 
localization middleware, and a dev mode with dictionary auto-reloading.

Cheers!

-- 
-- 
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: Question about destructuring with :keys :or and :as

2013-05-04 Thread Peter Taoussanis
Hi Ryan,

I actually run into this quite often and feel that it's something that's 
missing from destructuring: 
http://grokbase.com/t/gg/clojure/128z9e3sqj/possible-to-merge-destructuring-or-defaults-with-as

Basically, I'd advocate the addition of a new `:merge-as` destructure 
option that functions as `:as` does now, but merges over the `:or` defaults.

I get the impression that not many folks are running into this though. May 
be a matter of style: I tend to like destructured fn args with defaults 
that are transparent to the caller.

- Peter Taoussanis

-- 
-- 
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] Timbre, an all-Clojure logging library

2013-03-15 Thread Peter Taoussanis
You're both very welcome, thanks for letting me know you've been enjoying 
the lib!

BTW For those coming across this post only now, please note that the 
Clojars URL has changed: https://clojars.org/com.taoensso/timbre. Anyway, 
the newest version is always listed on GitHub: 
https://github.com/ptaoussanis/timbre.

There've been a number of improvements since the top post, including the 
addition of a logging profiler and (most recently) the addition of a 
middleware facility for transforming and filtering log events.

For the curious, one way I've been doing my logging recently is by pairing 
Timbre with Carmine (https://github.com/ptaoussanis/carmine) and writing a 
little appender fn to send logs to Redis using an index and expiring keys. 
With a few lines of code, that basically gives one a high-performance 
synchronized, distributed, query-able, rotating log.

- Peter Taoussanis (taoensso.com)

-- 
-- 
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: Possible bug with realized? and cancelled futures

2013-02-19 Thread Peter Taoussanis
Hi Alex,

This is a problem because the print-method multimethod implementation for 
 clojure.lang.IDeref assumes that if the .isRealized method returns true, 
 it's safe to deref the instance.


That's interesting. I've run into the case before where a cancelled future 
was throwing an exception on print, and certainly found it quite strange. 
Didn't think to look into it. This must be a bug, surely?

  

-- 
-- 
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: http-kit 2.0.0.RC2, high performance HTTP Server Client for Clojure

2013-02-03 Thread Peter Taoussanis
Quick anecdote: I've got an HTTP Kit server running in a test environment 
and the initial results are *very* promising. It's handling a mix of sync, 
async, and WebSocket requests and so far has been a pleasure to use.

HTTP Kit's sweet spot seems to be quite large too: folks running 
high-traffic (esp. high-concurrency) web servers that are resource or 
performance sensitive. I would recommend running behind a reverse proxy 
(nginx, say) given the server's relative immaturity - but I'd normally 
recommend doing that anyway, and I haven't encountered any specific 
problems yet myself.

And I haven't had a chance to use it much, but the HTTP client looks pretty 
great too.

Exciting stuff!



-- 
-- 
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: Clojure web server benchmarks

2013-01-25 Thread Peter Taoussanis
Hi Dmitry,

Raw bench results are provided in the `results` 
folder: 
https://github.com/ptaoussanis/clojure-web-server-benchmarks/blob/master/results/20130116-01-25

There you'll find a breakdown of the times to connect, process, and wait. 
Also the cumulative % of requests served relative to max response time.

I'd consider adding a graph if folks think these numbers are sufficiently 
interesting?

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




Re: [ANN] Leiningen 2.0.0 released

2013-01-19 Thread Peter Taoussanis
Hey, congratulations!

Thank you so much Phil and everyone else for making this happen. I still 
remember the pre-Leiningen 1 days with the occasional dependency-script 
PTSD flashback.

Lein 2 is a great big step up from 1. All kinds of awesome. Well done!

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

Re: Clojure web server benchmarks

2013-01-15 Thread Peter Taoussanis


 This is very interesting. Have you tried running the Ring Jetty adapter 
 with a larger thread pool? It's set lower than the default so as not to 
 overload cloud hosts like Heroku.


Okay, bumped the :max-threads from 50 to 100 without seeing much change to 
the results at these relatively low concurrency levels. May well make a 
difference at higher concurrency /or with better hardware (both on the 
cards for later).

Anecdotally, I've seen http-kit happily running dozens of thousands of 
concurrent connections in a high-load testing environment. Would like to 
see how far I can push it on a 16 logical core box.

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

Re: CollReduce and IKVReduce for nil?

2013-01-14 Thread Peter Taoussanis
Just throwing in here that I was actually bit by IKVReduce just today. I 
swapped a reduce with a reduce-kv, assuming the two would function 
similarly. And, unfortunately, they did in the testing environment: it took 
a trip to production before a nil came up.

The current behavior is certainly unexpected, I'd say.

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

Re: Clojure web server benchmarks

2013-01-11 Thread Peter Taoussanis


 This is very interesting. Have you tried running the Ring Jetty adapter 
 with a larger thread pool? It's set lower than the default so as not to 
 overload cloud hosts like Heroku.


You mean the :max-threads? No, I left it at the default (50, if I recall 
correctly?). I'll try bump it next time I run the benchmarks (probably next 
week). I'm just on a dual core though, so I wouldn't expect any major 
changes. As it is, I think the standard Jetty adapter performs remarkably 
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

Re: Clojure web server benchmarks

2013-01-07 Thread Peter Taoussanis
A couple folks asked for higher concurrency numbers, so I've bumped the max 
to 92. Many of the servers can comfortably hit 500+ on my hardware, but 
others begin acting erratically.

Want to first eliminate the possibility that the trouble is on my end (e.g. 
OS TCP tuning), then I'll bump the numbers again.

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

Re: what is js/ in clojurescript?

2013-01-07 Thread Peter Taoussanis
 I would not rely on this behavior. Follow Clojure's property access 
conventions.

Sorry to dig this up again - would just like to clarify:

The idiomatic way of accessing something like `window.location.pathname` 
then would be (aget js/window location pathname), or nested .- 
accesses, correct? I know things with Cljs are developing quickly and 
I keep seeing the `js/window.location.pathname` form pop up (including in 
Clojurescript's samples/twitterbuzz/src/twitterbuzz/anneal.cljs), so just 
wanted to double check.

Assuming the latter form is indeed incorrect, any chance of adding a 
compiler warning to start dissuading people from using it?

Thanks!

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

Re: what is js/ in clojurescript?

2013-01-07 Thread Peter Taoussanis
Thanks David.

Ticket  patch welcome.


I've been lazy / holding out for the electronic CA, but I'll make a note to 
come back to this if no one else steps up.

Cheers!



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

Clojure web server benchmarks

2013-01-05 Thread Peter Taoussanis
Hi all,

Quick post to mention that I've put up some rough benchmarks for a number 
of Clojure web 
servers: https://github.com/ptaoussanis/clojure-web-server-benchmarks.

Getting semi-reliable numbers was a real PITA, and I'm sure there's still 
plenty of room left for improvement (suggestions welcome!). Usual 
disclaimers apply: the numbers vary by hardware, by OS, by concurrency, and 
by the response size (among other things). The servers also vary 
considerably in their feature sets. Not to mention that your web server is 
seldom going to be the bottleneck when generating dynamic content. Tl;dr: 
this is all very difficult to generalize: you'll need to bench in your own 
environment with your own workloads to get an accurate picture.

Anyway I think the numbers are interesting (and pretty impressive 
all-round). Nginx can almost certainly be tweaked faster (ideas?), but I 
wouldn't have expected something like the standard Ring Jetty adapter even 
to be playing in the same ballpark - so that's nice.

I'll try keep this updated as servers are updated. And as I've mentioned on 
the GitHub page, pull-requests welcome for anything I may have missed, 
including other servers or mis-configurations, etc. Hopefully with some 
tweaking we can converge on some reasonably accurate/useful common-case 
numbers.

Cheers!

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

Re: [ANN] Tower, simple i18n library for Clojure

2013-01-05 Thread Peter Taoussanis
 

 I will update and give the code a try.  Thanks for the fast turnaround!


No problem.
 

 As far as your first and last questions, they both sort of came from the 
 same scenario I was pondering.  I was thinking about an application made 
 with many small dependencies and maybe several of them all were using tower 
 to handle translations and such.  But they don't about each other and, 
 therefor, expect to work the same regardless of whether or not there are 
 other libraries that also use tower.  Each library might want a different 
 default locale, or different mode (:dev/other), etc.  I was just thinking 
 about what happens in that case since there is but one config state in 
 the tower namespace.  Again, this isn't an issue for me I was just 
 pondering the scenario.


Hmm, let me think about this a little more. There's a number of options, 
the simplest of which is probably just to offer a dynamic binding for the 
config atom. That way each library can bind over the atom and get its own 
config.

Regarding the separate dictionary thing, I was still talking about the 
 centralized dictionary where the arbitrary keys allow easy separation of 
 the dictionary parts.  I was heading down the path where multiple sections 
 of the dictionary were created by different libraries merging in different 
 dictionaries from different resources in their own code bases (using 
 something like load-dictionary-from-map-resource!).  If one of those 
 resources changes (in dev mode) then I think we might want to just re-merge 
 that resource's contents into the dictionary, replacing just the parts 
 merged from that resource while leaving the rest of the dictionary 
 unscathed.  I was wondering if a merging version of 
 load-dictionary-from-map-resource might be useful for that situation.


I'm sort of half-following what you mean here... I think between the 1.2.0 
update and the dynamically-bindable config, you'll probably have what you 
need. Could I ask you to create an issue for this on the GitHub page, then 
I can come back to you when I've got something implemented?

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

Re: [ANN] Tower, simple i18n library for Clojure

2013-01-04 Thread Peter Taoussanis
Hi Scott,

Happy to hear you're enjoying the library!

1.  It seems useful to have the possibility for multiple 
 libraries/namespaces to manage their own i18n complete with unique 
 configurations (tower/config).  I'm not in this situation right now but it 
 seems like it could come up.   

- Is there a better way that hasn't jumped out at me? 


Could you give me a better idea what kind of unique config you'd expect to 
want? The dictionary keys are arbitrarily nest-able, so that's quite easy 
to namespace as {:dictionary {:dic1 {...} :dict2 {...}}}, etc. Are you 
concerned about the default locale?


2.  It also seems like a godd idea to be able to have code merge in a chunk 
 of translations into the existing translation dictionary without replacing 
 the existing contents. 

- If it's not there, is the merge idea valid and does it sound useful?   


If I've understood you correctly, you can already merge into the config 
atom without any trouble. Use something like this:

(defn deep-merge-with
  [f  maps]
  (apply
   (fn m [ maps]
 (if (every? map? maps)
   (apply merge-with m maps)
   (apply f maps)))
   maps))

(def deep-merge (partial deep-merge-with (fn [x y] y)))

I've just added a `merge-config!` fn to the dev branch to make this easier.

 

 I've also not been using :dev mode since that can replace the dictionary 
 with only the primary and I loose all plugins' dictionaries.


I hadn't though of that. I'll tweak it now so that the dictionary gets 
merged in as you suggest, nice idea - thank you.


(I'd image it would also change :dev mode to allow a collection of 
 watched dictionary resources and merge them when they change or something 
 like that)


Not sure why we'd want/need multiple dictionaries though when you can just 
namespace within the one. Can you describe a use-case?

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

Re: [ANN] Tower, simple i18n library for Clojure

2013-01-04 Thread Peter Taoussanis
Just pushed 1.2.0 with `merge-config!` and dictionary merging (rather than 
resetting) on dev-mode changes.

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

Re: Clojure 1.5.0 RC 1

2013-01-02 Thread Peter Taoussanis
Sean, Andy:

Sorry for the delay following up on this. Yes, it turns out that CLJ-932 
exposes a bug in ns-tracker which is used by the standard Ring wrap-reload 
middleware. I'm surprised more folks haven't run into this.

There's already a pull-request from last month waiting for 
merging: https://github.com/weavejester/ns-tracker/pull/9

Will contact James and see if he can't get the merge done, and update the 
dependency Ring-side.

Cheers!

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

Re: Clojure 1.5.0 RC 1

2013-01-02 Thread Peter Taoussanis
Have just pushed a temporary fork of ns-tracker for anyone else running 
into the same trouble with Ring's 
wrap-reload: https://clojars.org/com.taoensso.forks/ns-tracker

If you're going to use this, remember to add `ns-tracker` to your Lein 
:exclusions.

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

Re: Clojure 1.5.0 RC 1

2012-12-23 Thread Peter Taoussanis
Were any breaking changes made between alpha3 and RC1? I haven't spent much 
time trying to track down causes so it's very possible I'm mistaken, but I 
seem to be running into some weird behavior under RC1.

Specifically, seem to be having trouble with 
`ring.middleware.reload/wrap-reload`:
Exception in thread main java.lang.IllegalArgumentException: contains? 
not supported on type: clojure.lang.LazySeq, compiling:(routes.clj:294:3)
Line 294 is where the wrap-reload is applied, and this compiles fine under 
alpha3.

Also `lein swank` appears to be failing on Leiningen 2.0.0-preview10: 
Exception in thread main java.lang.IllegalArgumentException: No matching 
ctor found for class clojure.lang.Compiler$CompilerException, 
compiling:(swank/commands/basic.clj:182:24)

Is anyone else having problems?

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

Re: Clojure 1.5.0 RC 1

2012-12-23 Thread Peter Taoussanis
Both of these cases appear to relate to namespaces btw. Line 182 of 
swank/commands/basic.clj is the 3rd `let` form:

(defslimefn load-file [file-name]

(let [libs-ref @(resolve 'clojure.core/*loaded-libs*)
  libs @libs-ref
  ns-form (ns/read-file-ns-decl (java.io.File. file-name))
  ns (second ns-form)]
  (try
(when ns
  (destroy-ns ns))
(dosync (ref-set libs-ref #{}))
(pr-str (clojure.core/load-file file-name))
(finally
 (dosync (alter libs-ref into libs))

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

Re: Clojure 1.5.0 RC 1

2012-12-23 Thread Peter Taoussanis
Just confirming: both issues are indeed present in beta1 (and RC1), but not 
alpha3.

Will go over the changelog tomorrow and try track this down.

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

Re: [ANN] Clojars Releases repository

2012-11-20 Thread Peter Taoussanis


 Sorry for the inconvenience. 


No problem at all Phil. You're doing us all a huge service with all your 
work on this; teething issues are to be expected. Just wanted to suggest 
library authors proceed cautiously for now to avoid unknowingly 
breaking dependents in the wild.

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

Re: [ANN] Clojars Releases repository

2012-11-19 Thread Peter Taoussanis
I'd caution anyone against trying to redeploy their libraries right now 
since there seems to be some serious unresolved issues. I just tried a 
redeploy myself and am also getting the ReasonPhrase:Forbidden error.

Unfortunately this seems to leave the repo in a bad state, since dependency 
pull requests now come back with a Checksum validation failed.

 I still seem to be able to pull the library into a project and Clojars 
says it has been promoted (after my first successful try - with a different 
key / user ID).

Sean, are you sure it's working if the dependency isn't already in your .m2 
cache?

- Peter Taoussanis

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

Re: [ANN] Clojars Releases repository

2012-11-19 Thread Peter Taoussanis
BTW for those of you running into the ReasonPhrase:Forbidden error, it 
seems as if the old lein-clojars can be used to restore a repo to a working 
(unsigned) state.

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

  1   2   >