Keith Ó Dúlaigh

Dedicated software engineer . . .

Profile picture

MySql PostgreSQL Linux PHP Haskell JavaScript
Fedora Ubuntu LaTeX Scrum Scrum Git Eclipse Hibernate
Guidewire InsuranceSuite Gosu

Keith is a dedicated software developer who has been programming since he thought himself BASIC when he was aged ten. Since his early dabbling with computers, Keith undertook a BSc Computer Science & Software Engineering and MSc Computer Science (Research) degree at Maynooth University. He has experience programming using languages such as C++, JavaScript, Java, C#, Scheme, Haskell, Ruby (on Rails), SQL, PHP and Perl. He is most comfortable programming with Java and is an accredited Oracle Certified Professional, Java SE 8 Programmer. When Keith is not writing about himself in the third person, he also enjoys learning to use different software systems (such as Linux) and tools that improve the development process such as Git and Maven.

If your organisation is head hunting for a hard-working and passionate software engineer with an interest in improving his own skills and self-learning then you can contact Keith. Keith is available for paid employment and for the right organisation also has availability for voluntary work.

Oracle Certified Associate badge.
Oracle Certified Professional badge.


Solutions Consultant

April 2016 - April 2017

I was employed by Guidewire as a Solutions Consultant in the Guidewire Services Center (GSC), Co. Dublin. After passing training I was assigned to work with on a team of seven developers where I followed an agile process (Scrum) to integrate Guidewire's InsuranceSuite (PolicyCenter, BillingCenter and ClaimCenter) with third party vendors such as Smart Communications for document production as well as Authorize.Net and Payflow for payments processing. In addition to the implementation of these integrations, I was involved in updating the design documents to reflect any changes that I made (using Microsoft Visio and Word) as well as the re-design of an Inbound Files and General Ledger integration.

Some of the languages, tools and libraries that I used at Guidewire include:

  • Gosu - An object-oriented programming language with a notation similar to Java and UML. Gosu classes execute on the Java virtual machine and are compatible with the standard Java APIs. In addition to what is supported by Java, Gosu supports type inference, blocks (i.e. lambdas in Java 8) and class enhancements which allow even final classes, such as String, to be enhanced with additional functionality. Custom type loaders also allow for artifacts such as XML files to be accessed in code using the "dot" member-access syntax.
  • Jersey - I used Jersey to access Smart Communications' RESTful web service.
  • JavaScript - I used JavaScript to customise the behaviour of the Smart Communications draft editor.


Guidewire Dublin, Ireland

Tutor / Lab Demonstrator

February 2012 - May 2015

I was a tutor/lab demonstrator to undergraduate and postgraduate students in the computer science department on subjects such as software engineering, databases, programming, website design and operating systems. My responsibilities included keeping a record of the marks obtained by students during labs, correcting assignments and class exams, preparing marking sheets for other demonstrators and helping students to understand course material. During one semester I delivered a repeat lecture on databases once per week to students who could not attend the scheduled lecture. I also prepared and presented tutorials on databases and website design.

Some of the languages and tools involved were:

  • SQL - SQL was the Data Definition Language and Data Manipulation Language used in the databases course and was run on a PostgreSQL server using pgAdmin III as the client.
  • Data Modelling - Database design was modelled using Entity Relationship diagrams. I used TikZ for LaTeX to occassionally draw the diagrams.
  • White / Black Box Testing - White and black box testing techniques were thought in labs to undergraduates. The JUnit testing framework was used to write the tests.
  • HTML, CSS, JavaScript, PHP - These languages were taught to students during a course on web design. Websites were deployed on Linux servers hosted by the University or in the cloud on Microsoft Azure.


Guidewire Dublin, Ireland

Internship Developer

August 2011 - February 2012
I continued the development of a website that allows sita’s customers to generate documentation for sita’s web services. I gained experience load testing with hp Load Runner and was exposed to the Scrum development process. The technologies I used include: JBoss application server, Java, servlets, jstl, sql, Oracle database server and subversion.


SITA, Letterkenny, Ireland

Internship Developer

