Descriptions of Major Computer Projects

PolyPhony Server

PolyPhony Server is Classwave's core product. This project uses a component framework to provide common services such as authentication, authorization, user profile management, resource management, message logging, email access over wireless networks. Its primary goal is to allow enterprises and organizations to expand their information services to a mobile audience through Bluetooth access points. I participated in all phases of this multi-tier application development since March 2000. The first phase used a Classwave developed RMI server to provide Java object mapping and persistence against an Oracle database. My tasks included development of a system management adapter and implementation of this adapter through a Web portal to provide service, group and user profile management. I also developed a WAP portal from which users can customize their user profile and send text messages through SMS gateways. The second phase used Weblogic5.1 as its application server and EJB technology. My tasks included multi-tier configuration management, EJB development and deployment and client side portal development. The third phase used Weblogic 6.0 as its application server, and EJB technology. I laid the foundation for the presentation team to use Apache's Struts framework to develop the portal. This framework maximized the separation of the view and model (Model-View-Controller). The consequences are the separating of tasks among Web designers and Java developers, speeding up the development process and most of all, ensuring easy future maintenance and adaptability to change. XML was also widely used.

Wireless Relay Chat (WRC)

I was in charge of this multi-tier Web and WAP application that used technologies such as multi-threading, connection pooling, RMI, servlets, JSP, applets, SMS wireless gateway and Oracle. With this application, communications can be established between any of the following combination of devices: WAP phone to WAP phone, WAP phone to a PC, PC to a WAP phone and PC to PC. HTML and HDML (or WML) are generated by two separate sets of servlets that are deployed on Java Web Server 2.0.

Click here to find out how to reference WRC to help you in your job search and interview.

CELLEVENT - Event notification Server

CellEvent Introduction
The CellEvent Server is a new form of middle-ware application, which runs on the customers' server and connects the business databases, email programs and collaborative servers with the wireless message services. The CellEvent program is written in Java and so will run on a wide variety of operating systems, however to connect to the Microsoft Exchange server it is required that a Windows NT system is available to run the program. The application is designed to get information sent to the wireless devices through the Short Messaging Systems provided by the carriers, and these messages can be database reports, scheduled notice messages, email notifications based on profiles or just one-time messages. How CellEvent Works CellEvent is a separate server service that is continually running on the host server and is collecting information from SQL or ODBC databases or monitoring email servers and collaborative servers for events, which match a particular user profile. The server requires that a local SQL database is installed and available so that information concerning users and groups as well as messages and profiles can be stored, searched and retrieved. When a specific message is scheduled to be delivered to a user or a group of users the CellEvent server first collects the data from the database or the email server, then composes the message(s) and then forwards those messages to the carriers gateway (or SMS server). The CellEvent server waits to receive acknowledgment that the messages have been sent and will then continue on to the next task. The server offers an administration program for creating and managing groups, users, messages and schedules.

The User Administration Module provides the capability to manage the users and groups of users that are recipients of the messages or notifications. Users are given passwords and ID's that relate to the cell phone, pager and device numbers or ID's, which can be easily edited. Groups can be created which share common information profiles such as a sales department, field service group, executive management group and so on. Schedules and message event timing are also configured with this module. The attributes and profiles of these groups and users are stored in an SQL database, which is available with the program or can be supplied by the client.

The Profile Management Module stores the personal or group profiles that match the incoming information with stored objects and when a match is realized the notification will be sent. For example the profiles can be a set of keywords in an email subject field such as 'important' or 'news' or 'urgent', or they could be a simple text keyword that is compared with a news feed, or the profile could be a database value that is exceeded (sales > $200) , or simply a stock price change. These profiles can be configured to be persistent or expire in a given timeframe, and are also stored in an SQL database.

The Gateway module provides the communications service to the various wireless messaging services such as SMS, WAP, Net Alert or CGI/HTTP services. The gateway can be easily configured to send messages to conventional formats such as email and fax. The gateway is designed to connect to existing carrier( such as Sprint or AT&T) SMS systems and will adhere to protocols provided by each carrier. The gateway can also send packets using object transfer protocols such as RMI and CORBA. The gateway can be configured to format the outgoing message to the limits of the device such as screen resolutions and formats, since different devices can handle differing amounts of text. The gateway module can also communicate with WAP enabled devices to allow more structured messages to be sent in the WML (Wireless Markup Language) format.

The Business Application Adapters are the modules that are used to communicate with the business software products used in-house. They include; adapters for SQL and ODBC compliant databases such as Access, Oracle, DB2 and Sybase to allow reports to be generated; Adapters for Enterprise Resource Planning applications such as BAAN, PeopleSoft and SAP; Adapters for mail and collaborative servers such as MSExchange, Lotus Notes and Netscape Message server; and Adapters to text and web text content such as news feeds and stock services and sales automation systems such as Maximizer and ACT.

Technology details

