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 ]

Joke: “NSA Facts” [Feb. 6th, 2013|08:28 am]

shlomif
[Tags|, ]

Yesterday, I had the idea of creating some “facts” about the NSA - the United States National Security Agency, similar to the Chuck Norris Facts meme. And I got some pretty good factoids so far, which I will share here:

  • The NSA doesn't publish. They perish.
  • The NSA employs the largest number of mathematicians with Ph.D. And the most stupid and incompetent ones.
  • The NSA has a patent for an efficient process for collecting a lot of information and doing nothing with it.
  • The Bajoran scholars have positively identified Benjamin Sisko as The Emissary. They also positively identified the NSA headquarters as The Dungeon.
  • One of Buffy the Vampire Slayer’s episodes took place in the NSA headquarters, but had to be destroyed, because all of the test audience had uncontrollable panic attacks.
  • The NSA knows what you did last summer. But no one, in the NSA or outside it, knows why they should.
  • The more the NSA think, the less they want to be able to think. So they think less and less.

Hope you enjoyed it and naturally - “ha ha, only serious!”. Now the ball is in your court - can you think of more? Put them in the comments below.

Happy NSA bashing!

LinkLeave a comment

Invitation for the Israeli Perl Workshop 2013 - 25 February 2013 [Jan. 24th, 2013|08:46 pm]

shlomif
[Tags|, , , ]
[Current Mood |accomplished]

Israeli Perl Workshop 2013 - 25 February 2013

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

סדנת הפרל הישראלית לשנת 2013 תתקיים ב-25 בפברואר, 2013. זהו כנס יומי שיתקיים במכללת שנקר ברמת-גן. לעיונכם נתונה רשימת המצגות שתינתנה בסדנה, בה יהיו שני מסלולים.

הפעם יידרש תשלום עבור הכנס, כדי לכסות את ההוצאות, ויש צורך להירשם (בקישור), אז הקדימו להירשם היום. בנוסף, אם אתם, או חברה מסחרית אחרת שאתם מכירים מעוניינים לתת חסות לסדנה, אנא פנו למארגניה.

הפעם סימן הכנס הוא "פרל מעשית" (Perl in Practice) ואנו מקווים שרוב ההרצאות בכנס תהיינה על יישומים מעשיים שנכתבו או יכתבו בשפת פרל.

פרל הינה שפת תכנות דינמית וחזקה שנמצאת תחת פיתוח פעיל, ושיש לה מאגר הרחבות פעיל ופורה בשם CPAN (Comprehensive Perl Archive Network). דף הבית של שוחרי הפרל הישראליים מכיל מידע נוסף וקישורים נוספים לגבי הפעילות של חובבי השפה בישראל.

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

English Version

The Israeli Perl Workshop of 2013 will take place on 25 February, 2013. It will be a daily conference which will take place in Shenkar College in Ramat Gan. One can view the list of talks that will be given in the conference, where there are going to be two tracks.

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

Perl is a dynamic and powerful programming language which is under active development, and which has an active and comprehensive extension repository called CPAN (Comprehensive Perl Archive Network). The home page of the Israeli Perl Mongers contains other information and more links about the activity of Perl's Israeli enthusiasts.

This year's conference will sport some guests from abroad, including Larry Wall, who is known as the creator of the Perl programming language (and some earlier software projects such as the original patch program for UNIX), 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.

Everyone is welcome to attend.

LinkLeave a comment

Announcing the Vim Beginners’ Site [Dec. 30th, 2012|02:48 pm]

shlomif
[Tags|, , ]

I am glad to announce that I, along with some help from some other people, have set up the Vim Beginners’s Site - http://vim.begin-site.org/ (or Vim-Begin for short). It aims to be a centrally managed, yet fully open content/open source site, for concentrating the Internet’s best material for learning about the Vim text editor and expanding one’s knowledge. The site was inspired by the Perl Beginners’ site (or “Perl-Begin” for short), and I set up the domains begin-site.org (and begin-site.com as a future redirect) to concentrate other similar high-quality sites introducing people to various technologies and topics. So if you want python.begin-site.org, emacs.begin-site.org, linux.begin-site.org, dotnet.begin-site.org, cooking.begin-site.org etc. then contact me and I’ll see what I can do.

