MultiSSH 0.1

MultiSSH is a command line SSH client written in PHP that is able to conduct an interactive session on multiple SSH servers simultaneously. It is pretty handy if you have similar tasks to be run on a bunch of servers and want to control all of them simultaneously via one interface. Servers to connect are specified via a text file containing tab-separated listing of remote IPs and the username and password for each. Alternatively, if all servers have the same username and password, it can be passed as an argument when the script is run. It supports sending control characters to remote terminals through special commands.

I wrote this originally for a client project but since it got binned later, I thought I'd throw this into the public.

Usage:
multissh.php <iplistfile> <defaultuser> <defaultpass>

Requirements:
- PHP 4/5
- SSH2 extension for PHP

Download MultiSSH 0.1 (Zip, 3KB)

Stochastic Diffusion Search for Real-Time Web Search

My third year project at uni (this year) involved investigating the application of Stochastic Diffusion Search to the problem of real-time web search by designing and implementing such a search engine in software. It certainly was interesting work and though the project had been completed successfully, there are a few things I wish I had explored and experimented with a bit more. I have another major project to tackle for the last year of my M.Eng degree in AI and Cybernetics which begins next month.

Anyway, here is a short presentation I had given based on a research paper I had to submit on my work as part of the course. I hope you find it interesting...


Radheef for Facebook passes 200th user

Radheef for Facebook, the little Facebook application that displays random words from the Radheef on the Facebook profile, has reached its 200th user. It took the whole of three months since its launch in February 2008 for it to get there! :S

- View the application's About page on Facebook

Thaana date formatting for PHP 5

Here is a PHP 5 class that provides a drop-in function replacement/equivalent for the built-in PHP date() function to output formatted dates in Thaana/Dhivehi. It follows the standard method of writing Gregorian dates in Thaana by using transliterations of the English month names and using the native Dhivehi names for the week days. It accepts all the usual formatting arguments permitted by the original date() function thus allowing the same degree of formatting freedom as the original. The output returned from the function uses ASCII Thaana and, if needed, can then be converted to Unicode/UTF-8 by using the Thaana Conversions class. This class does not support Hijri dates (yet).

The class is being released under the Open Source MIT License.

Functions exposed

format()
Returns a Dhivehi date string formatted according to the given format string using the given integer timestamp

Usage

<?php
// Load class include
require 'thaana_date.obj.php';

// Format date
$thaanatoday = Thaana_Date::format('j M Y', time());
?>

Download

- Thaana_Date.zip (v0.2, 1.4KB)

Drop me a line if you have comments/queries. Enjoy :-)

Thaana conversions class for PHP 5 - v0.2

Here is an update to the Thaana conversions class I released in Nov 2007. This new version 0.2 release expands the varieties of conversions available and should be more than adequate for almost all uses. This version, most importantly, adds solid UTF-8 conversion functions allowing for more flexibility in PHP-based Unicode/UTF-8 Thaana handling. Further, the class is now licensed under the pretty liberal Open Source MIT License. The code still relies solely on core PHP 5 functions and does not demand any extra PHP extensions to be installed.

Functions exposed by the class

- convertUtf8ToUnicodeIntegers()
Convert UTF-8 data to Unicode character integer representations

- convertUtf8ToAscii()
Convert UTF-8 data to Ascii

- convertEntitiesToUnicodeIntegers()
Convert HTML Unicode entitied string to Unicode Integer characters array

- convertEntitiesToUtf8
Convert HTML Unicode entities to UTF-8

- convertEntitiesToAscii()
Convert HTML Unicode entities to Dhivehi Ascii equivalents

- convertUnicodeIntegersToUtf8()
Convert Unicode Integer array to UTF

- convertUnicodeIntegersToEntities()
Convert Unicode char integers to HTML entities

- convertUnicodeIntegersToAscii()
Convert Unicode char integers to Ascii

- convertAsciiToUtf8()
Convert Ascii Thaana to UTf-8

- convertAsciiToUnicodeEntities()
Convert Ascii Thaana to Unicode HTML entities

- convertAsciiToUnicodeIntegers()
Convert Ascii Thaana to an array of Unicode integers

Usage

<?php
// Load class and initialize object
require 'thaana_conversions.obj.php';
$thaana = new Thaana_Conversions();

echo $thaana->convertEntitiesToAscii('ދިވެހި');
echo $thaana->convertAsciiToUtf8('rWacje');
?>

Download:

- Thaana_Conversions.zip (v0.2, 3KB)

Drop me a line if you run into trouble with any of the functionality or have comments/queries. Enjoy :-)

Update (11-Sep-2008): This version is now superseded by the v0.3 release.

Website for Muizzu, Suoodu & Co. now live

One of the last website projects I had worked under Technova in 2007 was the website for Muizzu, Suood & Co. law firm. The website was completed and went live towards the end of the year. They were one of the easiest to deal with clients we've had and I'm pretty happy with the outcome of the project.

The MSC website was among the first to use our new slimmed-down Content Management System designed with small businesses in mind, focussing on delivering a website quickly together with basic content editing facilities. Technova will be launching a low-budget website development package based on the new system sometime soon.


Pocket 110: Dhiraagu Directory for Windows Mobile - version 2!

I recently upgraded my smartphone to Windows Mobile 6 Professional and had occasion to play around with the new OS and its related software development kit a few days ago. Few hours of tinkering around with the phone and the SDK resulted in me having picked up an application I wrote in 2006 called Pocket 110 and revamping it - sort of to fit the times and to add in a few features I had thought of since the application's original release.

Pocket 110 is an application for Windows Mobile Pocket PCs and Smartphones in 2006 that allows you to search through the numbers, names and addresses for the landlines and mobile lines listed in the Dhiraagu telephone directory. Unlike the previous version, the new program does away with lugging around its own directory database and instead uses real-time look-ups from the Dhiraagu E-Directory itself. This overcomes the two major shortcomings of the older version where the database searching took ages on smartphones due to low processing power and also rids the problem of outdated directory database files. The real-time look-ups do mean that the program requires access to the internet and hence incurs data transfer costs - but since the program gains a thousandth fold increase in search speed, the (low) data transfer charges are a good trade off.

I also added a couple of new features to the program while I was at it, including the ability to directly dial numbers found via directory searches. But the coolest, slickest new addition is the "CallerInfo" feature. The feature offers a replacement for the default "Incoming Call" call screen for numbers that are of Maldivian origin and listed in the Dhiraagu E-Directory. When you receive a call, CallerInfo can automatically look up the details of the incoming caller and present the caller's name and address details - that way, almost every caller is identifiable at ring time even though that originating number is not in the contact list. If that doesn't make sense, run the program and call your phone from a number that is not in your contacts list - the program should display the calling number's details... in a mere few rings/seconds.

Requirements:
Pocket 110 v2 is optimised for Windows Mobile 6 but should run fine on Windows Mobile Pocket PCs and Smartphones running Windows Mobile 2003 and Windows Mobile 5. You will need to have a recent version of the .NET Compact Framework installed (which most phones do these days!). Pocket 110 takes up about 200Kb and can be installed simply by copying the provided CAB files onto the device and executing them on the device. Make sure you have GPRS or EDGE configured and working, otherwise the searches will fail and the program will inform you of so.

Download:
- Pocket 110 v2 (for Windows Mobile 2003/5/6)

Screenshots:

Program icon in the application listing


Program main screen with search query entry.


Search results listing


Search result item details


Menu options


Options - enable/disable the CallerInfo feature


About the program


CallerInfo in action! :-P


Have fun!