About Kyriakos Anastasakis

I was born on the beautiful island of Chios, Greece, where I received my primary school and high school education. At the age of 18 (in 1997), I moved to Athens to attend the Department of Informatics at the T.E.I. of Athens. In 2001 as part of a six month industrial placement, I joined Ulysses Systems, Piraeus as a junior Software Developer. In 2002 I received the degree of Informatics Engineer (Mihanikos Pliroforikis) from the T.E.I. of Athens. I continued to work for Ulysses Systems until the end of July of 2003. In 2003 I moved to Birmingham to study for the MSc in Advanced Computer Science at the School of Computer Science, at the University of Birmingham. In 2004, after I finished the MSc studies, I decided to stay in Birmingham and pursue a PhD degree in Computer Science. Since then I have been working towards the PhD in Birmingham under the supervision of Dr. Behzad Bordbar. Since 2005 I have been a part time self-employed software consultant. An interesting project I was involved in, was the development of a small scale CRM software for the Birmingham branch of MLP Private Finance. Since 2004 I have also been responsible for development and maintainance of the website of the Hellenic Society of the University of Birmingham.

This post provides some experiences from making a simple Java app (well, the actual app does something this is just a demo) that connects to Bitfinex to  get the funding rates run as a GraalVM native image.

xChange is one of the most famous Java libraries for integrating with a large number of crypto exchanges. It provides a simple API that Continue reading

When using Infinispan (or any other jBoss library for that matter)  and Logback in the same project you may end up getting this warning when running the project:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console

Maybe you log to a persistent storage and you may miss important error messages, because they are logged to the console.

Solution 1: Start the application with specific parameter

One solution is to add the following parameter when starting the application:

-Dorg.jboss.logging.provider=slf4j

The relevant code is in org.jboss.logging.LoggerProviders which looks for the “org.jboss.logging.provider” environment variable.

 

Solution 2: Exclude log4j libraries from classpath

Another solution is to exclude all logging related classes from the classpath, as in org.jboss.logging.LoggerProviders it looking for various logging related classes and it looks for the logabck related classes at the very end!

When using gradle it is enough to add the following into build.gradle

configurations {
all*.exclude group: ‘org.apache.logging.log4j’
all*.exclude group: ‘org.apache.log4j’
all*.exclude group: ‘org.jboss.logmanager’
}

Like a lot of Mac users I backup my Mac using Time Machine. But for safety reasons I would like to backup the whole volume of the Time Machine to another network drive (NAS).

One way to do so is by using the Disk Utility to create an Image file (img) of the whole Time Machine volume. However, when trying to do so one gets an “Operation cancelled” message and the process stops without any more information.

The solution is to add the Disk Utility application to the list of applications that can have Full Disk Access.

The steps to take a backup of the volume successfully are the following:

  1. Stop the Automatic Backups of the Time Machine.
  2. Go to Settings -> Security & Privacy. Go to the Privacy tab and scroll down to the “Full Disk Access”.
  3. Add the “Disk Utility” to the applications that can full disk access.
  4. Open the “Disk Utility” and select the Time Machine volume on the left hand side.
  5. In Disk Utility go to: File -> New Image-> Image from…
  6. Select where the image will be saved (it’s a good idea to encrypt it with a password).
  7. That’s it! Make sure you remove the Disk Utility from the Full Disk Access afterwards for security reasons.

 

During the past few months I have been creating some EAs in MQL5. I have also created some microservice like functions for other FinTech related projects (e.g. Market News / custom indicators). All those services are exposed with REST APIs. So there is the need to reuse this functionality from MQL5 Expert Advisors.

There are numerous examples in MQL5 that use WebRequest, however it’s not possible to use them from within backtesting. An error is raised in such cases. The other obvious alternative was to use a custom DLL that will be used from within MQL5 and delegate the REST call to the DLL.

In this direction I have created an opensource library rest-mql and an example on how to use it through MQL5. The library can be found here: https://github.com/cyrus13/rest-mql

The example MQL code can be found here: https://github.com/cyrus13/rest-mql/blob/master/mql5-sample-code/testmqldll.mq5

It is worth mentioning that REST calls certainly slow down the EA and should be used judiciously.

This solution can also be used to move from raw format back to qcow2 format.

I used to have Docker on MacOS Sierra, which created the image files using the qcow2 format. Then I upgraded to Yosemite, but due to a disk failure of the external SSD that has the qcow2 images file, it created a raw format image file (for more see this one: https://docs.docker.com/docker-for-mac/faqs/#qcow2-or-raw)

This shouldn’t be a problem in general, but in my case I use it for development purposes and I still have uncommitted images. Also using the Docker Preferences GUI I can only select the directory, not the actual file. Solution is pretty simple:

Navigate. to:

~/Library/Group\ Containers/group.com.docker/settings.json

and change the diskPath file to the qcow2 file. That should do it.