FineTracker Online

FineTracker Online is a new Ruby on Rails based port of the existing desktop based FineTracker software. FineTracker is used by local government to manage parking tickets, evidence, court documents, photographs and integrates with Impalas Windows Mobile software for traffic wardens producing the tickets.
This application is a Ruby on Rails port to allow for offering FineTracker as software as a service.

Omnipressent. Too many devices?

How many devices do you own? Personally I find it frustrating that each device is it's only silo of files, resources and settings. This is an idea I've been playing with for a while the get my devices to act like one device.

I developed a C# application to test the idea, combining services like VNC, HID sharing and scripts to try to produce a seamless experience across various computers.

Client Construct Concept


Buying a house is very complicated. It involves auctioneers, mortgages, lawyers, builders and subcontractors and most people are unprepared for the process. That lack of preparation is both stressful for the customer and causes costly delays for the builder. The concept of Client Construct was developed in a builder building housing developments from scratch to help customers through the process of buying and building a new house from install interest, through sale, construct, customization, snags and handing over the keys.

2nd place at Google startup weekednd: Haulio concept


Haulio was a concept developed in a few hours during StartUp Weekend at the University of Limerick. It allows hauliers (truck drivers) in the construction industry to see what jobs are available from quarries to building sites or scrap removable and allows them to stream line a process that up to now is very ad-hoc and difficult to manage.

Using on-line updates to improve services and reduce maintenance times.

With the introduction of online updates we have reduced man hours spent on the road significantly as well as reducing development time and bugs related to software fragmentation ie: have several different versions.


  

Cross platform Cordova app development with Telerik/Progress.

Cross-platform cordova application development with Telerik/Progress. I was lucky enough to be attending training with Telerik/Progress in Dublin learning how to develop cross platform mobile applications for Windows Mobile, iOS and Android with Teleriks software which deploys to an web application server to be run in your phones browser and can also deploy cross platform Cordova hybrid application or compile to native applications for Windows Mobile, Android or iOS (Apple).

Fizz & Hummer

Fizz and Hummer is a scrolling shooter game. The player plays as either Fizz or Hummer two Honey Bees out to save there kidnapped queen from the evil wasps. As you fly through levels you must fight of enemies like ants, spiders, hornets ect. Two player can play as Fizz and Hummer cooperative over a network using two iPhones. It was nice to work on partly because the client had a fleshed out idea complete with story.
   We decided to use LevelSVG as the basis since I had worked with it before and liked it.

Technologies: iPhone / iOS, Objective C, LevelSVG/Cocoas2D, Network Sockets

Securecom; Wireless Personal Alarm, Emergency Software, SMS parser

The Wireless Personal Alarm (WPA/XPA) a pendant like electronic device for use by the old, infirmed and people in high risk situations developed by securecom technologies Ltd. Upon pressing a button on the device it finds the nearest bluetooth phone and GPS unit and uses it to send an emergency SMS message. I worked on this device and created the software that receives and process it's message and displays it on a map.

NeedATaxiNow, iPhone App, PHP Server

This application was for a client. He wanted an iPhone application that could serve two roles. It had to allow a customer, someone you would like to order a taxi to tap a button and have a taxi  ordered as simply as possible. The nearest taxi using the app would be informed that they had a potential customer and decide whether to accept or allow another taxi to pick the person up.
They also needed a centralized server that would allow for taxies and customers to be managed and potentially allow future software to interact with the system.

Programming beyond programming

I pride myself on being a good software developer and being a software developer involves coding but to be a good developer you have to look at software development more broadly.


  

2nd prize at Google Statup Weekend in Limerick

I recently attended Start-up Weekend Limerick where I had an amazing time. The idea is you start Friday at six O Clock, come up with new ideas, form groups and by Six O'clock on Sunday you develop and pitch your business idea.

Over the weekend our little company formed, merged, split and pivoted. It was at times stressful and frustrating but it was amazing fun and an amazing experience. Some teams developed working mobile apps, websites and products over the two days. On Sunday the last day we realized the original idea wasn't working so our team decided to start from scratch.

Gravitation; iPhone App

Description: Gravitation was my first iPhone app. It was initially developed as a prototype in C sharp before I made the jump to iPhone. The engine although simple was made from scratch, I also made all the graphics.

Technologies: iPhone, ObjectiveC, C Sharp, Physics, Graphics

Virtual Network Lab: Part 2

I showed how to build a Network lab using VMWare and Virtual machine but now I need it to do more. I can only connect one host to the network, I want to be able to contact my network from anywhere, I want a dedicated Attack network and another for Experimenting with active directory and Windows security and I'm building a media center from a Mac Mini.

Security Mistakes Programmers Make

I think it's fair to assume most novice or even intermediate programmers are looking to just get the thing to work, compile without errors, to not crash and to do the job it was designed to do. So unfortunately most programmers are unaware of the common security risks we can unwittingly write into our code. In no particular order here are the security problems software developers should look out for.

