Shlomif's Technical Posts Community [entries|archive|friends|userinfo]
Shlomif's Technical Posts Community

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| Shlomi Fish's Homepage Main Journal Homesite Blog Planet Linux-IL Amir Aharoni in Unicode open dot dot dot ]

New Vim Plugin: Add to Word Search [Apr. 24th, 2012|10:51 am]

shlomif
[Tags|, , , , ]
[Current Location |Home]
[Current Mood |lazylazy]
[Current Music |Lutricia McNeal - Stranded]

I’ve released a new plugin for the Vim text editor, called "add-to-word-search" ( GitHub repository, Vim Scripts page), and I’d like to introduce it here. If you like Vim, please let me know what you think by commenting below.

In order to properly introduce the plugin, one first should introduce the different (and useful) commands of Vim of * and #. What they do is search forward or backward for the complete word under the cursor (or somewhat before it or after it). Bram Moolenaar (the creator of Vim) covers them in his “Seven habits of effective text editing” document (there’s also a video available), and I think I covered them in a previous Vim tip.

Now, here is the use case that often bugged me: sometimes I searched for a certain function, found it in the text and then found a function that called this function (or often in the case of C code, a preprocessor macro that wrapped it), and wanted to look for its occurrences as well as those of the previous term. I wasn't aware of any good way to do it, so I ended up writing the “add-to-word-search” plugin.

After installing it, and after having searched for a word using * or #, one can press \** to search forward for an additional word under the cursor (or \## to search backward), and then use it more times to add additional words.

After publishing this plugin and mentioning it on #vim, “ironcamel” reported an issue that it gives an error if you have set nowrapscan. I fixed it, but was only able to do so by temporarily disabling nowrapscan, and then enabling it if it was previously enabled. (Apparently, vimscript’s exception-handling cannot handle some of the built-in errors.)

I also demonstrated it to my (now former) co-worker, who had been trying to get used to Vim, and he said it looked useful, but asked if there was an easy way to remove terms from the search query (which there is not at the moment), and I noted it may be a good idea.

Anyway, this Vim plugin is open-source and available under the MIT/X11 licence. Enjoy!

Link2 comments|Leave a comment

Vim Tips: scp URLs, "set tabpagemax" and fixing C indentation [Feb. 18th, 2012|06:24 pm]