February 2009 - September 2009 and Additional Contract Periods
I implemented a digital archive for storing qualitative data. This involved customising a content manage- ment system (Drupal) and Fez installation as well as setting up the Linux server. Most of the programming was done using php with the Smarty template engine. It also involved working with the MySql database engine and writing xml schemas to describe the structure of the qualitative data being stored. In addition to the period specified, I have also done short term work for the iqda during summer and Christmas holidays.


Guidewire Dublin, Ireland

Customer Service Representative

September 2007 - September 2008
This involved putting purchase transactions through the register, logging rentals in the database, registering new members, notifying customers about overdue fees and collecting those fees, filing disks and occasionally opening and closing the store.


Guidewire Dublin, Ireland

Office Assistant

June 2004 - August 2004
I was hired at John L. Mulvey solicitors during the summer for two days per week. I performed typical o ce duties such as filing and doing errands such as taking documents to be sent by registered post.


Guidewire Dublin, Ireland

Repair Assistant

June 2004 - August 2004
I worked at gmtv for three days per week. My duty was to carry out basic repairs on cd and md players under the guidance of the other technicians. This included replacing the lasers used to read disks and replacing surface mounted electrical components.


Guidewire Dublin, Ireland


BSc Computer Science & Software Engineering
NUI Maynooth ● 2006 - 2010
The course included modules that covered object-oriented programming with Java, algorithms and data structures, computer architecture and digital logic, software specification and verification (using Microsoft Spec#), relational database systems, continuous/discrete mathematics, the theory of computation, artificial intelligence, cryptography, software engineering, computer networks and compiler design. During my third year I was part of a team that developed a cross platform instant messenger using .NET. I wrote the client for Windows Mobile 6.5 using VisualBasic.NET and two other team members wrote the server and desktop clients. My final year dissertation covered the development of a language that had some of the syntactic characteristics of Python (sensitivity to whitespace) but compiled to native machine code and used XML as an intermediate format. The parser was generated using an EBNF grammar that was fed into JavaCC and the same grammar was modelled as UML class diagrams in EMF. These were forward engineered into Java classes. This allowed my JavaCC grammar to have snippets of code that would build up a parse tree and could then be serialised to an XML file. I then used XSLT on the parse tree to produce assembly code. The assembly code was turned into an executable binary using the GNU assembler. Using XSLT decoupled the front-end of my compiler from the machine dependent back-end.
MSc Software Engineering
NUI Maynooth ● 2010 - 2011
I undertook the MSc to build on the fundamentals that I learned during my BSc. The subjects that were covered included rigorours software development, OO programming with C++, theoretical computer science (Turing machines,...), software testing, human computer interaction and spatial databases. For project work, I developed an iPhone application and a PHP website that allowed people to plan routes for events such as 12 pubs of Christmas.
MSc Computer Science (Research)
Maynooth University ● 2012 - 2016
I developed a language for defining new composite refactorings from a set of inbuilt primitives and for scripting their application. My approach has an advantage over traditional refactoring engines in that it is designed to be easily extended so multiple software representations (source code, uml class diagrams etc.) can be refactored simultaneously. My approach also allows for di↵erent views of the system to be considered during refactoring. For example, by using a measurement view of the system, my approach can be used to identify classes that exhibit too much functionality, i.e. ‘God’ classes, and automatically restructure those ‘God’ classes into better defined units.


MSc Research Dissertation

The LaTeX files for my MSc degree. I used R to generate the graphs and TikZ to generate some of the graphics (UML diagrams). The build process is controlled with a Bash script.

Qualitas Corpus Analysis

Some Java code for calculating some software metrics on the Qualities Corpus of Java software. The project uses the BCEL library to extract metadata from compiled Java classes.


This project was developed to demonstrate to students of an MSc level course on web development the functionality that was required for their project. The code was never meant to be shared so any bugs should be considered as bonus features.


An example e-commerce website that was put together for use during a tutorial on Web Information Processing at Maynooth University in 2015. The website does not accept payments and serves only to demonstrate how to use the Smarty template engine and connecting to a PostgreSQL database using PHP.


Ms. Jackie Flatley Senior HR Business Partner at Guidewire Contact me using the links in Summary to request this reference.
Dr. Aileen O'Carroll Manager at IQDA during time of employment. Contact me using the links in Summary to request this reference.
Dr. Paul Lewis Project advisor at IQDA during time of employment. Contact me using the links in Summary to request this reference.