Hareesh Nagarajan
Graduate Applicant Fall 2004
SOC87927
Contents
1 ionicChat: An Instant Messenger (IM) protocol 2
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Introducing ionicChat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 The Crux of ionicChat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4 libmiASMaELF 8
6 MAELSTROM 11
1.1 Introduction
Chat rooms are special web sites or applications that contain rooms in which you can ‘chat’ with random
surfers or arrange a rendezvous. They provide for networking on the Internet. It could be rooms that
cater to specialized topics such as ‘Linux installation for newbies’ or general rooms that cater to teens such
as ‘Teenchat’. There are different requirements for business networking as opposed to social networking.
Now, when one does enter such chat rooms there is a high probability that the occupants of the chat
room may be talking about issues that have barely any relevance to the topic for which the chat room
has been set up in the first place.
For example: We might have Anita in #linuxnewbies chatting with Rita on a private window on the
wonderful Kashmiri carpets she bought for herself on her trip to India. As we can see, Anita seems to be
talking about things that have barely any relevance to Linux. Now at the same time if Seth, a Kashmiri
carpet aficionado, was desperately foraging the various IRC (Internet Relay Chat), Web Chat-servers
and Internet Messaging Services to find people to recount their recent carpet splurges to him, would not
once think about logging onto #linuxnewbies (running on an obscure IRC server) and expect to start a
conversation with a nondescript Anita on Kashmiri carpets.
Static Interests for Anita: Fishing, Linux installation for newbies, Day care
Static Interests for Rita: Day care, Go-karting, Blink-182
Rita queries the system for the interest ‘Day care’ and voila she gets a hit which links to user Anita.
Anita and Rita then start chatting away.
It is from this point on that ionicChat is different from other IM protocols.
Undergraduate Projects 2
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
1. The users are well aware that their chat is being overheard by our friendly ionicChat Server.
2. There exists an intelligent filter at the client end that identifies ‘important’ words also known as
Buzz words and subsequently sends them to the server.
So using this simplistic mechanism the server maintains a state of every users chat content.
Our affable Seth now logs into the system with his static interests setup as follows:
Now Seth queries the system for Kashmiri Carpets. The server then searches its transient database to
discover that users Anita and Rita are currently involved in a chat in which the buzz words ‘Kashmiri’
and ‘Carpets’ were uttered sometime in the recent past in the chat involving Anita and Rita. Seth then
requests Anita and Rita to let him join their chat, or otherwise he makes formal requests to add the two
onto his friend list.
Thus Seth is left a happy man, having discovered a lady somewhere in cyberspace who can satiate his
information for carpets.
1.4 Conclusion
The primary design of ionicChat has been established and around fifty percent of the implementation
using the Qt library has be done. Only time will tell if it can achieve the goals it initially set out to
address.
Undergraduate Projects 3
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
2.1 Preprocessing
The preprocessing activity is involved with providing an interface to allow the user to specify the number
of particles, the orientation of the particles, the kind of model that needs to be generated etc.
2.2 Postprocessing
The postprocessing activity is involved with the actual plot. Here the user is provided with various
facilities to manipulate the model generated on the screen.
Undergraduate Projects 4
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
Undergraduate Projects 5
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
MACRO SYSCALL A B C D
MOV AX,A;Syscall number
MOV BX,B;File descriptor
MOV ECX,C;32 bit relocation address
MOV DX,D;No of bytes
INT 80H;Interrupt
ENDM
SEGMENT .DATA
N DB 06H
R DB 04H
RES DB 00H
RESA DB 00H,0AH,0DH
TXT DB ’NCR - ’
SEGMENT .TEXT
MOV AL,[N]
MOV BL,[R]
CALL NCR
MOV AL,[RES]
Undergraduate Projects 6
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
AAM
ADD AX,3030H
MOV [RES],AH
MOV [RESA],AL
SYSCALL 4 1 TXT 6
SYSCALL 4 1 RES 4
MOV AX,1
MOV BX,0
INT 80H
NCR:
CMP AL,BL
JE INCA
CMP BL,0
JE INCA
CMP BL,1
JE ADDN
PUSH AX
DEC AL
CMP AL,BL
POP AX
JE ADDN
DEC AL
PUSH AX
PUSH BX
CALL NCR
POP BX
POP AX
DEC BL
PUSH AX
PUSH BX
CALL NCR
POP BX
POP AX
RET
INCA:
INC BYTE[RES]
RET
ADDN:
ADD [RES],AL
RET
$miasma ncr.asm -c < -- Assemble Now! with miASMa
$ld ncr.o -o ncr
$./ncr
NCR - 15
$
Undergraduate Projects 7
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
Figure 4: The memory map of the hello.o file written by libmiASMa byte-by-byte
4 libmiASMaELF
This simple library can be used to write relocatable object files conforming to the ELF Format.
Let us have a look at a sample C++ program which makes use of the libmiASMaELF library to write
an object file (hello.o) which on linking will print Hello, World! onto the standard output.
simple Hello, World! program written using libmiASMaELF.
WEB: http://freshmeat.net/projects/libmiasmaelf
Operating System: Can be compiled on most LINUX distributions with g++ 2.9x Only
#include <iostream>
#include <vector>
#include "libmiasmaelf.h"
int main(void )
{
char text[] = {
’\xB8’, ’\x04’, ’\x00’, ’\x00’, ’\x00’, // mov eax, 4
Undergraduate Projects 8
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
char data[] = {
’\x48’, ’\x65’, ’\x6C’, ’\x6C’, ’\x6F’, // Hello, World! written in Hexadecimal
’\x2C’, ’\x20’, ’\x57’, ’\x6F’, ’\x72’,
’\x6C’, ’\x64’, ’\x21’, ’\x0A’
};
obj.InitializeELFHeader();
obj.InitializeSymbolTable();
obj.AddNewSection(".shstrtab",SHT_STRTAB, 0,0,0,0,0,0);
obj.AddNewSection(".text", SHT_PROGBITS,6,0,0,0,16,0);
obj.AddNewSection(".data", SHT_PROGBITS,3,0,0,0,16,0);
obj.AddNewSection(".symtab", SHT_SYMTAB, 0,0, obj.GetSectionIndexOfType(SHT_STRTAB, ".strtab"),
0, 4,sizeof(Elf32_Sym));
obj.AddNewSection(".rel.text",SHT_REL,0,0, obj.GetSectionIndexOfType(SHT_SYMTAB),
obj.GetSectionIndexOfType(SHT_PROGBITS, ".text"),
4,sizeof(Elf32_Rel));
obj.AddContents(vtext, obj.GetSectionIndexOfType(SHT_PROGBITS,".text"));
obj.AddContents(vdata, obj.GetSectionIndexOfType(SHT_PROGBITS,".data"));
obj.AddRelocationEntry(11, obj.ReturnSymbolIndex("msg"),
R_386_RELATIVE,
obj.GetSectionIndexOfType(SHT_REL, ".rel.text"));
obj.PrepareFile();
obj.WriteFile("hello.o"); //Yippie! libmiASMaELF has created hello.o
}
Undergraduate Projects 9
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
5.1 Introduction
This system is one of the first of its kind in India to be built using open source components to automate a
single, yet critical component of a Hospital’s existing (non-computerized) system. KCLMS was developed
for the Kidwai Institute of Oncology (the largest federal Cancer Hospital in India) to automate the entire
process of a patient’s laboratory-test requisition details.
That means, right from the registration of a patient for a specific test, upto a doctor viewing the patients
test results from her terminal. The entire chain of Patients, Receptionists, Central Lab Registration
Technicians, Individual Laboratory Technicians, Doctors and System Administrators are assigned roles
and have been made active entities in the system. The schema was built by mapping an ER Diagram
to a schema. A number of deficiencies encountered with MySQL have been documented (namely lack
of composite foreign keys). Finally, KCLMS can be used as a prototype to develop a similar Patient-
LabTest-Registration system that is highly robust, secure and based on rigorous normalization principles.
5.3 E-Poster
To read more on the e-poster that was selected at the 8th Advancing Practice, Instruction & Innovation
through Informatics conference organized by the University of Pittsburgh Medical Center visit
http://apiii.upmc.edu/abstracts/posterarchive/2003/nagarajan.html
Undergraduate Projects 10
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
6 MAELSTROM
Is a 2-Dimensional Vector Graphics package written in Turbo C++.
WEB: http://puggy.symonds.net/˜hareesh/maelstrom
Operating System: Can be compiled only with the horrible Turbo C++ compiler on DOS.
Undergraduate Projects 11
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
7.1 Limitations
• One cannot perform EDIT operations across files. This was because of lack of foresight on my part
while designing the Class ‘BlockEdit’.
• The real TAB has not been implemented.
Undergraduate Projects 12
SOC87927 - Hareesh Nagarajan Graduate Applicant Fall 2004
Undergraduate Projects 13