The server is written in Java and is designed to run on any networked server which supports the Java VM version 2. The system requirements include a small footprint SQL database such as Oracle Lite for storing user and group as well as profile information. This database can reside on any other networked server. The server also requires an HTTP server to be available which supports Servlets - this includes IIS, Apache, Netscape and the Java Web Server. Servlets are used in conjunction with HTML forms on the browser to facilitate user preference settings and administrative tasks. The server requires at least 64Mb of memory to be available on the primary host and the JavaVM to be installed in the host computer. The CellEvent server can be configured to use a proxy server if a coporate firewall is being used. The proxy server can be configured for any IP address and any port number from 1024 to 64K. The server can handle multiple simultaneous connections and is a multi-threaded service, which facilitates multiple simultaneous message broadcasts. A java client program is provided to allow administration of the services and users, this is also used to import and configure databases and to convert SQL data tables from one format to another. The adapters to the mail and collaborative servers allow for certain keywords and/or senders to be used to trigger a notification, for example the subject field may contain a certain keyword that causes a notification to a CellEvent user to be triggered. The CellEvent architecture is highly flexible and can be adapted to a wide range of business applications and information sources, event notification can even be triggered by a physical event such as an alarm sounding or a door being opened, through the use ot JINI or Embedded Java devices.


WebEvent - Company Message Notification Server

WebEvent is a Web vision of CellEvent described above. It resides on one company's server. The services can be subscibed by different companys, coperations and businesses. All administration program for creating and managing groups, users, messages and schedules are carried out online from any PC which is connected to the Internet. Please click Servlets version for the version finished mostly using Servlets. Click JSP version for the version finished mostly using JavaServer Pages and login with "user0" for username and "pass0" for password and try out the services. At the moment it is under developing, so beware of changes and server shutting-downs. I am in charge of this project which is the key project of the company. To try this service yourself, your cellular phone sevice provider must be Clearnet because at the moment the message is sent out through Clearnet's SMS gateway. It will be targeted to all carriers. If you do have a Clearnet cellular phone, after you login, click on "Add Contact", add your mike number with your pseudo names. Then click on "Send One-Time Message", choose "Deliver To User:" and from the drop-down list, choose the contact with your cell number, type a simple message and submit it. This message will be notified on your cellular phone. Or if you wish to send a message to someone immediately, please use my creation with the Message Center where you can send a message to any body using any service provider on the service list.


CellBuddy