OpenStack Meetup / Software Defined storage


I recently attended an interesting OpenStack meetup/lecture on Software defined Storage or metering, touching on software defined networking. Here's the description:

Parallel, 3D Game

Technologies: C++, 3D, Ogre3D Engine, Blender 3D
My Responsibly: Software, Physics, Control, AI, Design, 3D Modeling, Some Texturing, Collision, World switching dynamic.
Not my work: Original Ogre3D Graphics Engine, Base Textures.
Description: Parallel is an experiment in game design, AI, Game engine development and the broader issues of developing a 3D game.

Very Simple Puplic Key Encryption and Certificates

Possibly the most important idea used to secure your data and authentication is Public-Private Key encryption. I learned to do the maths of this in college and while I can do it on pen and paper I'll confess I don't fully understand the mathematics, it has something to do with prime numbers and prime pairs but you don't need to understand the maths, in fact you don't need to understand the maths to be able to design a system based on these concepts. All you need to understand is it's a form of encryption where one key encrypts the message and another key decrypts it.

Pipes and Redirects

The UNIX philosophy is that programs should do one job and do it well. To do more complicated tasks programs can be chained together using pipes but before we go on we have to discuss input output streams. There are three standard streams in Linux; stdin, stdout and stderr. stdin provides input to a program, for example the text you type into the console. stdout provides the usual output from a program for example the feedback from the console. Finally stderr is the output stream for error messages.

Netcat Ninjutsu

Netcat is a an extremly flexible tool. It follows the Unix physiology that programs should do one thing and do it well. At it's simplest netcat allows you to connect to and listen to UDP or TCP sockets but as I'll show it can be very powerful. It comes standard on most Unix's including Linux and BSD and can be freely downloaded for windows.

Project: Physical Analytics server

Technologies: Linux, C++, Multithreading, Network Sockets, MySQL
My Responsibly: Design, Code

Description: This server provides a back end for the Physical Analytics iPhone app. Allowing iPhones to synch their workout data. Physical Analytics the iPhone fitness app I wrote had a network component, the app was designed to be a client to a server program that could manage the backup of data and sharing of data logged by the application. This meant that software could share training data between iPhones and could for example be sent to a trainer or downloaded onto PC software for analysis.

UX Idea: Visual Pipes

Pipes are a way of connecting two or more console programs so that the output of one becomes the input of the other. This allows simple programs to be connected together to do something complex. Visual pipes are a graphical equivalent. It can be very frustrating waiting for your computer to finish one task so you can start the next.

Physical Analytics: PC Utility

Technologies: C Sharp, Network, SQL
Project Size: 1/5
My Responsibly: Design, Programming
Not my work: Google Maps
Description: Physical Analytics is an fitness iPhone app. This Utility is a C Sharp program for the PC that can synch with the iPhone app, Save the data and process the data.

What it does
The program loads up data produced by the iPhone app, parses it and displays it on a map and graphically shows X,Y and Z acceleration for any number of training sessions. It can also export this information to Microsoft Excel format.

Thesis; Sound Location Project

Technologies: Physics, Academic, C Sharp, Audio
Project Size: 4/5
My Responsibly: Thesis Idea, Research, Hypothesis, Testing, Presenting, Software Development.

Description: A sound such as a gunshot can be found using the speed of sound and trigonometry but requires distance. I aimed to prove that the intensity (volume) of a could be used to find a sound in a shorter distance such as within a building.

CIX Datacenter

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod ma


kerberos AKA: How Authentication works on Windows Networks

Here I'll cover how the Kerberos works or how authentication works on a windows networks. This isn't a tutorial on setting up active directory isn't more of a low level explanation of what is happening on the network as a client tries to connect to a server, how it gets authenticated by a Domain Control and how all three know who's allowed access and what is there to prevent an attacker passing himself off as a client or even a domain controller.

Building a virtual network lab with VMWare

A good developer or a good administrator needs to keep their skills sharp. They need to learn new technologies and if you are anything like me you learn much better if you can try things out. Virtual machines offer an opportunity to experiment risk free. Building a virtual network is an extension of this. With a virtual network gives you the opportunity to test things out in a more realistic scenario, VMWare can even limit the bandwidth and emulate packet loss.

Man in the Middle 1A: WiFi Honeypots

Man in the middle is a class of attacks where an attacker somehow passes communications through a resource they control. In this series I'm going to describe how an attacker would hijack, control, subvert and snoop on a victims network traffic.

In part 1A here I'm going to explain how attackers can place themselves into a man in the middle (MITM) position using a Wifi honeypot. In part 1B I will will demonstrate how this can be using an ARP Cache poising attack to also initiate a Man in the middle attack. In part 2 I will demonstrate what can be done once in the MITM  position. You can read either 1A OR 1B and go from there. You don't need to read both.

