Author image

Function Reference

My implementation of a functionRef/functionView variant. Why? I was desperate to find out just how std::function<> works. So I scoured the tutorials, books what have you. To find more information. Keywords you need to know for this are:

  1. Type erasure.
  2. callable objects
  3. std::invoke
  4. higher order functions
  5. lambda calculus

We'll talk about it all as I share it now with you.

Based on std::function, functionRef is a non-owning wrapper for an arbitrary callable object.

Implementation notes:

  • A primary template is used to match the complete type of a callable, say void( int, int ) or int. The primary template remains an empty struct.
  • We want to differentiate the type Callable to its return type and argument type(s). Therefore partial template specialization is used.
  • The callable's...

Author image

The Game of Life

Here we've designed and implemented Conway's Game of Life, game algorithm; invented by John Conway in 1970. The rules of this 0-player game (a video game playing without user input) are:

  1. Any live cell with fewer than two live neighbors dies, as if by under-population.
  2. Any live cell with two or three live neighbors lives on to the next generation.
  3. Any live cell with more than three live neighbors dies, as if by overpopulation.
  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.

The motivation for this project was to become familiar with parallel computing on the CPU, as well as with the GPU on the stream processing model.


There are 6 different implementations:

  1. Serial
  2. Serial with OpenMP
  3. MPI
  4. MPI with OpenMP (aka Hybrid)
  5. NVidia CUDA (using GPU's global...

Author image

Process Hacking (COD4) Tutorial

Generic process/game hacking application. This time the victim being Call of Duty 4 (the original). Can we have some of that mustard?

What do we mean by hacking? Hacking is acquiring access to a resource in a manner that was not intended by the system, we circumvent access. But here we do something really simple and easy. We will change some on screen values in our program to create a satisfactory response. Read on.

  1. We loop through the process list to find our target process.
  2. OpenProcess( targetProcess ) give PROCESS_ALL_ACCESS such that our program obtains full access to the target process (ie both read and write privileges and more)
  3. Use CheatEngine or some other debugger program to find your target address to intercept. For example you're in COD4, you can see your current weapon's screen's ammo is 300 and you want to set it to 50 (say). Then you'd search for float or integer 300 in CheatEngine to...

Author image

Hibernate Object Relational Mapping (ORM) Tutorial

Hibernate is a Java open source, lightweight & performant ORM framework that simplifies the development of Java server applications when interacting with a database. ORM stands object relational mapping. It maps between an Object oriented language (Java here) and a Relational language (SQL).

I have developed this demo on my Windows 8.1 x86_64 computer, using IDEA 2018.1 and for the SQL database side I've used XAMPP v3.2.2 and MySQL on port 6180.

This demo provides all you need to get setup in Java with your database queries started. The main pieces of code are 4 .java files in src\main\java\ directory. The queries are database independent though and they can work no matter the database backend. I've tested this to be true on MySQL and SQLAlchemy. This is accomplished by HQL (Hibernate Query Language) the object-oriented version of SQL which Hibernate translates to behind the scenes.

Author image

Memory Hooking Tutorial

Here you will learn about this ancient miracle cure called Hooking. Our ancestors used hooking to catch fish! No just kidding, lets get to it..

Before we head straight to hooking, I provide an introduction to the Portable Executable (PE) and the various memory sections is in order.

The Portable Executable (PE) format is a file format for executables, object code, DLLs, FON Font files, and others used in 32-bit and 64-bit versions of Windows operating systems. It is a data structure format that encapsulates the information necessary for the Windows OS loader to manage the wrapped executable code. This includes dynamic library references for linking, API export and import tables, resource management data and thread-local storage (TLS) data.

The Extensible Firmware Interface (EFI) specification states that PE is the standard executable format in EFI environments. On NT family of operating systems, the PE format is used for EXE, DLL, SYS...

Author image

Install Python Packages script

Merely a handy run-and-forget script that installs all python packages specified in a text file “packages.txt”. I've used it countless times. Press a button, grab the popcorn and let the console ASCII text flow!

You will more than likely need to run the script (or Visual Studio if you're using it to run it) with administrator privileges, otherwise you'll be denied permission to install packages.


  • Python 3.x version installed (only tested with 3.5 and 3.6.6)
  • Latest pip version for the specified python version installed

I've used Windows 8.1 x86_64, Visual Studio 2017 IDE with Python tools and Python 3.6.6 interpreter.


Github repository link.

Author image

Chat Room in Java

A basic Server Client application written in Java 8 with JavaFX (for a change). You have to first start up the server and then launch as many clients as you want. Then chat between the client and server. Everything is modular and bare-to-the-metal. It should work everywhere. It does the job clean!

Author image

QT Audio Jumper

Minimal audio player made with the QT framework. I used Windows 8.1 x86_64, QT 5.10.0 for the MSVS 2017 x86_64 build.

Author image

Mail Spam Filter

Mail Spam Filtering in Matlab - in Greek only.


Github repository link.

Author image

Math Handbook

A handbook for logic, set theory, algebra, geometry, video game math concepts, graph theory, Calculus, discrete math, probability, statistics, number theory, numerical analysis, vector algebra, physics, chemistry and more goodies I've worked on and off throughout the years.

I compiled this several years ago and it's been left dormant among the circuits of my computer..

I used Windows 8.1 x86_64, LATEX and TexMaker.

I provide the source files, which you can open yourself with your own copy of TexMaker.
The built pdf file is called “Math Handbook.pdf”.


Github repository link.

1 2 3 4 5 6