CellBuddy is a consumer information service. CellBuddy offers Consumers & Wireless Carriers the opportunity to build custom information services for their existing retail and corporate client base. CellBuddy helps in both client retention and additions. The CellBuddy service can be easily configured to communicate with proprietary messaging gateways such as SMS or WAP, or can simply send notifications through HTTP or CGI based interfaces. The service offers the unique ability to allow subscribers to set up their own personalized information events. Users obtain a single ID to which they can add both their cell number and pager number and messages will potentially be sent to both. The service is designed to be flexible enough to allow a huge variety of information feeds to be added, such as local news, weather, travel and local events. The CellBuddy service can be configured to provide community level information such as TV listings or local concerts and entertainment, road closures and severe weather conditions. CellBuddy is a new service offered to consumers who wish to receive personalized information on their cell phone or pager immediately upon a predefined event happening or on a user-defined schedule.The service requires users to have access to the Internet to select the personal options. It is available on the Internet at www.cellbuddy.com, and requires the user to enter some personal information to obtain a CellBuddy ID. Once the user has the ID they can subscribe and configure their personal information services. These services currently include:

  • Stock Notification
  • News server
  • Weather Service
  • Personal Reminders
  • Message Center
  • Concert Reminders
  • Lottery Results
  • Sports Scores and Results
  • For details of services, please view the following Web page: http://www.cellbuddy.com/services.html
    Or click this web site to send a message to anybody who has a mobile phone or pager using this applet:
    http://trade.classwave.com:8080/cellbuddy/CellBuddyMessage.htm. For mobile phone, you have to select the service provider of the owner. It is a combination of technologies including Applet, Servlet, JavaScript, Oracle and wireless technologies.


    Cowboy
    (Click the title to show. Description coming soon)

    Contact Manager

    A self-developed Java application which runs on top of an MS Access database using JDBC, ODBC. It tracks personal contacts. The user can maintain (add, delete, view, find, navigate and change) the contacts' information. Navigation of the contact list can be done with four options: by last name, first name, contact ID and telephone number. The past events can be automatically stored in the "Past Events" table, thus guaranteeing the "Scheduled Events" table always keeps the future events. If there are events on current day, the events will be automatically displayed when the user opens the application. The user can check for the closest event by pressing the "Closest Event" button. The user can glance at events of a given date by simply entering the date and pressing a button. The user can also add a new schedule, change a schedule or cancel a schedule. The application guarantees that the database has:

    • Entity integrity. A contact and an event are always added with a unique ID. The contact ID and event counter are not duplicated.
    • Data integrity. If the user entered the wrong format of date and time, dialog boxes will provide the correct date and time format.
    • Referential integrity. When the user wants to delete a contact by clicking the "Delete" button if this contact has events in the "Scheduled Events" table, a dialog box would tell the user that the contact has events and gives two options "OK" and "Cancel" to the user. If the user presses "OK", not just the contact is deleted from the "Contacts" table, but a cascade deletion will delete all the contact's events from the "Scheduled Events" table. But when there is no event for that contact, clicking the "Delete" button would delete the contact without asking.
    The "Find" button would bring a dialog box for the user to enter the contact's last name to be found and when the user presses Enter, the first contact with that last name would be highlighted. The "Next" button would lead the user to the desired contact. But when it is not found, a message "Not Found" would be displayed.

    All four tables in the database can be displayed by pressing the corresponding button. When the user begins to retain the events in the "Past Events" table, the user has three choices(three radio buttons): "On Time", "Not On Time" and "Delete". When "On Time" is pressed, the highlighted event is transferred to the "Completed Events" table, completed date and time would be the same as the scheduled date and time; when the "Not On Time" button is pressed, the user is prompted with two text boxes to enter the completed date and time. The event would then be transferred to the "Completed Events" table with scheduled date, time and with a different completed date and time. When the "Delete" button is pressed, the event is deleted as it was unimportant to the user or the user did not accomplish that task at all.

    This application demonstrates skillful use of SQL, excellent layout management and comprehensive knowledge of object oriented development and relational database.

    This application implements the following interfaces:
    • ActionListener.
    • WindowListener.
    • ItemListener.
    • TextListener.

    Geometric Classes

    A collection of geometric classes developed using C++. The collection starts with a class 'point'. Two points would be a line. Both implicit and explicit objects (points) are used to calculate the distance between two points - the length of a line. Then classes of 'square', 'rectangle', 'triangle' and 'circle' are added as sub-classes of the class 'point'. They, apart from inherit properties and methods of class point, all have their own properties and methods for calculating area and perimeter. Again it shows the skills of object oriented development.

    Library Database Manipulation-Client/Server Application

    An application using Visual Basic 5.0 (client) and MS-SQL server. Added functionality included:

    It demonstrates such skills:

    • Using SQL and RDO.
    • Writing add, update, delete and select procedures for SQL server.
    • Writing triggers to guarantee that the database has:
      • Entity integrity.
      • Referential integrity.
      • Data integrity.
      • Business rules (Business Logic).
    • Calling procedures from Visual Basic(client) and passing parameters.
    • Error handling from both Visual Basic(client) side and SQL server side.
    • Teamwork, problem solving and time management.

    Visual Scheduler

    A Visual Basic application which runs on top of an MS Access database using DAO. This is the Visual Basic Version of the "Contact Manager" described above. It tracks personal contacts. The user can maintain (add, delete, view, find, navigate and change) the contact information. Navigation of the contact list can be done with four options: by last name, first name, contact ID and telephone number. The past events can be automatically stored in the Past Events table, thus guaranteeing the Scheduled Events table always keeps the future events which are constantly checked for the closest one. When it is within a certain time, a reminder is automatically triggered to remind the user with flashing heading and bell, and at the same time the event details appear on the screen. A visual calendar and time list are used to add a new event or reschedule an event. The user can glance at events of a day by simply choosing a date from the calendar and pressing a button. The application crystal report gives well formatted details from the Contact, Scheduled Events and Completed Events table. Most of the applications can be launched in one of three manners:

    • Clicking a command button.
    • Selecting the application icon from a toolbar.
    • Selecting the item from a menu.

    All four tables in the database can be displayed and edited by pressing the corresponding button from the OLE creation menu which can launch MS Access application within this application.

    When the user begins to retain the events in the "Past Events" table, the user has three choices(three radio buttons): "On Time", "Not On Time" and "Delete". When "On Time" is pressed, the highlighted event is transferred to the "Completed Events" table, completed date and time would be the same as the scheduled date and time; when the "Not On Time" button is pressed, the user is prompted with two text boxes to enter the completed date and time. The event would then be transferred to the "Completed Events" table with scheduled date, time and with a different completed date and time. When the "Delete" button is pressed, the event is deleted as it was unimportant to the user or the user did not accomplish that task at all.

    A status bar provides instant help text for the user and it indicates current date, time. The status bar also gives the on/off status of the reminder.

    This application has the same functionality as its Java version to ensure entity integrity, data integrity and referential integrity of the database.

    Other features:

    • From help menu the user can connect to the service providing company's home page for final help;
    • Screen saver;
    • Logon with user name and password;
    This application demonstrates skillful use of SQL, OLE, DAO and Crystal Report. It is yet another program using object oriented techniques and relational database.

    Data Modeling (click to show)

    Tim's Calculator - Java applet

    Other Java Applets
    Tim's Logo
    Draw a star
    Tim's List
    Tim's Sound Applets

    Contact:Please phone or email me

    E-mail: timwei@yahoo.com




     Home Page   Logo  Calculator  List  Star  Links  Contact  Projects  Louis' Stories