Here, you can read about some software projects and small computer programs that I worked on. Some of these software can be accessed at my github page.

I had been reading the book “Fractals: Endlessly Repeated Geometrical Figures” by Hans Lauwerier (Princeton University Press, 1991) and wanted to play with some of the BASIC programs listed in that book for generating images of fractals. I didn’t have a BASIC interpreter to run the programs, so I created a BASIC parser called basicfractalsvg to generate SVG images directly from the programs. You can download it here.

I recently developed a simple tool called mouseovercolor that shows the color under the mouse pointer on Linux running X window system. It can be obtained here.

I have created and uploaded to my github page a simple python module named region_plot. It includes a function that plots regions of points satisfying a given predicate. The function is based on a rectangle subdivision method and it uses PolyCollection objects of matplotlib.

I developed a simple Haskell program called HierarchicalClusterHS to do hierarchical cluster analysis. It currently supports only numerical data, but the library that comes with it allows more general data types if a suitable metric (distance function) is supplied.

The source code of the library/program can be obtained at

Back in 2015, I used Elixir to write a simple program called RndBot. It is an IRC bot and it provides positive random numbers as replies to messages containing the text “rndbotrnd”. Random numbers are obtained from

I recently updated a few things to ensure RndBot is working again without warnings. I noticed that String.strip and Kernel.to_char_list functions of Elixir have been deprecated (we can use String.trim and Kernel.to_charlist instead).

Check here for my Lua/löve2d code for visualizing trajectories of the Lorenz system.

I recently programmed a very simple wrapper around byzanz-record. It is called recordselectedwindow and it can be used for recording windows that are selected with mouse. It outputs .gif files. The window information is obtained using the tools xdotool and xwininfo for X. The duration for recording can be supplied as a command line argument.

recordselectedwindow can be obtained here.

I recently updated a few things at It is a timer application that I worked on. It allows designing timers that come one after another. I recently added some code to show information about the next timer when the current timer ends.

Another update is about the sound warnings. It is possible to mute/unmute the sound warnings for ending timers. The default is the muted state and there is an unmute button. I recently added some information on the main page about how to start a timer with unmuted state.

I created a simple project called sdkhs in GitHub. It is for a sudoku puzzle solver that I programmed in Haskell.

I wrote a plugin called pastefromhtml for Zim. (Zim is a text-editor that lets you create a wiki of multiple pages with images, lists, links, and structured text. I used Zim mainly for note taking and task management.)

pastefromhtml lets you paste lists, links, or text that you copy to clipboard in your browser. The pasted data follows Zim’s syntax. You can find the plugin and the instructions to install it here.

I have recently implemented a simple wrapper around cal tool of Linux. I call it scal. It can be obtained here.

The original tool cal lets you see the calendar for October 2014, if you use the command cal 10 2014. It will complain if you change the order of month and year. For instance, cal will complain if you write cal 2014 10.

Now, scal lets you see October 2014, if you type scal 10 2014 or scal 2014 10 or in fact scal 2014 oct.

You can use scal to see the calendars of multiple months of different years, e.g., scal jan feb mar 2014, jan feb mar 2015 will show calendars of the first three months of 2014 and 2015. It also understands when you type expressions like “next month” or “this year”. You can, for instance, write scal oct next year or scal next year 10 or scal next year october to see the calendar for October next year. Check what else scal can do here.

I have recently been playing with Hadoop and MapReduce-based algorithms. I created a simple MapReduced-based tool called huedistribution that is useful to me. huedistribution is actually a simple mapreduce-based algorithm to calculate distribution of Hue (color axis) values provided in a large data file. This data file is composed of lines which correspond to data obtained from segments of a range of images. I collect the data using another tool I developed called idext, Image Data Extraction Tool. huedistribution is designed to be run on Hadoop. You can check the source code here.

Idext is a tool I developed for Pattern Information Processing class that I took during my graduate studies. The main purpose of this tool is to extract data from a set of images.

The code needs polishing but a preliminary working version is now hosted at GitHub. Check it here.

I put some code pieces on GitHub concerned with generation of noisy background images and parallel task assignment/running.

We have been working on a timer application with my sister. The app is located at The description of timers can be given in the url. For example, minutes

starts a 5 minutes timer. It is possible to describe a sequence of timers, e.g., minutes, 5 minutes

It is also possible to give names to timers. For example, minutes Work, 5 minutes Rest

You can use “m” or “min” instead of “minutes”. Of course, you can also use seconds and hours. It is also possible to run parallel timers, and there are many other possibilities, some of which are described at