Christos Demetriou
Fullstack web developer *
* Although lately I've been interested in frontend development and UI/UX design. The attempt to simultaneously predict the user's behavior and dictate it through UI intrigues me.
- 20+ years of experience as a Javascript developer & web developer as professional and hobbyist.
- 10+ years of professional software development career.
- 10+ years developing in Ext Js. From version 3.x to 7.x
- 2 years developing in Angular, including Angular Material components.
Skillset
Ext Js, Siesta, jQuery, JavaScript, Angular, TypeScript, ESLint, TSLint, CSS, SASS/SCSS, HTML5, PHP, NodeJs, MsSQL, MySQL, HQL, JSP, Java Spring, DWR, REST, SOAPBeen around Javascript since the time when it was used as a gimmick, for i.e. displaying the visitor's name on the screen (as user input) or displaying a real time updating clock. The methods were crude back then, but the purpose was the same: make the website interactive, dynamic and personalized. It's been an interesting journey to be part of.
I'm a firm believer of space utilization. I can appreciate the efficiency and accessibility of a mobile app, but I enjoy building apps that take advantage of the space my desktop provides. I like utilizing all possible I/O, right-clicks for desktop, double taps & swipes for mobiles to show as much content as possible without pages reloads.
Toolset
Git, Jira, Vault, VS Code, Visual Studio, Apache, Tomcat, Drupal, MediaWiki, Joomla, Wordpress, Moodle, LiferayCurrent interests
I'm very interested in ontological approaches of complex, qualitative and subjective terms for the purpose of indexing and interoperability across services. My current project is an attempt to translate music genres into quantitative base elements, something providers like Spotify already support.
I'm also interested in building a framework for the presentation of topographical and historical data.
Education
MSc Computer Security & Resilience
University of Newcastle upon Tyne, Newcastle upon Tyne, United Kingdom, 2007 - 2008
Obtained my degree with Merit. Degree is no longer available but a snapshot of the university page can be found here
Quoting the university's website "This course combines teaching and research in security and system reliability with human factors, verification and distributed systems. It gives you an integrated view of the technologies relevant to developing trustworthy systems.". In my own words, the degree offered to improve critical thinking in evaluating workflows and catching edge case scenarios. We researched a variety of real life cases in failed systems and the reasons for failure. We were exposed to languages/techniques for error-proof (as much as possible) development.
Some of the modules taught included: "Human Factors Engineering", analysis on the safety parameters on user interface and case studies on fatal system failures caused by human factors in otherwise safe systems. "System Validation", including verification on distributing systems. Case studies on fair exchange protocols. "High Integrity Software Development", creating highly reliable software within the constrains of specific high integrity languages.
Dissertation title: “An ontology based approach to evaluating dependability metadata”
BSc Degree in Computer Science
Intercollege, Nicosia, Cyprus, 2003 - 2007
Experience
Senior Frontend Developer & Architect
NT-ware Systemprogrammierungs-GmbH / Canon Group, 2016 - present
Lead developer and architect on the flagship product uniFLOW Online, based on Ext Js 7.x in a combination of MVC/MVVM structure using a library of reusable core components across multiple projects. Mentored new developers and performed code reviews to ensure standards and managed the frontend documentation. Transitioned into Angular for the needs of the latest company projects. Highlights:
-
Initiated, designed and documented an induction training course for new devs tailored on the company’s Ext Js architectural layer.
New devs were lacking a way to familiarize themselves with the project and the layers built on top of Ext Js framework. After some time mentoring them, I identified the need to create a training induction program which would take 1 month from the developer's 6 month probation period.
The program identifies areas in which the developer is expected to make mistakes and attributes the importance of each sub-task, measured in both time cost and severity. It also measures the expected time an experience developer will take to complete the same task. At the end of the program the new developer is expected to get closer to the time estimates of the experienced dev, using the proper code techniques as defined by the department.
-
Established and spearheaded frontend architectural and dev meetings to guide the team and ensure the latest code standards were followed.
Requested and established weekly meetings between the developers of the frontend team, and presented topics of interest, topics of discussion concerning the code, or code guidelines to the team.
-
Acted as the link between the product planning team and dev to evaluate and carry out the UI/UX designs.
Aided the product planning and UI/UX department to translate the demands of the workflows into reusable components, compliant with the company's style sheet.
Freelance Web Applications Developer
Also worked under alias “Sensible Bytes”, 2011 - present
Full stack developer and IT consultant for SME and individuals. Designed and launched a large number of websites including e-shop solutions. Highlights:
-
Designed, developed and launched the Cypriot Football Database, http://cfd.com.cy, built on Ext Js 4. The project was actively maintained from 2012 - 2017.
-
Maintained a 3rd party developer and consultant agreement with previous employer spanning years 2011 - 2019, handling and managing all previously held duties, upholding an excellent relationship and trust to the present day.
When I left my previous post the company immediately hired me as a 3rd party consultant to maintain all previously held responsibilities. Further development was done via per-case contracts.
The tasks included maintaining the Cyprus based intranet, which featured 17 Ext Js based applications, as well as some applications on the parent company's intranet.
This collaboration lasted 8 years, after which point the company slowly migrated the existing system and took over their maintenance. I was happy to end the support as the project had met the end of its lifecycle. I still serve as a consultant since 2019 onwards but in rare frequency.
-
Worked on two EU consortium projects with the Cyprus University of Technology under the Education and the Mechanical department.
Worked with the Mechanical Engineering department to develop a solution for calculating heating loads on walls, for the purposes of a private company. This project lasted 4 months and was funded by the EU consortium.
Was also involved as a sub-contractor developer, on behalf of another private company, with the department of Education on a Moodle hosted applet to enhance communication between students.
-
Developed a wide range of tailor made websites for SME and individuals, including e-commerce solutions.
Developed a wide variety of websites for small-medium enterprises (SME) and individuals, based on Drupal 5 - 7, with tailor made designs and graphics.
Developed complete e-commerce solutions, most notably for the Yakoya Mobiles representative in Cyprus as well as smaller companies, with paypal integration as well as direct debit (JCC smart based) payments.
Unfortunately the financial situation in Cyprus did not allow most of my former clients to survive.
Intranet manager and developer / IT officer
Intership Navigation Co. Ltd. / Hartmann Group, 2008 - 2011
Full stack developer and manager of the company’s intranet. Developed a large number of tailored applications for all departments. Worked on all of the company’s other projects and performed general IT duties. Highlights:
-
Researched and introduced Ext Js 3.x and AJAX based communication. Effectively separated an outdated system into frontend and backend.
The existing system was based on a JSP pages approach, build upon the Tomcat-based Liferay 5 CMS. I introduced asynchronous communication with the Java Spring based backend, via DWR, and separated the client-side pages from the backend services.
On top of this layer I introduced Ext Js 3.x components, after a personal initiative and optimized my apps in terms of UI and speed. In 2011 I upgraded Ext Js version 3 to 4.3.1 and under a personal license. These applications were compatible with the then active, IE6, and are still compatible with modern browsers today.
-
Ported intranet applications from the company’s Java based intranet to the parent company’s PHP based intranet in a very timely manner.
In 2010 the parent company (Hartmann A.G.) decided to redesign its own intranet and requested some of the applications I had developed in the ISN intranet to be ported there so that it was accessible from every company in the group.
Thanks to the robust architecture of my project I was able to largely maintain the frontend code as was, changing the communication from a DWR direct communication to an encrypted Nu SOAP based. The application on parent intranet was pulling data from our local backend.
-
Led the redesign and development of the company’s website as well as affiliate ISNTC Manilla website.
Took over the development of the company's website (has been redesigned again since) and carried it through after a deal with a 3rd party company failed. Took over all design, development and maintainance of it.
Misc
Mandatory army service
Cyprus National Guard 2000 - 2002, and as part of the reserves 2002 - 2016
Served as an officer, rank equivalent of NATO (OF-1), and for a total of 26 months. These were some very good times (mainly due to youth) and I picked up some very useful experiences. After my initial service I was part of the reserves until I relocated out of the country. In the event I go back I will resume my service till an old age.
"First obey the order, then you can complain." is my favorite quote I picked from the army. If the order is to run towards a minefield, first you do it, then (and if you survive) you can complain. Otherwise it will be an endless debate. This mentality presupposes trust in the chain of command. I apply this mentality at work, whenever the times get tough, making sure to always provide feedback retrospectively.
Greatest honor was to have been part of the regime to raise and lower the primary flag of Greece on the Acropolis, as part of my officer cadet school.
In general, commanding your peers at a young age, really gives you perspective. These are 2 years that I still remember distinctly and experiences that resonate to present day.
The Cyprus Football Database project
This project was put together primarily as means to provide immediate access to data, such as standings tables and player statistics. The local sports sites (including the FA site) are, to this day still, lacking access to this data. Either the data are not available at all, or hard to find. CFD offers a direct view into tables, game records, player stats etc in a single-page application.
On a personal level this project was an opportunity to showcase my design and development skills, as well as showcase the potential of Ext Js.
The project is hosted in http://cfd.com.cy and was actively maintained until 2017. A new version of this app is planned for the near future.
Key features
Access multiple sets of data & personalization
Each entity (competition, club, person) features a dashboard made of fully customizable widgets in terms of content, size, location. User's choises are persistent via cookies.
Tooltips everywhere!
Each widget offers immediate access to more data when hovering over an entity. User can view a detailed view of every information on the widget avoiding back and forth navigation and unnecessary loading times.
...and hyperlinks everywhere!
Most information on page are entities (club, person, country etc.). This allows the user to jump from one entity to the other via traditional hyperlinks. This is consistent throughout all panels of all entities. The history of the user's navigation is kept in the form of tabs up to a limit of 10 past tabs.