I am a software developer with strong Ruby & PHP skills and a solid C++ background, actively working with Ruby on Rails.

I engaged in programming when I was 16 years old and have been passionate about the craft since then. The original stimulus came from computer games and the need to learn how to develop them myself. I began by learning c++ and windows programming. I am a person who always seeks for new things to learn and new technologies to use whenever given the chance. Over the years I have studied artificial intelligence, physics and graphics and have worked as a web developer and tools programmer. You can read more about my employment history and projects below. I am also an avid open source supporter and linux user and I try to give back to the community as much as possible. You can browse my github and gist profiles.

Currently

I am employed at Skroutz SA as of April 2015.

As a member of the Architecture Team, and Internal Tools Lead, I take part in the development of in house projects and framework updates.

In 2015 we upgraded the app's Ruby on Rails version to 4.2. It was a big moment and challenge for me since it was my first contact with the framework. We also created the company's staff management service which integrated several in-house apps. It is still work in progress as the feature list is actively growing, but we prioritize and focus on providing the really helpful features first.

We integrated the company's ERP with the app's payment system in order to automate the accounting operations, like invoicing.

Latelly we are working on a dashboard management app which will allow team members to quickly set up displays with any type of data, from any source (sql, es, logs etc) and with a variety of options as to how they want the data to be represented (singlestats, graphs, tables etc).

In general we touch a large number of libraries and resources, ruby gems, frameworks, apis and so on, and we try to maintain liberies or at least contribute to the open source community as much as possible.

linux ruby on rails ruby redis elastic search mongo javascript jquery css html coffeescript sass

Employment History

Web Developer

NHRF/NDC (February 2012 - April 2015)

I was employed at the National Documentation Center for 3 years. My primary task was to develop from ground up the new version of one of NDC's main products called ABEKT. ABEKT is an Integrated Library System (ILS) which provides library management services to dozens of libraries around Greece. The main purpose of the ILS is to manage members holdings, circulation and provide reports and statistics.

The key concept of the new implementation was to update the quality of the provided services using SaaS and the latest web technologies.

The stack consisted of the Yii PHP framework, PostgreSql, Redis, jQuery, Twig, PHPUnit and git. Albeit, over the years of development and iterations, new technologies have risen and fallen and others have matured, I tried to incorporate new things into the initial stack as I saw fit and rethink the way things work or should work. That did not always go my way of course :).

Technologies I touched, or used in some depth, on occusion, either for the main project or side projects, include the ruby language, the frontend frameworks knockout and angular, mongodb and elastic search, as well as node.js and web sockets. Knockout I did use sporadically in the core project. It was very easy to integrate into existing code because of its unobstructive design approach and provided a very nice user experience with only a few lines of code. Angular on the other hand was a completely different story. I used it in a side project with mongo and node (the famous mean stack) in order to have a hands on experience with the stack, as well as learn what it takes to build a single page app where the server provides only services and small html templates.

linux yii php postgresql twig phpunit redis javascript jquery css html

Web Developer

MSLeague (February 2011 - December 2011)

Lead in the development of an ambitious online fantasy football game. The project was developed in PHP with Yii. We used jQuery for the client side scripting and MySQL driver for the database.

Watch the promo.

linux yii php mysql jquery css html

Infrastructure Programmer

The Creative Assembly (October 2008 - October 2009)

Worked on Total War: Empire and Total War: Napoleon. Co-developed the tools for asset management and the campaign editor. Worked on file and memory management for Windows XP. Maintained and expanded the virtual file and patching system.

Watch the trailer.

c++ stl c# windows api memory and file management vc/intel compilers

Web Developer

Sentel (May 2006 – September 2007)

Lead in the development of money-market.gr, ypotrofies.gr, keat.gr. Developed an in-house flexible, extensible and modern content management system that supported multilingual content and had a fully featured user management system. Had a small project management role. Worked with various libraries (PEAR, YUI, jQuery) and content management systems (Wordpress, Drupal, osCommerce)

php mysql jquery css html

Projects

MSc Dissertation: Games that learn about their users and adapt

The dissertation is about describing those techniques that can be used to develop a computer player that has the ability to adapt to its opponent and its environment in realtime, by learning about them. For this purpose, there has been a lot of research done, mostly academic, in fields such as expert systems, machine learning and others.

