Our Data Tool Predicted a Donald Trump Win 4 Weeks Ahead of the Election…

We built an engine that measures Engagement Energy by mining Facebook Pages focused on businesses, organizations, communities and causes. Engagement Energy is measured by taking the normal Facebook data and scoring it using our proprietary algorithm. This algorithm is intentionally agnostic to traditional marketing demographics like race, gender, age and location. It is purely a measure of how engaged a community is as a whole as well as how engaged individuals are with a particular account.

In July we hooked up the Facebook Pages for Donald Trump and Hillary Clinton as a data test. The results were fascinating. We instantly knew how many people Liked, Commented and Shared posts from their respective pages. This allowed us to track and score each community throughout the Election Cycle.


Head over to our c1industriesblog for more information.

Upfront Analytics

I’m responsible for developing and maintaining many critical systems in UFA. I’ve designed and built our core MySQL database, content management and report generation systems. I also build the interactive dashboards we sell to our customers.

Apart from web/database applications I’ve worked on many different areas crucial to maintaining fun interactive games. I’ve written the logic needed to assign the right games to players based on their demographics and play history. I also created the in game bots which learn responses based on previous game play.

Upfront Analytics


Tasked with building an affordable 3d scanner that could be used to scan toys. Was able to accomplish this using a rotating plate and back lighting system. Silhouettes are captured every 10 degrees and turned into masks. Shape carving was then used to construct voxel models and adaptive marching cubes to create the mesh. Texturing was one of the most difficult problems to solve and a number of approaches were used. Fragment shader can be used to project textures onto the object for view dependent rendering. This looks the best but suffers from transitions and can’t really be exported. A static texture was also created by blending best views per triangle.

A prototype 3d room was created to make the interface child friendly.


Test of Toby the robot. He has no legs yet but can see with a hd webcam.

Eight servos control the arms and head movement. I’m using the ZX-SERVO16U control board to control the servo position and speed using serial commands.


Megalopolis is a large project that implements real-time procedural modelling of buildings from GIS data. GIS data and building descriptors are downloaded from a database and buildings are generated on the clients computer.
This allows multiple users to interact with an ever growing detailed 3d city without the need to download large models. Users can incrementally refine the city by interactively resizing and applying appropriate styles to buildings. The system can be seemlessly integrated with externally created cad models.
The following screenshots show a reconstruction of Dublin city, demonstrating how important landmark buildings such as the Trinity College Campus can be combined with procedurally generated buildings and roads. Implementation details can be found in my thesis.

Screen Shots

teapot resultsteapot results

teapot resultsteapot results

Roof Modelling from Straight Skeleton

teapot resultsteapot resultsteapot results

Automatic Generation of LOD

teapot resultsteapot resultsteapot results

Texture Variations and Weathering

teapot resultsteapot resultsteapot results

Symmetry Hybrids


How we perceive the world is strongly governed by symmetry. Symmetry presents itself in both natural and man-made structures giving aesthetic appeal to the world. This paper presents an approach to form intuitive tree based representations that minimally describe input patterns. We explore how new hybrid patterns can be generated by grafting different symmetry trees together. A new algorithm is proposed to generate new hybrid patterns that maintain the overall appearance of the inputs while allowing control over the amount of variation generated.


Generating hybrids from symmetry has a number of useful
applications ranging from automatic content generation
for virtual worlds to artistic designs for wallpaper or ornaments.
We have tested this technique within a number of
domains. In each case inputs are given on the left.
flower resultsflower resultsflower resultsflower resultsflower results

We segmented some flower patterns into a set of oriented labelled shapes. We obtained many interesting hybrid flowers with characteristics of the input patterns.

flower resultsflower resultsflower resultsflower resultsflower results

We segmented the parts of ornamental designs and achievedmany new varying designs. The complexity of each pattern allowed hundreds of hybrid variations.

flower resultsflower resultsflower resultsflower resultsflower results
Some interesting and unexpected results occurred with some of the hybrids. If symmetries are matched between different hierarchy levels of the input patterns’ symmetry
tree, we can obtain some fractal like effects. This occurs if we allow loops within the
symmetry tree. We have no way to adjust the depth of recursion within these fractal hybrids
without manually adding some control parameter to the resulting production set.

Building Generation

Input building facades (above) were segmented and hybridised. After hybrisation depth was added. Shaders and weathering effects where applied to the resulting 3d builing models to improve realism.

flower resultsflower resultsflower resultsflower results

Inverse Procedural Modelling


Procedural rule sets can be learnt from photographs of building facades. This
involves using image processing techniques to segment architectural elements and assigning
depth to image regions, thereby creating a 3D model.

Facade images are segmented using computer vision algorithms (Largely based on Gaussian mixture models and graph cuts). The system
is written in C++. OpenCv (Open Source Computer Vision Library) is used whenever
possible for image processing. Segmented building elements are manually labelled
for further processing. Implementation details are given in Chapter 4 of my thesis.





(Personnel Accounting Network Database Administration). PANDA is a large project with the aim of collecting all information about employees, equipment and network points. The information is displayed in the form of an interactive map allowing the user to click on any seat in company and display information about the employee and equipment used at that location. PANDA can manage employees and equipment transfers as well as provide a messaging system for employees to send notes to each other in the form of virtual sticky pads. It also provides a study aid for employees allowing them to create study lists for learning English and Chinese. The project is currently being extended to support a forum to further improve employee communication.