Re: ANN: Parallel let macro!

2017-11-28 Thread Henrik Eneroth
Very nice! Kudos.

-- 
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] Dunaj project, an alternative core API for Clojure

2015-03-18 Thread Henrik Eneroth
Amazing work Jozef. Very interesting experiments.

On Wednesday, March 18, 2015 at 9:21:25 AM UTC+1, Jozef Wagner wrote:

 Another big experiment for today. As new reducer features
 (continuations) will be applied heavily here, please read
 5th experiment if you have not done so yet. 

 Prepare for the longest write-up so far.

 Experiment #8 - Computer and Network Resources

 Most applications perform some file and networking I/O.
 Clojure leaves this domain largerly uncovered and advises users
 to use host facilities instead. Dunaj attempts to cover this realm
 with an extensive and powerful set of features dedicated to computer
 and network resources.

 Goals of this experiment are as follows:

 * Design and implement the concept of resource scopes
 * Develop facilities for implementers of computer and network
   resources
 * Create abstractions for basic resource functionalities and
   integrate them with the rest of core API, mainly with collections
   and transducers
 * Provide implementation for widely used resources
 * Devise abstraction for composing resources into 'systems'

 You can read more about this experiment at http://www.dunaj.org 

 Regards,
 Jozef


 On Thursday, March 5, 2015 at 10:33:53 PM UTC+1, Jozef Wagner wrote:

 I'm happy to announce a project called Dunaj [1], which provides an 
 alternative core API for Clojure. Its main aim is to experimentally test 
 major additions to the language. 

 Dunaj /ˈdunaɪ/ is a set of core language experiments aimed to improve 
 Clojure language and its core API. It deals with language features that 
 require changes across different parts of Clojure and which cannot be 
 evaluated in isolation. Dunaj aims to bring Clojure even more towards 
 simplicity, consistency and performance. 
 It is intended to be used by regular Clojure developers, either for 
 application or library development.

 Dunaj was created to test 10 experiments that bring significant changes 
 to the Clojure language. As there is a substantial number of additions and 
 changes, I want to try a bit unconventional approach here. Before I'll 
 release the actual library, I will introduce Dunaj's experiments in a 
 series of individual posts. Every part states the motivation behind the 
 experiment, introduces changes and additions to the language and 
 demonstrates its intended use. If you do not want to miss any of this, you 
 may want to register for a mailing list at [1] or follow @dunajproject at 
 Twitter.

 -- Jozef Wagner

 [1] http://www.dunaj.org/ 



-- 
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: OO Programmer trying to move to Clojure: Encapsulation

2015-02-09 Thread Henrik Eneroth
If you find yourself passing the same argument over and over, you can 
always work in a partial:

(def save-account (partial save db))


