Home

Hi and welcome to the main point of entry of my digital self.

My name is Kyriakos Chatzidimitriou and I strive to be a Software Architect, an (applied) Machine Learning Researcher and an Entrepreneur. Currently I am a research associate at the Aristotle University of Thessaloniki,  working as a technical manager and software architect in the EU projects: SEAF  and Mobile Age and doing research on the remaining time.

My research, development and business interests are in the areas of Machine Learning and Big Data for and with Software Engineering and Software Development. More specifically:

  • Software Analytics (Descriptive, Diagnostic, Predictive, Prescriptive, etc.) and Mining Software Repositories and software related data streams for patterns, focusing in the areas of Software Quality and improving the stages of the software development lifecycle.
    • Longitudinal studies of how software evolves.
    • design scalable systems and tools to support the cycle of measuring, reporting,  analysing, testing and improving in the era of Big Data
    • devise metrics, key performance indicators, models  and visualizations that are contextually specific and easy to comprehend
  • Knowledge Representation systems through Machine Learning, Deep learning and Νeurosymbolic reasoning, for uses in Software Engineering and Development like Machine to Machine communication, Intelligent Web Clients, Call by Meaning etc.
  • Software tools for Machine Learning automation (AutoML), in order to bring the value of ML closer to non-experts.
  • Uses of Reinforcement Learning for adaptable software behavior like in autonomic computing or adaptable interfaces.

and some moonshot things like:

  • Learn machines to learn how to code
  • Quantum Computing and especially its repercussions to Machine Learning and Software Development (how we should program, what tools should we use, what abstractions, how to simulate the computations in classic hardware, etc.).
  • Software Analytics, Software Quality and Tools. I am very keen on measuring things:  “If you can not measure it, you can not improve it”.  The goal of this line of work is: a) to design scalable systems and tools to support the cycle of measuring, reporting,  analysing, testing and improving in the era of Big Data, b) devise metrics, key performance indicators, models  and visualizations that are contextually specific and easy to comprehend and c) efficiently make the required  calculations. Focus is given on software quality and in particular in the ISO 25010 characteristics and their  sub-characteristics.
  • Big Code or how we can use machine learning for improving existing software or compose existing software artifacts (components) into functional piece of code. This work is a mashup of things like: call by meaning and  API mining to discover functionality of components and services from repositories and directories, developing systems of systems, everything as a service, extreme collaboration concepts etc.
  • Big Data/Machine Learning with Software Engineering, i.e. the development of architectures, formalisms,  patterns, paradigms, algorithms, infrastructure as code, heuristics in order to deploy big data and machine learning  applications more easily and automate the process to non-experts. I imagine work in this area to be something like the Lambda architecture for Big Data or creating an automated data scientist.
  • Virtual Personal Assistants (VPAs) and Natural User Interfaces (NUIs) and in general creating real-life,  valuable, autonomous agents.
  • Knowledge representation, useful for the interaction between machines, components, agents, etc. through neural models that could also learn new concepts.
  • Longitudinal studies of how software evolves.
  • and I would like to get started with

As I developer, I am fond of the MEAN stack for building web applications, JavaScript and node.js but I also work with Java, Python and R in my projects.

My site is structured as follows:

  • About – Information about me, including my CV and my social media profiles.
  • Blog – My blog on personal, research and development activities, tutorials and ‘how tos’, personal opinions, book reviews, exercise and nutrition posts etc.
  • R&D – My portfolio of research and development projects that includes areas of research I am working on, open source software, libraries and tools I am involved in, as well as any running applications web or mobile.
  • Publications – My publish or perish profile and my publications list.
  • Resource – Pages that provide links to the best things (articles, videos, books, podcasts etc.) I found on the web along on specific subjects along with my narration and links to my posts. I got this idea from Martin Fowler‘s Resource Guides, as for example that on Microservices.