<?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>Perl Debugger Tip: A Session Startup File</title>
<link>http://community.livejournal.com/shlomif_tech/51785.html</link>
<description>&#x3C;p&#x3E;
Here&#x27;s a small Perl debugger tip: in order to have a file whose commands
will be executed at the start of the debugging session (for example in order
to get to a certain point in the code) - a session startup file, similar
to gdb&#x27;s &#x3C;tt&#x3E;--command=cmds.gdb&#x3C;/tt&#x3E; flag - one can do the following:
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
First of all write a file with the debugger commands you want (let&#x27;s call it
&#x3C;tt&#x3E;cmds.perldb&#x3C;/tt&#x3E;) and then when inside the perl debugger say:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
source cmds.perldb
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
This will execute all the commands.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I noticed that after a while the perl debugger stores it inside the history
(assuming you&#x27;re using Term-ReadLine-Gnu), so you can recall it with
&#x3C;tt&#x3E;s&#x3C;/tt&#x3E; and then pressing the &#x3C;tt&#x3E;history-search-forward&#x3C;/tt&#x3E;
and &#x3C;tt&#x3E;history-search-backward&#x3C;/tt&#x3E; that were set up (Mandriva assigns
them to Page Up and Page Down).
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Enjoy and I&#x27;m sorry for having neglected this blog for a long while!
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>tip</category>
<category>perl</category>
<category>tech</category>
<category>debugger</category>
<comments>http://community.livejournal.com/shlomif_tech/51785.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/51785.html</guid>
<pubDate>Wed, 25 Aug 2010 19:12:41 GMT</pubDate>
</item>
<item>
<title>Report on August Penguin 2010</title>
<link>http://community.livejournal.com/shlomif_tech/51654.html</link>
<description>&#x3C;p&#x3E;
Hi all. This is a report on the 
&#x3C;a href=&#x22;http://august.penguin.org.il/&#x22;&#x3E;August Penguin 2010&#x3C;/a&#x3E; conference,
which I&#x27;ve attended and enjoyed. I decided to write it in English due to the
proliferation of Hebrew reports, out of convenience, and in order to publicise
the Israeli open source activity abroad. So here goes nothing.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
First of all, an apology: I wanted to publicise the conference more
intensively, but I got distracted by the fact that the opening paragraph
in the site was supposed to be fixed (and I did not know how to fix it because
I&#x27;m not a Drupal expert and there was no edit button there), and that I started
working intensively on a for-pay project (and a Perl and 
&#x3C;a href=&#x22;http://www.catalystframework.org/&#x22;&#x3E;Catalyst&#x3C;/a&#x3E; one at that) shortly
before the conference, which turned out to be time-consuming and 
also distracted me. So I apologise if it resulted in fewer people attending
the conference, and I&#x27;ll try to keep it in mind for next year.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
In any case, I posted an E-mail to the mailing list asking for a ride,
and &#x3C;a href=&#x22;http://www.zak.co.il/&#x22;&#x3E;Omer Zak (a.k.a &#x22;TDDPirate&#x22;)&#x3C;/a&#x3E;
volunteered to give me a ride. After negotiating an hour, I realised I needed
to wake up at 06:00 AM, in order to catch the ride. The alarm woke up me
up and I had relatively little trouble to get up. I made some preparations,
ate something, and started playing a deal of Freecell in 
&#x3C;a href=&#x22;http://pysolfc.sourceforge.net/&#x22;&#x3E;PySolFC&#x3C;/a&#x3E; (which later on during
the day motivated me to 
&#x3C;a href=&#x22;http://tech.groups.yahoo.com/group/fc-solve-discuss/message/1067&#x22;&#x3E;find a performant scan for Freecell Solver&#x3C;/a&#x3E; to solve it), and didn&#x27;t finish
in time. Then I went to meet Omer. 
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
He picked me up on Keren Kayemet Boulevard a long stretch before the
designated meeting place. Apparently he was early (or I was a bit late),
and had to diverge from the main road. So we drove all the way to 
Weizmann Institute where the August Penguin conference took place. The ride
was relatively uneventful, there were no substantial traffic jams, but we saw 
another car with some FOSS-related stickers on the way (probably going to the 
conference as well). We arrived early before the doors of the hall were open,
but other people got there too and I&#x27;ve talked with them a little and also
posed for a photograph with my name.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
After they opened the doors, I helped carry some food and stuff from the cars,
and then ate some of the pastries that were brought and drank some assorted 
juices - all of which were good. (I think I had eaten too much during the 
conference, because later on, I didn&#x27;t have too much appetite for the midday
meal). 
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
In any case, I met a few old and new people during the conference. One of
them told me he met me on &#x3C;a href=&#x22;irc://irc.freenode.net/#perl&#x22;&#x3E;Freenode&#x27;s
#perl&#x3C;/a&#x3E;, where I guided him a bit and that he was on Freenode often. He
brought an Archlinux-based laptop, and also said he&#x27;s been writing some Perl
scripts for various tasks. I&#x27;ve also met 
&#x3C;a href=&#x22;http://ddorda.useopensource.net/&#x22;&#x3E;Dor&#x3C;/a&#x3E; for the first time as 
he was volunteering in the Ubuntu-Israel stand.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I should note that I had volunteered to guide a blind attendee and she
eventually arrived and I showed her where everything was in the hall. During
one of the breaks, I also showed her where 
&#x3C;a href=&#x22;http://blog.oriidan.info/&#x22;&#x3E;Ori&#x3C;/a&#x3E; was. She asked me to escort her
to the bus station in order, but eventually someone else volunteered
to escort her a short time before I went out of the hall to do so.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I enjoyed several of the presentations there especially the ones about 
&#x3C;a href=&#x22;http://wildfiregames.com/0ad/&#x22;&#x3E;the 0AD game&#x3C;/a&#x3E; (which looked great
based on the screenshots and screencasts), and 
&#x3C;a href=&#x22;http://oknesset.org/&#x22;&#x3E;the Open Knesset 
(= the Israeli parliament)&#x3C;/a&#x3E; project. I stayed up to the giving of
the Hamakor prize, where I was invited to the stage to receive the third
place for the communal prize for &#x3C;a href=&#x22;http://perl.org.il/&#x22;&#x3E;the Israeli
Perl Mongers&#x3C;/a&#x3E;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Omer eventually gave me a ride back home after wrapping up the transcripting
business there.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
So the conference was very nice and I enjoyed it a lot. Here&#x27;s to next
year&#x27;s conference, and hope to see you in 
&#x3C;a href=&#x22;http://wiki.osdc.org.il/index.php/Tel_Aviv_Meeting_on_12_August_2010&#x22;&#x3E;the upcoming Tel Aviv Open Source Club meeting this Thursday&#x3C;/a&#x3E;.
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>israel</category>
<category>software</category>
<category>august</category>
<category>foss</category>
<category>open</category>
<category>penguin</category>
<category>perl</category>
<category>linux</category>
<category>source</category>
<category>report</category>
<comments>http://community.livejournal.com/shlomif_tech/51654.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/51654.html</guid>
<pubDate>Tue, 10 Aug 2010 11:46:36 GMT</pubDate>
</item>
<item>
<title>Recent Hacktivity Log</title>
<link>http://community.livejournal.com/shlomif_tech/51162.html</link>
<description>&#x3C;p&#x3E;
Another boring recenty hacktivity log. First of all, in case you have not
heard &#x3C;a href=&#x22;http://rakudo.org/announce/rakudo-star/2010.07&#x22;&#x3E;Rakudo Star,
a usable implelmentation of Perl 6&#x3C;/a&#x3E; has been released after a lot of work.
Now on to the hacktivity.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;File-Format-CRD&#x3C;/b&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I released the first version of
&#x3C;a href=&#x22;http://search.cpan.org/dist/File-Format-CRD/&#x22;&#x3E;File-Format-CRD&#x3C;/a&#x3E;
to CPAN. This is a CPAN distribution that processes 
&#x3C;a href=&#x22;http://filext.com/file-extension/CRD&#x22;&#x3E;Windows Cardile (.CRD) 
files&#x3C;/a&#x3E; (does anybody still remember those?) and allows to convert
them to other formats. I wrote it because the only program with source that
I found for them was written in C and converted them to invalid HTML. I based
my efforts on it.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
After I wrote the program I was able to extract the contents of an old 
CRD file I had with riddles, but then was appalled from the immaturity there
(as I wrote it during high school). Still, the module may prove useful. It
seems like the second CPAN distribution in the File-Format-* namespace after
File-Format-RIFF, but I could not find any place better to put it.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;Test-WWW-Mechanize-LibXML&#x3C;/b&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x3C;a href=&#x22;http://search.cpan.org/dist/Test-WWW-Mechanize-LibXML/&#x22;&#x3E;Test-WWW-Mechanize-LibXML&#x3C;/a&#x3E;
is another off-shoot of my project for Insurgent Software, that provides
some primitives to test web pages&#x27; content using 
&#x3C;a href=&#x22;http://search.cpan.org/dist/HTML-TreeBuilder-LibXML/&#x22;&#x3E;HTML-TreeBuilder-LibXML&#x3C;/a&#x3E;. 
Right now, it requires some funky multiple-inheritance to work together with 
Test-WWW-Mechanize-Catalyst because they both override the same function. But
it&#x27;s there.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;libfilefind&#x3C;/b&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I&#x27;ve continued working on libfilefind, which is a translation of
&#x3C;a href=&#x22;http://www.shlomifish.org/open-source/projects/File-Find-Object/&#x22;&#x3E;File-Find-Object&#x3C;/a&#x3E; to C using glib. Translating the Perl code to C is very
tedious, and since I have a lot of Perl code, I decided to translate it all at
once, pray, and then test it. After that, I hope to create Perl bindings to
this library, and put them on CPAN in order to increase File-Find-Object&#x27;s 
speed.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;catable&#x3C;/b&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I&#x27;ve done a little work on
&#x3C;a href=&#x22;http://www.ohloh.net/p/catable&#x22;&#x3E;Catable&#x3C;/a&#x3E;, which is our
Catalyst-based blog engine.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;Homepage&#x3C;/b&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I&#x27;ve done some work on the homepage, adding yet-unannounced pages,
and also adding some more &#x22;&#x26;lt;meta /&#x26;gt;&#x22; keywords to existing pages.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;Project Euler&#x3C;/b&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;
This weekend, I&#x27;ve made 
&#x3C;a href=&#x22;http://bitbucket.org/shlomif/project-euler&#x22;&#x3E;a lot of progress with 
solving Project Euler problems&#x3C;/a&#x3E;. One problem which took me a long time
to get right was eventually solved using 
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Test-driven_development&#x22;&#x3E;Test-driven 
development (TDD)&#x3C;/a&#x3E; and then I made more progress including solving one 
problem by hand.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;Games-Solitaire-Verify&#x3C;/b&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I released a new version of 
&#x3C;a href=&#x22;http://fc-solve.berlios.de/verify-code/&#x22;&#x3E;Games-Solitaire-Verify&#x3C;/a&#x3E;
and this time took 
&#x3C;a href=&#x22;http://blogs.perl.org/users/sawyer_x/2010/03/modules-vs-applications.html&#x22;&#x3E;Sawyer 
X&#x27;s advice&#x3C;/a&#x3E; and included a small command-line application inside, which
proved useful for me as well in my Solitaire research.
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>recent</category>
<category>hacktivity</category>
<category>perl</category>
<category>cpan</category>
<comments>http://community.livejournal.com/shlomif_tech/51162.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/51162.html</guid>
<pubDate>Sat, 31 Jul 2010 16:16:43 GMT</pubDate>
</item>
<item>
<title>Rehovot Perl Mongers meeting on 15-June and Hamakor Assembly on 17-June</title>
<link>http://community.livejournal.com/shlomif_tech/49855.html</link>
<description>&#x3C;p&#x3E;
Here are some upcoming open-source-related meetings in Israel:
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The next meeting of the &#x3C;a href=&#x22;http://rehovot.pm.org/&#x22;&#x3E;Rehovot 
Perl Mongers&#x3C;/a&#x3E; will take place on 15th June
(tomorrow) between 18:00-22:00 in the Weizmann Institute in Rehovot
in Room 101 in the Levine Building. See &#x3C;a href=&#x22;http://rehovot.pm.org/meetings.html&#x22;&#x3E;&#x3C;/a&#x3E;the details and map.&#x26;lt;/a&#x26;gt;. The talk (&#x22;Introduction to Perl 6&#x22;
by Gabor Szabo) starts at 18:30.
&#x3C;/p&#x3E;

&#x3C;blockquote&#x3E;
&#x3C;p&#x3E;
Content:  Introduction to Perl 6
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I&#x27;ve just written and gave this talk 2 days ago at the LinuxTag in Berlin.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
After a short background and a few words on Perl 5 vs. Perl 6 I&#x27;ll go over
a number of examples that is part of the imminent Rakudo Star release.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
People who bring a notebook and will have enough network bandwidth will be
helped to install Rakudo on their machine. It is quite easy to install so
you could do it ahead of the meeting by following the instructions on
http://www.rakudo.org/
&#x3C;/p&#x3E;
&#x3C;/blockquote&#x3E;

&#x3C;p&#x3E;
On Thursday (17-June-2010), Hamakor, the Israeli NPO for free and open 
source software will have a general assembly in Shenkar college, Frink 
building, room 306 in 18:30.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x3C;a href=&#x22;http://www.shenkar.ac.il/template/default.aspx?maincat=5&#x26;amp;catid=32&#x22;&#x3E;Arrival instructions are available on Shenkar&#x27;s site&#x3C;/a&#x3E;
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Thanks to Yoram Gnat for the help in organising a place.
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>hamakor</category>
<category>perl</category>
<category>israel</category>
<category>mongers</category>
<category>meeting</category>
<comments>http://community.livejournal.com/shlomif_tech/49855.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/49855.html</guid>
<pubDate>Mon, 14 Jun 2010 14:48:08 GMT</pubDate>
</item>
<item>
<title>Quirky Abstractions</title>
<link>http://community.livejournal.com/shlomif_tech/49510.html</link>
<description>&#x3C;p&#x3E;
Joel Spolsky had written an essay titled 
&#x3C;a href=&#x22;http://www.joelonsoftware.com/articles/LeakyAbstractions.html&#x22;&#x3E;&#x22;The
Law of Leaky Abstractions&#x22;&#x3C;/a&#x3E; where he discusses the fact that sometimes
one needs to be aware of details of the abstraction&#x27;s implementation to know 
how to properly make use of it. Today, I&#x27;d like to talk about an analogous
phenomenon which I came to call a &#x3C;b&#x3E;&#x22;quirky&#x22; abstraction&#x3C;/b&#x3E;, in which 
an abstraction over several technologies (probably two or more) fails to
expose certain features in one of the technologies that it abstracts. 
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I first noticed this concept in 
&#x3C;a href=&#x22;http://stackoverflow.com/questions/2571620/encrypt-decrypt-sqlite-database-and-use-it-on-the-fly&#x22;&#x3E;a
Stack Overflow question of how to encrypt/decrtypt an SQLite database from
within Qt&#x3C;/a&#x3E;. Now, the Qt SQLite backend module links against the vanilla 
SQLite and not its encrypted implementations, so in order to make use of them
one will have to recompile Qt and possibly expose some extra functionality in
the abstraction.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
At the moment, I&#x27;ve also volunteered to help maintain 
&#x3C;a href=&#x22;http://search.cpan.org/dist/Graph-Easy/&#x22;&#x3E;the Graph-Easy
CPAN module&#x3C;/a&#x3E; and the reason was that one of the features of GraphViz was
not exposed in its Graph-Easy backend, which brought the need to hack
something as a workaround.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Can quirky abstractions be avoided? I don&#x27;t know. As the abstraced
technologies progress and gain more features, the abstraction
needs to keep up with them, which makes a situation of a quirky abstraction
more likely to occur.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I&#x27;m not sure quirky abstractions are as bad as leaky abstractions, but it&#x27;s
still an phenomenon that we need to be aware of.
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>perl</category>
<category>joel</category>
<category>leaky</category>
<category>joel on software</category>
<category>abstractions</category>
<comments>http://community.livejournal.com/shlomif_tech/49510.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/49510.html</guid>
<pubDate>Thu, 10 Jun 2010 12:18:19 GMT</pubDate>
</item>
<item>
<title>Perl 5 Anti-abstraction: _with_curr_line</title>
<link>http://community.livejournal.com/shlomif_tech/49156.html</link>
<description>&#x3C;p&#x3E;
In the old XML-Grammar-Screenplay code, I created a small _with_curr_line
method (unrelated to my previous post about 
&#x3C;a href=&#x22;http://community.livejournal.com/shlomif_tech/46303.html&#x22;&#x3E;&#x2192;with()&#x3C;/a&#x3E;) that read like that:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
sub _with_curr_line
{
    my ($self, $sub_ref) = @_;

    return $sub_ref-&#x26;gt;($self-&#x26;gt;curr_line_ref());
}
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
What it does is evaluate a closure and passing it the reference to the current
line to &#x22;avoid&#x22; duplicate code. In one of my comments I also wrote 
&#x22;# Now Lisp got nothing on us.&#x22;, which as it turned out was completely untrue.
Furthermore, this abstraction, which was meant to get rid of explicitly
assigning the &#x22;curr_line_ref()&#x22; to a variable in many places made my code
much more messy. Some notable examples are:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
    # Skip the [
    $self-&#x26;gt;_with_curr_line(
        sub {
            my $l = shift;

            $$l =~ m{\G\[}g;
        }
    );
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
Instead of:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
# Skip the opening square bracket - &#x27;[&#x27;
${$self-&#x26;gt;curr_line_ref()} =~ m{\G\[}g;
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
And:
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
my $which_tag;
# We need this to avoid appending the rest of the first line 
$self-&#x26;gt;_with_curr_line(
    sub {
        my $l = shift;
        
        # Apparently, perl does not always returns true in this
        # case, so we need the defined($1) ? $1 : &#x22;&#x22; workaround.
        $$l =~ m{\G([^\&#x26;t;\[\]\&#x26;amp;]*)}cgms;

        $curr_text .= (defined($1) ? $1 : &#x22;&#x22;);

        if ($$l =~ m{\G\[})
        {
            $which_tag = &#x22;open_desc&#x22;;
        }
        elsif ($$l =~ m{\G\&#x26;amp;})
        {
            $which_tag = &#x22;entity&#x22;;
        }                
        elsif ($$l =~ m{\G(?:&#x26;lt;/|\])})
        {
            $which_tag = &#x22;close&#x22;;
        }
        elsif ($$l =~ m{\G&#x26;lt;})
        {
            $which_tag = &#x22;open_tag&#x22;;
        }
    }
);
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
(As you can see, I assign to $which_tag inside the closure and have to declare 
it beforehand).
&#x3C;/p&#x3E;

&#x3C;pre&#x3E;
my ($sayer, $what);

($sayer) = $self-&#x26;gt;_with_curr_line(
    sub {
        my $l = shift;

        if ($$l !~ /\G([^:\n\+]+): /cgms)
        {
            Carp::confess(&#x26;quot;Cannot match addressing at line &#x26;quot; . $self-&#x26;gt;line_num());
        }
        my $sayer = $1;

        if ($sayer =~ m{[\[\]]})
        {
            Carp::confess(&#x26;quot;Tried to put an inner-desc inside an addressing at line &#x26;quot; . $self-&#x26;gt;line_num());
        }

        return ($sayer);
    }
);
&#x3C;/pre&#x3E;

&#x3C;p&#x3E;
Regex fun and declaring the two variable twice.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
As a result, I decided to get rid of this anti-abstraction and do
a simple &#x22;my $l = $self-&#x26;gt;curr_line_ref&#x22;. Now what about Lisp? In Common
Lisp, one can declare a macro to define methods that will already
have the &#x22;&#x3C;tt&#x3E;l&#x3C;/tt&#x3E;&#x22; for the current line reference variable pre-declared
and pre-assigned. Or maybe one can also temporarily rewrite the method
definition macros or add hooks for the duration of the class. So I guess this
could have been much better there, and Perl 5 is not as good as Lisp is in
this respect.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
And I want to hear mst give a talk called
&#x3C;a href=&#x22;http://shadowcat.co.uk/blog/matt-s-trout/iron-man-lost?colour=natural_hair_colour&#x26;amp;title=Patches+Welcome&#x22;&#x3E;Patches Welcome&#x3C;/a&#x3E;
(might as well pool my votes to a good cause - I hope the talk will be recorded
and there will be slides available.)
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>anti</category>
<category>perl</category>
<category>pattern</category>
<category>lisp</category>
<comments>http://community.livejournal.com/shlomif_tech/49156.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/49156.html</guid>
<pubDate>Thu, 20 May 2010 14:02:55 GMT</pubDate>
</item>
<item>
<title>Recent Hacktivity Log</title>
<link>http://community.livejournal.com/shlomif_tech/48981.html</link>
<description>&#x3C;p&#x3E;
Here is another boring recent hacktivity log, feel free to skip it. It was
motivated by &#x3C;a href=&#x22;http://perlbuzz.com/2010/04/what-are-you-working-on-in-perl.html&#x22;&#x3E;Perlbuzz&#x27;s question: &#x22;What are you working on in Perl?&#x22;&#x3C;/a&#x3E; and the
comment I&#x27;ve posted there in reply, though it&#x27;s not restricted to Perl alone.
So thanks to Andy Lester from Perlbuzz for inspiring this post.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
First of all, a note about my general status recently: I&#x27;ve been lacking
physical energy, and feel like I often cannot exercise a lot, and would rather
not travel too much outside my neighbourhood (including not to many FOSS
events). I don&#x27;t know the exact reason why. I am still motivated to work
on the computer. I also have been working primarily on code and a small amount 
of humour stuff, and not too many essays, articles and blog posts, which may
not be a bad thing, because essays and philosophical stuff may be considered
&#x22;schema-driven&#x22; (as my psychologist had put it). Besides coding, I&#x27;ve been
playing Fillomino and other games on &#x3C;a href=&#x22;http://brainbashers.com/&#x22;&#x3E;Brain
Bashers&#x3C;/a&#x3E;, playing some PySol (Freecell and Simple Simon primarily), dealing
with bug and problems in my Mandriva system as I run into them, chatting on
IRC and Instant Messaging, writing some E-mails, including some to answer the
questions of random people on various mailing lists, and doing some job 
hunting.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I turned 33 (or 21h like the &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/DOS&#x22;&#x3E;DOS
interrupt&#x3C;/a&#x3E;) on 5-May, and also attended my cousin&#x27;s birthday party on
Friday, and had a lot of fun playing ball with a different cousin&#x27;s son
at the party, and also enjoyed the food there. But on to the hacktivity:
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;Recent Hacktivity - for real this time.&#x3C;/b&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I&#x27;ve worked on &#x3C;a href=&#x22;http://www.shlomifish.org/open-source/projects/XML-Grammar/Fiction/&#x22;&#x3E;XML-Grammar-Fiction/Screenplay&#x3C;/a&#x3E; a lot recently. I&#x27;ve decided
to merge the two modules because XML-Grammar-Fiction started as a fork
of XML-Grammar-Screenplay, which was then improved, and I&#x27;ve started forward
porting its changes to X-G-Screenplay. Forward-porting the changes to 
X-G-Screenplay proved to be very not straightforward due to the fact that I
converted the X-G-Screenplay parser from being procedurally recursive to being
more stateful and incremental with O(1) function call stack.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Then I had to merge the two codebases into a few base classes and two 
specialised sub-classes. Then I merged different parts. While there were still 
some things I wanted to do in my ongoing clean-ups, I decided to upload 
version 0.1.0 to CPAN as it is, in order to get some CPAN testing, to 
&#x22;release early, release often&#x22; and because perfect is the enemy of good. I 
indeed got some CPAN testers failures indicative of bugs which I have since 
hopefully resolved.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
A bit off-topic from the question of this post, but I took a break from working
on Perl code per-ce and started working on incorporating a new feature, which I
nicknamed &#x22;flares&#x22; to &#x3C;a href=&#x22;http://fc-solve.berlios.de/&#x22;&#x3E;Freecell
Solver&#x3C;/a&#x3E;. I was able to split the code into many commits, each one passing
all the existing and possibly new tests (some of which are written in Perl 5).
Back in the early Freecell Solver 2.8.x-or-below-days, when I was less careful
and methodical, I would have just written it in one swoop and then spend many
fun hours with gdb trying to isolate and correct many bugs. But now I know
better than to do that. I still had to use gdb and other debug mechanisms, but 
this time I was able to detect the source of the bug and correct it relatively
quickly. Having automated tests rule!
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I&#x27;ve had to write some text analysis logic in ANSI C, while using only mostly
standard libc/libm functions and really wished I could have done it in Perl. I
wrote and refactored some testing code in Python/PyTAP, because I needed ctypes
to interface with the binary shared library. In the course, I&#x27;ve written some
pretty complex &#x3C;a href=&#x22;http://search.cpan.org/dist/Test-Count/&#x22;&#x3E;Test-Count (=
a CPAN module to keep track of TAP tests&#x27; counts)&#x3C;/a&#x3E; code (and enjoyed the
fact that I can source variable calculations from common modules, which I&#x27;ve
added for a previous project (which I don&#x27;t recall what it is now.)) I also
made use of a &#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Radix_tree&#x22;&#x3E;radix tree&#x3C;/a&#x3E;
building and compiling Perl 5 program that I wrote for managing Freecell
Solver&#x27;s command line arguments.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Finally, I prepared 
&#x3C;a href=&#x22;http://www.shlomifish.org/lecture/Perl/Lightning/Mojolicious/&#x22;&#x3E;a 
short presentation about the Mojolicious web-development framework&#x3C;/a&#x3E;,
which I&#x27;ve 
&#x3C;a href=&#x22;http://community.livejournal.com/shlomif_tech/47160.html&#x22;&#x3E;blogged 
about previously&#x3C;/a&#x3E;, and I end up explaining why I dislike it at the
bottom. 
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Not exactly my hacktivity but I&#x27;m glad that chromatic&#x27;s suggesting of 
porting Python&#x27;s ctypes to Perl 
&#x3C;a href=&#x22;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/tpf/t127230763807&#x22;&#x3E;has 
materialised as a Google Summer of Code project&#x3C;/a&#x3E;. I hope to assist
Ryan Jendoubi in doing this (without being intrusive.), because it
would be very cool to have something like ctypes in Perl 5.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
So that&#x27;s it, I guess. Happy upcoming 
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Shavuot&#x22;&#x3E;Shavouth&#x3C;/a&#x3E; everyone!
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>recent</category>
<category>hacktivity</category>
<category>perl</category>
<category>solver</category>
<category>freecell</category>
<category>log</category>
<comments>http://community.livejournal.com/shlomif_tech/48981.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/48981.html</guid>
<pubDate>Sun, 09 May 2010 13:46:50 GMT</pubDate>
</item>
<item>
<title>The Quest for a List of Open Source Software for Windows</title>
<link>http://community.livejournal.com/shlomif_tech/48713.html</link>
<description>&#x3C;p&#x3E;
As I was editing 
&#x3C;a href=&#x22;http://teachingopensource.org/index.php/How_to_start_contributing_to_or_using_Open_Source_Software&#x22;&#x3E;the wiki document I&#x27;ve started writing called
&#x22;How to start contributing to or using Open Source Software&#x22;&#x3C;/a&#x3E; on the
Tecaching Open Source wiki, I&#x27;ve reached the part where I instruct people
to try and use open source applications for Microsoft Windows, and was
looking for lists of FOSS for Windows. I remembered 
&#x3C;a href=&#x22;http://www.opensourcewindows.org/&#x22;&#x3E;the &#x22;Open Source Windows&#x22; site&#x3C;/a&#x3E;,
which is nice and aesthetic, but not very comprehensive, and noticed
they got rid of the second page, which contained some other programs. So I
had to find another list.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
A google search yielded many lists that were either not maintained,
disorganised, not open for easy editing, or all of them. Eventually, I decided 
to look for something in the wikipedia and got to 
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/List_of_free_and_open_source_software_packages&#x22;&#x3E;the List of free and open source software packages&#x3C;/a&#x3E;, which I was
familiar with, but was not Windows-specific. However, on its bottom
I found a link to 
&#x3C;a href=&#x22;https://help.ubuntu.com/community/ListOfOpenSourcePrograms#preview&#x22;&#x3E;the 
List of Open Source Programs (LOOP) for Windows&#x3C;/a&#x3E; on one of the Ubuntu
wikis, and this seemed like the best of breed and what I was looking for.
I was already able to login to the wiki, add some programs I was familiar
with, and do some comsetic fixes. I also added it to the document,
favourited it on StumbleUpon, and linked to it from my homepage. Now I&#x27;m
blogging about it here to publicise it.
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>open</category>
<category>perl</category>
<category>source</category>
<category>www</category>
<category>foss</category>
<category>windows</category>
<comments>http://community.livejournal.com/shlomif_tech/48713.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/48713.html</guid>
<pubDate>Mon, 03 May 2010 13:46:37 GMT</pubDate>
</item>
<item>
<title>TelFOSS Meeting Report: Sawyer about Version Control Systems</title>
<link>http://community.livejournal.com/shlomif_tech/48596.html</link>
<description>&#x3C;p&#x3E;
Here are some notes from
&#x3C;a href=&#x22;http://wiki.osdc.org.il/index.php/Tel_Aviv_Meeting_on_21_April_2010&#x22;&#x3E;the 
Tel Aviv Open Source Club&#x27;s meeting last week&#x3C;/a&#x3E;, in no particular order. 
They are not exactly a report, but are probably better than nothing. I 
originally
&#x3C;a href=&#x22;http://hamakor.org.il/pipermail/telux/2010-April/000305.html&#x22;&#x3E;posted
them&#x3C;/a&#x3E; to the club&#x27;s mailing list
and &#x3C;a href=&#x22;http://mail.perl.org.il/pipermail/perl/2010-April/010925.html&#x22;&#x3E;forwarded 
them to to the Perl-IL mailing list&#x3C;/a&#x3E;, where it sparked a small (but funny)
discussion. I hope to expand upon them in this blog post.
&#x3C;/p&#x3E;

&#x3C;ol&#x3E;
&#x3C;li&#x3E;
&#x3C;p&#x3E;
About 20-30 people came in my approximation, some of them a little late, so 
it was pretty successful. So hopefully it was a good decision to find a venue 
which can afford starting at a later hour. We&#x27;ll see if the trend of 
successful presentations can continue.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
I think I recognised most of the attendees, but there were some new faces, 
which is a good thing.
&#x3C;/p&#x3E;
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
&#x3C;p&#x3E;
Sawyer gave a very good presentation in my opinion, and I&#x27;ve learnt some 
new stuff about git there. There was some good involvement from the audience. 
Next time, I&#x27;ll try to pass the baton to a different lecturer, because I think 
Sawyer has been giving too many presentations lately, and we need to see some 
fresh blood.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
At the moment we only have one proposed presentation for June (by cool-RR / 
Ram Rachum ) and he still noted he may need to cancel. I&#x27;ve been considering
to prepare a presentation/demo about jQuery and also proposed to give a 
&#x22;Bottom Up Subversion&#x22; presentation/tutorial. I&#x27;m not a good speaker so I&#x27;d
prefer if 
someone can give it instead. We can also have a session of short, volunteered 
presentations on the spot 
(&#x3C;a href=&#x22;http://perl.plover.com/lightning-talks.html&#x22;&#x3E;lightning 
talks&#x3C;/a&#x3E; or somewhat longer.).
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Nevertheless, it would be preferable if someone will volunteer to give a 
presentation.
&#x3C;/p&#x3E;

&#x3C;/li&#x3E;

&#x3C;li&#x3E;
Some logistics about the room - there is a keyboard and a projector, but no 
screen. One can connect a laptop. The computer runs Windows , and we&#x27;re not 
sure if it has OpenOffice.org. There&#x27;s an Ethernet connection and also some
Wifi networks.
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
Sawyer mentioned the fact that from his experience creating a branch in 
Subversion (using svn copy) was time-consuming for him (&#x22;I went to prepare 
coffee&#x22;). This sounds strange to me, because branching and tagging in 
Subversion are reportedly cheap, constant-time ( O(1) ) operations, and 
I&#x27;ve verified it from what I&#x27;ve read about the Subversion internals. I often
branched the Freecell Solver&#x27;s trunk which is 26M in size and it didn&#x27;t take
more than a few seconds. svn.kde.org has many branches and each of them keeps 
the entire KDE source code and is positively huge with 100s of megabytes of 
files.
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
&#x3C;p&#x3E;
I mentioned the &#x3C;b&#x3E;mini-repository&#x3C;/b&#x3E; Subversion pattern - each with its own
trunk, tags and branches which can be seen in action &#x3C;a href=&#x22;http://svn.berlios.de/svnroot/repos/web-cpan/&#x22;&#x3E;in the Web-CPAN repository&#x3C;/a&#x3E;. This is a single 
subversion repository with several mini repositories - one  for each project. 
It can be done in git too by keeping each project in its own 
sub-directory, out of the top-level sub-directory. 
&#x3C;/p&#x3E;
&#x3C;p&#x3E;
I should note that I also eventually decided against putting the files of the 
program directly on the trunk, but rather always put them under a 
sub-directory of the trunk, so if I need to add something else, they won&#x27;t
clobber the trunk.
&#x3C;/p&#x3E;
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
&#x3C;p&#x3E;
There was a short discussion about whether version control systems are &#x3C;b&#x3E;using
databases as their repositories&#x27; back-ends&#x3C;/b&#x3E;. Someone said he wouldn&#x27;t trust
a VCS that uses an off-the-shelf database, and I&#x27;d like to comment about that.
The first thing that one should note is that like 
&#x3C;a href=&#x22;http://modperlbook.org/html/Chapter-17-Databases-Overview.html&#x22;&#x3E;&#x22;Practical 
mod_perl&#x22; notes&#x3C;/a&#x3E; many data storages are in fact databases without us really
thinking about them. Even the file-system is a database that maps filenames
to the file contents. Furthermore, Subversion requires a transactional database
for its use: it started from Berkeley DB (which is a database with some
&#x3C;a href=&#x22;http://www.oracle.com/technology/documentation/berkeley-db/db/programmer_reference/intro_dbisnot.html&#x22;&#x3E;accepted 
and deliberate philosophical limitations&#x3C;/a&#x3E;), and then got the ability
to use a backend called FSFS, which is a specialised, ad-hoc, database coded
specifically for use by Subversion; and the Subversion development team
have a distant goal of also creating an SQL-based backend for the
repository.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
That&#x27;s not all: &#x3C;a href=&#x22;http://www.monotone.ca/&#x22;&#x3E;Monotone&#x3C;/a&#x3E; has been using
SQLite since its inception as its local storage backend, and reportedly
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/IBM_Rational_ClearCase&#x22;&#x3E;ClearCase&#x3C;/a&#x3E;
is using a database called 
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Raima&#x22;&#x3E;&#x22;Raima&#x22;&#x3C;/a&#x3E;. And naturally,
I expect that even git, Bazaar, Mercurial and similar version control systems
implement a database storage of some sort internally.
&#x3C;/p&#x3E;
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
&#x3C;p&#x3E;
We discussed the 
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Simple_Simon_%28solitaire%29&#x22;&#x3E;Simple 
Simon solitaire&#x3C;/a&#x3E;, which I&#x27;ve introduced Ido (ik) to and to which he became 
addicted to lately. I&#x27;ve ranted a
bit about how &#x22;Solitaire&#x22; (or what the British call &#x22;Patience games&#x22;) is 
actually a generic name for single-player card games, and that what Windows 
calls &#x22;Solitaire&#x22; is actually just some variants of Klondike Solitaire.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
We compared and contrasted both &#x3C;a href=&#x22;http://pysolfc.sourceforge.net/&#x22;&#x3E;PySolFC&#x3C;/a&#x3E; and KDE 4&#x27;s KPatience. 
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
The one who introduced me to Simple Simon was 
&#x3C;a href=&#x22;http://www.behindkde.org/people/stephan/&#x22;&#x3E;Stephan Kulow&#x3C;/a&#x3E; of KDE 
fame, who when I told him that I&#x27;d like to adapt Freecell Solver to solve
Klondike said that &#x22;I don&#x27;t think the world is ready for that.&#x22; and then
added that he could really use a solver for Simple Simon. After playing
a few games of Simple Simon, and experimenting a little with the
fc-solve C code, I was able to create a satisfactory solver, but then I also
started to like Simple Simon and played a lot. And it was contagious as my
mother and my sisters also started to play it.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
Right now, the KPatience&#x27;s Simple Simon demo ends up in many practically
infinite loops of no apparent objective. I hope to work on converting it
to use my solver instead (which does not exhibit this problem), but it
will take some work.
&#x3C;/p&#x3E;

&#x3C;/li&#x3E;

&#x3C;li&#x3E;
About 5 of us went to eat at Spaghetim (an Italian restaurant in Ramat-Gan) 
after the meeting. Besides me, there
were two Perl programmers ( http://szabgab.com/ and Sawyer, who was the 
presenter) and two Python programmers and I was appointed as the referee. We 
were able to explain some stuff from both languages to the other party. 
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
Szabgab mentioned that when he asked some people he gave training to if 
they know Perl, they said &#x22;No, I can only read it.&#x22;, which to him seemed to 
imply that maybe Perl&#x27;s reputation as a write-only language was unfounded.
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
When we discussed Ram&#x27;s Garlicsim ( http://garlicsim.org/ ) he mentioned
that he is mostly a web contractor, but that he would prefer to be hired for
writing simulations. Then Sawyer mentioned that often an invention brings a
necessity, which reminded us of
&#x3C;a href=&#x22;http://www.shlomifish.org/philosophy/books-recommends/#guns_germs_and_steel&#x22;&#x3E;the 
book &#x22;Guns, Germs and Steal&#x22;&#x3C;/a&#x3E;. It is highly recommended. Then we discussed 
some other books by the same author and I 
ended up saying that I&#x27;ve also read 
&#x3C;a href=&#x22;http://www.shlomifish.org/philosophy/books-recommends/#bicameral_mind&#x22;&#x3E;the 
book &#x22;The Origins of Conciousness In the Breakdown of the Bicameral Mind&#x22; by 
Julian Jaynes&#x3C;/a&#x3E;, which I enjoyed and found of a 
similar interest to &#x22;Guns, Germs and Steel&#x22; because of its philosophy of 
taking a bird eye&#x27;s view of human history.
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
Also in the after-meeting, we discussed automated tests and test coverage,
and someone said that it may not be indicative of how well all the edge
cases were dealt with. For example we can test that the tests cover
the expression &#x22;z = x / y&#x22;, but it won&#x27;t warn us that we dealt with the 
case that &#x22;y&#x22; is zero, which we should. Someone noted he likes the green
indication that he has 100% test coverage. On Perlsphere 
&#x3C;a href=&#x22;http://blogs.perl.org/users/ovid/2010/03/100-test-coverage.html&#x22;&#x3E;Ovid
recently wrote that a general piece of advice is that one should not strive 
for 100% test coverage&#x3C;/a&#x3E;. 
&#x3C;/li&#x3E;

&#x3C;li&#x3E;
We saw a demo of &#x3C;a href=&#x22;http://garlicsim.org/&#x22;&#x3E;GarlicSim&#x3C;/a&#x3E; (which is
LGPLed), and its Wx-interface (which is at the moment not open source,
but has the source available for download under restrictive terms). Ram
showed us how he started a simulation where the simulator calculated a line,
and then it was possible to branch it into a different line of execution
and continue from there. He intends to continue working on GarlicSim into the
near future and then hopefully be able to give some presentations about it
to the local open-source clubs.
&#x3C;/li&#x3E;

&#x3C;/ol&#x3E;

&#x3C;p&#x3E;
To sum up, it was a great meeting, and I hope this trend will continue.
&#x3C;/p&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>israel</category>
<category>telfoss</category>
<category>foss</category>
<category>open</category>
<category>perl</category>
<category>linux</category>
<category>source</category>
<category>python</category>
<comments>http://community.livejournal.com/shlomif_tech/48596.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/48596.html</guid>
<pubDate>Tue, 27 Apr 2010 09:54:21 GMT</pubDate>
</item>
<item>
<title>&#x5E4;&#x5D2;&#x5D9;&#x5E9;&#x5EA; &#x5EA;&#x5DC;&#x5D5;&#x5E7;&#x5E1;: &#x22;&#x5DE;&#x5E2;&#x5E8;&#x5DB;&#x5D5;&#x5EA; &#x5E0;&#x5D9;&#x5D4;&#x5D5;&#x5DC; &#x5D2;&#x5E8;&#x5E1;&#x5D0;&#x5D5;&#x5EA;&#x22; &#x5D1;-21 &#x5D1;&#x5D0;&#x5E4;&#x5E8;&#x5D9;&#x5DC;</title>
<link>http://community.livejournal.com/shlomif_tech/48239.html</link>
<description>&#x3C;div dir=&#x22;rtl&#x22; align=&#x22;right&#x22;&#x3E;
&#x3C;p&#x3E;
&#x3C;a href=&#x22;http://tel.foss.org.il/&#x22;&#x3E;&#x5DE;&#x5D5;&#x5E2;&#x5D3;&#x5D5;&#x5DF; &#x5D4;&#x5E7;&#x5D5;&#x5D3; &#x5D4;&#x5E4;&#x5EA;&#x5D5;&#x5D7; &#x5D4;&#x5EA;&#x5DC;-&#x5D0;&#x5D1;&#x5D9;&#x5D1;&#x5D9; (&#x5EA;&#x5DC;&#x5D5;&#x5E7;&#x5E1;)&#x3C;/a&#x3E;
&#x5D9;&#x5D9;&#x5E4;&#x5D2;&#x5E9; &#x5E9;&#x5D5;&#x5D1; &#x5DB;&#x5D3;&#x5D9; &#x5DC;&#x5E9;&#x5DE;&#x5D5;&#x5E2; &#x5D0;&#x5EA;
&#x3C;a href=&#x22;http://wiki.osdc.org.il/index.php/Tel_Aviv_Meeting_on_21_April_2010&#x22;&#x3E;&#x5D4;&#x5D4;&#x5E8;&#x5E6;&#x5D0;&#x5D4; 
&#x22;&#x5DE;&#x5E2;&#x5E8;&#x5DB;&#x5D5;&#x5EA; &#x5E0;&#x5D9;&#x5D4;&#x5D5;&#x5DC; &#x5D2;&#x5E8;&#x5E1;&#x5D0;&#x5D5;&#x5EA; - &#x5DE;&#x5D4;, &#x5DC;&#x5DE;&#x5D4;, &#x5D5;&#x5DB;&#x5D9;&#x5E6;&#x5D3;&#x22;&#x3C;/a&#x3E;
&#x5DE;&#x5D0;&#x5EA; &#x5D9;&#x5E8;&#x5D5;&#x5DF; &#x5DE;&#x5D0;&#x5D9;&#x5E8;&#x5D9; (Sawyer) &#x5D1;&#x5D9;&#x5D5;&#x5DD; &#x5E8;&#x5D1;&#x5D9;&#x5E2;&#x5D9;, 21 &#x5D1;&#x5D0;&#x5E4;&#x5E8;&#x5D9;&#x5DC; 2010 &#x5D1;-19:00
&#x3C;a href=&#x22;http://www.shenkar.ac.il/&#x22;&#x3E;&#x5D1;&#x5DE;&#x5DB;&#x5DC;&#x5DC;&#x5EA; &#x5E9;&#x5E0;&#x5E7;&#x5E8; &#x5D1;&#x5E8;&#x5DE;&#x5EA; &#x5D2;&#x5DF; (&#x5E8;&#x5D7;&#x27; &#x5D0;&#x5E0;&#x5D4; &#x5E4;&#x5E8;&#x5E0;&#x5E7; 12)&#x3C;/a&#x3E;
&#x5D7;&#x5D3;&#x5E8; 300 (&#x3C;b&#x3E;&#x5E9;&#x5D9;&#x5DE;&#x5D5; &#x5DC;&#x5D1;&#x3C;/b&#x3E; &#x5DC;&#x5E9;&#x5D9;&#x5E0;&#x5D5;&#x5D9; &#x5D1;&#x5DE;&#x5D9;&#x5E7;&#x5D5;&#x5DD; &#x5D5;&#x5D1;&#x5D6;&#x5DE;&#x5DF; &#x5DE;&#x5D4;&#x5E4;&#x5D2;&#x5D9;&#x5E9;&#x5D5;&#x5EA; &#x5D4;&#x5E7;&#x5D5;&#x5D3;&#x5DE;&#x5D5;&#x5EA; - &#x5D0;&#x5E0;&#x5D5; &#x5E0;&#x5D9;&#x5E4;&#x5D2;&#x5E9; &#x5D1;&#x5DE;&#x5DB;&#x5DC;&#x5DC;&#x5EA; &#x5E9;&#x5E0;&#x5E7;&#x5E8; &#x5D5;&#x5D1;&#x5E9;&#x5E2;&#x5D4; 19:00)
&#x5E0;&#x5D9;&#x5EA;&#x5DF; &#x5DC;&#x5DE;&#x5E6;&#x5D5;&#x5D0;
&#x3C;a href=&#x22;http://www.shenkar.ac.il/template/default.aspx?maincat=5&#x26;amp;catid=32&#x22;&#x3E;&#x5DE;&#x5E4;&#x5D4;
&#x5E2;&#x5DD; &#x5D4;&#x5D5;&#x5E8;&#x5D0;&#x5D5;&#x5EA; &#x5D4;&#x5D2;&#x5E2;&#x5D4; &#x5D1;&#x5D0;&#x5EA;&#x5E8; &#x5E9;&#x5DC; &#x5DE;&#x5DB;&#x5DC;&#x5DC;&#x5EA; &#x5E9;&#x5E0;&#x5E7;&#x5E8;&#x3C;/a&#x3E;.
&#x5E4;&#x5E8;&#x5D8;&#x5D9;&#x5DD; &#x5E0;&#x5D5;&#x5E1;&#x5E4;&#x5D9;&#x5DD;, &#x5DE;&#x5E4;&#x5D5;&#x5EA; &#x5DC;&#x5D4;&#x5D2;&#x5E2;&#x5D4;, &#x5D5;&#x5DB;&#x5D5; &#x5E0;&#x5D9;&#x5EA;&#x5DF; &#x5DC;&#x5DE;&#x5E6;&#x5D5;&#x5D0;
&#x3C;a href=&#x22;http://wiki.osdc.org.il/index.php/Tel_Aviv_Meeting_on_21_April_2010&#x22;&#x3E;&#x5D1;&#x5D5;&#x5D5;&#x5D9;&#x5E7;&#x5D9;&#x3C;/a&#x3E;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x5D4;&#x5E0;&#x5D5;&#x5DB;&#x5D7;&#x5D5;&#x5EA; &#x5D1;&#x5D4;&#x5E8;&#x5E6;&#x5D0;&#x5D4; &#x5D4;&#x5D9;&#x5D0; &#x5D1;&#x5D7;&#x5D9;&#x5E0;&#x5DD; &#x5D5;&#x5DC;&#x5D0; &#x5E0;&#x5D3;&#x5E8;&#x5E9;&#x5EA; &#x5D4;&#x5E8;&#x5E9;&#x5DE;&#x5D4; &#x5DE;&#x5E8;&#x5D0;&#x5E9;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x5D1;&#x5DE;&#x5D9;&#x5D3;&#x5D4; &#x5E9;&#x5D9;&#x5E9;&#x5E0;&#x5DF; &#x5D1;&#x5E2;&#x5D9;&#x5D5;&#x5EA;, &#x5D0;&#x5DC; &#x5EA;&#x5D4;&#x5E1;&#x5E1;&#x5D5;
&#x3C;a href=&#x22;http://www.shlomifish.org/me/contact-me/&#x22;&#x3E;&#x5DC;&#x5D9;&#x5E6;&#x5D5;&#x5E8; &#x5E7;&#x5E9;&#x5E8; &#x5E2;&#x5DD; &#x5D4;&#x5DE;&#x5D0;&#x5E8;&#x5D2;&#x5DF;&#x3C;/a&#x3E;.
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;&#x5E1;&#x5D9;&#x5DB;&#x5D5;&#x5DD; &#x5D4;&#x5D4;&#x5E8;&#x5E6;&#x5D0;&#x5D4;&#x3C;/b&#x3E;&#x3C;/p&#x3E;

&#x3C;p&#x3E;
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Revision_control&#x22;&#x3E;&#x5DE;&#x5E2;&#x5E8;&#x5DB;&#x5D5;&#x5EA; &#x5E0;&#x5D9;&#x5D4;&#x5D5;&#x5DC; &#x5D2;&#x5E8;&#x5E1;&#x5D0;&#x5D5;&#x5EA;&#x3C;/a&#x3E;
&#x5DE;&#x5D0;&#x5E4;&#x5E9;&#x5E8;&#x5D5;&#x5EA; &#x5DC;&#x5E0;&#x5D5; &#x5DC;&#x5E2;&#x5E7;&#x5D5;&#x5D1; &#x5D0;&#x5D7;&#x5E8;&#x5D9; &#x5DB;&#x5DE;&#x5D5;&#x5EA; &#x5DC;&#x5D0; &#x5DE;&#x5D5;&#x5D2;&#x5D1;&#x5DC;&#x5EA; &#x5E9;&#x5DC; &#x5E9;&#x5D9;&#x5E0;&#x5D5;&#x5D9;&#x5D9;&#x5DD; &#x5D1;&#x5DE;&#x5E1;&#x5E4;&#x5E8; &#x5E9;&#x5E8;&#x5D9;&#x5E8;&#x5D5;&#x5EA;&#x5D9; &#x5E9;&#x5DC; &#x5E7;&#x5D1;&#x5E6;&#x5D9;&#x5DD;. &#x5D4;&#x5DF; &#x5DE;&#x5D4;&#x5D5;&#x5D5;&#x5EA; &#x5DB;&#x5DC;&#x5D9; &#x5D4;&#x5DB;&#x5E8;&#x5D7;&#x5D9; 
&#x5E2;&#x5D1;&#x5D5;&#x5E8; &#x5DB;&#x5DC; &#x5DE;&#x5E4;&#x5EA;&#x5D7;.
&#x3C;/p&#x3E;

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

&#x3C;p&#x3E;
&#x5DE;&#x5E6;&#x5D2;&#x5EA; &#x5D6;&#x5D0;&#x5EA; &#x5EA;&#x5E1;&#x5D1;&#x5D9;&#x5E8; &#x5DE;&#x5D4; &#x5D4;&#x5DF; &#x5DE;&#x5E2;&#x5E8;&#x5DB;&#x5D5;&#x5EA; &#x5E0;&#x5D9;&#x5D4;&#x5D5;&#x5DC; &#x5D2;&#x5E8;&#x5E1;&#x5D0;&#x5D5;&#x5EA;, &#x5DE;&#x5D3;&#x5D5;&#x5E2; &#x5DB;&#x5D3;&#x5D0;&#x5D9; &#x5E9;&#x5EA;&#x5E9;&#x5EA;&#x5DE;&#x5E9;&#x5D5; &#x5D1;&#x5D4;&#x5DF; (&#x5D2;&#x5DD; &#x5D0;&#x5DD; &#x5DB;&#x5E8;&#x5D2;&#x5E2; &#x5D0;&#x5D9;&#x5E0;&#x5DB;&#x5DD; &#x5D7;&#x5D5;&#x5E9;&#x5D1;&#x5D9;&#x5DD; &#x5DB;&#x5DA;)
&#x5D5;&#x5DB;&#x5D9;&#x5E6;&#x5D3; &#x5DB;&#x5D3;&#x5D0;&#x5D9; &#x5E9;&#x5EA;&#x5E2;&#x5E9;&#x5D5; &#x5D1;&#x5D4;&#x5DF; &#x5E9;&#x5D9;&#x5DE;&#x5D5;&#x5E9;. &#x5DE;&#x5E8;&#x5D1;&#x5D9;&#x5EA; &#x5D4;&#x5D3;&#x5D5;&#x5D2;&#x5DE;&#x5D0;&#x5D5;&#x5EA; &#x5D9;&#x5D5;&#x5E2;&#x5D1;&#x5E8;&#x5D5; &#x5D1;&#x5D0;&#x5DE;&#x5E6;&#x5E2;&#x5D5;&#x5EA; 
&#x3C;a href=&#x22;http://en.wikipedia.org/wiki/Git_%28software%29&#x22;&#x3E;&#x5DE;&#x5E2;&#x5E8;&#x5DB;&#x5EA; &#x5E0;&#x5D9;&#x5D4;&#x5D5;&#x5DC; &#x5D4;&#x5D2;&#x5E8;&#x5E1;&#x5D0;&#x5D5;&#x5EA; &#x5E4;&#x5EA;&#x5D5;&#x5D7;&#x5EA;-&#x5D4;&#x5E7;&#x5D5;&#x5D3; &#x22;&#x5D2;&#x5D9;&#x5D8;&#x22;.&#x3C;/a&#x3E;
&#x3C;/p&#x3E;

&#x3C;p&#x3E;&#x3C;b&#x3E;&#x5D0;&#x5D5;&#x5D3;&#x5D5;&#x5EA; &#x5D4;&#x5DE;&#x5E8;&#x5E6;&#x5D4;&#x3C;/b&#x3E;&#x3C;/p&#x3E;


&#x3C;p&#x3E;
&#x5D9;&#x5E8;&#x5D5;&#x5DF; &#x5DE;&#x5D0;&#x5D9;&#x5E8;&#x5D9; &#x5D4;&#x5D9;&#x5E0;&#x5D5; &#x5DE;&#x5E0;&#x5D4;&#x5DC; &#x5DE;&#x5E2;&#x5E8;&#x5DB;&#x5D5;&#x5EA; &#x5D5;&#x5DE;&#x5E4;&#x5EA;&#x5D7; &#x5E4;&#x5E8;&#x5DC;. &#x5D4;&#x5D5;&#x5D0; &#x5DE;&#x5E8;&#x5E6;&#x5D4; &#x5E2;&#x5DC; &#x5E7;&#x5D5;&#x5D3; &#x5E4;&#x5EA;&#x5D5;&#x5D7;, &#x5EA;&#x5D5;&#x5DB;&#x5E0;&#x5D4; &#x5D7;&#x5D5;&#x5E4;&#x5E9;&#x5D9;&#x5EA;, 
&#x5D0;&#x5D1;&#x5D8;&#x5D7;&#x5D4; &#x5D5;&#x5E1;&#x5D8;&#x5E0;&#x5D3;&#x5E8;&#x5D8;&#x5D9;&#x5DD; &#x5E9;&#x5DC; &#x5EA;&#x5DB;&#x5E0;&#x5D5;&#x5EA;. &#x5D9;&#x5E8;&#x5D5;&#x5DF; &#x5D4;&#x5E2;&#x5D1;&#x5D9;&#x5E8; &#x5D1;&#x5E2;&#x5D1;&#x5E8; &#x5D0;&#x5EA; 
&#x3C;a href=&#x22;http://wiki.osdc.org.il/index.php/Tel_Aviv_Meeting_on_28_June_2009&#x22;&#x3E;&#x5D4;&#x5D4;&#x5E8;&#x5E6;&#x5D0;&#x5D4; 
&#x5E2;&#x5DC; &#x5D3;&#x5D2;&#x5DC;&#x5D9;&#x5DD; &#x5D0;&#x5D3;&#x5D5;&#x5DE;&#x5D9;&#x5DD; &#x5D1;&#x5EA;&#x5DB;&#x5E0;&#x5D5;&#x5EA; &#x5E2;&#x5D1;&#x5D5;&#x5E8; &#x5E9;&#x5E4;&#x5D5;&#x5EA; &#x5E2;&#x5D9;&#x5DC;&#x5D9;&#x5D5;&#x5EA; &#x5D1;&#x5D9;&#x5D5;&#x5EA;&#x5E8;&#x3C;/a&#x3E; &#x5D1;&#x5DE;&#x5D5;&#x5E2;&#x5D3;&#x5D5;&#x5DF; &#x5D4;&#x5EA;&#x5DC;-&#x5D0;&#x5D1;&#x5D9;&#x5D1;&#x5D9; &#x5D5;&#x5DE;&#x5E6;&#x5D2;&#x5EA;
&#x5D0;&#x5D5;&#x5D3;&#x5D5;&#x5EA; 
&#x3C;a href=&#x22;http://moose.perl.org/&#x22;&#x3E;Moose, &#x5DE;&#x5E2;&#x5E8;&#x5DB;&#x5EA; &#x5D4;&#x5E2;&#x5E6;&#x5DE;&#x5D9;&#x5DD; &#x5D4;&#x5DE;&#x5D5;&#x5D3;&#x5E8;&#x5E0;&#x5D9;&#x5EA; &#x5DC;&#x5E4;&#x5E8;&#x5DC; 5&#x3C;/a&#x3E;
&#x5D1;&#x5DE;&#x5D5;&#x5E2;&#x5D3;&#x5D5;&#x5DF; &#x5D4;&#x5EA;&#x5DC; &#x5D0;&#x5D1;&#x5D9;&#x5D1;&#x5D9; &#x5D5;&#x5D1;&#x5DE;&#x5D5;&#x5E2;&#x5D3;&#x5D5;&#x5E0;&#x5D9;&#x5DD; &#x5D0;&#x5D7;&#x5E8;&#x5D9;&#x5DD; &#x5E0;&#x5D5;&#x5E1;&#x5E4;&#x5D9;&#x5DD;.
&#x3C;/p&#x3E;

&#x3C;hr /&#x3E;

&#x3C;p&#x3E;
&#x5D0;&#x5E0;&#x5D5; &#x5EA;&#x5DE;&#x5D9;&#x5D3; &#x5DE;&#x5D7;&#x5E4;&#x5E9;&#x5D9;&#x5DD; &#x5DE;&#x5E8;&#x5E6;&#x5D9;&#x5DD; &#x5E9;&#x5D9;&#x5EA;&#x5E0;&#x5D3;&#x5D1;&#x5D5; &#x5DC;&#x5EA;&#x5EA; &#x5D4;&#x5E8;&#x5E6;&#x5D0;&#x5D5;&#x5EA; &#x5D1;&#x5E0;&#x5D5;&#x5E9;&#x5D0;&#x5D9;&#x5DD; &#x5E9;&#x5D5;&#x5E0;&#x5D9;&#x5DD; &#x5D4;&#x5E7;&#x5E9;&#x5D5;&#x5E8;&#x5D9;&#x5DD; &#x5DC;&#x5E7;&#x5D5;&#x5D3;-&#x5D4;&#x5E4;&#x5EA;&#x5D5;&#x5D7; &#x5D5;&#x5DC;&#x5DE;&#x5D7;&#x5E9;&#x5D1;&#x5D9;&#x5DD;. &#x5D1;&#x5DE;&#x5D9;&#x5D3;&#x5D4; &#x5E9;&#x5D0;&#x5EA;&#x5DD; &#x5DE;&#x5E2;&#x5D5;&#x5E0;&#x5D9;&#x5D9;&#x5E0;&#x5D9;&#x5DD; &#x5DC;&#x5EA;&#x5EA; &#x5D4;&#x5E8;&#x5E6;&#x5D0;&#x5D4;, &#x5D0;&#x5D5; &#x5E9;&#x5D9;&#x5E9; &#x5DC;&#x5DB;&#x5DD; &#x5D4;&#x5E6;&#x5E2;&#x5D4; &#x5DC;&#x5D4;&#x5E8;&#x5E6;&#x5D0;&#x5D4; &#x5E9;&#x5DE;&#x5E2;&#x5E0;&#x5D9;&#x5D9;&#x5E0;&#x5EA; &#x5D0;&#x5EA;&#x5DB;&#x5DD;, &#x5E0;&#x5E9;&#x5DE;&#x5D7; &#x5DC;&#x5E9;&#x5DE;&#x5D5;&#x5E2; &#x5DE;&#x5DE;&#x5DB;&#x5DD;. 
&#x3C;/p&#x3E;
&#x3C;/div&#x3E;</description>
<author>Shlomi Fish ( shlomif@iglu.org.il )</author>
<category>version control</category>
<category>vcs</category>
<category>social</category>
<category>perl</category>
<category>scm</category>
<category>rcs</category>
<category>telux</category>
<category>telfoss</category>
<comments>http://community.livejournal.com/shlomif_tech/48239.html</comments>
<guid isPermaLink="true">http://community.livejournal.com/shlomif_tech/48239.html</guid>
<pubDate>Thu, 15 Apr 2010 20:59:27 GMT</pubDate>
</item>
</channel>
</rss>