I choose to investigate the usefulness of some Machine Learning and Case Base Reasoning techniques because I felt that it consists of some very promising methods. I did that by presenting their general usability and possible applications in games and more particular in Real Time Strategy games.

I choose to research the applicability of such algorithms in an online (realtime) unsupervised environment as this is a requirement of the initial research subject.

Furthermore, this dissertation has as a goal to present one of the algorithms that are under the scope of this research in a practical manner. I did this by using an open-source software game engine and applying my implementation of the algorithm.

The algorithm and general concept was inspired by this paper. You can browse the code here.

Resurrection

Watch the trailer.

Resurrection is a 4-person project and basically a full fetched game. It is based on rough design spec written by a professional game designer. The main game consisted of a spaceship guided by the player from a top-down view that had to destroy enemy spaceships in order to collect just the right amount of energy to build an energy bomb and then fire that bomb at a crater.

Collecting energy, creating bombs and firing them at craters, is puzzling because they all depend of the three different colors the game uses to represent energy forms. E.g a blue crater needs a blue bomb to be destroyed and a blue bomb needs 50% green energy and 50% yellow energy to be created. Hence, destroying the enemies with the right colors and balancing the energy space the spaceship can have, is not trivial!!

We designed the game using Model-View-Controller design pattern which turned out to be extremely handy. We added several maps with different features and enemies with various characteristics, all with different difficulty levels.

Physics Simulation

Watch the trailer.

This is a second semester project for the MSc. It is a physics simulation comprising of a deformable cloth object and rigid spheres. The user can interact with the surrounding cube by rotating it in two axis, add and remove spheres at any time and also record a try and replay it.

The physics are running a basic Euler integrator, with a very small time step though. The tessellation of the cloth is high, 20×30 vertices with one particle (point of mass) per vertex.

The collisions taking place are between planes and particles as well as between particles and particles. That being said, I must point out that all rigid bodies are treated as a single particle, while the cloth is, as expected, treated as multi-particle object. Hence a collision with the cloth is actually a collision between all its particles and the other object. No optimizations so far.

The system is designed as component-based, with lots of decoupling and great inter-component communication.

You can browse the code here.

Spacegame Simulation

Watch the trailer.

This game was developed during my first semester in the games programming msc and at the time was the first large scale game I had ever made.

The graphics are done in OpenGL and shaders in GLSL. The stage has per-pixel lighting, basic [CPU] particle systems and collision detection/response.

It comes with two camera views, a first and a third person camera, quaternion based rotations, in order to create smoother movement, a minimap and recording capability. Also:

  • firing the laser weapon leaves scorch marks on the walls
  • triggers doors to open
  • stops blades from rotating
  • disables forcefields
  • destroys enemy laser turrets.

The game was programmed with a component-based object architecture, but the design is pretty immature.

Source code for the project is available here.

You can browse the code here.

Particle System

This was one of the very first particle systems I wrote and that's why it's here :). The physics and rendering were handled in separate threads, for no particular reason other than experimentation. The whole thing was a way to understand how to develop a multithreaded application and implement multiple particle systems.

Undergraduate Graphics Project

This was the project for a graphics module I took in my third year of my undergraduate studies. It was a very simple project that required a scene with four different objects, a moving wheel system, and a spot light. For the spotlight, instead of using a lightmap, I used a tessellated surface and I also added textures and more controls just for fun.

Start Wars

This very simple, silly and colorless little application was my first attempt to make a game in 2002. It used DirectDraw and had only three enemy ships that spawned from the right side of the screen in a random vertical position and moved in a straight line until they reached the end of the screen, in which time they respawned at the right side. The player could fire up to three bullets and every time he hit an enemy ship, he got one point. When an enemy ship died, it immediately respawned. The graphics were made with Windows Paint.

Studies

MSc, Game Programming

The University of Hull (September 2007 - August 2008)

computer games c++ networking multithreading physics stl artificial intelligence opengl glsl

Ptychion, Computer Science

Panepistimion Pireos (September 2002 - June 2007)

algorith analysis c/c++/java/php unix programming algebra calculus