<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
 xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
 xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:atom="http://www.w3.org/2005/Atom"
 xmlns:dcterms="http://purl.org/dc/terms/"
>

<channel>
<title></title>
<link>http://www.shlomifish.org/me/blogs/</link>
<description></description>

<item>
<title>Copied from Slashdot.org: &#x22;Heroic people make any job they take awesome.&#x22;</title>
<link>http://blogs.perl.org/users/shlomi_fish/2013/04/heroic-people-make-any-job-awesome.html</link>
<description> First of all, I have written my recent hacktivity log over on my new dreamwidth.org blog, and I am not posting it here, because it involves a lot of non-code hacktivity, which I expect to do quite a lot...</description>
<author>Shlomi Fish</author>
<category>employment</category>
<category>hacktivity log</category>
<category>jobs</category>
<category>work</category>
<guid isPermaLink="true">http://blogs.perl.org/users/shlomi_fish/2013/04/heroic-people-make-any-job-awesome.html</guid>
<pubDate>Sun, 14 Apr 2013 19:04:24 -0000</pubDate>
<content:encoded content="
        
&#x3C;p&#x3E;
First of all, I have written my
&#x3C;a href=&#x22;http://shlomif.dreamwidth.org/464.html&#x22;&#x3E;recent hacktivity log&#x3C;/a&#x3E;
over on my new dreamwidth.org blog, and I am not posting it here, because
it involves a lot of non-code hacktivity, which I expect to do quite a lot
more of from now.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
That put aside, I am copying here something that I wrote
&#x3C;a href=&#x22;http://news.slashdot.org/comments.pl?sid=3619331&#x26;amp;cid=43371075&#x22;&#x3E;in
a Slashdot comment&#x3C;/a&#x3E; about why I am looking for a job not in IT. Especially
of note there are my frustrations with employers being too domineering and
control-freaks, and not letting the good developers do things the way they
most prefer to do it. Here goes:
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I&#x27;ll put it on the table: I have a Bachelor of Science (B.Sc. - 4 year degree)
in Electrical Engineering (more like a mixed CE/EE/CS degree) from &#x3C;a
href=&#x22;http://en.wikipedia.org/wiki/Technion_%E2%80%93_Israel_Institute_of_Technology&#x22;
title=&#x22;wikipedia.org&#x22; rel=&#x22;nofollow&#x22;&#x3E;The Technion in their Haifa, Israel
Campus&#x3C;/a&#x3E; [wikipedia.org], and graduated cum laude, and I have a qualified
engineer certificate which theoretically allows me to write software for
guiding missiles (or other flaw-free software) and give my signature that it is
flaw-free. Nevertheless, right now I&#x27;m looking for part-time jobs as a
seller/vendor in icecream parlours, candy/snack stores,
caf&#x26;#233;s/restaurants/bars/etc. or even as a street sweeper. Lots of places in
Tel Aviv, Israel are now advertising for this, and this seems like a good way
to earn some money, as well as interact with other people and get inspired
which will really help me with my &#x3C;a href=&#x22;http://www.shlomifish.org/humour/&#x22;
title=&#x22;shlomifish.org&#x22; rel=&#x22;nofollow&#x22;&#x3E;creative writing&#x3C;/a&#x3E; [shlomifish.org] and
my &#x3C;a href=&#x22;http://www.shlomifishorg/philosophy/&#x22; title=&#x22;www.shlomifishorg&#x22;
rel=&#x22;nofollow&#x22;&#x3E;essays&#x3C;/a&#x3E; [www.shlomifishorg]. And I can buy an Android
smartphone (nothing really better now and some people have successfully
installed GNU/Linux chroots there) so I can type stuff for later incoporation
into my desktop and laptop devices.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
So why not work as a software developer? I don&#x27;t mind getting a job as a
software developer or a hardware developer or whatever, but lately employers in
Tel Aviv and vicinity have become extremely picky: you go to an interview,
answer most technical questions nicely, and don&#x27;t get hired. Furthermore, even
if they like you they are often very domineering: don&#x27;t work from home, work
10-12 hours a day, only full time, don&#x27;t play computer games at all (I only
played some card Patience/Solitaire and Sokoban and not for long and still got
flack), don&#x27;t go to Facebook/Twitter/Google-Plus, we don&#x27;t want you accessing
imgur.com (too muchu traffic to there so let&#x27;s firewall it) etc. etc. Thing is
- &#x3C;a
href=&#x22;http://www.avc.com/a_vc/2012/02/the-management-team-guest-post-from-joel-spolsky.html&#x22;
title=&#x22;avc.com&#x22; rel=&#x22;nofollow&#x22;&#x3E;the junior developers are kings&#x3C;/a&#x3E; [avc.com]
(see the link for the Joel article), and you should leave them alone to their
elements to get shit done at their own pace, and using their own resources
instead of being a control freak. If, as a boss, my developer watched porn for
6 hours a day, while still being available on the forums for questions, and
spent 2 hours creating great code that is functional and beautiful, I would be
happy, and give him a full salary. But finding such enlightened employers is a
big problem.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Software was the first field where workers were in constant demand, but now it
seems that other fields are headed the same way here in Tel Aviv and other
major centres of commerce worldwide: the food outlets, the music industry,
photography, and soon - writing, acting/drama/film and then hopefully also
modelling, and then if we can get past the normal and silly legal barriers -
also more brick-and-mortar industries. Right now I&#x27;ve decided to make a &#x3C;a
href=&#x22;http://blogs.perl.org/users/shlomi_fish/2013/03/ann-my-transition-from-software-developer-to-writerentertaineramateur-philosopherinternet-celebrity.html&#x22;
title=&#x22;perl.org&#x22; rel=&#x22;nofollow&#x22;&#x3E;transition&#x3C;/a&#x3E; [perl.org]
from a software developer to a writer/Internet-entertainer/amateur-philosopher
- a field where I feel I produce better results and also something that people
will find cooler and sexier (although like I note in the article, the fact that
I wrote a Freecell solver has impressed some really cute and intelligent
chicks), and will have a larger influence. I still see knowing programming and
other software development as an absolutely necessary means for that, just like
I can no longer survive without knowing how to read and write English. Everyone
should know at least HTML/XHTML/etc.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
What I&#x27;m trying to say is that one should avoid Fatalism. People can improve
for the better. I spent six and a half year doing my Elec. Eng. degree in the
Technion and it cost me a lot of frustrations, but I&#x27;m still alive and have
constantly become a better person - more competent, more able, smarter, wiser,
and with a greater capacity for love and friendship. As long as you&#x27;re not dead
and still have some health in you, you will do fine. My suggestion to someone
who got a Ph.D. in literature is to realise that that may make them a really
awesome programmer , or a bartender, or a candy store vendor, or a secretary,
or a sys admin, or anything else that they will find a job at. Don&#x27;t think &#x22;I&#x27;m
too good for that&#x22; because like they say in Hollywood &#x22;There are no small roles
- only small (= small-minded) actors.&#x22; You can be an awesome superheroic person
even if you&#x27;re just a factory worker.
&#x3C;/p&#x3E;


        
    " xmlbase="http://blogs.perl.org/users/shlomi_fish/"/>
<dcterms:modified>2013-04-14T19:06:57Z</dcterms:modified>
</item>
<item>
<title>XML-Grammar-Screenplay: Alternative Format for Hollywood Screenplays</title>
<link>http://blogs.perl.org/users/shlomi_fish/2013/03/screenplay-text-alternative.html</link>
<description> A short time after I posted a message about XML-Grammar-Screenplay to a Perl forum, a Perl enthusiast sent me a message reading like that: I would think that a proper screenplay grammar would be useful (I&#x27;ve thought of writing...</description>
<author>Shlomi Fish</author>
<category>hacking</category>
<category>hollywood</category>
<category>perl</category>
<category>screenplays</category>
<category>scripts</category>
<guid isPermaLink="true">http://blogs.perl.org/users/shlomi_fish/2013/03/screenplay-text-alternative.html</guid>
<pubDate>Sun, 24 Mar 2013 04:45:09 -0000</pubDate>
<content:encoded content="
        
&#x3C;p&#x3E;
A short time after I posted a message about
&#x3C;a href=&#x22;http://www.shlomifish.org/open-source/projects/XML-Grammar/Fiction/&#x22;&#x3E;XML-Grammar-Screenplay&#x3C;/a&#x3E;
to a Perl forum, a Perl enthusiast sent me a message reading like that:
&#x3C;/p&#x3E;

&#x3C;blockquote&#x3E;
&#x3C;p&#x3E;
I would think that a proper screenplay grammar would be useful (I&#x27;ve thought
of writing one myself). Though I&#x27;ve looked through your screenplay examples, I
can&#x27;t see any of them, anywhere, which is actually rendered in correct
screenplay format (&#x3C;a
href=&#x22;http://en.wikipedia.org/wiki/File:Screenplay_example.svg&#x22;&#x3E;example&#x3C;/a&#x3E;),
nor anything which appears to directly support the special directives often
found in screenplays, such as sluglines.  Am I missing something?
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
(Poor) Directions for formatting a screenplay are
&#x3C;a href=&#x22;http://www.scriptfrenzy.org/howtoformatascreenplay&#x22;&#x3E;here&#x3C;/a&#x3E;.
That really doesn&#x27;t cover the *extremely* rigid formatting rules involved (a
reader can often &#x3C;b&#x3E;toss&#x3C;/b&#x3E; a script with &#x3C;b&#x3E;bad margins&#x3C;/b&#x3E; and get paid for it anyway).
&#x3C;/p&#x3E;
&#x3C;/blockquote&#x3E;

&#x3C;p&#x3E;
Screenplay-Text looks something like this:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
&#x26;lt;s id=&#x26;quot;humanity&#x26;quot; title=&#x26;quot;&#x26;#39;Humanity&#x26;#39; - The Movie&#x26;quot;&#x26;gt;

[Note: This screenplay was written by
&#x26;lt;a href=&#x26;quot;http://www.shlomifish.org/&#x26;quot;&#x26;gt;Shlomi Fish&#x26;lt;/a&#x26;gt;, and is original artwork.]

&#x26;lt;s id=&#x26;quot;the-well&#x26;quot; title=&#x26;quot;The Well&#x26;quot;&#x26;gt;

[ The Well is shown. Several women are standing nearby with large pots near
them. They are chatting. Three men approach. ]

Man #1: OK. Let&#x26;#39;s move it.

Man #2: You know, I heard of a guy called Moses who could move a stone like
this all by himself.

The Inventor&#x26;#39;s Voice from outside the frame: That&#x26;#39;s because he was using the
Mosesiom 3000!

Man #3: I beg your pardon?

[ The Inventor enters the frame with his invention that looks suspiciously
like a lever. ]

The Inventor: With this ingenious invention one man can move this stone
all by himself. Wanna try?

Man #1: OK. I&#x26;#39;ll try.

The Inventor: OK. First we tie the stone to the ropes here.

[ He ties the stone]

The Inventor: Now lift the other hand.

Man #1: [After lifting the stone.] Wow, it&#x26;#39;s so easy, look I can move the
stone here [moves it to the left], and here [ moves it to the right].

The Inventor: No! No! Don&#x26;#39;t misuse it.

[The stone falls down on the well, splits into two pieces which both fall down
the well. The men are amazed. ]

The Inventor: Don&#x26;#39;t worry, I can get down and tie the ropes to each stone and
we can lift it up in a flash...

Man #1: I&#x26;#39;ll get the ropes.

Man #2: I&#x26;#39;ll get the horses.

[ They leave the frame ]

The Inventor: This is not my day.

Woman #1: Who is John Galt?

&#x26;lt;/s&#x26;gt;

&#x26;lt;/s&#x26;gt;
&#x3C;/pre&#x3E;

&#x3C;hr /&#x3E;

&#x3C;p&#x3E;
Why is it important? Because it seems that with this pedantic and perfectionist
attitude, Hollywood has left its original rebellious and
&#x3C;a href=&#x22;http://en.wiktionary.org/wiki/insurgent&#x22;&#x3E;insurgent&#x3C;/a&#x3E; roots (the
film production companies were located around Los Angeles to avoid litigation
from Edison&#x27;s patent trolling machine; and Henry Ford voiced some anti-semitic
concerns about the Jewish dominance of Hollywood, which he claimed was
part of their conspiracy to take over the world), and became more strict.
How many good films did not take off because of badly formatted or malformed
screenplays?
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
This is why I now think that the format of
&#x3C;a href=&#x22;http://www.shlomifish.org/open-source/projects/XML-Grammar/Fiction/#demo-screenplay1&#x22;&#x3E;Screenplay-Text&#x3C;/a&#x3E; is
better simply because it is validated to conform with it and is easier to
write (being based on scripts for drama that I read, as well as some
Internet screenplays such as
&#x3C;a href=&#x22;http://www.shlomifish.org/humour/by-others/hitchhiker-guide-to-star-trek-tng.html&#x22;&#x3E;&#x22;The Hitchhiker&#x27;s Guide to Star Trek - The Next Generation&#x22;&#x3C;/a&#x3E;).
XML-Grammar-Screenplay still has many issues like the fact that its
error messages can be unhelpful, or that it is still lacking many features,
but these should be relatively easy to resolve (possibly by a refactoring,
or partial or complete rewrites).
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
As I note in the
&#x3C;a href=&#x22;http://www.shlomifish.org/philosophy/philosophy/putting-all-cards-on-the-table-2013/#david_and_goliath&#x22;&#x3E;&#x22;David and Goliath&#x22; section&#x3C;/a&#x3E; of my
&#x3C;a href=&#x22;http://www.shlomifish.org/philosophy/philosophy/putting-all-cards-on-the-table-2013/&#x22;&#x3E;&#x22;Putting all the Cards on the Table (2013)&#x22; essay&#x3C;/a&#x3E;,
a hacker knows the rules, plays by them, but is not afraid to bend them, or
make up his own rules and that is what
&#x3C;a href=&#x22;http://unarmed.shlomifish.org/2396.html&#x22;&#x3E;action heroes&#x3C;/a&#x3E; is all
about. So now I&#x27;m trying to promote Screenplay-Text and Screenplay-XML
as hackier alternatives to the traditional screenplays of Hollywood which
became more &#x22;professional&#x22; and &#x22;tragic hero&#x22;-like.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Naturally, &#x22;reality, to be conquered, must be obeyed&#x22;, and I think we can use
a manual conversion to the more traditional Hollywood screenplays at first
as a way to challenge the status quo.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I can be reached as &#x3C;tt&#x3E;rindolf&#x3C;/tt&#x3E; on &#x3C;a href=&#x22;http://freenode.net/&#x22;&#x3E;the
Freenode IRC network&#x3C;/a&#x3E; in a private message or in several channels (
see &#x3C;tt&#x3E;/whois rindolf rindolf&#x3C;/tt&#x3E;) to further discuss the vision for
Screenplay-Text and Screenplay-XML. But I think it is a noble goal, which
I would like to pursue.
&#x3C;/p&#x3E;


        
    " xmlbase="http://blogs.perl.org/users/shlomi_fish/"/>
<dcterms:modified>2013-03-24T04:47:02Z</dcterms:modified>
</item>
<item>
<title>ANN: My Transition From Software Developer to Writer/Entertainer/Amateur Philosopher/Internet Celebrity</title>
<link>http://blogs.perl.org/users/shlomi_fish/2013/03/ann-my-transition-from-software-developer-to-writerentertaineramateur-philosopherinternet-celebrity.html</link>
<description> I&#x27;d like to make an announcement: after some serious thought, I decided that from now on, being a software developer (which I am not too bad at) will only be the means (but the absolutely necessary ones) to me...</description>
<author>Shlomi Fish</author>
<category>cpan</category>
<category>hacking</category>
<category>humor</category>
<category>humour</category>
<category>perl</category>
<category>philosophy</category>
<guid isPermaLink="true">http://blogs.perl.org/users/shlomi_fish/2013/03/ann-my-transition-from-software-developer-to-writerentertaineramateur-philosopherinternet-celebrity.html</guid>
<pubDate>Sat, 09 Mar 2013 15:34:16 -0000</pubDate>
<content:encoded content="
        
&#x3C;p&#x3E;
I&#x27;d like to make an announcement: after some serious thought, I decided that
from now on, being a software developer (which I am not too bad at) will only
be the means (but the absolutely necessary ones) to me being a writer /
entertainer / philosopher / Internet celebrity (a little bit of all those
and then some) whose main pride and passion is
&#x3C;a href=&#x22;http://www.shlomifish.org/&#x22;&#x3E;his personal web site&#x3C;/a&#x3E;, which is full
of a lot of material, and various pages and material is constantly added to it.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Note: I am not going to &#x22;quit&#x22; from the Perl world or am going to
stop programming completely. In fact, programming in HTML, XHTML, CSS, XSLT,
Website Meta Language, Perl 5, Bash, Vim/gvim, and many other general
purpose and/or domain-specific languages, is
absolutely necessary for what I do on a daily basis. Furthermore, I have
little
patience for
laymen who do not wish to learn HTML, and just require more and more of our
(= my peers and mine&#x27;s) time to be wasted in a typical
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Parable_of_the_broken_window&#x22;&#x3E;&#x22;Parable
of the broken window&#x22;&#x3C;/a&#x3E; fashion. I think even most of our sisters,
mothers (and yes, I&#x27;m being facetiously sexist on purpose, because a lot of
the most clueless people we can think of are male), etc. can learn some basic
programming skills and even be good at that with the right attitude. When put
in a corner, they will be forced to learn it. and that programming is becoming
more and more essential for everyone to know. Furthermore, clients who wish to
remain ignorant (and often hostile) forever should be avoided, with a clear
honest and sincere explanation telling them why and how to improve.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Anyway, as is evident from
&#x3C;a href=&#x22;http://www.shlomifish.org/humour/TheEnemy/&#x22;&#x3E;my first story&#x3C;/a&#x3E;,
I have already made a gradual transition from being a mathematician and
a mathematical logician, to being a software developer and web developer,
so now it&#x27;s another transition. It took me a lot of time to hone my skills
as a writer of stories, screenplays, aphorisms, Chuck Norris/etc. factoids,
etc. etc. so it&#x27;s now much easier for me. It took me over a year to write
my first story, but now I can whip up text fairly quickly, and find it
enjoyable. Moreover, I now also have not one - but two ideas for new
stories - both of which I have not started writing.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
One implication is that I decided to &#x3C;b&#x3E;transfer the maintenance&#x3C;/b&#x3E; of
&#x3C;a href=&#x22;https://metacpan.org/release/XML-LibXML&#x22;&#x3E;XML::LibXML&#x3C;/a&#x3E; to someone
else, because while I believe I proved myself of utility in maintaing
it, I find it hard to keep with its ongoing maintenance. One can easily
fork
&#x3C;a href=&#x22;https://bitbucket.org/shlomif/perl-xml-libxml&#x22;&#x3E;its bitbucket
repository&#x3C;/a&#x3E;, or given enough motivation, one can set up a similar one
on GitHub or wherever (I recall receiving several patches with &#x22;--git&#x22; there)
so if you have the skills, time, and motivation - just do it, and I&#x27;ll just
upload the archives on your behalf (and eventually ask for giving you COMAINT).
I have mentioned some ideas about what I have in mind for XML-LibXML elsewhere
and you can always ask me on IM or IRC.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;&#x22;Putting all the cards on the table - 2013&#x22;&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
I have started to write &#x3C;a href=&#x22;http://unarmed.shlomifish.org/2109.html&#x22;&#x3E;an
essay&#x3C;/a&#x3E; on my &#x22;Unarmed but still Dangerous&#x22; blog titled &#x22;Putting all the
Cards on the Table&#x22; - I start from the Technion, M.I.T., the film
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Silver_Linings_Playbook&#x22;&#x3E;&#x3C;i&#x3E;Silver
Linings Playbook&#x3C;/i&#x3E;&#x3C;/a&#x3E;
and &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Jennifer_Lawrence&#x22;&#x3E;its lead
actress - Ms. Jennifer Lawrence&#x3C;/a&#x3E; (&#x2665;!) and goes on to discuss lots of other
stuff including David vs. Goliath, computer networking, the second major
battle that Chuck Norris lost, and to why we should initiate action (any
action) instead of letting things go from bad to worse on their own, and
there is much more to come. Hopefully, it will be amateur philosophy (
where amateur is someone who: 1) Loves what he does. 2) Is not professional.
3) Does not play by the same rules as professionals. - i.e: what we often
call today as &#x22;hackers&#x22;) at the best I can do.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
My main issue is that I felt the truly amateuristic intellectuals like me
have been speaking too much in riddles, and that even I have been lying
to myself and hiding many things from other people, and I want to offload
everything I know as of March, 2013 (and it may be very different 10 years
from now or even a year from now). And I want to do it in a truly honest,
sincere, and putting all the cards I have now on the table fashion. There is
a lot of humour in the essay, and a lot of personal analogies and references,
some sex talk, (even sexism) and personal reflections (and my typical
self-promotion), but it&#x27;s still serious, honest, and sincere, and
hopefully enjoyable.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Please comment on it on the blog, where you should be able to register using
any OpenID provider, but anonymous comments, that are not spam, and where you
give a link to identify yourself can also be done (just &#x3C;b&#x3E;please&#x3C;/b&#x3E; preview
the comment before sending it). I am planning on working on further publicity.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;How to Achieve World Domination&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
A lot of people think that the proper way to achieve world domination is
to create an
&#x3C;a href=&#x22;http://www.joelonsoftware.com/articles/fog0000000018.html&#x22;&#x3E;architecture
that will solve the whole world&#x27;s problems and then some&#x3C;/a&#x3E;. We&#x27;ve been seeing
quite a few of them since &#x3C;i&#x3E;Joel on Software&#x3C;/i&#x3E; wrote this article: Ruby,
Google Go, Node.js, Mozilla&#x27;s Rust, Clojure, Scala, Perl 6, etc. Some of them
have or will mature to something truly nice, or have inspired a lot of
features in other languages, but it&#x27;s hard for
plain-old-single-you to compete with them, and here is something interesting:
not too many people want them.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
What do people want? Chuck Norris/etc. factoids, lolcats and other captioned
images, funny cat videos, parodies of
&#x3C;i&#x3E;My Little Pony: Friendship is Magic&#x3C;/i&#x3E; (&#x2665;), photos of attractive (or even
not too attractive) men and women, screencasts of games or other programs
(including many open source programs), photos of scenery, new and improved
recipes for preparing food (and of course - tasty food itself), new, old or
renovated jokes, and some interesting tales and anecdotes from your life. And
naturally - programs that can will scratch an itch - however small.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Some people told me that my solver for Freecell and other solitaire games,
simply called
&#x3C;a href=&#x22;http://fc-solve.shlomifish.org/&#x22;&#x3E;Freecell Solver&#x3C;/a&#x3E; is useless, but
it&#x27;s not - it&#x27;s just a niche program. And I received hundreds of E-mails
about it. Furthermore, given that Freecell is (or used to be) a big phenomenon
in Israel, where many boys and girls starting from 18 found themselves
playing it
on the &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Israel_Defense_Forces&#x22;&#x3E;Israeli
military&#x3C;/a&#x3E; computers out of boredom, then the fact that I have written a
solver for it,
has impressed many people I talked with or met, including some attractive
(both physically and intellectually) young ladies (or what people may
refer to as &#x22;hot chicks&#x22;), and they ended up asking me about how it was
written, and which algorithms it employed.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
So Freecell Solver was one of my most successful programs, not despite being
a niche program, but because of it. Niche programs own. Not only that,
but niche everything is great. Many people whom I referred to
&#x3C;a href=&#x22;http://www.shlomifish.org/humour/stories/&#x22;&#x3E;my stories&#x3C;/a&#x3E; helped
themselves to the screenplay
&#x3C;a href=&#x22;http://www.shlomifish.org/humour/Star-Trek/We-the-Living-Dead/&#x22;&#x3E;Star Trek:
&#x22;We, the Living Dead&#x22;&#x3C;/a&#x3E; &#x3C;b&#x3E;because&#x3C;/b&#x3E; it contained Star Trek in the name,
and because there are quite a few fans of the &#x3C;i&#x3E;Star Trek&#x3C;/i&#x3E; franchise and
worlds.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The more of a niche artwork you write, the more a large subset of those
who like it, are likely to pay attention to it, try it out, and enjoy it.
For more information, see
Eric Sink&#x27;s excellent and inspiring essay
&#x3C;a href=&#x22;http://www.ericsink.com/articles/Buzz.html&#x22;&#x3E;&#x22;How to get
people talking about your product&#x22;&#x3C;/a&#x3E;.
For example,
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/DuckDuckGo&#x22;&#x3E;DuckDuckGo&#x3C;/a&#x3E; was originally
marketed as a search engine by Perl geeks, and for Perl geeks, and it was
a good marketing decision because the Perl community is small, cohesive and
is at a good strategical position to influence other communities. Now, many
people who are not Perl programmers, are using it, as well as, or even in
preference to Google, but choosing Perl was a good strategical decision.
We can expect that with the future growth of DuckDuckGo, that it will
use more performant technologies than Perl more and more, but it will still
owe some of its initial success to be a Perl product.
&#x3C;/p&#x3E;


        
    " xmlbase="http://blogs.perl.org/users/shlomi_fish/"/>
<dcterms:modified>2013-03-09T15:35:21Z</dcterms:modified>
</item>
<item>
<title>Essay: &#x22;Just write the God-damn tests, motherfucker!&#x22;</title>
<link>http://blogs.perl.org/users/shlomi_fish/2013/02/essay-just-write-the-god-damn-tests-motherfucker.html</link>
<description> (I originally wrote this in a post to qa@perl.org, and I apologise for the profanity in the title, but I felt it is needed in this case.) So why am I writing this? I used to feel guilty about...</description>
<author>Shlomi Fish</author>
<category>essay</category>
<category>philosophy</category>
<category>tdd</category>
<category>tests</category>
<guid isPermaLink="true">http://blogs.perl.org/users/shlomi_fish/2013/02/essay-just-write-the-god-damn-tests-motherfucker.html</guid>
<pubDate>Sun, 03 Feb 2013 18:02:18 -0000</pubDate>
<content:encoded content="
        
&#x3C;p&#x3E;
(I originally wrote this in
&#x3C;a href=&#x22;http://www.nntp.perl.org/group/perl.qa/2013/01/msg13350.html&#x22;&#x3E;a post to qa@perl.org&#x3C;/a&#x3E;, and I apologise for the profanity in the title, but I felt
it is needed in this case.)
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
So why am I writing this? I used to feel guilty about not being conscious of
the distinction between the various scopes of tests, like unit tests vs.
integration tests vs. system tests vs. functional tests etc. when I wrote the
tests. I just noticed that I need a test here (as a regression test for a bug,
or to &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Test-driven_development&#x22;&#x3E;TDD&#x3C;/a&#x3E; (=
test-driven develop a new feature, or after implementing a new feature,
etc.), and wrote it using Test::More or whatever. However, now I feel that
trying to philosophise about the distinction between all those is not so
useful for the people who are actually trying to write the tests.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x3C;q&#x3E;Tests are good, mmkay? Just freaking write them!&#x3C;/q&#x3E;
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
chromatic has expressed &#x3C;a href=&#x22;http://modernperlbooks.com/mt/2012/04/what-testing-dsls-get-wrong.html&#x22;&#x3E;some sentiments&#x3C;/a&#x3E; against the so-called &#x22;Behaviour
Driven Development&#x22; (BDD) Domain-specific-languages (DSLs) such as cucumber.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
One thing that he notes in a comment there is:
&#x3C;/p&#x3E;

&#x3C;blockquote&#x3E;

&#x3C;p&#x3E;
Our clients are the parents, guardians, and teachers of children between the
ages of eight and twelve inclusive.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The intent of Cucumber is to make readable testcases, just as the intent of
COBOL and AppleScript and visual component programming is to enable
non-programmers to create software without having to learn how to program.
&#x3C;/p&#x3E;

&#x3C;/blockquote&#x3E;

&#x3C;p&#x3E;
It is impossible to have people who are non-programmers write
structure code without learning how to program, at least until we get
sufficiently intelligent Sci-Fi-like artificial intelligence (not the current
crop of artificial ultra-stupidities) that will be able to perform
programming like humans do, and will be willing to do so, while not having
free will and still be obedient to us, and that will perform adequately. I
feel that you need to write &#x3C;b&#x3E;some&#x3C;/b&#x3E; kind of code, however formatted, to
write tests, just like HTML and CSS and spreadsheet programs, involve writing
some kind of *code*.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
If you want to have your clients write tests, my best suggestion is to either
instruct them in the proper methodology and discipline of coding, or
alternatively have them show you how to reproduce the problem (using
screenshots, screencasts, shared remote desktop sessions, etc.) and then
&#x3C;b&#x3E;you&#x3C;/b&#x3E; should write a test for it.

&#x3C;p&#x3E;
Some people fear that teaching laymen how to code will create
competition for professional programmers, and dilute the profession. However,
this is not true, because there&#x27;s always a difference between a casual dealer
in a craftsmanship or art, and someone who invested a substantial amount of
time doing it. E.g: lots of people can cook well, but not everyone is a
professional Chef, and Chefs still often teach other people cooking, or share
their recipes, because that does not dilute their profession.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
So I think the distinction between the various tests may be useful for
methodologists and software engineering researchers (people who try to guide
other people how to code) more than the people who are actually coding. To quote
Picasso: &#x22;When art critics get together they talk about Form and Structure and
Meaning. When artists get together they talk about where you can buy cheap
turpentine.&#x22;
( taken from &#x3C;a href=&#x22;http://orip.org/&#x22;&#x3E;Ori Peleg&#x27;s blog&#x3C;/a&#x3E; ).
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Similarly, literature critics and researchers have very little to say that is
of use for most writers and even authors. I hated studying Literature (what
Americans might call &#x22;English&#x22; although naturally in Israel, we study Hebrew
texts) with a passion, and didn&#x27;t do too well on the tests (in part because
out of personal honesty, I refused to write a lot of extraneous text, which
the teacher seemed to have preferred), only to become a writer of
&#x3C;a href=&#x22;http://www.shlomifish.org/humour/&#x22;&#x3E;fiction&#x3C;/a&#x3E; and
&#x3C;a href=&#x22;http://www.shlomifish.org/philosophy/&#x22;&#x3E;essays&#x3C;/a&#x3E; (see
&#x3C;a href=&#x22;http://www.paulgraham.com/essay.html&#x22;&#x3E;Paul
Graham&#x27;s &#x22;The Age of the Essay&#x22;&#x3C;/a&#x3E; for why they are not only about
literature) after graduation. Furthermore, most people I
talked with seem to have liked and appreciate the textual works I have
written (although I admit they are certainly not letter perfect), and I
could usually find some value in the criticisms of people who did not, even
if expressed very destructively, and often was able to improve my works
accordingly.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Similarly, I&#x27;m now struggling with &#x3C;a href=&#x22;http://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054&#x22;&#x3E;this tome&#x3C;/a&#x3E;
which seems like I cannot see the forest for the trees from it, while I
really enjoyed reading the much shorter and much more hands-on
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Test-Driven_Development_by_Example&#x22;&#x3E;&#x3C;i&#x3E;Test Driven Development by Example&#x3C;/i&#x3E; (by Kent Back)&#x3C;/a&#x3E;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The time we talk about how to write tests is often better spent writing tests
(or production code, which is, naturally, what tests are aimed to support and
are meaningless without it), so I think we should just &#x22;freaking write them&#x22;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x3C;q&#x3E;Just write the god-damn test, motherfucker!&#x3C;/q&#x3E;
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
(
&#x3C;b&#x3E;Note:&#x3C;/b&#x3E; the title of this essay was inspired by
the &#x3C;a href=&#x22;http://programming-motherfucker.com/&#x22;&#x3E;&#x22;Programming,
Motherfucker&#x22;&#x3C;/a&#x3E; of Zed Shaw, which is very amusing, even if it seems
to be written in a somewhat ironic tone, and that contains the useful
&#x3C;a href=&#x22;http://programming-motherfucker.com/become.html&#x22;&#x3E;huge list of free
books for learning programming&#x3C;/a&#x3E;.
)
&#x3C;/p&#x3E;

&#x3C;h3 id=&#x22;license&#x22;&#x3E;Licence&#x3C;/h3&#x3E;

&#x3C;p&#x3E;
As opposed to most of my previous essays, this work is Copyright by Shlomi
Fish, 2013, under the
&#x3C;a rel=&#x22;license&#x22; href=&#x22;http://creativecommons.org/licenses/by-nc/3.0/&#x22;&#x3E;Creative
Commons Attribution-NonCommercial 3.0 Unported licence&#x3C;/a&#x3E;, with a
deliberate exemption for using the text on web pages with web commercials.
For more information, see
&#x3C;a href=&#x22;http://www.shlomifish.org/meta/copyrights/&#x22;&#x3E;my interpretation of
the licence&#x3C;/a&#x3E;.
If you wish to use it under any different licence, then
&#x3C;a href=&#x22;http://www.shlomifish.org/me/contact-me/&#x22;&#x3E;drop me a line&#x3C;/a&#x3E;.
&#x3C;/p&#x3E;


        
    " xmlbase="http://blogs.perl.org/users/shlomi_fish/"/>
<dcterms:modified>2013-02-03T18:03:13Z</dcterms:modified>
</item>
<item>
<title>Invitation for the Israeli Perl Workshop 2013 - 25 February 2013</title>
<link>http://shlomif-tech.livejournal.com/65955.html</link>
<description>&#x3C;h2&#x3E;Israeli Perl Workshop 2013 - 25 February 2013&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
(The Hebrew text will be followed by an English one).
&#x3C;/p&#x3E;

&#x3C;div align=&#x22;right&#x22; dir=&#x22;rtl&#x22;&#x3E;

&#x3C;p&#x3E;
&#x3C;a href=&#x22;http://act.perl.org.il/ilpw2013/&#x22; rel=&#x22;nofollow&#x22;&#x3E;&#x5E1;&#x5D3;&#x5E0;&#x5EA; &#x5D4;&#x5E4;&#x5E8;&#x5DC; &#x5D4;&#x5D9;&#x5E9;&#x5E8;&#x5D0;&#x5DC;&#x5D9;&#x5EA; &#x5DC;&#x5E9;&#x5E0;&#x5EA; 2013&#x3C;/a&#x3E; &#x5EA;&#x5EA;&#x5E7;&#x5D9;&#x5D9;&#x5DD;
&#x5D1;-25 &#x5D1;&#x5E4;&#x5D1;&#x5E8;&#x5D5;&#x5D0;&#x5E8;, 2013. &#x5D6;&#x5D4;&#x5D5; &#x5DB;&#x5E0;&#x5E1; &#x5D9;&#x5D5;&#x5DE;&#x5D9; &#x5E9;&#x5D9;&#x5EA;&#x5E7;&#x5D9;&#x5D9;&#x5DD;
&#x3C;a href=&#x22;http://act.perl.org.il/ilpw2013/location.html&#x22; rel=&#x22;nofollow&#x22;&#x3E;&#x5D1;&#x5DE;&#x5DB;&#x5DC;&#x5DC;&#x5EA; &#x5E9;&#x5E0;&#x5E7;&#x5E8; &#x5D1;&#x5E8;&#x5DE;&#x5EA;-&#x5D2;&#x5DF;&#x3C;/a&#x3E;.
&#x5DC;&#x5E2;&#x5D9;&#x5D5;&#x5E0;&#x5DB;&#x5DD; &#x5E0;&#x5EA;&#x5D5;&#x5E0;&#x5D4;
&#x3C;a href=&#x22;http://act.perl.org.il/ilpw2013/talks&#x22; rel=&#x22;nofollow&#x22;&#x3E;&#x5E8;&#x5E9;&#x5D9;&#x5DE;&#x5EA; &#x5D4;&#x5DE;&#x5E6;&#x5D2;&#x5D5;&#x5EA;&#x3C;/a&#x3E;
&#x5E9;&#x5EA;&#x5D9;&#x5E0;&#x5EA;&#x5E0;&#x5D4; &#x5D1;&#x5E1;&#x5D3;&#x5E0;&#x5D4;, &#x5D1;&#x5D4; &#x5D9;&#x5D4;&#x5D9;&#x5D5; &#x5E9;&#x5E0;&#x5D9; &#x5DE;&#x5E1;&#x5DC;&#x5D5;&#x5DC;&#x5D9;&#x5DD;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x5D4;&#x5E4;&#x5E2;&#x5DD; &#x5D9;&#x5D9;&#x5D3;&#x5E8;&#x5E9; &#x5EA;&#x5E9;&#x5DC;&#x5D5;&#x5DD; &#x5E2;&#x5D1;&#x5D5;&#x5E8; &#x5D4;&#x5DB;&#x5E0;&#x5E1;, &#x5DB;&#x5D3;&#x5D9; &#x5DC;&#x5DB;&#x5E1;&#x5D5;&#x5EA; &#x5D0;&#x5EA; &#x5D4;&#x5D4;&#x5D5;&#x5E6;&#x5D0;&#x5D5;&#x5EA;, &#x5D5;&#x5D9;&#x5E9; &#x5E6;&#x5D5;&#x5E8;&#x5DA; &#x5DC;&#x5D4;&#x5D9;&#x5E8;&#x5E9;&#x5DD; (&#x5D1;&#x5E7;&#x5D9;&#x5E9;&#x5D5;&#x5E8;), &#x5D0;&#x5D6; &#x5D4;&#x5E7;&#x5D3;&#x5D9;&#x5DE;&#x5D5; &#x5DC;&#x5D4;&#x5D9;&#x5E8;&#x5E9;&#x5DD; &#x5D4;&#x5D9;&#x5D5;&#x5DD;. &#x5D1;&#x5E0;&#x5D5;&#x5E1;&#x5E3;,
&#x5D0;&#x5DD; &#x5D0;&#x5EA;&#x5DD;, &#x5D0;&#x5D5; &#x5D7;&#x5D1;&#x5E8;&#x5D4; &#x5DE;&#x5E1;&#x5D7;&#x5E8;&#x5D9;&#x5EA; &#x5D0;&#x5D7;&#x5E8;&#x5EA; &#x5E9;&#x5D0;&#x5EA;&#x5DD; &#x5DE;&#x5DB;&#x5D9;&#x5E8;&#x5D9;&#x5DD; &#x5DE;&#x5E2;&#x5D5;&#x5E0;&#x5D9;&#x5D9;&#x5E0;&#x5D9;&#x5DD; &#x5DC;&#x5EA;&#x5EA; &#x5D7;&#x5E1;&#x5D5;&#x5EA; &#x5DC;&#x5E1;&#x5D3;&#x5E0;&#x5D4;, &#x5D0;&#x5E0;&#x5D0; &#x5E4;&#x5E0;&#x5D5; &#x5DC;&#x5DE;&#x5D0;&#x5E8;&#x5D2;&#x5E0;&#x5D9;&#x5D4;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x5D4;&#x5E4;&#x5E2;&#x5DD; &#x5E1;&#x5D9;&#x5DE;&#x5DF; &#x5D4;&#x5DB;&#x5E0;&#x5E1; &#x5D4;&#x5D5;&#x5D0; &#x22;&#x5E4;&#x5E8;&#x5DC; &#x5DE;&#x5E2;&#x5E9;&#x5D9;&#x5EA;&#x22; (Perl in Practice) &#x5D5;&#x5D0;&#x5E0;&#x5D5; &#x5DE;&#x5E7;&#x5D5;&#x5D5;&#x5D9;&#x5DD; &#x5E9;&#x5E8;&#x5D5;&#x5D1; &#x5D4;&#x5D4;&#x5E8;&#x5E6;&#x5D0;&#x5D5;&#x5EA; &#x5D1;&#x5DB;&#x5E0;&#x5E1; &#x5EA;&#x5D4;&#x5D9;&#x5D9;&#x5E0;&#x5D4; &#x5E2;&#x5DC;
&#x5D9;&#x5D9;&#x5E9;&#x5D5;&#x5DE;&#x5D9;&#x5DD; &#x5DE;&#x5E2;&#x5E9;&#x5D9;&#x5D9;&#x5DD; &#x5E9;&#x5E0;&#x5DB;&#x5EA;&#x5D1;&#x5D5; &#x5D0;&#x5D5; &#x5D9;&#x5DB;&#x5EA;&#x5D1;&#x5D5; &#x5D1;&#x5E9;&#x5E4;&#x5EA; &#x5E4;&#x5E8;&#x5DC;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x5E4;&#x5E8;&#x5DC; &#x5D4;&#x5D9;&#x5E0;&#x5D4; &#x5E9;&#x5E4;&#x5EA; &#x5EA;&#x5DB;&#x5E0;&#x5D5;&#x5EA; &#x5D3;&#x5D9;&#x5E0;&#x5DE;&#x5D9;&#x5EA; &#x5D5;&#x5D7;&#x5D6;&#x5E7;&#x5D4; &#x5E9;&#x5E0;&#x5DE;&#x5E6;&#x5D0;&#x5EA; &#x5EA;&#x5D7;&#x5EA; &#x5E4;&#x5D9;&#x5EA;&#x5D5;&#x5D7; &#x5E4;&#x5E2;&#x5D9;&#x5DC;, &#x5D5;&#x5E9;&#x5D9;&#x5E9; &#x5DC;&#x5D4; &#x5DE;&#x5D0;&#x5D2;&#x5E8; &#x5D4;&#x5E8;&#x5D7;&#x5D1;&#x5D5;&#x5EA; &#x5E4;&#x5E2;&#x5D9;&#x5DC; &#x5D5;&#x5E4;&#x5D5;&#x5E8;&#x5D4; &#x5D1;&#x5E9;&#x5DD;
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/CPAN&#x22; rel=&#x22;nofollow&#x22;&#x3E;CPAN (Comprehensive Perl Archive Network)&#x3C;/a&#x3E;.
&#x3C;a href=&#x22;http://perl.org.il/&#x22; rel=&#x22;nofollow&#x22;&#x3E;&#x5D3;&#x5E3; &#x5D4;&#x5D1;&#x5D9;&#x5EA; &#x5E9;&#x5DC; &#x5E9;&#x5D5;&#x5D7;&#x5E8;&#x5D9; &#x5D4;&#x5E4;&#x5E8;&#x5DC; &#x5D4;&#x5D9;&#x5E9;&#x5E8;&#x5D0;&#x5DC;&#x5D9;&#x5D9;&#x5DD;&#x3C;/a&#x3E;
 &#x5DE;&#x5DB;&#x5D9;&#x5DC; &#x5DE;&#x5D9;&#x5D3;&#x5E2; &#x5E0;&#x5D5;&#x5E1;&#x5E3; &#x5D5;&#x5E7;&#x5D9;&#x5E9;&#x5D5;&#x5E8;&#x5D9;&#x5DD; &#x5E0;&#x5D5;&#x5E1;&#x5E4;&#x5D9;&#x5DD; &#x5DC;&#x5D2;&#x5D1;&#x5D9; &#x5D4;&#x5E4;&#x5E2;&#x5D9;&#x5DC;&#x5D5;&#x5EA; &#x5E9;&#x5DC; &#x5D7;&#x5D5;&#x5D1;&#x5D1;&#x5D9; &#x5D4;&#x5E9;&#x5E4;&#x5D4; &#x5D1;&#x5D9;&#x5E9;&#x5E8;&#x5D0;&#x5DC;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x5D4;&#x5E4;&#x5E2;&#x5DD; &#x5D9;&#x5EA;&#x5D0;&#x5E8;&#x5D7;&#x5D5; &#x5D1;&#x5E1;&#x5D3;&#x5E0;&#x5D4; &#x5DE;&#x5E1;&#x5E4;&#x5E8; &#x5D0;&#x5D5;&#x5E8;&#x5D7;&#x5D9;&#x5DD; &#x5DE;&#x5D7;&#x5D5;&#x22;&#x5DC; &#x5D5;&#x5D1;&#x5D9;&#x5E0;&#x5D9;&#x5D4;&#x5DD; &#x3C;a href=&#x22;http://he.wikipedia.org/wiki/%D7%9C%D7%90%D7%A8%D7%99_%D7%95%D7%95%D7%9C&#x22; rel=&#x22;nofollow&#x22;&#x3E;&#x5DC;&#x5D0;&#x5E8;&#x5D9; &#x5D5;&#x5D5;&#x5DC;&#x3C;/a&#x3E;, 
&#x5D4;&#x5D9;&#x5D3;&#x5D5;&#x5E2; &#x5DB;&#x5D9;&#x5D5;&#x5E6;&#x5E8; &#x5E9;&#x5E4;&#x5EA; &#x5E4;&#x5E8;&#x5DC; (&#x5D5;&#x5DE;&#x5E1;&#x5E4;&#x5E8; &#x5DE;&#x5D9;&#x5D6;&#x5DE;&#x5D9;&#x5DD; &#x5D7;&#x5E9;&#x5D5;&#x5D1;&#x5D9;&#x5DD; &#x5DE;&#x5D5;&#x5E7;&#x5D3;&#x5DE;&#x5D9;&#x5DD; &#x5D5;&#x5D1;&#x5D9;&#x5E0;&#x5D9;&#x5D4;&#x5DD; &#x5D4;&#x5D2;&#x5E8;&#x5E1;&#x5D4; &#x5D4;&#x5E8;&#x5D0;&#x5E9;&#x5D5;&#x5E0;&#x5D4; &#x5E9;&#x5DC; &#x5EA;&#x5D5;&#x5DB;&#x5E0;&#x5EA; &#x5D4;&#x5D4;&#x5D8;&#x5DC;&#x5D0;&#x5D4; 
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Patch_%28Unix%29&#x22; rel=&#x22;nofollow&#x22;&#x3E;patch&#x3C;/a&#x3E;) 
&#x5E9;&#x5D2;&#x5DD; &#x5D9;&#x5E6;&#x5D9;&#x5D2; &#x5D1;&#x5DB;&#x5E0;&#x5E1;; &#x5D0;&#x5DC;&#x5D9;&#x5D5; &#x5EA;&#x5EA;&#x5DC;&#x5D5;&#x5D5;&#x5D4; &#x5E8;&#x5E2;&#x5D9;&#x5D9;&#x5EA;&#x5D5; &#x5D2;&#x5DC;&#x5D5;&#x5E8;&#x5D9;&#x5D4;. &#x5D1;&#x5D4;&#x5DE;&#x5E9;&#x5DA; &#x5E0;&#x5E2;&#x5D3;&#x5DB;&#x5DF; &#x5D0;&#x5EA; &#x5E9;&#x5DE;&#x5D5;&#x5EA;&#x5D9;&#x5D4;&#x5DD; &#x5E9;&#x5DC; &#x5D4;&#x5D0;&#x5D5;&#x5E8;&#x5D7;&#x5D9;&#x5DD; &#x5D4;&#x5E0;&#x5D5;&#x5E1;&#x5E4;&#x5D9;&#x5DD;.
&#x3C;/p&#x3E;

&#x3C;/div&#x3E;

&#x3C;h3&#x3E;English Version&#x3C;/h3&#x3E;

&#x3C;p&#x3E;
The &#x3C;a href=&#x22;http://act.perl.org.il/ilpw2013/&#x22; rel=&#x22;nofollow&#x22;&#x3E;Israeli Perl Workshop of 2013&#x3C;/a&#x3E; will take
place on 25 February, 2013. It will be a daily conference which will
take place &#x3C;a href=&#x22;http://act.perl.org.il/ilpw2013/location.html&#x22; rel=&#x22;nofollow&#x22;&#x3E;in Shenkar College in
Ramat Gan&#x3C;/a&#x3E;. One can view the &#x3C;a href=&#x22;http://act.perl.org.il/ilpw2013/talks&#x22; rel=&#x22;nofollow&#x22;&#x3E;list of
talks&#x3C;/a&#x3E; that will be given in the conference, where there are going to be two tracks.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x200E;This time the conference will cost some money in order to cover the costs and, so there
is a need to register (just follow the link). Therefore, please register as soon as possible. In addition, if
you, or a different company that you know, are willing to sponsor the workshop, please
contact the organisers.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Perl is a dynamic and powerful programming language which is under active development,
and which has an active and comprehensive extension repository called
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/CPAN&#x22; rel=&#x22;nofollow&#x22;&#x3E;CPAN (Comprehensive Perl Archive Network)&#x3C;/a&#x3E;.
&#x3C;a href=&#x22;http://perl.org.il/&#x22; rel=&#x22;nofollow&#x22;&#x3E;The home page of the Israeli Perl Mongers&#x3C;/a&#x3E;
contains other information and more links about the activity of Perl&#x27;s Israeli enthusiasts.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
This year&#x27;s conference will sport some guests from abroad, including
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Larry_Wall&#x22; rel=&#x22;nofollow&#x22;&#x3E;Larry Wall&#x3C;/a&#x3E;, who is known as
the creator of the Perl programming language (and some earlier software projects such
as the original &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Patch_%28Unix%29&#x22; rel=&#x22;nofollow&#x22;&#x3E;patch
program for UNIX&#x3C;/a&#x3E;), and who will give a
talk at the conference; he will be accompanied by his wife, Gloria. We will publish
the names of the other guest speakers as we learn about them.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Everyone is welcome to attend.
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>events</category>
<category>perl</category>
<category>israeli</category>
<category>foss</category>
<comments>http://shlomif-tech.livejournal.com/65955.html</comments>
<guid isPermaLink="true">http://shlomif-tech.livejournal.com/65955.html</guid>
<pubDate>Thu, 24 Jan 2013 18:47:03 GMT</pubDate>
</item>
<item>
<title>Count-up to 100 CPAN Distributions: Quality *as well as* Quantity</title>
<link>http://blogs.perl.org/users/shlomi_fish/2013/01/count-up-to-100-cpan-distributions-quality-as-well-as-quantity.html</link>
<description> Going over the previous count-ups to 100 CPAN distributions in this blog, I feel I have been carried away: I tried to release a lot of new distributions to the CPAN, while neglecting all the existing distributions I have,...</description>
<author>Shlomi Fish</author>
<category>100</category>
<category>cpan</category>
<category>hacktivity</category>
<category>hacktivity log</category>
<category>perl</category>
<category>sdlx</category>
<category>xml</category>
<guid isPermaLink="true">http://blogs.perl.org/users/shlomi_fish/2013/01/count-up-to-100-cpan-distributions-quality-as-well-as-quantity.html</guid>
<pubDate>Mon, 07 Jan 2013 20:53:26 -0000</pubDate>
<content:encoded content="
        
&#x3C;p&#x3E;
Going over the previous count-ups to 100 CPAN distributions in this
blog, I feel I have been carried away: I tried to release a lot
of new distributions to the CPAN, while neglecting all the existing
distributions I have, and not tending to their pending problems and their
lack of &#x3C;b&#x3E;software quality&#x3C;/b&#x3E; in several aspects (See
&#x3C;a href=&#x22;http://www.shlomifish.org/philosophy/computers/high-quality-software/rev2/&#x22;&#x3E;an
older essay I have written about it&#x3C;/a&#x3E;).
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I was reminded of it when
working on a few new or existing distributions using
&#x3C;a href=&#x22;http://dzil.org/&#x22;&#x3E;Dist-Zilla&#x3C;/a&#x3E;. I ran into a few places where some
of its plugins or features were underdocumented, and non-exemplified (in
the SYNOPSIS sections or wherever), which consumed many hours of my time,
sometimes made me need to read or grep the code, and made me frustrated. While
I sent the maintainers some pull requests for better documenting this (and
some of them were applied), I would have prefered for them to be
properly documented and exemplified in the first place.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
While I believe most of my CPAN distributions are in better condition, there
are some aspects that are lacking, and I would like to fix them: more examples
outside the SYNOPSES, and better SYNOPSES; documenting all methods of the
super classes as well as the classes themselves for
&#x3C;a href=&#x22;http://metacpan.org/release/XML-LibXML&#x22;&#x3E;XML-LibXML&#x3C;/a&#x3E;; adding
support for DTD introspection and the oft requested
&#x3C;a href=&#x22;http://code.activestate.com/lists/perl-xml/8953/&#x22;&#x3E;DOM elements
annotations&#x3C;/a&#x3E; for it; more
&#x3C;a href=&#x22;http://cpants.cpanauthors.org/kwalitee.html&#x22;&#x3E;kwalitee&#x3C;/a&#x3E;; etc. and
naturally also better publicity and advertising
(&#x3C;a href=&#x22;http://freecode.com/&#x22;&#x3E;Freecode.com&#x3C;/a&#x3E; (formerly known
as Freshmeat.net), Reddit, blogs.perl.org, video screencasts, etc.) because
people should see how cool your code is. I&#x27;m
not sure if any of these things would be as blog worthy as new
CPAN distributions, but it will make CPAN a bit better.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
(Now that I think of it, perhaps a CPAN janitors initiative, which will
submit pull requests and patches for existing distributions to improve
their quality will be a good idea.)
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Anyway, I am going to split this report into sections:
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;XML-GrammarBase&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
After some work (and misunderstanding of some of the Moo / MooX
documentation, which resulted in some pull requests), I released
&#x3C;a href=&#x22;http://www.shlomifish.org/open-source/projects/XML-Grammar/Base/&#x22;&#x3E;XML-GrammarBase&#x3C;/a&#x3E;
which aims provides roles and base classes for easily writing wrappers around
XML schema formats and XML translation languages. So far only RELAXNG and
XSLT are supported. Here is the synopsis from the docs:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
package XML::Grammar::MyGrammar::ToOtherStuff;

use MooX &#x27;late&#x27;;

use XML::GrammarBase::Role::RelaxNG;
use XML::GrammarBase::Role::XSLT;

with (&#x27;XML::GrammarBase::Role::RelaxNG&#x27;);
with XSLT(output_format =&#x26;gt; &#x27;html&#x27;);
with XSLT(output_format =&#x26;gt; &#x27;docbook&#x27;);

has &#x27;+module_base&#x27; =&#x26;gt; (default =&#x26;gt; &#x27;XML-Grammar-MyGrammar&#x27;);
has &#x27;+rng_schema_basename&#x27; =&#x26;gt; (default =&#x26;gt; &#x27;my-grammar.rng&#x27;);

has &#x27;+to_html_xslt_transform_basename&#x27; =&#x26;gt; (default =&#x26;gt; &#x27;mygrammar-xml-to-html.xslt&#x27;);
has &#x27;+to_docbook_xslt_transform_basename&#x27; =&#x26;gt; (default =&#x26;gt; &#x27;mygrammar-xml-to-docbook.xslt&#x27;);

package main;

my $xslt = XML::Grammar::MyGrammar::ToOtherStuff-&#x26;gt;new(
    data_dir =&#x26;gt; &#x22;/path/to/data-dir&#x22;,
);

# Throws an exception on failure.
my $as_html = $xslt-&#x26;gt;perform_xslt_translation(
    {
        output_format =&#x26;gt; &#x27;html&#x27;
        source =&#x26;gt; {file =&#x26;gt; $input_filename, },
        output =&#x26;gt; &#x22;string&#x22;,
    }
);
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
perform_xslt_translation supports  myriad options and formats, and you
get it all for free.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I&#x27;ve also been contemplating something like
&#x3C;code&#x3E;App::XML::GrammarBase&#x3C;/code&#x3E;
or &#x3C;code&#x3E;XML::GrammarBase::App&#x3C;/code&#x3E; that will allow for easy registry
of such formats from the command line and for processing them.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
At first, I believed that Moo was &#x22;almost-completely-unlike-Moose&#x22;, but
&#xAB;use MooX &#x27;late&#x27;;&#xBB; makes it much more Moose-like and I enjoy it, and it is
now recommended over Any::Moose or maybe even plain Mouse. Mouse is very
fast as well and has a far smaller startup time than Moose, but it does not
interoperate very well with pure-Moose classes, which Moo does
well.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;HTML-Widgets-NavMenu-ToJSON&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
As I was working on &#x3C;a href=&#x22;http://www.shlomifish.org/&#x22;&#x3E;my homepage&#x3C;/a&#x3E;, I
noticed that after I placed all the sub-navigation menus inside the main
navigation menu, it increased the size of the navigation menu considerably,
having it consume over 40,000 bytes. I decided to put only a subset of it
as HTML, and load and populate the rest using an AJAX call to a common
and static .json file. So I needed a way to convert the input of
&#x3C;a href=&#x22;https://metacpan.org/release/HTML-Widgets-NavMenu&#x22;&#x3E;HTML-Widgets-NavMenu&#x3C;/a&#x3E;
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
So enter
&#x3C;a href=&#x22;https://metacpan.org/module/HTML::Widgets::NavMenu::ToJSON&#x22;&#x3E;HTML::Widgets::NavMenu::ToJSON&#x3C;/a&#x3E;,
which serialises a navigation menu structure as JSON. I also implemented a
persistence layer for it, currently with only one backend - a YAML file,
so the IDs which jqTree require would be, well, persisted. This is a bit of
an &#x3C;a href=&#x22;http://www.joelonsoftware.com/articles/fog0000000018.html&#x22;&#x3E;architecture
astronautics&#x3C;/a&#x3E;, but I ended up with something concrete at the end so it&#x27;s
under control.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Here is the synopsis:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
use HTML::Widgets::NavMenu::ToJSON;
use HTML::Widgets::NavMenu::ToJSON::Data_Persistence::YAML;

my $persistence =
    HTML::Widgets::NavMenu::ToJSON::Data_Persistence::YAML-&#x26;gt;new(
        {
            filename =&#x26;gt; &#x26;#39;/path/to/persistence_data.yaml&#x26;#39;,
        }
    );

my $obj = HTML::Widgets::NavMenu::ToJSON-&#x26;gt;new(
    {
        data_persistence_store =&#x26;gt; $persistence,
        # The one given as input to HTML::Widgets::NavMenu
        tree_contents =&#x26;gt; $tree_contents,
    }
);

use IO::All;

io-&#x26;gt;file(&#x26;#39;output.json&#x26;#39;)-&#x26;gt;println(
    $obj-&#x26;gt;output_as_json(
        {
            %args
        }
    )
);
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
It could be made a bit simpler using an abstraction, but I feel it&#x27;s not
too bad. You can write custom
&#x3C;a href=&#x22;http://metacpan.org/module/HTML::Widgets::NavMenu::ToJSON::Data_Persistence&#x22;&#x3E;HTML::Widgets::NavMenu::ToJSON::Data_Persistence&#x3C;/a&#x3E;
child classes by implementing the &#x3C;code&#x3E;load()&#x3C;/code&#x3E;
and &#x3C;code&#x3E;save()&#x3C;/code&#x3E; methods - I did not document the process yet,
but you can base your efforts on
&#x3C;a href=&#x22;http://metacpan.org/module/HTML::Widgets::NavMenu::ToJSON::Data_Persistence::YAML&#x22;&#x3E;HTML::Widgets::NavMenu::ToJSON::Data_Persistence::YAML&#x3C;/a&#x3E;.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;Dist-Zilla-Plugin-TestRun&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
Since I&#x27;m used to running &#x3C;kbd&#x3E;./Build runtest&#x3C;/kbd&#x3E; instead of
&#x3C;kbd&#x3E;./Build test&#x3C;/kbd&#x3E; for my distributions, I sought a way of doing the
same using Dist-Zilla. It turned out there wasn&#x27;t an easy way, and
&#x3C;a href=&#x22;http://metacpan.org/release/Dist-Zilla-Plugin-TestRun&#x22;&#x3E;Dist-Zilla-Plugin-TestRun&#x3C;/a&#x3E;
is the best I could do. I hope to write a patch to make the &#x3C;kbd&#x3E;test&#x3C;/kbd&#x3E;
command more configurable.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;Test-XML-Ordered&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
&#x3C;a href=&#x22;http://metacpan.org/module/Test::XML::Ordered&#x22;&#x3E;Test::XML::Ordered&#x3C;/a&#x3E;
makes a non-&#x22;semantic&#x22; diff of XML files and tells you if they are
equivalent (up to differences of whitespace and namespace prefixes). It grew
out of my frustration with
&#x3C;a href=&#x22;http://metacpan.org/module/XML::SemanticDiff&#x22;&#x3E;XML::SemanticDiff&#x3C;/a&#x3E;,
upon which Test::XML is based, and which I maintain. A quick CPAN search
revealed other modules for testing XML in a similar manner, but since I have
already written my code, I decided to release it.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
One tip is that with the current API, one should use something like:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
my @common = (validation =&#x26;gt; 0, load_ext_dtd =&#x26;gt; 0, no_network =&#x26;gt; 1);

is_xml_ordered (
    [ string =&#x26;gt; normalize_xml($results_buffer), @common, ],
    [ location =&#x26;gt; &#x22;./t/data/xhtml-results/$fn_base.xhtml&#x22;, @common, ],
    &#x22;Testing for Good XSLTing of &#x27;$fn_base&#x27;&#x22;,
);
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
In order to test XHTML documents for equivalency.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;Vered-XML&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
I thought that Vered-XML (currently only available in the
&#x3C;a href=&#x22;http://bitbucket.org/shlomif/perl-begin&#x22;&#x3E;Perl Beginners&#x27; Site&#x27;s
repository&#x3C;/a&#x3E; was probably the most ad-hoc and tailored to match
XML grammar I have ever created, and was used to convert the markup of
&#x3C;a href=&#x22;http://perl-begin.org/tutorials/bad-elements/&#x22;&#x3E;the &#x22;Perl Elements
to Avoid&#x22; page&#x3C;/a&#x3E; from hacky Website META Language markup to XML, so it
will be easier to translate to different (human) languages and also somewhat
easier to maintain and render. Currently it renders to DocBook/XML, which
allows translation to many other formats.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
So why did I call it Vered? Since it was so ad-hoc, and I didn&#x27;t know what
else it would be useful for, I wanted to give it an artsy name, and considered
using a random Hebrew feminine name. Then I thought that &#x22;a rose by any other
name would smell as sweer&#x22;, and thought of calling it Rose, but translated
to Hebrew it was &#x22;Vered&#x22;, which is also a Hebrew feminine name. I still have
to tie up some loose ends, but expect XML-Grammar-Vered at a CPAN mirror
near you Real Soon Now&#x2122;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Vered-XML supports a subset of XHTML, as well as some specialised tags such
as &#x3C;code&#x3E;&#x26;lt;pdoc /&#x26;gt;&#x3C;/code&#x3E; (perldoc),
&#x3C;code&#x3E;&#x26;lt;pdoc_f /&#x26;gt;&#x3C;/code&#x3E; (perldoc -f),
&#x3C;code&#x3E;&#x26;lt;cpan_self_mod /&#x26;gt;&#x3C;/code&#x3E; (CPAN self link to module), etc. and
contains a RELAX NG schema and an xsltproc/libxslt2-compatible
XSLT 1.0 stylesheet. Here is an excerpt from
&#x3C;a href=&#x22;http://bitbucket.org/shlomif/perl-begin/src/d183a648b865a223c353b16664e05b6046bd478d/src/tutorials/bad-elements/perl-elements-to-avoid.xml-grammar-vered.xml?at=default&#x22;&#x3E;the &#x22;Perl Elements to Avoid&#x22; source XML&#x3C;/a&#x3E;:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
&#x26;lt;item xml:id=&#x26;quot;slurp&#x26;quot;&#x26;gt;
&#x26;lt;info&#x26;gt;
&#x26;lt;title&#x26;gt;Slurping a file (i.e: Reading it all into memory)&#x26;lt;/title&#x26;gt;
&#x26;lt;/info&#x26;gt;
&#x26;lt;p&#x26;gt;
One can see several bad ways to read a file into memory in Perl. Among them
are:
&#x26;lt;/p&#x26;gt;
&#x26;lt;code_blk syntax=&#x26;quot;perl&#x26;quot;&#x26;gt;
# Not portable and suffers from possible
# shell code injection.
my $contents = `cat $filename`;
# Wasteful of CPU and memory:
my $contents = join(&#x26;quot;&#x26;quot;, &#x26;amp;lt;$fh&#x26;amp;gt;);
# Even more so:
my $contents = &#x26;#39;&#x26;#39;;
while (my $line = &#x26;amp;lt;$fh&#x26;amp;gt;)
{
    $contents .= $line;
}
&#x26;lt;/code_blk&#x26;gt;
&#x26;lt;p&#x26;gt;
You should avoid them all. Instead the proper way to read an entire file
into a long string is to either use CPAN distributions for that such as
&#x26;lt;cpan_self_dist d=&#x26;quot;File-Slurp&#x26;quot; /&#x26;gt; or
&#x26;lt;cpan_self_dist d=&#x26;quot;IO-All&#x26;quot; /&#x26;gt;, or alternatively
write down the following function and use it:
&#x26;lt;/p&#x26;gt;
&#x26;lt;code_blk syntax=&#x26;quot;perl&#x26;quot;&#x26;gt;
sub _slurp
{
    my $filename = shift;
    open my $in, &#x26;#39;&#x26;amp;lt;&#x26;#39;, $filename
        or die &#x26;quot;Cannot open &#x26;#39;$filename&#x26;#39; for slurping - $!&#x26;quot;;
    local $/;
    my $contents = &#x26;amp;lt;$in&#x26;amp;gt;;
    close($in);
    return $contents;
}
&#x26;lt;/code_blk&#x26;gt;
&#x26;lt;/item&#x26;gt;
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
I&#x27;m not sure if Vered-XML will have much utility outside that use case, but
I think that putting it on CPAN won&#x27;t hurt much.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;Improving perlresume.org&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
I filed a few issues and sent some pull requests for
&#x3C;a href=&#x22;http://perlresume.org/&#x22;&#x3E;perlresume.org&#x3C;/a&#x3E; for some problems
I ran into, and &#x3C;a href=&#x22;http://showmetheco.de/&#x22;&#x3E;vti&#x3C;/a&#x3E; fixed or
applied them promptly. Thanks!
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;Beginners&#x27; Sites&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
I invested more work into &#x3C;a href=&#x22;http://perl-begin.org/&#x22;&#x3E;the Perl Beginners&#x27;
site&#x3C;/a&#x3E;
and also, after some encouragement from the good people on
&#x3C;a href=&#x22;irc://irc.freenode.net/#vim&#x22;&#x3E;#vim&#x3C;/a&#x3E; began work on
&#x3C;a href=&#x22;http://vim.begin-site.org/&#x22;&#x3E;the Vim Beginners&#x27;s site&#x3C;/a&#x3E;, which
I publicised on &#x3C;a href=&#x22;http://shlomif-tech.livejournal.com/65619.html&#x22;&#x3E;my
tech blog&#x3C;/a&#x3E;,
on &#x3C;a href=&#x22;http://www.reddit.com/r/vim/comments/15o6v1/announcing_the_vim_beginners_site/&#x22;&#x3E;Reddit&#x3C;/a&#x3E;,
and on some mailing lists. While in the past I used my own
&#x3C;a href=&#x22;http://web-cpan.shlomifish.org/latemp/&#x22;&#x3E;static site
generator called &#x22;Latemp&#x22;&#x3C;/a&#x3E; based on Website Meta Language for sites
like that,
I used Jekyll this time, at least for the first prototype. I did so
in order to evaluate it for use in a different site
(&#x3C;a href=&#x22;http://www.linux.org.il/&#x22;&#x3E;The
Israeli Linux Portal&#x3C;/a&#x3E; which is currently implemented using an awkward
custom PHP-based system, that mostly just reads stuff out of XML data
files and outputs a constant static HTML as XSLT.). While at first I was
impressed with Jekyll,
I then realised that it was quite opaque, often required many plugins to
get some basic functionality and that one plugin I looked at lacked examples
and was otherwise under documented.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
There is &#x3C;a href=&#x22;http://iwantmyname.com/blog/2011/02/list-static-website-generators.html&#x22;&#x3E;a
list of many more static site generators / offline content-management
systems&#x3C;/a&#x3E; around (which does not include my own Latemp), and it may be
easier to roll up something on my own based on Template Toolkit or its ttree.
All this just confirms my
(and &#x3C;a href=&#x22;http://blogs.perl.org/users/su-shee/&#x22;&#x3E;Su-Shee&#x3C;/a&#x3E;&#x27;s) suspicion
that every self-respecting web programmer has written at least one.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;Freecell Solver for JavaScript - &#x263A;&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
I have been distracted for many hours trying to port Freecell Solver
to JavaScript using the very cool
&#x3C;a href=&#x22;https://github.com/kripken/emscripten&#x22;&#x3E;Emscripten&#x3C;/a&#x3E; LLVM bitcode
to JavaScript compiler.
The &#x3C;a href=&#x22;http://fc-solve.shlomifish.org/js-fc-solve/text/&#x22;&#x3E;mostly
final result&#x3C;/a&#x3E; could still use some work, and is still under optimised (in
large part due to what appear to be an Emscripten bug) but it&#x27;s working.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The &#x3C;a href=&#x22;https://github.com/kripken/emscripten/wiki&#x22;&#x3E;Emscripten
wiki&#x3C;/a&#x3E; contains links to many, much more impressive, demos including
&#x3C;a href=&#x22;http://kripken.github.com/meandmyshadow.web/mams.html&#x22;&#x3E;a
JavaScript version of the open-source graphical game &#x22;Me and My Shadow&#x22;&#x3C;/a&#x3E;.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;Two Anecdotes from ##programming&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
I enjoy chatting on
&#x3C;a href=&#x22;irc://irc.freenode.org/##programming&#x22;&#x3E;##programming (on Freenode)&#x3C;/a&#x3E;
and along with all the rants about how much every popular programming langauge
in existence sucks, and trying to help various students with their often
badly indented and badly formatted homework code, there are often some
insightful discussions by some smart people. I&#x27;d like to share two Perl-related
anecdotes from there.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The first one was that someone there who has taken studying programming, before
starting to study in university, seriously, and also read the Camel book
and other books and resources about Perl, asked me to look at my code
to see how readable it is. I referred him to the
&#x3C;a href=&#x22;https://metacpan.org/source/SHLOMIF/HTML-Widgets-NavMenu-1.0701/lib/HTML/Widgets/NavMenu.pm&#x22;&#x3E;source
code&#x3C;/a&#x3E; of HTML::Widgets::NavMenu, which will being an early code of
mine (and still not fully modernised), was written in a modular manner, and he
said he found it to be well-factored and yet very readable . He noted that he
suspected that Perl would be less believed to &#x22;hard to understand&#x22; or
&#x22;unreadable&#x22;, if it sandardised on using my preferred style -
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Indent_style#Allman_style&#x22;&#x3E;Allman
style&#x3C;/a&#x3E; - instead of its default style with the opening braces on the
same line as the opening clause (e.g: &#x3C;tt&#x3E;if ( COND ) {&#x3C;/tt&#x3E;).
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The other anecdote was that someone else there, who is working in Visual
Basic and Visual Basic for Applications for a living (for lack of good
alternative for software development job prospects in his homeland), told us
that he found the CPAN documentation to usually be superior than the MSDN
(Microsoft Developers Network) one.
I found it a little strange, because I recall finding the MSDN documentation
to give detailed examples for almost every subroutine and a page of prose and
explanation for each one, and reportedly large parts of it were also
translated into some non-English languages by Microsoft. Then I showed him
the &#x22;SYNOPSIS&#x22; sections of some of the .pm files in CPAN and he was
even more impressed and said it was useful (because you can copy+paste it and
tweak it), but naturally commented that not all .pm files had those.
&#x3C;/p&#x3E;

&#x3C;h2&#x3E;Conclusion&#x3C;/h2&#x3E;

&#x3C;p&#x3E;
I currently stand at &#x3C;a href=&#x22;http://perlresume.org/SHLOMIF&#x22;&#x3E;87 CPAN
distributions&#x3C;/a&#x3E;, some of which a bit lacking, and I still have some in the
pipe. One of them will require quite a lot of cleanup work to do, but it&#x27;s
not a high priority. I also have to juggle some other endeavours, and also
recently started contracting for an Internet friend as a Drupal developer
(and in the future possibly one for Moodle as well), which may consume even
more of my time (but on the bright side pay a little money). It&#x27;s no secret
that I am not a big fan of PHP, but Drupal seems impressive so far, and
hides away a lot of PHP&#x27;s ugliness. It took me some time to get acquainted
with it, so I hope now things will be smoother and easier to do. It seems that
there&#x27;s quite a bit of demand for converting sites into Drupal, setting up new
sites, or maintaining them in Israel (and possibly elsewhere as well) so it
is probably a useful skill to have under my belt.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Hope you enjoyed this hacktivity log, and see you next time. Byeeeee!
&#x3C;/p&#x3E;

        
    " xmlbase="http://blogs.perl.org/users/shlomi_fish/"/>
<dcterms:modified>2013-01-07T20:54:43Z</dcterms:modified>
</item>
<item>
<title>Count-up to 100 CPAN Distributions: Test-XML-Ordered, SDLx-Betweener, and more</title>
<link>http://blogs.perl.org/users/shlomi_fish/2012/12/count-up-to-100-cpan-distributions-test-xml-ordered-sdlx-betweener-and-more.html</link>
<description> Well, it&#x27;s no longer a secret that I&#x27;m craving to join the &#x22;100 CPAN Distributions Club&#x22; by releasing some code that is hopefully not too useless. Here I would like to blog about the two new additions to my...</description>
<author>Shlomi Fish</author>
<category>100</category>
<category>cpan</category>
<category>hacktivity</category>
<category>hacktivity log</category>
<category>perl</category>
<category>sdlx</category>
<category>xml</category>
<guid isPermaLink="true">http://blogs.perl.org/users/shlomi_fish/2012/12/count-up-to-100-cpan-distributions-test-xml-ordered-sdlx-betweener-and-more.html</guid>
<pubDate>Thu, 06 Dec 2012 17:49:23 -0000</pubDate>
<content:encoded content="
        
&#x3C;p&#x3E;
Well, it&#x27;s no longer a secret that I&#x27;m craving to join the &#x22;100 CPAN
Distributions Club&#x22; by releasing some code that is hopefully not too useless.
Here I would like to blog about the two new additions to
&#x3C;a href=&#x22;http://metacpan.org/author/SHLOMIF&#x22;&#x3E;my CPAN page&#x3C;/a&#x3E; which are
the 83rd and 84th distributions respectively. The story is a bit more
complicated than that.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The first upload is
&#x3C;a href=&#x22;https://metacpan.org/release/SDLx-Betweener&#x22;&#x3E;SDLx-Betweener&#x3C;/a&#x3E;,
which allows for creating high-performance and smooth animations in SDL
by making use of Perl/XS. Almost all of the coding (and a related
YAPC::Israel talk) was done by
&#x3C;a href=&#x22;http://metacpan.org/author/EILARA&#x22;&#x3E;Ran Eilam&#x3C;/a&#x3E;, who is a very
cool guy, a good friend and a former boss of mine, and I&#x27;ve just done
(with his permission) some last-minute cleanups and did the initial upload
to CPAN. So I kinda feel like the frog that sat on top of the elephant
who crossed the river and said &#x22;We did it!&#x22;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
However, I needed SDLx::Betweener
for something I&#x27;ve been intending to work on, and wanted it on CPAN
and packaged in Mageia Linux, so I did that. If you run into any problems
with it, drop me a note or file a bug report, and hopefully I can resolve
these problems (possibly with some help from Ran).
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The next distribution is original, but its story is more complicated.
It all started when I decided to resume work on Qantor, which aims
to eventually be a modern and saner alternative to TeX/LaTeX and Troff
(although it is still extremely far from that now). I noticed that the parsing
was still done by Regexp::Grammars, and so decided to convert it into
&#x3C;a href=&#x22;https://metacpan.org/module/Parser::MGC&#x22;&#x3E;Parser::MGC&#x3C;/a&#x3E;.
Parser::MGC worked eventually and I was impressed from the straightforward
way to do stuff with it, but it was time consuming to get there (like most
other parser generators I tried, only a bit better), and involved writing
some Moose &#x27;around&#x27; code to debug the method calls, and also sometimes delving
into the code. Parser::MGC is still not perfect (and some of the code I read
there had gems like
&#x3C;tt&#x3E;die $e if $committed or
not eval { $e-&#x26;gt;isa( &#x22;Parser::MGC::Failure&#x22; ) };&#x3C;/tt&#x3E; which I found hard
to parse, and made me want to drown a kitten), but I think it sucks less
and is more transparent than other parser generators I tried.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Anyway, after I got it working, I noticed that the Test::XML::Ordered code
(then still unreleased), generated a some memory problems and I suspected
either XML::LibXML or libxml2 to be the culprit. This involved a long
investigation process with valgrind, gdb, &#x3C;tt&#x3E;perl -d&#x3C;/tt&#x3E; and other tools
which culminated in a very small change and more lines of test code. This
was released in XML::LibXML. After that I received a report that the tests
got stuck, but that turned out to be due to external loading of DTDs and
was easily fixed. There&#x27;s another
&#x3C;a href=&#x22;https://rt.cpan.org/Ticket/Display.html?id=81739&#x22;&#x3E;report&#x3C;/a&#x3E; for
a problem with perl-5.8.8 (ouch!) on Red Hat Enterprise Linux (ouch again!),
but I&#x27;m not too motivated to do a lot about it (see
&#x3C;a href=&#x22;http://www.shlomifish.org/humour/fortunes/show.cgi?id=hamakor-discs-mozilla-1.1-1&#x22;&#x3E;this fortune cookie&#x3C;/a&#x3E;).
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Well, after I fixed the problem with XML::LibXML, I decided to release
Test::XML::Ordered. I&#x27;m well aware of
&#x3C;a href=&#x22;https://metacpan.org/module/Test::XML&#x22;&#x3E;Test::XML&#x3C;/a&#x3E;, but found
it hard to rely on it, because it uses
&#x3C;a href=&#x22;https://metacpan.org/module/XML::SemanticDiff&#x22;&#x3E;XML::SemanticDiff&#x3C;/a&#x3E;
(the latter I adopted) and which attempts to rearrange the order of the
nodes when it sees fit (so
&#x3C;tt&#x3E;&#x26;lt;ul&#x26;gt;&#x26;lt;li&#x26;gt;One&#x26;lt;/li&#x26;gt;&#x26;lt;li&#x26;gt;Two&#x26;lt;/li&#x26;gt;&#x26;lt;/ul&#x26;gt;&#x3C;/tt&#x3E;
and
&#x3C;tt&#x3E;&#x26;lt;ul&#x26;gt;&#x26;lt;li&#x26;gt;Two&#x26;lt;/li&#x26;gt;&#x26;lt;li&#x26;gt;One&#x26;lt;/li&#x26;gt;&#x26;lt;/ul&#x26;gt;&#x3C;/tt&#x3E;
may be considered the same), which was not what I want and not what other
people who contacted me about XML::SemanticDiff wanted.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
After Test::XML::Ordered, I decided it would be a good idea to finally
work on the release of &#x3C;tt&#x3E;XML::GrammarBase&#x3C;/tt&#x3E; which aims to provide
&#x22;base classes and roles&#x22; for facilitating creating XML validators
and processors. Work on it was pretty straightforward after I had
Test::XML::Ordered available, but required some refactoring the classes
from using &#x3C;tt&#x3E;Any::Moose&#x3C;/tt&#x3E; to using &#x3C;tt&#x3E;Moo&#x3C;/tt&#x3E; per advice of the
people on &#x3C;tt&#x3E;#moose&#x3C;/tt&#x3E;, and I have yet to convert the XSLT role into
a parameterised role.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I have some other code I&#x27;d like to release on CPAN after all that.
&#x3C;/p&#x3E;
&#x3C;hr /&#x3E;

&#x3C;p&#x3E;
Another related hacktivity was a set of patches to the core Vim that I&#x27;ve
written to improve support for DocBook 5. Since I wanted to maintain
compatibility with DocBook 4 documents (because DocBook 4 is still popular),
this involved writing a Perl, Bash and Python Amalgam to generate the
Vim code in question with a list of common, DocBook 4-only and DocBook 5-only
tags. You can find it in
&#x3C;a href=&#x22;http://bitbucket.org/shlomif/vim-docbook-5-support&#x22;&#x3E;its BitBucket
repository&#x3C;/a&#x3E;. It is very hacky, but it works. Using the Python code
gave me an idea for a missing XML::LibXML feature - DTD introspection - which
I&#x27;d like to implement in the future.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Well, that&#x27;s all for now - just wanted to get it out of my system. Enjoy the
holidays, and Cheers!
&#x3C;/p&#x3E;


        
    " xmlbase="http://blogs.perl.org/users/shlomi_fish/"/>
<dcterms:modified>2012-12-06T17:57:51Z</dcterms:modified>
</item>
<item>
<title>Three Command-Line Utilities</title>
<link>http://blogs.perl.org/users/shlomi_fish/2012/11/three-command-line-utilities.html</link>
<description> So, November is NaNoWriMo (&#x22;National Novel Writing Month&#x22;), and I was hoping to get some serious writing done (instead of coding), but I kept being distracted with coding and random writing in various Internet forums. Well, hopefully this blog...</description>
<author>Shlomi Fish</author>
<category>bash</category>
<category>cli</category>
<category>command</category>
<category>cpan</category>
<category>gnu</category>
<category>line</category>
<category>parallel</category>
<category>perl</category>
<category>sleep</category>
<guid isPermaLink="true">http://blogs.perl.org/users/shlomi_fish/2012/11/three-command-line-utilities.html</guid>
<pubDate>Wed, 14 Nov 2012 13:30:40 -0000</pubDate>
<content:encoded content="
        
&#x3C;p&#x3E;
So, November is
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/National_Novel_Writing_Month&#x22;&#x3E;NaNoWriMo&#x3C;/a&#x3E; (&#x22;National Novel Writing Month&#x22;), and I was hoping to get some serious
writing done (instead of coding), but I kept being distracted with coding
and random writing in various Internet forums. Well, hopefully this blog
post will compensate a little for that.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
In this post, I&#x27;d like to cover three command-line utilities - two of them
new and were written by me, and one of them somewhat older, but also written
in Perl.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The first utility is
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/GNU_parallel&#x22;&#x3E;GNU Parallel&#x3C;/a&#x3E;, which
allows one to run several command-line jobs in parallel, using forking and/or
ssh remote logins. I used it to speed up some processing I&#x27;ve been doing on
my computer. For more information and some examples of usage, see
&#x3C;a href=&#x22;http://zgp.org/pipermail/linux-elitists/2012-November/013428.html&#x22;&#x3E;my
post about it to the linux-elitists mailing list&#x3C;/a&#x3E;, and also read
&#x3C;a href=&#x22;http://zgp.org/pipermail/linux-elitists/2012-November/013429.html&#x22;&#x3E;Thomas
Sattler&#x27;s response&#x3C;/a&#x3E; which provides some further insights.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The second utility is
&#x3C;a href=&#x22;http://www.shlomifish.org/open-source/projects/countdown/&#x22;&#x3E;countdown&#x3C;/a&#x3E;, which is
similar to the UNIX command-line sleep command, but displays the remaining
time on the console. I wrote a prototype for it in Perl 6, only to discover it
consumed far too many resources. The second prototype, as a Perl 5 program
consumed close to zero resources of my computer. Yesterday, I converted it to
a modulino (a Perl application implemented as a module) and uploaded
several versions to the CPAN.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The third utility is something I have placed in my
&#x3C;tt&#x3E;~/.bashrc&#x3C;/tt&#x3E; file in order to implement reminders when the shell
starts. The code for it is:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
reminder_file=&#x22;$HOME/.local/share/shlomif/reminder/reminder.txt&#x22;
if [ -s &#x22;$reminder_file&#x22; ] ; then
    perl -Mstrict -Mwarnings -MTerm::ANSIColor -E &#x27;my $x = colored(&#x22;===&#x22;, &#x22;bold red&#x22;); say &#x22;$x Reminders $x&#x22;&#x27;
    cat &#x22;$reminder_file&#x22;
fi

Cancel_reminder()
{
    rm &#x22;$reminder_file&#x22;
}
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
I wrote it because I wasn&#x27;t prompted in time by Thunderbird+Lightning
due to a strange bug, and because I had to ditch KOrganizer because it
consumed too many resources here. This displays the Reminders whenever you
start a new shell, which happens quite often with me, so it&#x27;s OK. I use
cron jobs to append stuff into &#x22;$reminder_file&#x22;, and the Perl code displays
a header in colour.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
That&#x27;s it for today.
&#x3C;a href=&#x22;https://metacpan.org/release/App-Countdown&#x22;&#x3E;App-Countdown&#x3C;/a&#x3E; is one
step closer for the count-up (pun intended) towards the coveted 100
distributions under &#x22;SHLOMIF&#x22; on CPAN, so that&#x27;s another plus.
&#x3C;/p&#x3E;


        
    " xmlbase="http://blogs.perl.org/users/shlomi_fish/"/>
<dcterms:modified>2012-11-14T13:41:02Z</dcterms:modified>
</item>
<item>
<title>Please Publish Perl Events on the LWN.net Calendar</title>
<link>http://blogs.perl.org/users/shlomi_fish/2012/10/please-publish-perl-events-on-the-lwnnet-calendar.html</link>
<description> As I read last week&#x27;s LWN.net&#x27;s Announcement Page (LWN.net is a news site for open-source-related news, formerly standing for &#x22;Linux Weekly News&#x22;), I noticed that there were few if any Perl events featured in its upcoming events calendar. However,...</description>
<author>Shlomi Fish</author>
<category>conferences</category>
<category>events</category>
<category>lwn</category>
<category>lwn.net</category>
<category>perl</category>
<category>yapc</category>
<guid isPermaLink="true">http://blogs.perl.org/users/shlomi_fish/2012/10/please-publish-perl-events-on-the-lwnnet-calendar.html</guid>
<pubDate>Thu, 18 Oct 2012 11:07:00 -0000</pubDate>
<content:encoded content="
        
&#x3C;p&#x3E;
As I read last week&#x27;s
&#x3C;a href=&#x22;http://lwn.net/Articles/518564/&#x22;&#x3E;LWN.net&#x27;s Announcement Page&#x3C;/a&#x3E;
(LWN.net is a news site for open-source-related news, formerly standing
for &#x22;Linux Weekly News&#x22;),
I noticed that there were few if any Perl events featured in its upcoming
events calendar. However, these events appear in
&#x3C;a href=&#x22;http://perlweekly.com/&#x22;&#x3E;the Perl Weekly&#x3C;/a&#x3E;, and there are many
upcoming Python events featured in LWN.net.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
So, please, if you are organising a Perl-related event (or any other major
open-source event), make sure you put it on
&#x3C;a href=&#x22;http://lwn.net/Calendar/&#x22;&#x3E;the LWN.net calendar&#x3C;/a&#x3E;.
&#x3C;/p&#x3E;


        
    " xmlbase="http://blogs.perl.org/users/shlomi_fish/"/>
<dcterms:modified>2012-10-18T11:28:47Z</dcterms:modified>
</item>
<item>
<title>What does &#x201C;Simple&#x201D; mean in the context of software?</title>
<link>http://shlomif-tech.livejournal.com/64318.html</link>
<description>&#x3C;p&#x3E;
A lot of computer programs, and especially many open-source applications
like to boast that they are &#x201C;simple&#x201D;. But what does it mean? Given the various
applications and misapplications of this word, I can think of several
meanings:
&#x3C;/p&#x3E;

&#x3C;ol&#x3E;

&#x3C;li&#x3E;
&#x3C;p&#x3E;
Easy to use.
&#x3C;/p&#x3E;
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
&#x3C;p&#x3E;
Lacks complexity (whatever that means and implies).
&#x3C;/p&#x3E;
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
&#x3C;p&#x3E;
Simplistic.
&#x3C;/p&#x3E;
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
&#x3C;p&#x3E;
Minimalistic.
&#x3C;/p&#x3E;
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
&#x3C;p&#x3E;
Lacks extraneous features.
&#x3C;/p&#x3E;
&#x3C;/li&#x3E;
&#x3C;/ol&#x3E;

&#x3C;p&#x3E;
Very often, these meanings are at conflict with one another. For example,
the &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/GNOME&#x22; rel=&#x22;nofollow&#x22;&#x3E;GNOME&#x3C;/a&#x3E; developers have been
keen on making the feature set as minimalistic (in accordance to meaning
#4) as possible, which has taken the project to spiraling depths of
unusability (opposing meaning #1). Furthermore,
&#x3C;a href=&#x22;http://www.archlinux.org/&#x22; rel=&#x22;nofollow&#x22;&#x3E;Arch Linux&#x3C;/a&#x3E; taglines itself as
&#x201C;a lightweight and flexible Linux&#xAE; distribution that tries to Keep It
&#x3C;b&#x3E;Simple&#x3C;/b&#x3E;&#x201D;. However, during one day, I spent three incredibly vexing
hours in trying to install it on a Virtual Box virtual machine, due to the
installer&#x27;s lack of usability, and if I had to do it on live hardware, it
would have taken me much longer. You call that simple? I joked that it would
take an engineering degree from a prestigious university to figure it out. I
have that, but it did not help me much.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
As a result, I have become incredibly suspicious and weary of any software
that prides itself on its &#x201C;simplicity&#x201D;, even though &#x201C;simplicity&#x201D; should
be a good thing.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Bjarne Stroustrup (the creator of C++) has this to say about Java on
&#x3C;a href=&#x22;http://www.stroustrup.com/bs_faq.html&#x22; rel=&#x22;nofollow&#x22;&#x3E;his FAQ&#x3C;/a&#x3E;:
&#x3C;/p&#x3E;

&#x3C;blockquote&#x3E;
&#x3C;p&#x3E;
Much of the relative simplicity of Java is - like for most new languages -
partly an illusion and partly a function of its incompleteness. As time passes,
Java will grow significantly in size and complexity. It will double or triple
in size and grow implementation-dependent extensions or libraries. That is the
way every commercially successful language has developed. Just look at any
language you consider successful on a large scale. I know of no exceptions, and
there are good reasons for this phenomenon. [I wrote this before 2000; now
(2012), the language part of the Java 7 specification is slightly longer in
terms of number of pages than the ISO C++11 language specification.]
&#x3C;/p&#x3E;
&#x3C;/blockquote&#x3E;

&#x3C;p&#x3E;
So simplicity is often a function of immaturity and incompleteness.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Of course, some things that call themselves &#x201C;simple&#x201D; are not simple in any
of the meanings, for example
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/SOAP&#x22; rel=&#x22;nofollow&#x22;&#x3E;SOAP&#x3C;/a&#x3E;, the so-called &#x201C;Simple
Object Access Protocol&#x201D; (see &#x3C;a href=&#x22;http://wanderingbarque.com/nonintersecting/2006/11/15/the-s-stands-for-simple/&#x22; rel=&#x22;nofollow&#x22;&#x3E;the
S stands for Simple&#x3C;/a&#x3E;), is not simple in any of the meanings I have
given, but it is still called like that.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I feel that like
&#x3C;a href=&#x22;http://www.shlomifish.org/philosophy/politics/define-zionism/&#x22; rel=&#x22;nofollow&#x22;&#x3E;the word &#x201C;Zionism&#x201D;&#x3C;/a&#x3E; no one is no longer sure what &#x201C;simplicity&#x201D; means,
and as a result, some people no longer consider it a good quality to have.
It&#x2019;s a shame, but that&#x2019;s life.
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>linux</category>
<category>perl</category>
<category>open source</category>
<comments>http://shlomif-tech.livejournal.com/64318.html</comments>
<guid isPermaLink="true">http://shlomif-tech.livejournal.com/64318.html</guid>
<pubDate>Mon, 08 Oct 2012 15:08:52 GMT</pubDate>
</item>
</channel>
</rss>