The site is incomplete, and there's still a lot to do, but we have a Bitbucket mercurial repository, an issue tracker there, a TODO list, and we accept pull requests. The text for the site’s pages is under the Creative Commons Attribution 3.0 licence (unless noted otherwise) and whatever original source code is found there is under the MIT/X11 licence, and both were chosen to allow for maximal reuse. Nevertheless, we may mirror, restore, or link to, resources under different licences.

Cheers, happy new year, and happy Vimming!

LinkLeave a comment

Tech Tip: Overriding the Audio Track of a Video using ffmpeg [Dec. 10th, 2012|06:58 pm]

shlomif
[Tags|, , , ]

In this tip I will cover how to use ffmpeg to override the audio track of a video from a different audio track (such as the one in a WAV, an OGG or an MP3 file). To do that use the following recipe (based on this out-of-date blog post and some help from ubitux on #ffmpeg, with a lot of trial and error):

ffmpeg -i in_audio.wav -i in_video.ogv -map 0:0 -map 1:1 -shortest \
    -c:a libvorbis -q:a 7 -c:v copy output.ogv

Some of these files are not needed if you're not dealing with Ogg Video files. -shortest is useful for making sure that the length of the output is trimmed to that of the shortest input.

I ended up using this command for the latest screencast I prepared. Cheers, and happy holidays.

LinkLeave a comment

Why I Don’t Trust Non-Open Source Software [Nov. 19th, 2012|12:34 pm]

shlomif
[Tags|, ]
[Current Location |Home]
[Current Mood |happyhappy]
[Current Music |Alanis Morisette - Ironic]

Today I’m going to explain in a dedicated entry, why I do not trust programs that are not Free and open-source software (FOSS) and instead are more restricted. I have previously told that story as part of a different essay, but it was easy to miss.

In any case, the BitKeeper version control system is now quite obscure, due to the advent of quality distributed open-source systems such as Git and Mercurial, but some years ago it was used by many developers of the Linux kernel, and the demise of its gratis version was in fact the impetus for the creation of Git, and later Mercurial. Some time, before Linus Torvalds adopted it, I ran into a limitation of CVS, an open-source version control system, that was then popular, and was looking for an alternative, and after reading an out-of-date article about BitKeeper (which said its source was available under a mostly open source licence), decided to use it and its bkbits.net service.

At first, I was quite happy using it for some of my projects, but then I posted a question to the mailing list, asking where I can find the source, which was implied to be available on the BitKeeper site. Larry McVoy (BitKeeper's main creator and maintainer) answered by saying that they decided for removing the source code, because some users modified it to remove the restrictions, and allowed them to abuse the licensing of the gratis version and prevent them from paying for the commercial version. He also noted that availability of source, meant that, in practice, your software was Public Domain, and that they provide the sources for people they can trust, in private.

At that point, I figured out that I don't have an immediate need for the source, and that perhaps in the future, I can win BitMover (= BitKeeper’s parent company) trust and gain access to it. So I continued using BitKeeper.

That changed, however, when Mr. McVoy announced a licence change to BitKeeper (while requiring all users of the gratis version to upgrade) that I found unacceptable, and caused me to seek a different alternative. This caused an unpleasant exchange between me and the BitKeeper developers, and made me lose some of the repositories I hosted on bkbits.net.

From that moment on, I realised that I cannot really trust non-open-source software, because even if I am allowed to continue to use its previous version after a licence change, then it may accumulate bugs or stop being runnable on my systems, or stop being supported, and I cannot risk it. To quote Richard Stallman: “Every non-free [= non-FOSS] program has a lord, a master — and if you use the program, he is your master”.

The end of the BitKeeper story, was that after evaluating a few open-source alternatives, I settled on using the open-source Subversion, and later on also started using Mercurial and Git. Furthermore, from then on, I often refused to look at and evaluate proprietary programs. Lately, many open-source developers have been infatuated with Sublime Text, but I am not willing to even try it, because it is not open-source, so I will never have to depend on it.

Despite all that, I still license my original software under non-Copyleft licences, because the GPLv2 and the GPLv3 are incompatible, both with one another, and with many other open-source licences, and because I know of at least three different interpretations to the GPL ( GNU’s one in the GPL FAQ, the Linux kernel's one, and the draconian Nmap interpretation), and because I want my code to be of the maximal available use without the need to consult a lawyer, and because I don't want to be worried about how it will possibly be abused, when I don't care if it will. I'm still using GPLed software, in the hope that I won't get sued.

To sum up, I do not wish to rely on non-FOSS, because it may mean these software applications later becomes unavailable to me, in a similar manner to what was the case with BitKeeper. I hope you can relate to that, and if not, you may likely run into a similar situation in the future, as well also the case for the Linux kernel project, with the demise of the gratis BitKeeper altogether.

LinkLeave a comment

Why Java Sucks for Cross-Platform GUI [Oct. 20th, 2012|12:49 pm]

shlomif
[Tags|, ]
[Current Location |Home]
[Current Mood |happyhappy]
[Current Music |The Wallflowers - One Headlight]

When the Java programming language first became publicised, it was heralded as the dawn of a new age of writing cross-platform programs. “Write once, run everywhere” they said. Now, 16 years after 1996, which was roughly when the Java hype started, I’d like to check if it delivered on this promise, by seeing if one can easily write a cross-platform GUI (= Graphical User-Interace) application using it. What I’m looking for is a Java GUI library that: 1. Compiles. 2. Is cross-platform. 3. Does not suck. Teaser: I was not able to find one.

The standard Java SWING toolkitis out-of-the-question due to its weird look and feel and crappy behaviour everywhere. Joel on Software has this to say about SWING:

If you still think that something as small as how long you hold down the Alt key when you activate a menu command doesn't matter, well, your software is going to make people unhappy. These tiny inconsistencies are what makes Swing applications so unbearably annoying to use, and in my opinion it's why there are virtually no commercially successful Java GUI applications.

(From the book reviews, there's more criticism of it in “Lord Palmerston on Programming”.)

I too have been frustrated by the unusable Java SWING GUIs, and in one of the latest projects I am contributing to, which has already been written in Java, I ran into a particularly buggy SWING UI.

The Eclipse people implemented something called SWT, but according to the wikipedia, it has several limitations, and require writing a lot of platform-dependent code.

Next are the Qt bindings to Java - Qt Jambi. These require customising the build.properties (whereas the error and documentation says one should edit the buildpath.properties file), and after that fails compiling with this error:

[make] ../../generator/out/cpp/com_trolltech_qt_core/
qtjambishell_QFutureIterator.cpp:21:15: error: no matching
function for call to ‘QFutureIterator::QFutureIterator()’

Next I looked into java-gnome, but apparently it does not work on Windows, so it's not cross-platform.

And the Java bindings for wxWidgets offer wxJava, which is Windows-only and unmaintained, and wx4j and jwx!, which are unmaintained and no longer build.

So I think that leaves us with nothing. How sad. Compare that to the comprehensive coverage of Mono’s GUI toolkits, many of which are cross-platform, and to the situation in other languages such as Perl or Python, and you'll see that Java sucks the most in this respect.

Link6 comments|Leave a comment

Tech Tips: Vim, Facebook and Firefox’s Personas Rotator Extension [Oct. 18th, 2012|11:11 pm]

shlomif
[Tags|, , , , , ]
[Current Location |Home]
[Current Mood |geeky]
[Current Music |Kid Rock - Born Free]

Here are three tech tips, that I felt did not necessitate their own entry.

In the Vim text editor(homepage), one can use the keybinding Ctrl+W ; O to close all windows except the current one, which will be the only one left open (hence the "O").

In Facebook (Wikipedia page) one can use Shift+Enter to start newlines in the messages you compose in the site’s composer. Press it twice to start a new paragraph.

If you are using Firefox’s Personas Rotator Extension ( Addons.mozilla.org page), then you can switch the currently shown persona ( in case you don't want it at the moment) using Ctrl+Alt+P or an alternate configurable keybinding. I discovered this latest tip by accident and can no longer imagine my life without it.

Cheers!

LinkLeave a comment

What does “Simple” mean in the context of software? [Oct. 8th, 2012|05:08 pm]

shlomif
[Tags|, , ]
[Current Location |Home]
[Current Mood |amusedamused]
[Current Music |kristian vuljar - Carry Away (feat. Shannon Harley) - from Jamendo.com]

A lot of computer programs, and especially many open-source applications like to boast that they are “simple”. But what does it mean? Given the various applications and misapplications of this word, I can think of several meanings:

  1. Easy to use.

  2. Lacks complexity (whatever that means and implies).

  3. Simplistic.

  4. Minimalistic.

  5. Lacks extraneous features.

Very often, these meanings are at conflict with one another. For example, the GNOME 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, Arch Linux taglines itself as “a lightweight and flexible Linux® distribution that tries to Keep It Simple”. 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'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.

As a result, I have become incredibly suspicious and weary of any software that prides itself on its “simplicity”, even though “simplicity” should be a good thing.

Bjarne Stroustrup (the creator of C++) has this to say about Java on his FAQ:

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

So simplicity is often a function of immaturity and incompleteness.

Of course, some things that call themselves “simple” are not simple in any of the meanings, for example SOAP, the so-called “Simple Object Access Protocol” (see the S stands for Simple), is not simple in any of the meanings I have given, but it is still called like that.

I feel that like the word “Zionism” no one is no longer sure what “simplicity” means, and as a result, some people no longer consider it a good quality to have. It’s a shame, but that’s life.

Link2 comments|Leave a comment

The Ultimate Irrational Homework Assignment [Sep. 17th, 2012|07:05 pm]

shlomif
[Tags|, , , , , ]
[Current Location |Home]
[Current Mood |boredbored]
[Current Music |Tocatta (MOD with Beats)]

As someone who has been chatting on programming-related IRC (Internet Relay Chat) for a while, I have witnessed my share of people coming up with unreasonable needs due to homework. However, some days ago, someone on Freenode's #perl came and ask for help in parsing a semicolon that does not occur inside shell quotes (e.g: echo "Semicolon in string - ; foobar" ; ls -l ; ) using regular expressions. I suggested him to use a parser generator, and then said that his teacher has forbidden him from using it or any other external CPAN module and that he could only use regular expressions, in order to, get this: write some Perl code that will convert Bash to Python. Yes! His teacher expects them to learn those three languages at once. And apparently without making a judicious use of the proper APIs.

Teaching three languages at the same time (in what may be a introductory course) is wrong and should be avoided, as learning one language is hard enough, and with three the students may become extremely confused. In response to my Thoughts about the Best Introductory [Programming] Language, a friend suggested that one should teach three introductory languages, and if I were remember correctly, they were something like C, a convenient dynamic language such as Perl or Python, and a very "mind expanding" language like Lisp or Haskell. I noted the same thing back then, that it would confuse the heck out of the students, and here the motivation is even more flimsy.

I wonder if we ever top this homework assignment that we are being asked for help with. Will a professor ask his students to implement a Strong AI in a weekend?

LinkLeave a comment

C++ Joke [Sep. 6th, 2012|04:01 pm]

shlomif
[Tags|, ]
[Current Location |Home]
[Current Mood |productive]
[Current Music |Gary Feldman - The Day the Routers Died]

Here is a joke I had heard which I decided to import for C++:

In a press conference for the publishing of Accelerated C++, one of the authors, Andrew Koenig, was asked “Is it true that there are only three people in the world who truly understand C++?”. To which he replied “Really? Who’s the third?”.

Cheers!

More C++ Fun

LinkLeave a comment

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