Re: Funding Clojure 2010

2009-12-17 Thread Wojciech Kaczmarek
Speaking of websites, if you're talking about Matz creation, please
bear in mind it has had a less appealing website for almost 10
years... ;) So maybe let give Clojure a bit time.

Of course many things Ruby community achieved are cool. Both Ruby and
Rails have very good introductory tutorials  docs which lowers a
barrier to entry. OTOH Clojure documentation is awesome considering
the fact how young project is it. The community here is expanding,
smart people are writing smart tools, all that may seem to be a
disorganized cloud of github projects, but in fact some order and
standards are emerging. Evolution takes time. Referring to Ruby again,
it earned gems  rake about 7 years after initial release IIRC.

Now about Rich's manifesto: thanks for the honest and clear words.
I'll donate and start persuading some organizations I work for to do
so.

On Thu, Dec 17, 2009 at 07:37, brian brw...@gmail.com wrote:
    I have  looked at hundreds of languages and flavors  more as a kind
    of hobby these days. I know these comments are getting a  bit
    tedious by now, but what I think clojure needs is higher visibility.
    Right now only a handful of people know about it. The thought
    occurred to me while I was installing another open source language
    system today, I (but have only dabbled in clojure a bit so far), was
    that they had a visually appealing website. Visual signals send a
    strong message. This particular one has a lucious red strawberry
    (hint hint) motif, simple, clean, and appealing, and kind of
    lightens up a  drab subject, makes it almost.. well I won't get into
    it.  I'm coming at this as a bit of an outsider as have not been a
    programmer in a long time since I got involved with start-ups. So
    anyways, my point is, if you're looking for mass appeal, eveything
    is pretty web-based packaging these days. Forget even the CD idea,
    thats old, even for an old guy like me (I don't even have a CD drive
    on my computer anymore !). Also a windows installer, and no asking
    the user to compile things, make it as shrink wrapped as possible,
    with a good online tutorial, and chat  help all bundled together in
    a quick install.

    Brian




 Rich Hickey wrote:
 Funding Clojure 2010

 Background
 --

 It is important when using open source software that you consider who
 is paying for it, because someone is. There is no such thing as free
 software.

 Sometimes open source software is developed under a license with
 undesirable properties (e.g. the GPL), such that people are willing to
 pay for a (proprietary) version of it that is not subject to that
 license. Both Monty Widenius [1] and Richard Stallman [2] have argued
 for the necessity of such a mechanism to fund open source software,
 lest there be insufficient resources for its development. Clojure
 doesn't use the GPL, thus conveying more freedom to its users, but
 precluding me from funding it via dual licensing.

 Some companies develop technology as a component of a proprietary
 product or service, absorbing it as a necessary expense, only to
 decide that it is not a core, unique, or advantage-bearing business
 function. They can reduce their costs in ongoing development by open
 sourcing it, deriving benefit from community contributions and letting
 them focus on their core business [3]. It is important to note that
 the bulk of the costs are often in the original development, and are
 paid for by the proprietary product or service. That is not the case
 for Clojure.

 Some open source is the product of academic research, and is funded by
 the academic institution and/or research grants [4]. That is not the
 case for Clojure.

 Some open source software is (partially) funded by proprietary
 support. It is important to note that often the support income does
 not in fact make it to the people who create the software. Such income
 models work best for support sold to conservative enterprises [5].
 That is not the case for Clojure.

 Some companies 'fund' open source software by dedicating some of their
 employees' time, or making investments, in its development. There must
 be some business value to the company for doing so (e.g. it helps them
 sell hardware [6]), and thus is ultimately paid for by their
 proprietary products/services. That is not the case for Clojure.

 There *are* companies that make software themselves, whose consumers
 see a value in it and willingly pay to obtain that value. The money
 produced by this process pays the salaries of the people who are
 dedicated to making it, and some profit besides. It's called
 proprietary software. People pay for proprietary software because
 they have to, but otherwise the scenario is very similar to open
 source - people make software, consumers get value from it. In fact,
 we often get a lot less with proprietary software - vendor lock-in, no
 source etc. Most alarmingly, this is the only model that associates
 value with software 

Re: Generalizing - -

