Back to my homepage

My interest in free software began several years ago. It started with my frustrations with using my 5.5 generation iPod video, which I had difficulty transferring music to when using GNU/Linux. I was also appalled when Veoh deleted files that I downloaded from their website using their proprietary plugin after they removed the files from their website. I figured out that software is supposed to do things I want without doing things I have no interest in such as restricting my usage of the software or doing bad things such as deleting files on my computer.

I have invested much of my spare time into free software, which includes writing manuals pertaining to viewing Israeli websites without proprietary technologies such as Adobe Flash, see for instance here. I have also written guides related to configuration and installation of free software drivers such as the free (possibly obfuscated) NVIDIA driver nv and the driver required for TV cards called saa7134, see here and here. In addition, I wrote a short script that converts comic books from the CBR format (which is JPEG or PNG images inside a RAR archive) to the CBZ format (which is the same as CBR but the images are contained in a ZIP archive instead) as CBR files cannot currently be viewed by Evince when using the free software RAR extractor unar. The script can be found here. I have been a contributing developer of Parabola GNU/Linux-libre. My contributions can be found here.

I currently use the FSF-endorsed distribution Trisquel GNU/Linux on a custom built T60 ThinkPad laptop with a QXGA resolution (2048x1536) screen which runs a free software BIOS called libreboot. I purchased this laptop from a UK company called Gluglug. In order to view YouTube and similar video hosting websites I use either youtube-dl, ViewTube or smtube (in the past I used quvi as well). YouTube comments can be viewed using youtube-viewer. One click hosters such as rapidgator and uptobox I access via plowshare. I access OpenStreetMap using the software called Emerillon Map Viewer. I add annotations to PDF files using Xournal. I rip CDs with morituri as it checks that my rips are accurate by querying a database of hash values of CDs. I write PDF documents using the LaTeX editor Gummi (the official Gummi website is offline at the moment so I'm linking to the Wikipedia page instead).

I block JavaScript and make sure the internet serves me instead of vice versa by using Mozilla add-ons such as NoScript, Adblock Edge, HTTPS-Everywhere, Request-Policy, Cookie Monster and Self Destructing Cookies. I occasionally check whether or not a website is free software compliant by using the Mozilla add-on LibreJS. I feel that JavaScript should be avoided whenever possible, as it is better not to run any code (even free code) than to run some code on your computer. Many times JavaScript is required to provide features that could be provided without it, such as accessing TV listings or user comments or downloading files from one click hosters.

I also use a mostly free software Openmoko phone mostly as a landline replacement. The modem there is not connected to the microphone or GPS so the amount of surveillance performed by the phone is significantly less than most other smartphones. By usually keeping the phone in the same location, I make it harder for the cell phone company to track my movements. I made a very small contribution to one of the GNU/Linux distributions running on the phone in the form of writing a Hebrew keyboard, which only took a few minutes to do. I did in fact learn a lot from using the phone, and greatly improved my command line skills, which included learning how to use the commands scp and ssh.

I also use the free software project Rockbox as replacement firmware on my (still functioning) 5.5 generation iPod as it provides among other things gapless playback of FLAC audio files. In addition I also use CHDK on my Canon PowerShot camera, as it provides additional features such as running user generated scripts on the camera and outputting, alongside the JPEG images generated by the camera's original firmware, RAW image files, where one can view the camera's dead pixels that are cleaned up in the JPEG images. The fact the camera is not that great is in fact a bonus, as that forces me to learn about more editing techniques than one would need to acquire if one bought a much better and much more expensive camera.

Some tips and tricks

Here are some useful tricks:

Simple manipulation of media files

If one downloads a video file with several audio tracks and one is only interested in a particular audio track one can easily remove the additional audio tracks using FFmpeg. One can also easily extract the subtitle tracks so one can edit those seperately, e.g. using subtitleeditor. In addition, one can also extract audio files to playback on a portable digital audio player. First, one wants to identify the tracks contained in the video file. One can do this by running the following command assuming the video file is called "videofile.mkv":

$ ffmpeg -i videofile.mkv

Then, one simply copies the desired streams using the "-map" command and one uses the commands "-vcodec copy" in order to copy video streams, "-acodec copy" in order to copy audio streams and "-scodec copy" in order to copy subtitles. I usually run commands similar to these, assuming streams 0:0 and 0:1 are the desired video and audio streams respectively, stream 0:2 is the audio stream we are not interested in, stream 0:3 is the desired subtitle track in .srt format and the new video and subtitle files will be named "videofile-new.mkv" and "videofile.srt" respectively:

$ ffmpeg -i videofile.mkv -map 0:0 -map 0:1 -acodec copy -vcodec copy videofile-new.mkv

$ ffmpeg -i videofile.mkv -map 0:3 -scodec copy videofile.srt


In order to just extract the (for instance) Vorbis audio stream 0:1 into a file called "videofile-audio.ogg" simply run this command:

$ ffmpeg -i videofile.mkv -map 0:1 -acodec copy videofile-audio.ogg

If the extracted subtitle files are in Hebrew it is sometimes useful to convert them to UTF-8 as that encoding is well-supported by many video players. In order to do this run a command similar to this one:

$ iconv -f ISO-8859-7 -t UTF-8 subtitle.srt > subtitle-new.srt

If one wants to cut out a part of the video starting at a certain position and lasting a certain period of time, one uses the commands "-ss" to indicate the starting point and "-t" to indicate the length of time, e.g. in order to cut a 5 minute portion of the video starting from the second minute one runs a command similar to this one:

$ ffmpeg -i videofile.mkv -ss 00:02:00 -t 00:05:00 -acodec copy -vcodec copy videofile-new.mkv

If the audio of a video file you are viewing is out of sync by a constant amount of time, let's say 0.2 seconds, then if wish to shift the audio by this time offset, first run a command similar to the following command to see the list of streams (we input the file twice as we shall take the shifted audio from the first copy of the video file and the video from the second copy):

$ ffmpeg -i videofile.mkv -i videofile.mkv

Now, if stream 0:0 is the audio stream from the first copy of the video file and stream 1:1 is the video stream from the second copy, we use the command "-itsoffset" to shift the audio stream, as can be seen in the command below:

$ ffmpeg -itsoffset 0.2 -i videofile.mkv -i videofile.mkv -map 0:0 -map 1:1 -acodec copy -vcodec copy videofile-new.mkv

Compress colored documents by turning them into black and white

Most of my notes are written using a colored pen. I scan them using Simple Scan, and since I have no interest in preserving the color, I can reduce the file size by simply converting the documents into black and white format which is called greyscale. I use a command similar to the one below, which converts a file called "file.pdf" into a file called "file-new.pdf".

gs -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -dDownsampleMonoImages=true -dDownsampleGrayImages=true -dGrayImageResolution=300 -dMonoImageResolution=300 -sOutputFile=file-new.pdf file.pdf

Another option is to compress using ps2pdf instead:

ps2pdf old-file.pdf new-file.pdf