
PROJECTS

TIMS (Training Information Management System)
At C4i I had the privilage to work on a software product called TIMS. TIMS is a software designed to control a training facility and manage many different aspects such as scheduling, booking and weapons management. TIMS also would be able to interface with software from many other vendors in order to log performance data for trainers to rank and score trainees.
AKKA DISTRIBUTED NETWORK RELIABILITY
TIMS is built using an AKKA.NET distributed system which means that the system is made up of the collaboration and commiunication of actors. As part of the work, I noticed that actors would sometimes die or fail to get instantiated which would cause bugs and errors in operation. I took it upon myself to implement a reliability system for self monitoring and healing, which is a common feature of many distributed systems. I designed a actor watcher that would monitor the health of remote nodes and automatically restart them if they ever went down. The results of this work resulted in the downtime of the agents being reduced to nearly zero.
​
LOMAH RANGE COMMUNICATION
Another major part of the work I did was developing the interface between a range control software for a firing range that consisted of LOMAH targets (Location Of Hit And Miss). The control software would report shot location data and I was requred to parse the message data and save it in an SQL database. I also developed a Javascrpt page that could pull in an image of the target and display the actual shot location on that image. I had to perform some basic math to translate the x and y of the shot to the x and y location of the image. I also went over and beyond and implemented a clustering calculation to show some statistics like the mean shot location and how spread the shots were.
​

MILSIM
One of the projects I was involved with for about 2 years at C4i was MILSIM. MILSIM is a top down battlemap simulation software that attempts to model as closely as possible the interactions of vehicles, personnel, aircraft, weapons, and armor. The software's primary use is for training purposes. It provides robust AAR (after action review) capabilities so operators can play back exactly what happened and explore the effects of different decisions.
MODERN MISSILE SYSTEMS
As part of this contract I was involved in revamping the software systems for modern weapon systems such as fast air missile systems such as those employed by the Israel defense grid. Modelling of missile systems presented some unique challenges, mostly related to the speed at which these missies could travel. There was the challenge of speeding up the update cycle of the software since in the time between updates, a missile might skip over the target or a detection system might fail to detect the missile at all. A major part of my work was transitioning a lot of the legacy code in the system and performing a major upgrade to use an Entity Framework system, that has proven to handle large numbers of entities quickly. Another major update I worked on was the creating of weapon systems, where the missiles could be controlled either actively or passively via onboard lazer guidance or some other means. I was able to exercise some of my electrical engineering skills by modeling some electromagentic emissions and detection systems on the software which proved a bit of a fun challenge.
​
BATCH CONTROL
Another major part of the work I did was the enabling of MILSIM to run and record batch simulations. What this means is a certain scenario would be able to be run repeatedly, with different variables being changed beween each run. Statistics between each run would be gathered and it would be seen what variables proved to be the most significant or detrimental to the outcome. This proved to be tricky, because the software was never originally designed for this kind of operation. We had to resolve some challenges such as allowing the software to run in headless mode by disabling the front end connections for the software and revamping the logging and error handling to figure out what was going on during batch runs. We also needed to create a means of injecting changes to the software at any time via an API.
​

Medical Assistant Chat Bot
The intelligent Patient Decision Aid (i-PtDA) Chatbot project was conceptualized as a means of improving the process and delivery of medical services within a clinic. The project has been developed with specific application to a urological clinic, although the concepts and process could easily be expanded to fit any type of medical clinic. The project is under the direction of Dr. Trafford Crump, who oversees the planning and development of the work. Dr. Behrouz Far is the academic supervisor for the project and the work is being supported by a number of PhD students at the University of Calgary.
PROBLEM STATEMENT
Traditionally the relationship between patients and doctors have been similar to that of a parent-child relationship where the doctor performs the assessments and proscribes the treatment based on his or her knowledge and skill. There is a general acknowledgement that patient centered care is an important consideration, allowing for the needs and preferences of the patient. Educating the patient however, takes time and can be burdensome to healthcare providers. One main complaint that many physicians have with the increase of technology in healthcare is the amount of time they spend looking at a screen instead of interacting face to face with their patients. This can decrease the intimacy of the doctor-patient relationship, that could reduce the satisfaction of both parties as well. There is a need to provide a means for healthcare providers to quickly access the information they need without having to navigate multiple screens and menus. The need for a non-invasive assistant is apparent in order to help alleviate these concerns.
PROJECT GOALS
At a high level, there are three main goals for this project. Number one was to create a prototype system that is able to assist healthcare providers with routine administrative tasks, thus allowing them to be more focused on their patients and potentially increasing the number of patients they can see in a day. Number two is to create a means of educating the patient and allowing them to be more part of the decision-making process and thus creating more patient centered care. Goal number three was to create a means of synthesizing patient data, in the form of patient-filled surveys and sensor data to come up with more accurate diagnosis and treatments for the patients. Sifting through patient reported data and coming up with an informed decision takes time and often requires expert intuition that novice physicians might not possess. Using machine learning and other software engineering techniques, patients can receive more accurate information based on their own personal health information such as age, sex, and patient reported outcomes.

IMAGE CLASSIFICATION
Classification of the CIFAR-10 data set using KNN on SIFT features using the Bag of features model
Image classification means feeding a computer an image containing a simple object, like a cat or car or boat and teaching that computer to distinguish between these objects based only on the pixel values the image contains. There are a number of techniques popular today, particularly in the use of the convolutional neural network. I decided to come at the problem from a different angle using computer vision techniques. I clustered these features into common regions and then performed classification using the K Nearest Neighbors algorithm.

AGENT BASED SOFTWARE DESIGN
Game-playing agents in a cooperative and competitive environment
This project was my exploration in the software methodology called agent based design. The concept of a software agent is such that the software agent has the ability to reason and act proactively and not simply react to external stimulus. My project was my developing of 2 main types of agents that would compete in a Pac-Man type of game. The runner agent would attempt to evade the chaser agents for as long as possible whereas the chaser agents would coordinate and communicate to try to corner the runner. Each agent had only local information and had to rely on what they saw in order to make decisions.

IMAGE BASED 3D MODELING
Visual Hull modeling of a physical object using multiple camera images
This was a project from my Computer Vision course that had me trying to solve the problem of generating an accurate 3d representation of an object using only photographs. My solution was a Shape from Silhouette algorithm, extracting the contour of the object from the images and then using known camera orientations for each image to reconstruct what is called the Visual Hull of the object (the smallest possible region that could have created each of the silhouettes). The results turned out quite good!

VIRTUAL REALITY
Dental Simulator with Haptic Feedback
I took a class on Virtual Reality and built a dental simulator for my final project. The simulation consisted of a 3d model of a set of teeth and a dental pick that the user could manipulate and touch the teeth with. The project was developed using OpenGL and used stereoscopic viewing, meaning 2 separate offset images are projected to a separate eye, giving the illusion of depth. I got to use some state of the art technology such as special NVIDIA 3D glasses and a PHANTOM Omni haptic device (for simulating contact between the model and the tool).

INTELLIGENT CONTROL SYSTEMS
Adaptive Magnetic Levitation
This project was one of my first projects during my graduate studies. The project required me to create a method for suspending a metal object in the air using an electromagnet. Instead of using a standard PID controller, we had to demonstrate the use of machine learning to approximate the non-linearities in the system. I used a radial basis function to "learn" the proper current to pass through the electromagnet given the distance of the object from the magnet.