2009-12-03 Thread Wojciech Kaczmarek
On Thu, Dec 3, 2009 at 17:02, Meikel Brandmeyer m...@kotka.de wrote:

 Are there any plans to add -$ to core or contrib?

 The rules on contrib are that the work must be original to the author. Even 
 with Andrew's disclaimer that it be considered public domain, he would still 
 need a contributor agreement in place to get this incorporated into contrib.

 I haven't tried using -$ yet, but based on its description it seems like it 
 would be a useful addition to contrib.

 There is also an old discussion about this: pipe, let-, pipe-as, and
 what not

 http://groups.google.com/group/clojure/browse_thread/thread/66ff0b89229be894/c3d4a6dae45d4852?q=pipe+group:clojure#c3d4a6dae45d4852

+1 for pipe-as in contrib.

But frankly I'd be glad seeing *any* of these macros in contrib.macros
(this one seems quite abandoned with 3 macros only, huh?) or wherever
in contrib. Let the contributors decide  go with it, that will push
it to use, for good.

I wrote a bunch of similar stuff but not so general; it arises from a
need to control order of passed forms while sticking to 'threading'
style, as this style helps in grasping how data is transformed (btw
it's a thought raised a couple of times, see eg. recent blog of Tim
Bray cited here).

It'd be very cool to see these threading augmentations standarized a bit.

cheers
Wojtek

-- 
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: Deep deref

2009-11-23 Thread Wojciech Kaczmarek
On Mon, Nov 23, 2009 at 22:46, Sergey Didenko sergey.dide...@gmail.com wrote:
 BTW I'm also coding the simple persistence for Clojure data
 structures. Though I took Prevayler approach (http://prevayler.org),
 so I journal function calls that change my root object.

 This approach is better than simple snapshotting when your data grows
 big, so you can't do the snapshots very often but do not want to lose
 a lot of the latest changes.

 Making snapshots are easy to implement after this, if data objects
 reference each other only one time or through ids. I guess it would be
 a simple traversal of the root object.

 I plan to make this persistence code public if anyone is interested.
 Though I'm not moving very fast, I'm learning Clojure at the same
 time.

Yeah it would be cool to look at 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


Re: roll call of production use?

2009-11-23 Thread Wojciech Kaczmarek
On Tue, Nov 24, 2009 at 00:00, Raoul Duke rao...@gmail.com wrote:
 hi,

 i'd be interested to hear who has successfully used clojure in
 production. i know of some, as some folks have been vocal; any other
 interesting-but-so-far-silent uses people'd be willing to fess up
 about?

 many thanks.

I use Clojure for web crawling / scraping of certain services with
storing extracted data in a custom database. I could marry existing
Java libs with an excellent xml/html walking via zippers; and could
test it in REPL which is a pleasure to use. After finishing a
prototype it became a valid production version which Just Works in a
near-zero time. Ah, and I eradicated many bugs early by having set
*warn-of-reflection* - esp. for the code heavily calling Java.

Nothing revolutionary, it was just use of typical web-related
techniques, which are unfortunately still a major pain in the ass on
many programming platforms (and they don't have macros!! ;)

More uses incoming. It will be bulk data load of QDBM and TokyoCabinet
storages, for example.

-- 
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: Hiring full-time work-at-home clojure/emacs dev

2009-10-13 Thread Wojciech Kaczmarek

On Tue, Oct 13, 2009 at 18:58, Robert Stehwien rstehw...@gmail.com wrote:

 
  If you have to work Remote, why limit yourself to us only? There are
  developers outside the states you know...

 Yes, but if you're pair programming (which they are), it sure helps to
 if all involved are awake at the same time. So maybe Canadians would
 be OK. ;-)

 How well does remote pair programming work?  I telecommute 100% so I'm
 curious.  Must be working for you guys, I just haven't tried Rudel.  Since I
 almost live in emacs I should give it a try sometime... if I can find any of
 my co-workers that use emacs.

It's so cool to learn sth new. We used just screen -x for a serious
remote pair work; I haven't heard of Rudel yet, thanks for pointing at
it.

Yeah as you said it's crucial to be in the same or similar timezone.
Being in central Europe I can just wish you luck guys :]]

--~--~-~--~~~---~--~~
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: Can anyone here give a comparison between Clojure and Erlang on concurrent programming?

2009-09-19 Thread Wojciech Kaczmarek

