Start page: ARABART home

From Port Said to Kanata

Yasser Awad taught a PC to write Arabic in Port Said. Then he brought Arabic to Windows in Cairo, built the public door into phone companies’ networks in Canada, and ran his own award-winning software company. Drag through the years: the screen grows up with him.

1991 Writing his own programs in Port Said, Egypt

1991

Writing his own programs in Port Said, Egypt

16 colors

  • ARABART, his Arabic engine, draws its first letters.
  • PESM draws the Basmallah sixteen times, with its own copy of the engine.
  • A screensaver for the Port Said Governorate, in 156 bytes of code.

Port Said, 1991 to 1993

It started on the Mediterranean, with a few books, Borland’s tools and no internet.

In Port Said he wrote fifteen programs and ARABART, the engine that joins Arabic letters on a DOS screen. A screensaver for the governorate. A boot screen for every PC that Port Said Computer Systems sold, paid for with his first mouse. An antivirus. A circuit simulator for his graduation project with the KEMYAM group. And The Brave Sun, which took 3rd place in the PC Middle East competition for Arabic educational software.

Every one of them runs in your browser. The name on the right is drawn by his own engine, from his own font bytes: pick a font and a style.

Run his programs

ARABART.EXE his name, his engine

Cairo, 1993: Arabic comes to Windows

In June 1993 he joined Sakhr in Cairo as a project leader, and stayed until September 1996.

Sakhr was founded in Kuwait in 1982 and moved to Cairo in 1990. It made Arabic MSX home computers and the first Arabic version of Windows 3.x. Windows was built for English: text runs left to right, and every letter has one shape. Arabic needs both rules turned around, often on the same line.

The problem he had solved alone on DOS with ARABART now had to work inside every Windows program. At Sakhr he built these parts of its Arabic software:

  1. Arabic APIs

    One set of Arabic functions that any program could call, on Arabic Windows and on English Windows alike. Like a shared package every app imports, so no team writes Arabic support twice.

  2. A bilingual text displayer

    Object-oriented, and used in the Al-Ustaz word processor. It put Arabic and English on one line, each in its own direction. Your browser does this for you today; in 1993 someone had to write it.

  3. A printing core

    Multi-threaded: Arabic pages went to the printer in the background while you kept working.

  4. Arabic office applications

    The programs people used to write, print and publish in Arabic.

  5. An installer framework

    The company’s first multimedia installer framework: one tool that set up each new title on a PC, the way every app’s setup program does today.

Two directions, one line

Memory keeps words in the order you typed them. The screen must show them in reading order: Arabic from the right, and English inside it from the left. That reordering is the heart of a bilingual text displayer. Type a line word by word and watch each word find its place.

In memory: the order you typed
  1. 1مرحبا
  2. 2Yasser
  3. 3Awad
  4. 4من
  5. 5القاهرة
On screen: how the line reads
  1. 5القاهرة
  2. 4من
  3. 2Yasser
  4. 3Awad
  5. 1مرحبا

“Hello, Yasser Awad, from Cairo”. Read it from the right. Arabic words go right to left; the English words keep their own order inside.

Print, and keep typing

A thread is a separate line of work inside one program. With printing on its own thread, a long Arabic document goes to the printer while you keep writing. Try it both ways.

LETTER.DOC
Print

Press Print, then try to type.

Kanata, 1996: the door into the network

In October 1996 he moved to Canada and joined Newbridge Networks in Kanata. For ten years he was a senior designer and team leader there.

Alcatel bought Newbridge in 2000, and with it the 5620 Network Manager: the control room for a phone company’s whole network of switches and routers. In 2003 one 5620 managed up to 10,000 core nodes and 500,000 edge nodes.

Architect

Yasser Awad was the architect of the 5620 CORBA interface. It is the door through which a phone company’s own systems read alarms and inventory, and order new connections.

Today you would call it the network’s public API.

What his interface did, in plain words

The network. A phone company’s network is thousands of machines in buildings across a country: the switches and routers that carry every call and every byte. The 5620 was the one program that watched and controlled all of them. Think of the AWS console, for a phone company’s own hardware.

The problem. The phone company also ran its own business software, its OSS: customer orders, billing, repair tickets. These programs came from many vendors, in many languages, on many kinds of computers. Each one needed the 5620: to read its alarms, to list its equipment, and to set up a new line when a customer ordered one. REST and JSON did not exist yet.

The tool of the day. CORBA was the standard way for a program on one computer to call a function in a program on another. You write the calls down once, in an interface file. A compiler turns that file into code for both sides, each in its own language. After that, a call to the 5620 looks like a normal function call. It is the idea behind gRPC and its .proto files, twenty years earlier.

His part. Yasser designed that door into the 5620: what outside systems could see, which calls they could make, and how each call reached the network. When a customer ordered a line, the order system could now set up the connection by itself, with no engineer in between. He also built the alarm feed, an event channel twice as fast as the standard one, and jidmTester, a tool that tested the whole interface.