On Sunday, February 8, 2015 at 6:47:29 PM UTC+1, Colin Yates wrote:

 I missed the salient point about data transformations which is that of 
 abstractions. In OO (Java at least) almost everything was a special case, 
 in Clojure it is the polar opposite; almost nothing is a special case. 

 It is astonishing how many domains can be sufficiently modeled as a 
 sequence of maps [{..} {..} ...] and can be sufficiently transformed with 
 the 'map' function (with assoc/assoc-in).

 On Sunday, 8 February 2015 17:16:40 UTC, Colin Yates wrote:

 +1 This separation of behaviour and state is a key part of Clojure's 
 philosophy. That isn't to say that stateful components are bad as such 
 (Stuart Sierra's https://github.com/stuartsierra/component is an 
 obvious analog here) only that they aren't a given as they are in OO 
 languages. 

 As Jony says, when functions only depend on their parameters it makes 
 many things simpler and more flexible, but can appear 'noisy'. 


 http://thinkrelevance.com/blog/2009/08/12/rifle-oriented-programming-with-clojure-2
  
 is another good resource here, although I must say I haven't seen some 
 of those examples in the wild :). 

 From a similar background (Java) and having learnt some lessons, I 
 wish somebody hammered me on the head with the following: 
  - get real familiar with the notion of data transformations, 
 particularly maps 
  - internalise map, reduce, filter, apply, loop/recur and into 
  - before writing any code check the API doesn't already provide it 
  - repeat the above three points 
  - embrace vanilla maps, they really are all you need (and also watch 
 https://www.youtube.com/watch?v=ZQkIWWTygio) 
  - small functions (10 lines is uncomfortable) always 
  - embrace pre/post conditions, documentation (defn doc and 
 marginalia) and prismatic schema 
  - read as much Clojure code as you can get your hands on 
  - TDD is still a helpful process/technique in Clojure ;) 

 Longer term, watch anything from Rich Hickey. 

 By far the biggest conceptual shift was thinking in terms of data 
 being the public API and data transformation over blobs of state and 
 data. 

 Hope this helps. 


 On 8 February 2015 at 14:21, Jony Hudson jonye...@gmail.com 
 javascript: wrote: 
  To put take a different angle on it: you might soon get to *like* that 
 it's 
  usual to pass in everything as a parameter explicitly. It has the 
 advantage 
  that it's easy to reason about what a function does just by looking at 
 the 
  function. In the example above, when reading AccountRepository.Save you 
 need 
  to check elsewhere to see how _connection is defined. Whereas with the 
  function save, so long as the parameters you feed in are sensible, then 
 you 
  can be pretty sure what it will do. 
  
  Making the functions self-contained like this is also a boon when it 
 comes 
  to working at the REPL. The OO approach you have often makes it 
 difficult 
  (for less trivial examples) to run a particular function in the right 
  context. But with the self-contained function it's just a case of 
 getting 
  the parameters right, which is often easier to think about. 
  
  
  Jony 
  
  
  On Saturday, 7 February 2015 16:07:45 UTC, Dru Sellers wrote: 
  
  Greetings, 
  
  I am trying to convert my mind from OO (C#) to one more functionally 
  friendly. I am increasingly comfortable with simple applications in 
 clojure, 
  but as I start to build more complex applications, I start to fall 
 down 
  about how to structure my application. I don't want to just shove OO 
 ideas 
  into the functional nature of Clojure. I'm looking for any help 
 someone can 
  provide to help shimmy my brain into the right mental patterns. 
  
  Background: Long time C# developer who leans heavily on IoC / DI / 
  Interfaces / Testing / Object Encapsulation. 
  
  
  Specific Question: Object Encapsulation 
  I feel like my function parameter lists are much wider than they 
 would 
  be in C#. This is due to the lack of a constructor. So if I 
 previously had 
  a C# class that looked like: 
  
  
  public class AccountRepository : IAccountRepository 
  { 
IDatabaseConnection _connection; 
  
public AccountRepository(IDatabaseConnection connection) 
{ 
  _connection = connection; 
} 
  
public void Save(Account account) 
{ 
  _connection.Execute(UPDATE accounts SET coupon=@coupon WHERE 
 id=@id, 
  { coupon = account.Coupon, id=account.Id}); 
} 
  } 
  
  In the above I have encapsulated the _connection, the other methods 
  don't have to deal with it. In Clojure (especially if you are 
 following 
  Sierra's Component pattern) you end up with 
  
  (defn save [db account] 
(update db (:coupon account) (:id account)) 
  ) 
  
  I end up having to pass this 'db' around all over the place. I think 
 that 
  this is just something 

Re: gemacl: Scientific computing application written in Clojure

2014-12-22 Thread Henrik Eneroth
Interesting read Jose, thanks!

It might be interesting to try a transducer on 

(defn dot-prod 
  Returns the dot product of two vectors
  [v1 v2]
  (reduce + (map * v1 v2)))

if you can get your hands on the 1.7 alpha and the time and inclination to 
do it. Transducers have shown to be faster than running functions in 
sequence. Although I don't know how likely they are to beat native arrays, 
probably not very much.


On Sunday, December 21, 2014 7:10:41 PM UTC+1, Jose M. Perez Sanchez wrote:


 Regarding the speed optimizations, execution time for a given model was 
 reduced from 2735 seconds to 70 seconds, over several versions by doing 
 several optimizations.

 The same calculation implemented in C# takes 12 seconds using the same 
 computer and OS. Maybe the Clojure code can still be improved, but for the 
 time being I'm happy with the Clojure version being six times slower, since 
 the new software has many advantages.

 For these tests the model was the circle with radius 1 using the diffmr1 
 tracker, the simulation was run using 1 particles and 1 total 
 random walk steps.

 These modifications in the critical parts of the code accounted for most 
 of the improvement:

 - Avoid reflection by using type hints.
 - Use Java arrays.
 - In some cases call Java arithmetic functions directly instead of Clojure 
 ones.
 - Avoid using partial functions in the critical parts of the code.

 Avoiding lazyness did not help much. Regarding the use of Java arrays, 
 there are many small functions performing typical vector operations on 
 arrays, such as the following example:

 Using Clojure types:

 (defn dot-prod 
   Returns the dot product of two vectors
   [v1 v2]
   (reduce + (map * v1 v2)))

 Using Java arrays:

 (defn dot-prod-j
   Returns the dot product of two arrays of doubles
   [^doubles v1 ^doubles v2]
   (areduce v1 i ret 0.0
(+ ret (* (aget v1 i)
  (aget v2 i)


 This gives a general idea of which optimizations helped the most. These 
 changes are not in the public repository, since previous commits have been 
 omitted because the code code was not ready for publication (different 
 license disclaimer, contained email addresses, etc.). If anyone is 
 interested in the diffs and the execution times over several optimizations, 
 please contact me.

 Kind regards,

 Jose.


 On Sunday, December 21, 2014 3:38:35 AM UTC-5, Jose M. Perez Sanchez wrote:


 Hi everyone:

 Sorry that it has taken so long. I've just released the software in 
 GitHub under the EPL. It can be found at:

 https://github.com/iosephus/gema


 Kind regards,

 Jose.



-- 
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: Ring and Compojure with Node.js via Clojurescript

2014-12-08 Thread Henrik Eneroth
Awesome! I look forward to seeing the results.

On Monday, December 8, 2014 3:50:48 PM UTC+1, Matthew Molloy wrote:

 Dear Community,

 I love making Clojure web apps, however their startup time is a serious 
 drawback when used with a transient hosting service such as Heroku.  My 
 thought is to port Ring and Compojure over to Clojurescript so that can get 
 their nice abstractions hosted on the Node.js runtime.

 Any thoughts or suggestions?

 Matthew


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


Re: [ClojureScript] Re: [ANN] freactive - high performance, pure Clojurescript, declarative DOM library

2014-11-23 Thread Henrik Eneroth
Hacker News has sort of 
noticed: https://news.ycombinator.com/item?id=8648491


On Sunday, November 23, 2014 8:32:11 PM UTC+1, Jason Lewis wrote:

 Furthermore (it occurs to me) cesium is used to drive atomic clocks... so 
 if you're using an atom to maintain state... even more relevance. 
 Relevance? Wait, it's Cognitect now :)

 Jason Lewis

 vox  410.428.0253
 twitter  @canweriotnow
 blog http://decomplecting.org
 else http://about.me/jason.lewis

 On Sun, Nov 23, 2014 at 2:20 PM, Jason Lewis ja...@decomplecting.org 
 javascript: wrote:

 Cesium is the most reactive element of all... and the name isn't taken on 
 Clojars.

 Cesium will react explosively even with ice.

 Jason Lewis

 vox  410.428.0253
 twitter  @canweriotnow
 blog http://decomplecting.org
 else http://about.me/jason.lewis

 On Sun, Nov 23, 2014 at 1:21 PM, Gary Trakhman gary.t...@gmail.com 
 javascript: wrote:

 The two best ones I can think of right now

 Halogen: they're known as highly reactive elements.
 Precipitate: both a noun and a verb, the solid that falls out of a 
 solution, or to bring about such a reaction.

 Other chemical-ish names considered
 Enantiopure - Containing compounds of only a single chirality 
 Fullerene - Bucky-Balls, they're just cool
 Recycle - 'Save the trees', and also 'recycle streams' from chemical 
 engineering. 

 On Sun, Nov 23, 2014 at 12:37 PM, Aaron Craelius aaronc...@gmail.com 
 javascript: wrote:

 Fresco isn't bad. I think it's better than freactive at least. Seems 
 to be relatively popular for a name, but no big projects: 
 https://github.com/search?o=descp=1q=frescos=starstype=Repositoriesutf8=✓

 On Sun, Nov 23, 2014 at 3:05 AM, Olli Piepponen kot...@gmail.com 
 javascript: wrote:

 If you are open to name suggestions, how about Fresco 
 http://www.wikiwand.com/en/Fresco?

 -- 
 Note that posts from new members are moderated - please be patient 
 with your first post.
 --- 
 You received this message because you are subscribed to a topic in the 
 Google Groups ClojureScript group.
 To unsubscribe from this topic, visit 
 https://groups.google.com/d/topic/clojurescript/99myJ9vLeKQ/unsubscribe
 .
 To unsubscribe from this group and all its topics, send an email to 
 clojurescrip...@googlegroups.com javascript:.
 To post to this group, send email to clojur...@googlegroups.com 
 javascript:.
 Visit this group at http://groups.google.com/group/clojurescript.


  -- 
 Note that posts from new members are moderated - please be patient with 
 your first post.
 --- 
 You received this message because you are subscribed to the Google 
 Groups ClojureScript group.
 To unsubscribe from this group and stop receiving emails from it, send 
 an email to clojurescrip...@googlegroups.com javascript:.
 To post to this group, send email to clojur...@googlegroups.com 
 javascript:.
 Visit this group at http://groups.google.com/group/clojurescript.


  -- 
 Note that posts from new members are moderated - please be patient with 
 your first post.
 --- 
 You received this message because you are subscribed to the Google 
 Groups ClojureScript group.
 To unsubscribe from this group and stop receiving emails from it, send 
 an email to clojurescrip...@googlegroups.com javascript:.
 To post to this group, send email to clojur...@googlegroups.com 
 javascript:.
 Visit this group at http://groups.google.com/group/clojurescript.





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


Re: thread-any macro %

2014-11-15 Thread Henrik Eneroth
You can find this functionality in the Swiss Arrows library 
here: https://github.com/rplevy/swiss-arrows

My first thought was that using the % symbol seems cleaner than the  of 
Swiss Arrows. Thinking about it though, wouldn't overloading the % create 
trouble when you do want to use the literal form of an anonymous function 
within a % clause?
 

On Saturday, November 15, 2014 2:55:51 PM UTC+1, Krzysiek Herod wrote:

 Guys, what do you think about new thread macro (I would call it thread-any 
 and represent it as %), that would require you to always specify the 
 position of the argument you want to pass to the function? 

 This code:

 (defn csv-line-sql-line [table, line]
   (- line
   (str  )
   (str/split separator)
   (#(map csv-field-sql-field %))
   (#(str/join ,  %))
   (str/replace strings-wrapper \)
   (#(str INSERT INTO , table,  VALUES( % );

 would become:

 (defn csv-line-sql-line [table, line]
   (% line
   (str %  )
   (str/split % separator)
   (map csv-field-sql-field %)
   (str/join ,  %)
   (str/replace strings-wrapper % \)
   (str INSERT INTO , table,  VALUES( % );)))

 Reasoning:
 - there are functions that are thread-first fiendly, and other that are 
 thread-last friendly, by using thread-in you don't have to redefine 
 functions only to change the order of the attributes
 - I find it easier to follow execution chain if the argument is passed 
 explicitely

 PS. I'm a clojure newbie, still in the process of learning basics. For 
 example I'm not sure how to implement such macro yet, so if you find 
 something obviously wrong, or missing in my suggestion, please let me know. 
 I'll be super happy to read about alternative solutions to achieve similar 
 goal. 


-- 
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: Introducing Boot v2 with a streamlined CLJS workflow

2014-11-07 Thread Henrik Eneroth
I tried now, just running boot -u, and it worked perfectly. It's was 
probably some caching thing with Clojars. Currently at pre21

Now the command runs without errors, but it also doesn't seem to do all 
that much.

Running 
 boot -d reagent/reagent:0.4.3
gives the exact same output as running 
 boot -h
currently.



On Friday, November 7, 2014 12:18:41 AM UTC+1, Micha Niskin wrote:

 It looks like Clojars is doing what I thought it would do: 
 https://clojars.org/repo/boot/boot/maven-metadata.xml

 release2.0.0-pre20/release

 On Thursday, November 6, 2014 5:50:14 PM UTC-5, Henrik Eneroth wrote:

 Thanks for looking into it, Micha! 


 I'm getting -pre19 with boot -u, though. Did you forget to cut a release 
 or should I set BOOT_CHANNEL to dev?


 On Thursday, November 6, 2014 8:30:55 PM UTC+1, Micha Niskin wrote:

 Hi Henrik,

 You found a bug! We just fixed it though. Boot was confused by 
 `reagent/reagent` when it tried to match that against the artifact ids 
 returned by Pomegranate, because Pomegranate collapses it to just `reagent` 
 in that case. If you do `boot -u` you should be updated to boot version 
 `2.0.0-pre20`, and your command line will work.

 On Thursday, November 6, 2014 12:31:13 PM UTC-5, Henrik Eneroth wrote:

 Hello Micha!


 I'm trying to tuck Reagent in there to take it for a spin, and it seems 
 reluctant to comply:

 boot -d reagent/reagent:0.4.3
 java.lang.NullPointerException:
  boot.main/dep-ns-decls  main.clj:   36
 boot.main/export-task-namespaces/fn  main.clj:   49
 clojure.core/map/fn  core.clj: 2557
 ...
clojure.core/seq  core.clj:  133
  clojure.core/apply  core.clj:  624
 clojure.core/mapcat  core.clj: 2586
 ...
boot.main/export-task-namespaces  main.clj:   51
 boot.main/-main  main.clj:  111
 ...
boot.App.runBoot  App.java:  217
   boot.App.main  App.java:  309


 Any feedback on what I (or it) may be doing wrong?


 Thanks!

 Henrik

 On Monday, November 3, 2014 9:40:58 PM UTC+1, Micha Niskin wrote:

 Hi!

 Boot (http://github.com/boot-clj/boot) is a build tool for Clojure. 
 We've pulled together lessons learned from a year or so using boot v1 in 
 production and are now getting ready to release v2. To show what boot can 
 do we present a very streamlined and awesome boot-based ClojureScript 
 development workflow (
 http://adzerk.com/blog/2014/11/clojurescript-builds-rebooted/). 

 Try it out, maybe you'll like it! We're hoping to get some feedback 
 before committing to a stable release, so please if you have any comments 
 or questions we'd be happy to hear them. Have fun!

 ​


-- 
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: Introducing Boot v2 with a streamlined CLJS workflow

2014-11-07 Thread Henrik Eneroth
Agreed, because it seems like a good tool. :-)


On that vein; what's the syntax for add-src? 

I'm trying to include helper.cljs in the project, a file with a bunch of 
convenience functions that I use. However, I get the following error:

 stopping Jetty...  clojure.lang.ExceptionInfo: 
clojure.lang.ExceptionInfo: Could not locate helpers__init.class or 
helpers.clj on classpath:  at line 1  {:tag :cljs/analysis-error, :file 
nil, :line 1, :column 1}

It seems enamoured with the idea that the file should end with .clj. I'm 
guessing that boot has to be told of the existence of the file, but I'm not 
sure how to do this. For the purposes of this experiment, the namespace of 
helpers.cljs is simply (ns helpers).
 

On Friday, November 7, 2014 12:01:14 PM UTC+1, Laurent PETIT wrote:

 Really looking forward to a couple more blog posts:

 - an instructive / provocative one which could be named after how to 
 replace leiningen with boot 2. Would be very practical, showing how all 
 major usecases done with lein translate to boot.
 - an tutorial / documenting one on how to write new task and be good 
 citizens of boot (what to do, what not to do, and then how)

 :-)


 2014-11-07 10:16 GMT+01:00 Henrik Eneroth henrik@gmail.com 
 javascript::

 I tried now, just running boot -u, and it worked perfectly. It's was 
 probably some caching thing with Clojars. Currently at pre21

 Now the command runs without errors, but it also doesn't seem to do all 
 that much.

 Running 
  boot -d reagent/reagent:0.4.3
 gives the exact same output as running 
  boot -h
 currently.



 On Friday, November 7, 2014 12:18:41 AM UTC+1, Micha Niskin wrote:

 It looks like Clojars is doing what I thought it would do: 
 https://clojars.org/repo/boot/boot/maven-metadata.xml

 release2.0.0-pre20/release

 On Thursday, November 6, 2014 5:50:14 PM UTC-5, Henrik Eneroth wrote:

 Thanks for looking into it, Micha! 


 I'm getting -pre19 with boot -u, though. Did you forget to cut a 
 release or should I set BOOT_CHANNEL to dev?


 On Thursday, November 6, 2014 8:30:55 PM UTC+1, Micha Niskin wrote:

 Hi Henrik,

 You found a bug! We just fixed it though. Boot was confused by 
 `reagent/reagent` when it tried to match that against the artifact ids 
 returned by Pomegranate, because Pomegranate collapses it to just 
 `reagent` 
 in that case. If you do `boot -u` you should be updated to boot version 
 `2.0.0-pre20`, and your command line will work.

 On Thursday, November 6, 2014 12:31:13 PM UTC-5, Henrik Eneroth wrote:

 Hello Micha!


 I'm trying to tuck Reagent in there to take it for a spin, and it 
 seems reluctant to comply:

 boot -d reagent/reagent:0.4.3
 java.lang.NullPointerException:
  boot.main/dep-ns-decls  main.clj:   36
 boot.main/export-task-namespaces/fn  main.clj:   49
 clojure.core/map/fn  core.clj: 2557
 ...
clojure.core/seq  core.clj:  133
  clojure.core/apply  core.clj:  624
 clojure.core/mapcat  core.clj: 2586
 ...
boot.main/export-task-namespaces  main.clj:   51
 boot.main/-main  main.clj:  111
 ...
boot.App.runBoot  App.java:  217
   boot.App.main  App.java:  309


 Any feedback on what I (or it) may be doing wrong?


 Thanks!

 Henrik

 On Monday, November 3, 2014 9:40:58 PM UTC+1, Micha Niskin wrote:

 Hi!

 Boot (http://github.com/boot-clj/boot) is a build tool for Clojure. 
 We've pulled together lessons learned from a year or so using boot v1 
 in 
 production and are now getting ready to release v2. To show what boot 
 can 
 do we present a very streamlined and awesome boot-based ClojureScript 
 development workflow (http://adzerk.com/blog/2014/
 11/clojurescript-builds-rebooted/). 

 Try it out, maybe you'll like it! We're hoping to get some feedback 
 before committing to a stable release, so please if you have any 
 comments 
 or questions we'd be happy to hear them. Have fun!

 ​

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




 -- 
 Laurent Petit
  

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

Re: Introducing Boot v2 with a streamlined CLJS workflow

2014-11-07 Thread Henrik Eneroth
Gotcha! Thanks!

On Friday, November 7, 2014 4:22:35 PM UTC+1, Micha Niskin wrote:

 Henrik, the -d option simply adds dependencies to the project. The main 
 use case for this option is to pull in dependencies when you have no formal 
 “project” and no build.boot file. Mainly it’s used in concert with the 
 repl task so you can quickly and easily try something out:

 $ boot -d aysylu/loom repl

 boot.user= (use 'loom.graph)
 nil
 boot.user= (graph [1 2] [2 3] {3 [4] 5 [6 7]} 7 8 9)
 ...

 However, if a dependency pulled in via -d (not transitive deps) contains 
 namespaces in which tasks are defined, these namespaces may be tagged with 
 ^:boot/export-tasks metadata. Boot will find these namespaces and refer 
 all public vars into your build.boot environment.

 So if the reagent jar contained task namespaces you should see them when 
 you do

 $ boot -d reagent

 Note that you don’t need to supply the group-id for reagent, and if you 
 want the latest release you can also omit the version.
 ​

 --
 Micha Niskin

 On Fri, Nov 7, 2014 at 4:16 AM, Henrik Eneroth henrik@gmail.com 
 javascript: wrote:

 I tried now, just running boot -u, and it worked perfectly. It's was 
 probably some caching thing with Clojars. Currently at pre21

 Now the command runs without errors, but it also doesn't seem to do all 
 that much.

 Running 
  boot -d reagent/reagent:0.4.3
 gives the exact same output as running 
  boot -h
 currently.



 On Friday, November 7, 2014 12:18:41 AM UTC+1, Micha Niskin wrote:

 It looks like Clojars is doing what I thought it would do: 
 https://clojars.org/repo/boot/boot/maven-metadata.xml

 release2.0.0-pre20/release

 On Thursday, November 6, 2014 5:50:14 PM UTC-5, Henrik Eneroth wrote:

 Thanks for looking into it, Micha! 


 I'm getting -pre19 with boot -u, though. Did you forget to cut a 
 release or should I set BOOT_CHANNEL to dev?


 On Thursday, November 6, 2014 8:30:55 PM UTC+1, Micha Niskin wrote:

 Hi Henrik,

 You found a bug! We just fixed it though. Boot was confused by 
 `reagent/reagent` when it tried to match that against the artifact ids 
 returned by Pomegranate, because Pomegranate collapses it to just 
 `reagent` 
 in that case. If you do `boot -u` you should be updated to boot version 
 `2.0.0-pre20`, and your command line will work.

 On Thursday, November 6, 2014 12:31:13 PM UTC-5, Henrik Eneroth wrote:

 Hello Micha!


 I'm trying to tuck Reagent in there to take it for a spin, and it 
 seems reluctant to comply:

 boot -d reagent/reagent:0.4.3
 java.lang.NullPointerException:
  boot.main/dep-ns-decls  main.clj:   36
 boot.main/export-task-namespaces/fn  main.clj:   49
 clojure.core/map/fn  core.clj: 2557
 ...
clojure.core/seq  core.clj:  133
  clojure.core/apply  core.clj:  624
 clojure.core/mapcat  core.clj: 2586
 ...
boot.main/export-task-namespaces  main.clj:   51
 boot.main/-main  main.clj:  111
 ...
boot.App.runBoot  App.java:  217
   boot.App.main  App.java:  309


 Any feedback on what I (or it) may be doing wrong?


 Thanks!

 Henrik

 On Monday, November 3, 2014 9:40:58 PM UTC+1, Micha Niskin wrote:

 Hi!

 Boot (http://github.com/boot-clj/boot) is a build tool for Clojure. 
 We've pulled together lessons learned from a year or so using boot v1 
 in 
 production and are now getting ready to release v2. To show what boot 
 can 
 do we present a very streamlined and awesome boot-based ClojureScript 
 development workflow (http://adzerk.com/blog/2014/
 11/clojurescript-builds-rebooted/). 

 Try it out, maybe you'll like it! We're hoping to get some feedback 
 before committing to a stable release, so please if you have any 
 comments 
 or questions we'd be happy to hear them. Have fun!

 ​

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




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

Re: Introducing Boot v2 with a streamlined CLJS workflow

2014-11-06 Thread Henrik Eneroth
Hello Micha!


I'm trying to tuck Reagent in there to take it for a spin, and it seems 
reluctant to comply:

boot -d reagent/reagent:0.4.3
java.lang.NullPointerException:
 boot.main/dep-ns-decls  main.clj:   36
boot.main/export-task-namespaces/fn  main.clj:   49
clojure.core/map/fn  core.clj: 2557
...
   clojure.core/seq  core.clj:  133
 clojure.core/apply  core.clj:  624
clojure.core/mapcat  core.clj: 2586
...
   boot.main/export-task-namespaces  main.clj:   51
boot.main/-main  main.clj:  111
...
   boot.App.runBoot  App.java:  217
  boot.App.main  App.java:  309


Any feedback on what I (or it) may be doing wrong?


Thanks!

Henrik

On Monday, November 3, 2014 9:40:58 PM UTC+1, Micha Niskin wrote:

 Hi!

 Boot (http://github.com/boot-clj/boot) is a build tool for Clojure. We've 
 pulled together lessons learned from a year or so using boot v1 in 
 production and are now getting ready to release v2. To show what boot can 
 do we present a very streamlined and awesome boot-based ClojureScript 
 development workflow (
 http://adzerk.com/blog/2014/11/clojurescript-builds-rebooted/). 

 Try it out, maybe you'll like it! We're hoping to get some feedback before 
 committing to a stable release, so please if you have any comments or 
 questions we'd be happy to hear them. Have fun!


-- 
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: Introducing Boot v2 with a streamlined CLJS workflow

2014-11-06 Thread Henrik Eneroth
Thanks for looking into it, Micha! 


I'm getting -pre19 with boot -u, though. Did you forget to cut a release or 
should I set BOOT_CHANNEL to dev?


On Thursday, November 6, 2014 8:30:55 PM UTC+1, Micha Niskin wrote:

 Hi Henrik,

 You found a bug! We just fixed it though. Boot was confused by 
 `reagent/reagent` when it tried to match that against the artifact ids 
 returned by Pomegranate, because Pomegranate collapses it to just `reagent` 
 in that case. If you do `boot -u` you should be updated to boot version 
 `2.0.0-pre20`, and your command line will work.

 On Thursday, November 6, 2014 12:31:13 PM UTC-5, Henrik Eneroth wrote:

 Hello Micha!


 I'm trying to tuck Reagent in there to take it for a spin, and it seems 
 reluctant to comply:

 boot -d reagent/reagent:0.4.3
 java.lang.NullPointerException:
  boot.main/dep-ns-decls  main.clj:   36
 boot.main/export-task-namespaces/fn  main.clj:   49
 clojure.core/map/fn  core.clj: 2557
 ...
clojure.core/seq  core.clj:  133
  clojure.core/apply  core.clj:  624
 clojure.core/mapcat  core.clj: 2586
 ...
boot.main/export-task-namespaces  main.clj:   51
 boot.main/-main  main.clj:  111
 ...
boot.App.runBoot  App.java:  217
   boot.App.main  App.java:  309


 Any feedback on what I (or it) may be doing wrong?


 Thanks!

 Henrik

 On Monday, November 3, 2014 9:40:58 PM UTC+1, Micha Niskin wrote:

 Hi!

 Boot (http://github.com/boot-clj/boot) is a build tool for Clojure. 
 We've pulled together lessons learned from a year or so using boot v1 in 
 production and are now getting ready to release v2. To show what boot can 
 do we present a very streamlined and awesome boot-based ClojureScript 
 development workflow (
 http://adzerk.com/blog/2014/11/clojurescript-builds-rebooted/). 

 Try it out, maybe you'll like it! We're hoping to get some feedback 
 before committing to a stable release, so please if you have any comments 
 or questions we'd be happy to hear them. Have fun!



-- 
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: Rich Hickey's Transducers talk from Strange Loop

2014-09-21 Thread Henrik Eneroth
I'm tempted to make a conference called Rich Hickey talks about stuff, 
and it's just two days of Rich Hickey giving awesome presentations and 
telling us that we are still complecting stuff. 

On Saturday, September 20, 2014 1:22:50 PM UTC+2, Fergal Byrne wrote:

 Thanks Alex, right up there with the best Rich talks, and in record time!



 On Sat, Sep 20, 2014 at 6:35 AM, Wilker wilke...@gmail.com javascript: 
 wrote:

 Awesome! Thank you very much!

 ---
 Wilker Lúcio
 http://about.me/wilkerlucio/bio
 Woboinc Consultant
 +55 81 82556600

 On Fri, Sep 19, 2014 at 5:33 PM, Bruce Durling b...@otfrom.com 
 javascript: wrote:

 Alex,

 Thanks for getting the videos up so quickly!

 cheers,
 Bruce

 On Fri, Sep 19, 2014 at 9:31 PM, Alex Miller al...@puredanger.com 
 javascript: wrote:
  For your enjoyment...
 
  https://www.youtube.com/watch?v=6mTbuzafcII
 
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clo...@googlegroups.com 
 javascript:
  Note that posts from new members are moderated - please be patient 
 with your
  first post.
  To unsubscribe from this group, send email to
  clojure+u...@googlegroups.com javascript:
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google 
 Groups
  Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send 
 an
  email to clojure+u...@googlegroups.com javascript:.
  For more options, visit https://groups.google.com/d/optout.



 --
 @otfrom | CTO  co-founder @MastodonC | mastodonc.com
 See recent coverage of us in the Economist http://econ.st/WeTd2i and
 the Financial Times http://on.ft.com/T154BA

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


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




 -- 

 Fergal Byrne, Brenter IT

 http://inbits.com - Better Living through Thoughtful Technology
 http://ie.linkedin.com/in/fergbyrne/ - https://github.com/fergalbyrne

 Author, Real Machine Intelligence with Clortex and NuPIC 
 Read for free or buy the book at https://leanpub.com/realsmartmachines

 Speaking on Clortex and HTM/CLA at euroClojure Krakow, June 2014: 
 http://euroclojure.com/2014/
 and at LambdaJam Chicago, July 2014: http://www.lambdajam.com

 e:fergalby...@gmail.com javascript: t:+353 83 4214179
 Join the quest for Machine Intelligence at http://numenta.org
 Formerly of Adnet edi...@adnet.ie javascript: http://www.adnet.ie
  

-- 
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: Programming Clojure in the large: libraries, frameworks, oh my

2014-09-21 Thread Henrik Eneroth
And just recently, we have Onyx as 
well: https://github.com/MichaelDrogalis/onyx

On Friday, September 19, 2014 9:40:14 PM UTC+2, Mike Haney wrote:

 Just a note - juxt/jig isn't being maintained, and has been replaced by 
 juxt/modular.  Modular is based on Stuart Sierra's component library, and 
 mainly consists of several pre-built components and some nice helpers for 
 wiring and configuring components.  It also plays well with juxt/ceylon, 
 which provides a growing collection of pre-built security components and 
 looks very promising.



-- 
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} defun: A beautiful macro to define clojure functions with pattern match.

2014-09-14 Thread Henrik Eneroth
For all the good qualities of the Clojure group, it can sometimes produce a 
bit of a harsh tone. Don't let that get you down though, it's great that 
you're building stuff and showing it off!

As far as defun goes, it looks interesting. The out-of-the-box pattern 
matching was one of the things I enjoyed with ML. It's usually a quite tidy 
way to handle the termination conditions of recursions. It's less useful in 
Clojure, since we're more or less confined to loop and recur, but I still 
like the looks of this.


On Sunday, September 14, 2014 8:47:28 AM UTC+2, dennis wrote:


 Hi , i am pleased to introduce defun https://github.com/killme2008/defun: 
 a beautiful macro to define clojure functions with pattern match.

 Some examples:


 (defun say-hi

   ([:dennis] Hi,good morning, dennis.)

   ([:catty] Hi, catty, what time is it?)

   ([:green] Hi,green, what a good day!)

   ([other] (str Say hi to  other)))


 (say-hi :dennis)

 ;;  Hi,good morning, dennis.

 (say-hi :catty)

 ;;  Hi, catty, what time is it?

 (say-hi :green)

 ;;  Hi,green, what a good day!

 (say-hi someone)

 ;;  Say hi to someone


 Recursive function? It's all right:

 (defun count-down

   ([0] (println Reach zero!))

   ([n] (println n)

  (recur (dec n

 (defun fib

 ([0] 0)

 ([1] 1)

 ([n] (+ (fib (- n 1)) (fib (- n 2)



 Guard functions? it's all right:

 (defun valid-geopoint?

 ([(_ :guard #(and ( % -180) ( % 180)))

   (_ :guard #(and ( % -90) ( % 90)))] true)

 ([_ _] false))


 (valid-geopoint? 30 30)

 ;; true

 (valid-geopoint? -181 30)

 ;; false


 It's really cool,all the magic are from core.match, much more details 
 please see 
 https://github.com/killme2008/defun


 -- 
 庄晓丹 
 Email:killm...@gmail.com javascript: xzh...@avos.com 
 javascript:
 Site:   http://fnil.net
 Twitter:  @killme2008


 

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


Annex is a fact store

2014-09-07 Thread Henrik Eneroth
Conceptually, this looks vaguely similar to Datomic.

https://speakerdeck.com/markhibberd/towards-annex-a-fact-based-dependency-system-icfp

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


Re: Is Clojure a language for growth?

2014-08-21 Thread Henrik Eneroth
 (this, and elderly care jobs, are 
 powering much of the popular music industry here). 

 Ah, everybody generalizes all the time. Henrik can nuance the picture.

 I have been programming and promoting Clojure quite aggressively for some 
 years (it's hard not to), and the last months people have been starting to 
 say yeah, my java friends really likes it or yes, my bf likes it too.

 Wind of change.

 /Linus
 working at Agical AB, a consultancy in love with technology and sometimes 
 hosting Clojure Meet ups with Stockholm Clojure User Group and wov, so much 
 thing I really can help companies with everywhere, epic win

 On Wednesday, August 20, 2014, Quzanti quz...@googlemail.com wrote:

 Just looked at your profile. Sweden? A very enlightened place. I am a 
 big fan of the Paradox Interactive games. What happens in Sweden when 
 investors lose their money?

 On Wednesday, August 20, 2014 7:16:55 PM UTC+1, Henrik Eneroth wrote:


  … as soon as anything goes wrong whether it has anything to do with 
 the technology choice or not you become mr fall guy, to be blamed and 
 fired 
 so that other people can keep their jobs. Seen it happen so many times. 


 Good lord, truly? Perhaps this is a good time to ask what culture OP 
 lives in. This wouldn't happen where I live/work. 

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



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


Re: Is Clojure a language for growth?

2014-08-21 Thread Henrik Eneroth
+ Grammar. I should not write correspondence before having coffee.

On Thursday, August 21, 2014 9:31:42 AM UTC+2, Henrik Eneroth wrote:

 Sweden has some things going for it, and some not, as always. I think 
 business overall is somewhat less cutthroat here than in the States, which 
 is why it struck me that I might be making assumptions about what OP should 
 or should not do out of ignorance of his situation. The scape goat 
 reasoning really brought this home.

 At the two most recent places I've been (I'm a consultant, a UX designer), 
 they've worked with autonomous teams. That is, the teams are themselves 
 responsible for deciding how to solve a problem, sometimes including what 
 programming language to use. One result of this seems to emerge (I only 
 have a sample size of two) a microservice centered design and a general 
 decoupling between the teams. 

 Also, it naturally seems to lead to a more heterogeneous environment, for 
 good or for bad. This seems to be somewhat self-regulating however, as 
 other most members of a team will protest if one member wants to write the 
 new service in the Shakespearean Programming Language, for example. It also 
 leads to the same kind of resistance to more sensible choices as well, like 
 Clojure. But unlike SPL or Brainfuck, they actually have chance of being 
 used if they show merit, probably by filling some niche role to begin with. 

 When I was with Spotify, I learned that they had snuck in some Clojure in 
 one of the teams of the organization. No one has been fired yet, and 
 everyone seems happy enough. Especially the people who now get to do at 
 least *some* Clojure during their work day.

 Oh, and like Linus, I try to promote Clojure wherever I go. As a designer, 
 I'd love to work with a team that uses Clojure. That is, a team that 
 understands that incidental complexity eventually seeps out to for the user 
 to deal with, and so on. Unfortunately, being framed as a designer means I 
 have less natural authority when I say that Clojure is awesome. Although 
 this is somewhat mitigated somewhat by the sheer shock of having a designer 
 saying something comprehensible about a programming language.

 On Thursday, August 21, 2014 7:44:18 AM UTC+2, Quzanti wrote:

 If an investor were kicking people out, its usually because money is 
 running low or for other more diffuse reasons. If an investor or boss 
 somewhere where kicking out people at random, he would quickly loose 
 respect from his other employeers. The rest would soon leave as well.

 Hence the need for a scapegoat. Generally if an investor can make 20% of 
 their startups work, people will blame the technologists for the failure of 
 the other 80%, and the investor will have a PR machine to distort the 
 history if needed. But yes, startup hubs work best when there are angel 
 investors who want to build a personal reputation or where the 
 institutional investors have strong links with the universities producing 
 the start up talent and so don't want to jeopardise those (eg the Stanford 
 University system). Even the best VCs will shut down the majority of their 
 start ups though, so you'd think that would make people avoid them, but 
 there are always people out there who need money to try and realise their 
 dreams. 

 All a bit tangential to the the original thread question though, which 
 was assuming a high growth, high pressure, scale it up fast, need results 
 kind of culture, would Clojure be a good fit?

 On Wednesday, August 20, 2014 11:46:48 PM UTC+1, Linus Ericsson wrote:

 Well, for better or worse we don't like conflicts that much. This has 
 benefits when it comes to some kinds of problem solving (the way to 
 consensus in Swedish companies is worth at least a chapter in a big book 
 about antrophology). This shyness for open conflicts can lead to stagnation.

 This means that status quo is not turned over that easily, but when it 
 does, it happens like an avalanche (cow oscillator comes to mind). 
 Stockholm University has Clojure and Erlang in its second year curriculum 
 for computer science. Just saying.

 Apart from that, its 3kloc database queries and Java classes galore and 
 Wordpress shops all over, like everywhere else. The single larges group 
 of workers in Stockholm is of course computer programmer. 33000 people out 
 of a million of so.

 If an investor were kicking people out, its usually because money is 
 running low or for other more diffuse reasons. If an investor or boss 
 somewhere where kicking out people at random, he would quickly loose 
 respect from his other employeers. The rest would soon leave as well.

 In Sweden we have a system... the ironic saying goes, but the truth is 
 that even though the housing situation is outright catastrophic, you would 
 not ever be put on the street if you wasn't psychotic enough not to accept 
 the help offered (worst case you would end up in a sad, sleepy, far far out 
 suburb with long commuting

Re: Is Clojure a language for growth?

2014-08-20 Thread Henrik Eneroth
Have you read Paul Graham's *beating the averages 
http://www.paulgraham.com/avg.html*? I find it absolutely amazing, but 
one of the reasons that Clojure is such a phenomenal choice, if you can 
deal with the incidental complexity around it, is that it still is a 
somewhat non-obvious choice. Make your boss read the article as well, if 
s/he hasn't.

As for recruiting, I'm not sure what input to give, as I haven't had to 
deal with that particular issue myself. I have a hunch that if you tried to 
engage people who have a background in functional languages rather than 
C++, you may find that they have an easier time to adapt and to learn how 
to read code. I'm guessing that the trouble that C++ devs find themselves 
with when trying to read the language has much more to do with patterns 
than grammar. I had a fun time showing core.async to someone who'd only 
worked with callbacks and futures/promises previously, and it took quite 
some time for them wrap their head around it. 

I think that it's possibly a feature rather than a bug that the patterns 
are non-obvious to someone completely new to the game. If not, they would 
be incremental, and the performance benefit for your organization would be 
similarly incremental. If you want a new level of something, rather than an 
increment of something, then logically, the stuff you need to learn is 
going to be somewhat alien.

Clojure, provided that it is done in a Clojure kind of way, has all 
manner of benefits, if you discount the availability of people and how 
approachable it is to a person who has never seen it before. You and your 
organization has to decide if it's worth the effort to get the people who 
can do this, or if it makes more sense to settle on something that is 
widely available. Just bear in mind that if you go for what is common, your 
performance is most likely going to be on an average level as well. 

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


Re: Is Clojure a language for growth?

2014-08-20 Thread Henrik Eneroth


  … as soon as anything goes wrong whether it has anything to do with the 
 technology choice or not you become mr fall guy, to be blamed and fired so 
 that other people can keep their jobs. Seen it happen so many times. 


Good lord, truly? Perhaps this is a good time to ask what culture OP lives 
in. This wouldn't happen where I live/work. 

-- 
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: Transit Idea

2014-08-18 Thread Henrik Eneroth
Awesome! Well done!

On Monday, August 18, 2014 12:55:23 AM UTC+2, Ashton Kemerling wrote:

 I went ahead and wrote it. I'm sure there are some bugs to work out, but 
 for now it works in the basic cases. The pullrequest for this feature can 
 be located on Solr's github here: 
 https://github.com/apache/lucene-solr/pull/85.

 --
 Ashton

 On Wednesday, August 13, 2014 6:50:34 PM UTC-6, Alex Miller wrote:

 Sounds good to me. :) 

 On Wednesday, August 13, 2014 1:59:54 PM UTC-4, Ashton Kemerling wrote:

 I realized that Solr currently provides a lot of language-specific 
 serializer options. Currently Ruby, Python, PHP, and javabin(?) are 
 options, along with the normal json and xml. Wouldn't it make a lot of 
 sense for us to add a transit-json and transit-messagepack options to Solr?

 --
 Ashton



-- 
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 Henrik Eneroth
Yes, thanks for Sente, Peter!

Will Sente eventually use/support Transit? :-)


On Friday, August 15, 2014 11:30:56 AM UTC+2, Peter Taoussanis wrote:

 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: Core.logic for boardgames

2014-08-11 Thread Henrik Eneroth
I have no idea, but I'm also interested in the answer. ^_^

On Saturday, August 9, 2014 12:51:20 PM UTC+2, Robin Heggelund Hansen wrote:

 Hi.

 I'm starting a new project now, where users are presented with a set of 
 boardgames (chess, checkers, othello...) which they then can play together 
 online.
 Does it make sense to implement the game logic using core.logic, and does 
 it transfer well to cljs (i'd like to share logic between backend and 
 frontend if i can)?

 I don't know core.logic, but would like to learn if it is a good fit for 
 the problem I'm solving.

 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
--- 
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] Garden 1.1.7

2014-05-26 Thread Henrik Eneroth
Thanks!

On Saturday, May 24, 2014 7:14:40 PM UTC+2, Joel Holdbrooks wrote:

 Garden, a library for authoring stylesheets in Clojure and ClojureScript, 
 is now 1.1.7.

 ADDED: Support for :preamble
 IMPROVED: Support for meta data in garden.def/* macros

 https://github.com/noprompt/garden


-- 
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: rant / cljs in cljs ? :-)

2014-04-05 Thread Henrik Eneroth
If that is your criterion, use something that reloads the browser 
automatically when the js is changed. I use CodeKit personally.

On Wednesday, April 2, 2014 10:09:45 PM UTC+2, lypanov wrote:

 I hate REPLs. I also hate large compile times.
 For me the hardest part of the ~5s compile time is not waiting, it's the 
 watching of the progress of the auto build and waiting until exactly that 
 moment
 before pressing reload in the browser.

 That being said, I find run this currently selected code block in my 
 connected browser functionality in editors (lighttable is the one I 
 use/know) to be
 the best solution to this problem. It's painful as hell at first though.

 I had a work around in the past via a fork of noir-cljs which would delay 
 the load of the .js files until compile completed via some hacks but
 now that I've switched to a browser  editor work flow I find myself 
 doing as much work as possible in the editor via the run it in the browser 
 REPL
 script tag trick from  lighttable that I'm no longer even noticing compile 
 times. I leave them to the end of the pomodoro.

 On Friday, March 21, 2014 7:48:59 AM UTC+1, t x wrote:

 Hi, 

 *  I'm already using: 

   :incremental true 
   :compiler { :optimizations :none } 

 * I'm also aware of cljs brepl 


 However: 

 1) the cljs compiler is still too slow for my liking (even though it's 
 not calling closure) 

 2) I don't like the cljs repl nearly as much as I like the clj repl 


 Now, my dumb/stupid question: 

   Is there any cljs in cljs _slow_ interpreter? I'm perfectly happy 
 with an interpreter that runs 10x slower, if, in exchange, I get to 
 hit refresh and my new code starts running. 

   Furthermore, I'm _okay_ with their being a big delay every time I 
 introduce a new macro from clj land. 


   I realize this sounds spoiled -- but -- the cljs compiler delays are 
 really really breaking my flow. 


 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
--- 
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: Om 0.5.0

2014-02-20 Thread Henrik Eneroth
Great stuff! Thanks!


On Thursday, February 20, 2014 8:07:36 PM UTC+1, David Nolen wrote:

 The only change is that we now depend on the just released React 0.9.0.

 Feedback welcome!

 https://github.com/swannodette/om

 David


-- 
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: Reagent 0.3.0 - now with async rendering

2014-02-04 Thread Henrik Eneroth
Cheers, Dan!


I'm doing experiments with both Reagent and Om at the moment, and I'm very 
excited about this way of rendering changes to a webpage. I particularly 
enjoy how easy it is to work with Reagent's API, and appreciate the time 
you are putting into this project. 

One of the major wins is how explicit I can be with where I put state. My 
current experimental design puts state squarely in two places only: an atom 
in the client, and the database (Datomic, for the time being). The server 
essentially behaves like a pure function only. I don't have time to 
enumerate all the benefits of this design as opposed to the mess I usually 
encounter, where state is stored absolutely everywhere.



On Monday, February 3, 2014 3:24:25 PM UTC+1, Dan Holmsand wrote:

 Reagent, a minimalistic interface between React.js and ClojureScript, is 
 now at 0.3.0. 

 The new release adds a couple of bugfixes, and async rendering. Read more 
 here: 

 http://holmsand.github.io/reagent/news/reagent-is-async.html 

 The project page is here: 

 https://github.com/holmsand/reagent 

 Cheers, 

 /dan 



-- 
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: data.fressian, read and write Fressian from Clojure

2014-01-03 Thread Henrik Eneroth
Thanks for this! I watched your talk about this on the conj, and this is 
really cool stuff. Are there any plans for a ClojureScript version of 
Fressian? 

On Thursday, November 14, 2013 5:51:41 PM UTC+1, stuart@gmail.com wrote:

 data.fressian [1] is a Clojure-language wrapper for the reference 
 implementation [2] of Fressian.  I am still setting up CI, maven release, 
 etc. but wanted to get the source up so that interested parties can peruse 
 and contribute.

 The wiki at [2] is currently the best source of documentation.

 Cheers,
 Stu

 [1] https://github.com/clojure/data.fressian
 [2] https://github.com/Datomic/fressian/wiki


-- 
-- 
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] Chord 0.2.1 - making WebSockets look like core.async channels in CLJ+CLJS

2013-12-02 Thread Henrik Eneroth
Cool! I presume you're restricted to EDN on the channels though, right? 

On Saturday, November 30, 2013 5:23:17 PM UTC+1, James Henderson wrote:

 https://github.com/james-henderson/chord

 Chord is a library for making WebSockets look like simple core.async 
 channels in Clojure (using http-kit) and ClojureScript. 

 Basic usage:

 Leiningen: 

 [jarohen/chord 0.2.1]

 ClojureScript:

 (:require [chord.client :refer [ws-ch]]
   [cljs.core.async :refer [! ! put! close!]])(:require-macros 
 [cljs.core.async.macros :refer [go]])
 (go
  (let [ws (! (ws-ch ws://localhost:3000/ws))]
(! ws Hello server!)
(loop []
  (when-let [{:keys [message]} (! ws)]
(js/console.log Got message from server: message)
(recur)


 Clojure (a wrapper around http-kit's 'with-channel'):

 (:require [chord.http-kit :refer [with-channel]]
   [clojure.core.async :refer [! ! put! close! go]])
 (defn your-handler [req]
   (with-channel req ws-ch
 (go
   (let [{:keys [message]} (! ws-ch)]
 (println Message received from client: message)
 (! ws-ch Hello client from server!)
 (close! ws-ch)


 There's more documentation and a few code examples on the Github page, and 
 a full example project in the repo. 

 Feedback is *always very welcome* - either here, through Github in the 
 usual way or (if it fits into 140 chars!) Twitter.

 Version 0.2.1 brings the ability to specify custom buffered channels - 
 thanks to Timo Sulg for the PR!

 James (@jarohen)


-- 
-- 
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] Chord 0.2.1 - making WebSockets look like core.async channels in CLJ+CLJS

2013-12-02 Thread Henrik Eneroth
Since we don't really care what the data looks like while it's on the wire, 
it could even be byte code in order to compress data. But it's certainly 
nice if it's possible to use EDN in any case.

Also, you could consider whether it'd be worthwhile interacting with 
something like SockJS in order to get wider platform support. 

On Monday, December 2, 2013 2:02:35 PM UTC+1, James Henderson wrote:

 Unfortunately Chord only accepts raw strings on the channel at the moment 
 - I've been using pr-str and read-string around EDN messages until now. 

 It's a great idea to be able to format/parse different message formats 
 automatically though and something that IMO Chord should provide. I've 
 added a GitHub issue https://github.com/james-henderson/chord/issues/4 - 
 watch this space!

 Thanks,

 James

 On Monday, 2 December 2013 09:38:50 UTC, Henrik Eneroth wrote:

 Cool! I presume you're restricted to EDN on the channels though, right? 

 On Saturday, November 30, 2013 5:23:17 PM UTC+1, James Henderson wrote:

 https://github.com/james-henderson/chord

 Chord is a library for making WebSockets look like simple core.async 
 channels in Clojure (using http-kit) and ClojureScript. 

 Basic usage:

 Leiningen: 

 [jarohen/chord 0.2.1]

 ClojureScript:

 (:require [chord.client :refer [ws-ch]]
   [cljs.core.async :refer [! ! put! close!]])(:require-macros 
 [cljs.core.async.macros :refer [go]])
 (go
  (let [ws (! (ws-ch ws://localhost:3000/ws))]
(! ws Hello server!)
(loop []
  (when-let [{:keys [message]} (! ws)]
(js/console.log Got message from server: message)
(recur)


 Clojure (a wrapper around http-kit's 'with-channel'):

 (:require [chord.http-kit :refer [with-channel]]
   [clojure.core.async :refer [! ! put! close! go]])
 (defn your-handler [req]
   (with-channel req ws-ch
 (go
   (let [{:keys [message]} (! ws-ch)]
 (println Message received from client: message)
 (! ws-ch Hello client from server!)
 (close! ws-ch)


 There's more documentation and a few code examples on the Github page, 
 and a full example project in the repo. 

 Feedback is *always very welcome* - either here, through Github in the 
 usual way or (if it fits into 140 chars!) Twitter.

 Version 0.2.1 brings the ability to specify custom buffered channels - 
 thanks to Timo Sulg for the PR!

 James (@jarohen)



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