On Fri, Sep 18, 2009 at 17:41, Stuart Sierra
the.stuart.sie...@gmail.com wrote:

 On Sep 17, 6:54 pm, dongbo dongb.w...@gmail.com wrote:
 Can any one give a comparison between Clojure and Erlang on concurrent
 programming?

Hi! I'd add 2cents here as I did some hacking in Erlang and now i'm
transforming lots of habits to try coding in Clojure efficiently.

 Erlang supports one concurrency model, Actors.  Clojure supports
 several -- Agents, which are similar to Actors; Refs, which have ACI
 (not D) transactional semantics; and Atoms, which have atomic updates.

 Erlang is designed for distributed operation across many machines;
 Clojure is designed for a single machine with many cores.

Yeah, Erlang makes distribution easy and gives you a nice way to send
any term (a nested data structure, including closures inside) across
the network and read it on the other node, even if the nodes have
different OS architecture underneath. It also means such data is
serializable for free - you can write it to a file or just keep it as
a binary blob for a while in your program - and you don't have to
write any serializing implementation for your specific data
structures, it just works by calling term_to_binary and
binary_to_term. I found it a killer feature for some code I wrote.

OTOH Erlang's data structures are not unified as in Closure in that
they all are immutable. Most of the OTP modules you'd use for your
data - sets, trees, dicts - operate on purely functional data. But
then some other (say, digraphs) are implemented over ETS, which is
really a server encapsulating some state. So you can't serialize such
stuff as I described above, you have to export it first to some 'pure'
structure and import on the other side. So, you should carefully read
the docs to see what are you dealing with. As you work with such
different stuff, it becomes obvious these implementations were added
as language evolved to cover the needs of various users, incl.
commercial ones. I mean, the high-level data structures weren't
designed from the ground up as in Clojure, rather they were
implemented in different ways using low-level structures: atoms, lists
and tuples, and made their way to Erlang's standard lib.
So, if you are into FP and like the idea of all the data being
immutable, Closuje is a breeze - data structures behave predictably
and they pretty-print nice, which is important if you live in a REPL.
Compare a standard way of creating and printing some nested data, Erlangs:
 sets:from_list([1,2,[{foo,3},4,5]]).
{set,3,16,16,8,80,48,
 {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
 {{[[{foo,3},4,5]],
   [],[],[],[],[],
   [2],
   [],[],[],[],
   [1],
   [],[],[],[]}}}
with Closure's:
 #{1 2 '([foo 3] 4 5)}
#{1 2 ([foo 3] 4 5)}

Sucintness is power, isn't it?
In Erlang you probably would want to roll your own pretty-printer for
such simple thing as a set, or just run sets:to_list() every time you
print it human-readably, but still there's no easy way to convince the
REPL to do it for you.

 Erlang is designed to hot-swap entire modules in a running production
 system; Clojure is not.

 Erlang has its own light-weight thread model; Clojure threads are JVM
 threads, which are usually operating system threads.

 You can't really say that one approach is more efficient than another
 without reference to a specific problem.

Very well put.

I'd say: if your system must be concurrent *and* distributed, go for
Erlang and you will get used to it. Even if Erlang has only an Actor
model, it's a very powerful model and they did it right. If you only
need concurrency on one node, it's worth to try both Erlang and
Clojure and make a decision based on early symptoms ;]

If you like Lisp you can also try LFE which is a Lisp over Erlang, but
that's another story.

cheers,
Wojtek

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



A welcome

2009-09-17 Thread Wojciech Kaczmarek

Hi folks!

I just subscribed to this list and hope we gain some hacking
experience together.

I walked a long way since I decided to go beyond OO: rediscovered CL,
then went to ML family for a couple of years, then Haskell, and back
to dynamic setting via Erlang to Lisps of today. I consider myself an
early adopter of LFE, which is a Lisp-2 over Erlang, and wrote a bunch
of code in it -- hope will be able to publish something or at least
blog about it. I still have some heart for, say, Ruby -- but I tend to
code FP way even if it's non-idiomatic for a given setting. That's how
mind can be transformed by exercises ;)

Now I'm checking the Clojure, which was on my radar since published
but awaited in a mental queue, and I must say most of experience with
it is a pure pleasure :] I'm going through a transcript of excellent
Rich's talk; when I digest it I'd have some questions, mostly
comparing  features with other Lisps -- just don't take them as X is
better comments, it will be rather a complement of grasping what can
be easily done in Clojure.

cheers,
Wojtek

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