One call, from the billing system to the 5620
A billing app calls the 5620 through CORBA. Its stub and ORB send the call across the network; the 5620's ORB and skeleton hand it to his code; the answer comes back the same way. Phone company: billing Alcatel 5620 server the networkIIOP on TCP Billing app Stubgenerated from the contract ORBpacks and sends the call His codereads the network’s alarms Skeletongenerated from the contract ORBreceives and unpacks Alarms.idlthe contract Alarms.idlthe contract Billing app ORBpacks and sends the call His codereads the network’s alarms Billing app
A billing app calls the 5620 through CORBA; the answer comes back the same way. Billing Alcatel 5620 the network: IIOP on TCP Alarms.idlthe contract Billing app Stubgenerated ORBsends His code Skeletongenerated ORBreceives Alarms.idlthe contract Billing app ORBsends His code Billing app
  1. One contract for both sides. The interface file, Alarms.idl, lists every call. A compiler turns it into code for the billing system and for the 5620. Today: a .proto file and protoc.
  2. The billing app calls alarms->getActiveAlarms(), like any function in its own code. What it calls is a stub: generated code that only looks like the real thing.
  3. The stub packs the call into bytes, and the ORB, a library on each side, sends them across the network. Every CORBA message starts with the four letters GIOP.
  4. On the 5620, the other ORB receives the bytes. The skeleton, also generated, unpacks them and calls his code, which reads the alarms from the network.
  5. The answer goes back the same way. The billing app gets its list of alarms as if the function had run on its own computer. Nobody typed a command.

Now call the network yourself

Press a button: the call goes through his interface to the 5620 and back. Take a node down, and its alarm goes out through his event channel to every app that listens.

Orders listening Billing not listening Trouble tickets listening His CORBA interface the network’s public API Eventchannel 5620 NetworkManager 7770 7670 7470 7300 Orders listening Billing not listening Tickets listening His CORBA interface the network’s public API Eventchannel 5620 NetworkManager 7770 7670 7470 7300
The call, then and now

CORBA, in his years (example names)

alarms->getActiveAlarms()

The same call today, as REST

GET /alarms?state=active

Pick a call. It goes through his interface to the 5620, and the answer comes back the same way.

Call the network
Listening for alarms
Then and now
1996 to 20062026Why it is the same idea
The 5620 CORBA interface A public REST or gRPC API with a published spec A documented door that outside systems use to read the network and change it.
A CORBA IDL file A gRPC .proto file One interface file becomes typed client and server code in many languages.
An event channel A Kafka topic or a cloud pub/sub topic Senders and receivers never need to know each other; one event reaches every subscriber.
JIDM translation rules Code generated from a schema, and gateways such as grpc-gateway Turn one interface into another, and translate calls while the system runs.
For engineers: CORBA, JIDM and the standards around his interface
  • CORBA in 2026 terms. You write an IDL interface; the IDL compiler makes a client stub and a server skeleton; the ORB packs each call and sends it over IIOP, a protocol on TCP. Unlike gRPC, the client holds a reference to one remote object, and that object keeps its state between calls.
  • Telecom’s own models. Telecom standards describe equipment as managed objects in GDMO, reached over CMIP. The 5620 had both doors: a CMIP interface and his CORBA interface.
  • JIDM, part 1: Specification Translation (X/Open, May 1997) turns a GDMO model into IDL: each managed object class becomes an IDL interface, attributes become get and set operations, actions become operations, and notifications become events. His interface followed these rules, so a CORBA client saw the same objects as a CMIP client.
  • JIDM, part 2: Interaction Translation. A gateway that turns CORBA calls into CMIP or SNMP operations, and their events back into CORBA events. The Open Group published both parts as C802 in 2000. OMG’s “Interworking Between CORBA and TMN Systems” followed in August 2000, and ITU-T’s X.780 and Q.816 in January 2001.
  • The 2003 figures come from Gartner’s product report on the 5620 Network Manager family: version 6.1 on Solaris 8 with an Informix database, managing Alcatel 7770, 7670, 7470 and 7300 equipment.

Kanata, 2002: his own company

In November 2002 he founded DinarSoft, and with his co-developer, Hosam Aly, built six apps for Pocket PC and Windows Mobile, the smartphones of their day.

Each one fixed something people met every day on their phones: memory that ran out, programs that never really closed, settings buried deep in menus. Reviewers from the US, the UK, New Zealand and the UAE wrote about them, on about 20 sites in all. Russia’s CHIP magazine put MemMaid and HandySwitcher on its cover discs.

Awards

Smartphone & Pocket PC magazine named HandySwitcher the best Task Manager in 2007 and again in 2008, and TapText the best Misc. Utility of 2007.

From 2003 to 2008 his apps earned 22 nominations, and MemMaid was a finalist four years running.

Solution Explorer

Solution ‘DinarSoft’ (6 projects)

MemMaid 2 on a Windows Mobile phone: the Quick Cleaner list, with Clean and Scan buttons.
Properties
Name
MemMaid
Slogan
The Best Maid for PocketPCs
Does
Cleans the phone: frees memory, clears temporary files, and manages the programs and services that start with it. From 2.0, a registry editor too.
First
1.0, June 2003
Latest
2.3, June 2008
Awards
Finalist four years running, 2005 to 2008
Review
“The Swiss Army Knife of PPC utilities.” eMobie, 2004
Best Software Awards
Pocket PC Magazine, later Smartphone & Pocket PC: Best Software Awards, from the magazine’s own lists
App200320042005200620072008
MemMaid NomineeFinalistFinalistFinalistFinalist
HandySwitcher NomineeNomineeNomineeWinnerWinner
HandyMenu NomineeNomineeNomineeNomineeNomineeFinalist
HandyLauncher NomineeNominee
TapText NomineeNomineeWinnerFinalist

22 nominations · 3 wins · 6 more finalist places

All six were shareware: a 15-day trial, then a 16-letter unlock key. MemMaid went from 1.0 on 16 June 2003 to 2.3 on 16 June 2008, five years to the day. Visit DinarSoft for every app, every review and every screen.

Look at the HijriDate screen: the Islamic date in Arabic, on a phone built for English. ARABART put Arabic on DOS screens in 1991, Sakhr put it into Windows, and HijriDate put it in his customers’ pockets. The same thread, all the way through.