Man in the Middle 1B: ARP Cache poisoning

Man in the middle is a class of attacks where an attacker somehow passes communications through a resource they control. In this series I'm going to describe how an attacker would hijack, control, subvert and snoop on a victims network traffic.

In part 1B here I'm going to explain how attackers can place them self in a man in the middle (MiTM) position using a 
an ARP Cache poising attack. In part 1B I will will demonstrate how this is done using a Wifi Honeypot. In part 2 I will demonstrate what can be done once in the MITM position  You can read either 1A OR 1B and go from there, you don't need to read both.

Hero of Africa; IPhone Cocoas 2D Game

Technologies: iPhone, Cocoas 2D, LevelSVG, Objective C, Physics
Project Size: 2/5
My Responsibly: Adapting LevelSVG/Cocoas2D engine, Animation System, High Scores, Weapons, Enemy AI, Control, Sound trigger system, Menus, Level Loading.
Not my work: Art, Level design, Sounds, Media assets
Description: 2D plat-former game similar to Super Mario with weapons, high scores.
I'm omitting some details here by the customers request, so I'm not giving the games name or any screenshots. I Worked on the engine for this iPhone game while the client did the content and level design.

Physical Analytics, iPhone App

Technologies: iPhone, Linux, Windows, Objective C, C++, C Sharp, MySQL, SQLite, Network, Sockets, GPS, Accelerometers
My Responsibly: Design, Programming, Testing of iPhone App, Linux server, Windows Software, Promotion, Business, Strategy, Financial
Description: Physical Analytics is a Fitness Tracking app, it uses GPS, Acceloratoneters, SQLite, Threads and Sockets. It works with the PhysicalAnalytics Server and PC Utility all of which helped get me accepted into the endeavour programme.

PHP Example Code, Taxi App

This code was written for a customer who contracted me to write a Hailo style Taxi App. They also needed a PHP server good enough to demonstrate that the app worked (I think they were going for funding). Even though I'm not a PHP programmer I am flexible and can generally learn on the fly.


C# Code Example, Omnipressent

Omnipressent was an experiment I worked on, the idea was to use various services like vnc and file transfers to give the impression that multiple computers were one system. Allowing users to drag files from one desktop to another or take control of the speakers on another computer. To make the development manageable I couldn't write each service from scratch so I worked out a way of wrapping services others had developed and coming up with a constant way of passing messages to them and even allowing services to pass messages between each other.

How I debug messy code.

I’ve been asked a couple of time how you debug code and I think the best way to spend a couple of years fixing someone else Spaghetti code. In fact think colleges should do more projects that involve working with a very tangles codebase so students can better understand the importance of writing clean, decoupled code but short this is what you can do.

Malware, Fake AV

I found this on my fathers laptop. FakeAV looks like antivirus software but is actually malware. It tries to make to the user pay to remove the treats but this Anti Virus is the real threat. It blocks removal and the installation of real antivirus software. I removed it by removing the Hard drive from the laptop and running an antivirus from another machine. 

Tutorial: RAID

RAID stands for Redundant Array of Independent/Inexpensive Disks. If you need 12 Terra Bytes of storage but you can only get 2TB drives what do you do? Well a RAID is the answer, it can connect those drives together to create a single logical volume. It comes in a number of flavors each with it's own advantages and disadvantages. Because a single volume is comprised of multiple drives the odds of a single drive failing are increased so it is necessary to decide how important your data is and know what you can do to prevent a drive failure becoming a disaster.

Ransomware

I came across this Malware the other day, I claims to be installed by the Gardai Siochana (Irish Police) due to inappropriate content including pirated material and child pornography and demands a unlock code be purchased for 100 euros, god knows what actually happens to your credit card details.

Endeavour Programme

Technologies: iPhone
Project Size: 5/5
My Responsibly: Promotion, Business, Strategy, Financial

Description: The Endeavour Program is an intense entrepreneurial programme involving dragons den style pitching and a comprehensive masterclass in all areas of business from Irelands best in the given area.

Old Projects; Cows with guns


Technologies: C Sharp, Network
Project Size: 2/5
My Responsibly: Design, Programming, Documentation, Testing, Art


Description: Written in C Sharp .Net. This game is a multiplayer strategy game similar to Worms. Each player has a team that they control in turns locally or over the network. They can move, attack with a variety of weapons and destroy the environments. The game comes with a buit in level editor.

OpenGL; Robot Attack



Technologies: C++, OpenGL
Project Size: 1/5
My Responsibly: Designer, Programmer

Description: Very simple OpenGL game, College Project. You control a paper aeroplane as it does battle with a toy robot.




App-store submitting template


Submitting an App to the Appstore can be a complicated and confusing experience. To make life a little easier I created this template. I little preparation makes the whole process a more simple.