shlomif
[Tags|, , , , , ]
[Current Location |Home]
[Current Music |Simple Minds - Don't You Forget About Me (Live)]

Here are some Vim tips I ran into recently. First of all, when opening scp:// URLs, one should use two slashes after the hostname instead of 1, like scp://hostname//home/myuser/foo.txt instead of scp://hostname/home/myuser/foo.txt. I don’t know why that is the case, but it does not work properly without it. It also seems that netrw is buggy as it displays an irritating grey line on the cursor, the syntax highlighting tends to be off and saving a file displays several lines at the bottom.

Another tip is that gvim limits the number of tabs it opens when doing gvim -p [file1] [file2] [file3]. As a result, it is possible that not all files will be opened. If you want to change it you can set set tabpagemax in your .vimrc.

Finally, I noticed that Vim c-indentation tends to indent parameters to functions on subsequent lines using 8 spaces instead of 4 by default. I was able to change it to 4, which is my preference by adding set cinoptions+='(0,W4' to my .vimrc. There is plenty of other nifty stuff available in the cinoptions parameter.

Enjoy!

Link2 comments|Leave a comment

git tip: adding remotes to .git/config [Jan. 22nd, 2012|06:33 pm]

shlomif
[Tags|, , , , ]
[Current Location |Home]
[Current Music |Yehuda Poliker - Hat'halah Hadashah (A New Beginning)]

When working with the git version control system and editing .git/config to add a new remote, some people may be tempted to copy and change the origin remote that reads something like:

[remote "origin"]
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = git@github.com:shlomif/perl.git

However, note that origin also appears at the fetch = and needs to be changed there as well, or else all the branches will be placed in remotes/origin. Maybe there's a better way to add a new remote using the git config commands.

Otherwise, I should note that there doesn't seem to be a consensus among git users whether git pull --rebase is better than a simple git pull: the perl people told me to use --rebase and the Amarok people and someone on Freenode's ##programming told me not to use it. Now I'm just confused.

Link5 comments|Leave a comment

Tel Aviv Perl Mongers Meeting on 28 December, 2011 [Dec. 24th, 2011|06:52 pm]

shlomif
[Tags|, , ]
[Current Location |Home]
[Current Music |Yachar - 01 - El Sol siempre vuelve a brillar (from Jamendo.com)]

(The Hebrew text will be followed by an English one).

שימו לב לשינוי במיקום! זהו הבניין שבו קיימנו את מפגשי שוחרי הפרל התל-אביביים בהתחלה, ולא זה ששימש עבור מספר פגישות לאחרונה.

ב-28 בדצמבר 2011 (יום רביעי) נערוך את מפגש הפרל החודשי שלנו, והפעם הוא יהיה מיוחד! אנו נפגשים ב-18:30 ומתחילים ב-19:00. כתובת: מכללת שנקר, בניין ראשי ברחוב אנה פרנק, רמת גן, חדר 300.

פרטים נוספים ניתן למצוא באתר של שוחרי הפרל של תל אביב.

במפגש זה יהיו ההרצאות הבאות:

  • ויזואליזציה של המוח של וים - רן עילם - אהבתם אותו ב"תשתיות לפיתוח משחקים בעזרת SDL, Moose ו-Coro", בכיתם בעקבות הביצוע שלו במפגשים אחרי ההרצאות, ותעריצו אותו לחלוטין ב"ויזואליזציה של המוח של וים". האגדה החיה רן עילם ירצה לנו (מתחילים ומומחים כאחד) על וים (Vim) ועל כיצד לעכל את החיה הזאת. מילת אזהרה: שתי השורות הראשונות בקהל יפגעו מלהבות חוצבות כנגד אימקס (Emacs).

  • צרור מודולים שהיה הגיוני לכתוב - סוויר אקס: אני הולך לסקור מספר מודולים לשימושי שכתבתי, מדוע הם נכתבו, ומתי הם שימושיים. בסוף תצטרכו לשפוט אם היה זה בכלל כדאי לכתוב אותם. יהיו גם קלפיות של הצבעה! (אנחנו נכסה את Algorithm::Diff::Callback, App::Genpass, Data::PowerSet::Hash ו-Module::Version.)

  • לשדרג או לא לשדרג - פרל 5.6 כנגד פרל 5.14 - עידו קנר כנגד סוויר אקס: מקור גדול של דאגה בקהילת משתמשי הפרל היא האם להשתמש בגרסה עדכנית של פרל ואיזו גרסה צריכה להיחשב "ישנה מדי". מצד אחד, יש לנו את ההנהלה שרוצה עד כמה שפחות עלות ושינויים (ולפעמים גם מנהלי המערכות רוצים בכך), ומצד שני המפתח שרוצה להשתמש בטכנולוגיות החדשות ביותר, ופעמים רבות תקוע במערכות שאבד עליהן כלח.

    לאור שיקול רציני זה, אנו הולכים, איש בתורו, לתקוע מקל אחד בשני, כשאנו חובשים כובעים מצחיקים, ולדון את הלא מאמינים והכופרים לגיהינום עד שידגלו בצד אחד: 5.6 או 5.14!

המפגש הוא חינמי וכולם מוזמנים. נתראה שם!

English Version

Please note the change of venue. This is the building where we started having TA.pm, and not the one which we used for some of the recent meetings.

On 28 December, 2011 (Wednesday), the Tel Aviv Perl Mongers will hold their monthly meetup, and this time it is going to be special. We meet at 18:30 and the talks begin at 19:00. The address is: Shenkar College, main building on Anna Frank street, Ramat Gan, Room 300.

One can find more details on the web-site of the Tel Aviv Perl mongers.

This meeting will hold the following talks:

  • Visualizing the brain of Vim by Ran Eilam - You loved him in "Game frameworks with SDL, Moose and Coro", you cried over his performance in the after-meeting get-togethers, and you will absolutely adore him in "Visualizing the brain of Vim". All-star legend Ran Eilam will talk to us (both beginners and experts) about Vim and how to fathom this incredible beast. I warn you, the first two lines in the audience will be damaged by Emacs flames.

  • A bunch of modules which made sense writing - by Sawyer X: I'm going to cover some utility modules I've written, why they were written and when they are useful. At the end, you'll have to judge whether they were worth writing at all. There will be voting booths available! (We'll cover Algorithm::Diff::Callback, App::Genpass, Data::PowerSet::Hash and Module::Version.)

  • To upgrade or not to upgrade, Perl 5.6 vs. Perl 5.14 - ik vs. Sawyer X: A source of great concern in the Perl users community is whether to use an up-to-date Perl and what version should be considered "too old". On one hand, we have the management that wants as little cost and changes as possible (sometimes along with systems administrators), and on the other hand, the developer who wants to use the latest technologies, and is often stuck on obsolete systems.

    In light of this serious consideration, we're going to take turns poking at each other with a stick, wearing funny hats, damning the unbelievers and heretics until they submit to one side: 5.6 or 5.14!

The entrance to the meeting is free-of-charge, and everyone are welcome to attend. See you there!

LinkLeave a comment

Recommendation and Tip: The QUnit JavaScript Automated Tests Library [Sep. 5th, 2011|04:57 pm]

shlomif
[Tags|, , , , , , , ]
[Current Location |Home]
[Current Music |Shfiyuth Zmanith - Haqayitz Ha'aharon (The Last Summer)]

I've begun working on a JavaScript port of some algorithmic perl code, to allow it to run inside a browser. As a result, I had to find a good JavaScript automated tests library to allow me to write automated tests for the code. I first looked at Test.More and Test.Harness from JSAN (the JavaScript Archive Network) but as it turned out, JSAN was defunct, and no one had time to mark it as such. Then I asked the “Test.Run” developer (another thing I had found on jsan) to instruct me how to get it up and running, and he gave me a link to its archive, which was 1.5 mb compressed (!), and so was not acceptable.

I looked at the Wikipedia list of unit testing frameworks, but there were too many. at least I understood that jsUnit was no longer actively maintained. I looked at Jasmine, which is a bdd framework for JS, but its syntax seemed too horrid and unnatural.

Eventually, I decided to ask for recommendation on Stack Overflow and, as after I wrote my title, I found a a previous question, where there was a recommendation of QUnit, which I noticed was developed by the jQuery people, and as I'm fond of jQuery, I decided to look deeper into it.

I wasn't disappointed by QUnit - it does what it does well, and I was able to write my test suite using it, so I can recommend it as well. It has primitives that are very similar to perl's Test::More, and it can even assert that the number of assertions ran within a test are right (like Test::More can).

So here's a tip for it: if you're writing your testing code in a different file, and you wish to check that no compile-time or run-time exception was thrown (which will cause qunit to report a success with zero assertions) you should wrap the testing code in a try { .. } catch block and in the catch block, run ok(false...).

Here's an example from my code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ABCPath Test</title>
<script src="jquery-latest.js"></script>
<link rel="stylesheet" href="qunit.css" type="text/css" media="screen" />
<script type="text/javascript" src="qunit.js"></script>
<script type="text/javascript" src="joose.mini.js"></script>
<script type="text/javascript" src="abc-path.js"></script>
<script type="text/javascript" src="abc-path-test.js"></script>

  <script type="text/javascript">
      $(document).ready(function () { 
          try {
              test_abc_path();
          }
          catch (err) {
            module("Meta");
            test("global_failure", function() {
                ok (false, 'test_abc_path() has thrown an exception or is invalid.');
            });
          }
          // Hide passed tests by default.
          $('#qunit-tests').addClass('hidepass');
      });
  </script>
  
</head>
<body>
  <h1 id="qunit-header">QUnit example</h1>
 <h2 id="qunit-banner"></h2>
 <div id="qunit-testrunner-toolbar"></div>
 <h2 id="qunit-userAgent"></h2>
 <ol id="qunit-tests"></ol>
 <div id="qunit-fixture">test markup, will be hidden</div>
</body>
</html>

Enjoy.

LinkLeave a comment

Tel Aviv Perl Mongers Meeting on 31 August, 2011 [Aug. 29th, 2011|01:16 pm]

shlomif
[Tags|, , ]
[Current Location |Home]
[Current Mood |productive]
[Current Music |Vodoo Wars Game OST - A Long Way (from Jamendo.com)]

(The Hebrew text will be followed by an English one).

ב-31 באוגוסט 2011 (יום רביעי) נערוך את מפגש הפרל החודשי שלנו! אנו נפגשים ב-18:30 ומתחילים ב19:00. כתובת: מכללת שנקר, בניין מיטשל, רמת גן, חדר 2106. (שימו לב לשינוי בכתובת מפעמים קודמות.). במפגש זה נשמע הרצאות אודות מערכת ניהול הגרסאות git.

פרטים נוספים ניתן למצוא באתר של שוחרי הפרל של תל אביב

במפגש זה יהיו ההרצאות הבאות:

  • Git - Git הינה מערכת ניהול גרסאות מבוזרת. היא מהווה כלי שימושי למפתחים ומתפשטת כמו אש, בשל טבעה השימושי, והשימוש שנעשה בה בפיתוח הגרעין של לינוקס, ספריות ותוכנות קוד פתוח רבות, ובתוך מספר רב של ארגונים. בכוונתי ללמד אותו. (סוייר - 40 דקות).

  • Gitflow - Gitflow הינו כלי מעטפת שימושי שמאפשר לכם להסדיר תהליך פיתוח יותר מובנה, הלוקח בחשבון תכונות, גרסאות היוצאות לאור, תיקונים חמים ועוד. הוא שימושי מאוד כאשר מספר מפתחים עובדים עובדים על התוכנה בשילוב משלב, צוות בקרת איכות, צוות פיתוח, וכן הלאה. בכוונתי להדגים גם אותו! (סוייר - 40 דקות).

המפגש הוא חינמי וכולם מוזמנים. נתראה שם!

English Version

Please note the change of venue. We're moving to the next adjacent building to where we were. You can use the original entrance or use the listed address.

On 31 August, 2011 (Wednesday), the Tel Aviv Perl Mongers will hold their monthly meetup. We meet at 18:30 and start at 19:00. The address is: Shenkar College, Mitchel building, Yeda Am 8, Ramat Gan, Room 2106. The theme of this meeting will be the git version control system.

One can find more details in the web-site of the Tel Aviv Perl mongers.

This meeting will hold the following talks:

  • Git - Git is a decentralized code revision management system. It's becoming a valuable tool for developers (whether programmers, designers, or other) and is spreading like fire due to its useful nature, being used in the Linux Kernel development, many free software libraries and programs and many organizations alike. I intend to teach it to you. (Sawyer - 40 minutes).

  • Gitflow - Gitflow is a useful wrapper tool to allow you to set a more streamlined development process, taking into account features, releases, hot fixes and more. It's very useful when using multiple developers with an integrator, a QA, a dev team, and so on. I intend to showcase it as well! (Sawyer - 40 minutes.)

The entrance to the meeting is free-of-charge and everyone are welcome to attend. See you there!

LinkLeave a comment

Your Programming Language Must Suck [Apr. 13th, 2011|12:48 pm]

shlomifish
[Tags|, , ]
[Current Location |Home]
[Current Music |Arik Sinai - My Town]

All languages of the world suck. If you require people to declare variables (like in Pascal, C, Scheme or Perl 5 with strict), then people will tell you they like variables to spring up upon first use. Without variable declarations, then you get various weird side-effects of the implicit scoping. If you use curly braces for scoping, then you'll have to type more and there's more clutter. With indentation-based scoping (like in Python), you'll find it hard to introduce multiple-expression lambdas.

Rob Pike and Paul Graham hated object oriented programming (OOP) and so they didn't introduce it in their "Go" and "Arc" languages, well after OOP has become mainstream. And guess what? Many people, including me, think that OOP is still a good thing (and no, in my opinion, C++ did not do OOP very well) and so gave up on Arc quickly and did not look closely at Go. Many people who oppose OOP claim that it mashes together many separate feature, such as typing, capability of being instantiated, and polymorphism which belong as separate features in the language, but naturally it is convenient to have them integrated as one, because they are often useful together.

Dynamically typed languages (like Perl 5, Python, Ruby, or Lisp) possibly suffer from many subtle errors ; Statically typed languages (like Haskell) are less expressive and it seems that about one third of the language design papers published on Lambda the Ultimate are about various funky extensions to the Haskell type system to allow for better expressiveness.

Purely functional languages have no assignment and most people find them harder, in part because the world around us has a lot of state, and they also need to do funky compiler tricks to make you feel like you don't need assignment. Non-functional languages have side-effects and so are prone to many errors.

If you have goto or goto-like statements (such as exceptions or Perl 5's "last LABEL;" (more like "break" in C) or "next LABEL;"), then you encourage code to not be factored correctly. If you don't have such stuff, then programmers will hate you for having to go through many hoops to write quick-and-dirty code.

Perl 5 has a dedicated regular expression syntax which is treated magically by the parser. PHP and Java use strings for them, and require weird escaping and backslashing rules to interpolate the sub-regexes inside them. And if you incorporate a first-order syntax for regular expressions, then people will want similar first-order syntaxes for XPath, for XML (like some recent versions of Visual Basic .NET have), and for all other grammars you may need to embed.

Finally, many people absolutely hate all the clutter created by the leading sigils of Perl 5 (the "$", "@", etc.), and similar languages, but they allow for much better backward compatibility, facilitate the so-called "interpolation" (= embedding inside strings), and also give some important visual cues when skimming code (even without syntax highlighting).

You are damned either way, whatever you do.

I could have gone on, but I think I got my message across. Thing is, when designing a programming language, you need to make a lot of design decisions - what to include, what to exclude, etc. However, many of these design decisions are not 100% advantages or 100% disadvantages, but in fact trade-offs, and many people will question them and be unhappy. You can never please all the people. So make a design decision, and stick with it, and realise that your programming language must suck, but that it may suck less for some tasks, or for some people.

Joel on Software refers to the book Small Things Considered: Why There Is No Perfect Design, which I have not read, but I've concluded it holds for programming language design. Moreover, even when writing code, we run into many trade-offs. For example, if our methods or functions are very short, then they are easier to over-ride and re-use, but, in that case, the code would be harder to follow and will perform worse than code with longer methods.

LinkLeave a comment

Speeding Up Bulk SQLite Inserts [Apr. 8th, 2011|10:29 pm]

shlomif
[Tags|, , , , , ]
[Current Location |Home]
[Current Music |Betty Everett - You're No Good]

This is a tip on how to speed up bulk inserts in SQLite. In case, you don't know SQLite is an SQL database implemented as a small, yet very fast library, which, accesses everything from the file-system. Furthermore, it is open-source, public domain, and reliable.

Recently, I wanted to create a server-side script to individually display my fortune cookie quotes - each on its own page based on its ID. In order to speed up the lookup, I decided to store everything in a database, be it the raw file-system, something like Berkeley DB or Tokyo Cabinet, or an SQL-based database. I ended up using SQLite, which worked pretty well.

I've written a program to populate the database by parsing the data from the XML source files and extracted the data from there. I prepared an INSERT statement:

my $insert_sth = $dbh->prepare(<<'EOF');
INSERT INTO fortune_cookies (collection_id, str_id, title, text)
VALUES(?, ?, ?, ?)
EOF

(It started a bit simpler, but that's what I have now.)

And then I executed it for each record. It took a lot of time to complete - many minutes. So I consulted #perl about it and got a few suggestions:

  1. That I should disable the so-called “shared database” mode, which is the default SQLite mode that assumes other processes on the machine might access the database.

  2. That I should turn off Autocommit and commit in batches with more than one record in each in every transaction.

The number two option seemed the most likely, and I tried commiting in batches of 50 records each and it made the populating program finish in a few seconds. So I was very happy.

I guess I can try the shared database mode later on, since I populate the database offline. Now the program for displaying every quote individually is working nicely, and I am very happy. Thanks to the #perl people for helping me again.

Link3 comments|Leave a comment

Tel Aviv Perl Mongers Meeting on 30 March, 2011 [Mar. 23rd, 2011|05:10 pm]

shlomif
[Tags|, , , , , ]
[Current Location |Home]
[Current Mood |productive]
[Current Music |Berry Sacharof - Mefaneh Maqom (= "Clearing off space")]

(The Hebrew message will be followed by an English one).

ב-30 למרץ (יום רביעי) נערוך את מפגש הפרל החודשי שלנו! אנו נפגשים ב-18:30 ומתחילים ב19:00. כתובת: מכללת שנקר, אנה פרנק 12, רמת גן. חדר 323. במפגש זה נדון במספר נושאים של תצוגה: גופנים ויצירת משחקים גרפיים!

פרטים נוספים ניתן למצוא באתר של שוחרי הפרל של תל אביב

במפגש זה יהיו ההרצאות הבאות:

  • טיפוגרפיה… מה לעזאזל? (או "הבנה ושימוש נכון") -- Miss Ferret
    הגיע הזמן להכניס קצת צבע לחיים. נסביר מהי טיפוגרפיה ולמה בחירת הגופן שלנו חשובה.
  • תכנות משחקים גרפיים בעזרת פרל -- רן עילם
    אוהבים משחקים? רוצים לכתוב אחד? רן יראה לנו את הפרוייקט האישי שלנו, משחק שנכתב בפרל בעזרת הספריה הגרפית SDL.

בנוסף, יהיו גם הרצאות בזק (הרצאות קצרות ומשעשעות):

  • רובי למתכנתי פרל -- עידו קנר
  • פרל אנליטית "use" vs. "require" -- סוייר

המפגש הוא חינמי וכולם מוזמנים. נתראה שם!

English Version

On 30 March, 2011 (Wednesday), the Tel Aviv Perl Mongers will hold their monthly meetup. We meet at 18:30 and start at 19:00. The address is: Shenkar College, Anna Frank 12, Ramat Gan, Room 323. The theme of this meeting will be several topics of display: fonts and creation of graphical games!

One can find more details in the web-site of the Tel Aviv Perl mongers.

This meeting will hold the following talks:

  • "Typography… what the hell?" (or "understanding fonts and using them properly") by Miss Ferret.

    It's time to enliven our lives. We'll explain what is Typography and why picking up a font is important.

  • Programming graphical games using Perl - by Ran Eilam.

    Do you love games? Want to write one? Ran will show us his personal project, a game that was written in Perl using the multimedia and games library SDL - Simple DirectMedia Library.

In addition, there will be some lightning talks (short and entertaining presentations):

  • Ruby for Perl programmers - by Ido Kanner
  • Analytical Perl - "use" vs. "require" - by Sawyer

The entrance to the meeting is free-of-charge and everyone are welcome to attend. See you there!

LinkLeave a comment

Finished Projects, Maintained Projects and Those that are Up For Adoption [Mar. 12th, 2011|10:29 pm]

shlomif
[Tags|, , , , ]
[Current Location |Home]
[Current Mood |calmcalm]
[Current Music |Magdalen Graal - Together (from Jamendo.com)]

This is another boring braindump.

First of all, let me point you in the direction of my shiny new blog titled "Unarmed but Still Dangerous" and subtitled "Changing the world one post at a time". It is a blog of essays and possibly also insightful fiction (we'll see), from a programming enthusiast (so-called software "hacker") intended for programming enthusiasts, not necessarily focusing on computing topics, but kinda assumes being somewhat tech-savvy or knowledgeable about technology. I successfully Slashdotted the first real post about coping with provocative people on the Internet using the "Verbal Judo" technique from the book "Feeling Good" by David Burns (and also tried to digg it with less success), and from there it hit many other news sites, blogs, microblogs, and forums, until someone asked me if I announced it on every possible news sites (which I didn't). Other people have told me on IM or IRC and elsewhere that they've heard about it and either liked it and/or had some reservations from it.

I used the shop-worn Perl vs. Python debate as a test case there (though maybe it was a bit too geeky), which I think added to the humour of the post.

I got some comments there (some of them were ironically provocative), and I enjoyed the attention. I think publishing the post and Slashdotting it actually made me a bit calmer, because I was anxious to already do it. I hope this post gets more geeks interested in "Feeling Good" and in Cognitive Therapy in general, which I found to be very insightful and helpful and useful in avoiding or dealing with many frustrations.

I still plan on keeping the more technical (and thus more dry) discussion on "shlomif-tech". (At least until I find or get a better venue).

Back to the topic: some days ago I was chatting on Freenode when someone asked me that:

Shlomi, have you completed your [Freecell] solver at last? ;)

He may have said it tongue-in-cheek, but I'd like to answer it seriously. The way I see it there are several kinds of projects as far as their "hacktivity" status is concerned. Some of them are actively maintained and enhanced, possibly by many members. Some of them still have a maintainer, but are in "deep maintenance mode". Some of them just accumulate bug reports and feature requests without someone to adopt them. Some of them are dead and no one cares too much about, because people have mostly used other programs instead.

In the case of my Freecell solver, it's a bit more complicated. I haven't completely lost interest in working on it, and there's still a lot of room for improvement, but I often feel like I have better things to do than to work on it, because it is already good enough for most of my needs and the needs of most other people. So far my attempts at finding an enthusiastic co-developer (or even primary developer) for it failed to a large extent, though some of the people who attempted to contribute, proved to have contributed to the project's success to an extent as well. Freecell may also be losing some popularity among the younger generation, in part because Microsoft now includes many other games in its operating systems (which is overall a good thing, because shipping an operating system with only four built-in games is a joke.). While a lot of the older people I told about the fact that I've authored a solver for Freecell (including some attractive girls), were impressed by it, I think most of the youngsters are not too excited about Freecell, despite the fact that Freecell solving is very interesting from the computer science, software engineering and artificial intelligence point-of-view.

Moreover, I've been getting the feeling that many of the relatively small-scoped projects I've started and released as open-source, are only used by me. An example for that may be XML-Grammar-Fiction, in which I've recently found some stupid bugs, and, which, while some people may find interesting, only addresses a very small niche. There is some advantage to releasing a program as "shrinkwrap", but I guess it's not what people always want. CPAN and Freshmeat.net appear to have quite a lot of similar software, which many people don't use.

Now, I have some projects which I've decided that I've lost interest or am no longer qualified to do. One of them is the Better-SCM site which proved to host several popular resources, including its comparison. Lately, I've felt that I'm both under-qualified to maintain it, as well as lack the interest to do so. If you'd like to volunteer to do it, give me a shout.

Regarding Perl-Begin, I'm still improving it as I run into things there, but now think that in order to facilitate contributions from other people, I'd like to convert its Subversion repository to a distributed version control system (DVCS) - either git or Mercurial (although I believe they both can interoperate pretty well) - and to host it on Github, Gitorious, or Bitbucket.org where it will be easier to collaborate on it. I personally find Mercurial more intuitive and faster and more flawless to work with, but most Perl people and programmers in general appear to prefer git and Github. I'll see about it.

Another project is the Graph-Easy CPAN module. The problem with it is that I lack the tuits and the competency to maintain it, and it keeps accumulating bugs and bug comments (many of them are real) without me being able to do anything about it. I've became a co-maintainer for it because I used it in one of my projects, and am no longer actively interested in it, and find it intimidating.

Most of my other software projects are either in deep maintenance mode, in planning/dreaming stages, were not released yet or still have room for improvement, but too little motivation and the fact I don't have an immediate use for these features and no one asked for them. Maybe I should look at contributing to some projects with many other people there such as GIMP, which I've contributed to in the past and could use a lot of work (though its main problem is the hostility of some of the core developers).

In the "Cathedral and the Bazaar", which set forth the case for the "Bazaar model" of open source development, Eric S. Raymond mentions the story of how he came to adopt what later would become fetchmail:

But Carl Harris's attitude was even more important. He understood that

5. When you lose interest in a program, your last duty to it is to hand it off to a competent successor.

Without ever having to discuss it, Carl and I knew we had a common goal of having the best solution out there. The only question for either of us was whether I could establish that I was a safe pair of hands. Once I did that, he acted with grace and dispatch. I hope I will do as well when it comes my turn.

Raymond continued to improve and maintain "popclient→Fetchmail" for a long time, before and after he has written "the Cathedral and the Bazaar", but ended up passing its active maintenance to different maintainers. This is indicative of hacking maturity on Raymond's role. I hope to follow his lead when the day come for me to pass the ongoing maintenance of the various projects I maintain, even those that I've written extensively about (such as the various essays I've written about Freecell Solver) or brought me a significant amount of esteem, fame, and/or recognition. I hope you will too, one day.

Link1 comment|Leave a comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]