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.

I recently received an Apple TV as a gift. I saw that it had inherent support for watching NBA games. I had to buy an international NBA League Pass subscription, login and that should be it.

1. NBA League Pass Apple TV Only Available in Certain Countries

I bought a monthly League Pass Premium subscription. However, it turned out that even if you buy a subcription Apple TV is not available in certain countries! This was not evident on the fist subscription screen where it showed that if I bought a subscription I would have access from “multiple platforms”. The logo of Apple TV, Xbox, Kindle appeared amongst other logos.

2. Cancelling my Subscription

I assume the lack of any clear indication that some platforms are not available in certain countries constitutes false advertising. But still, I just decided to cancel my subscription. I logged into my account on the league pass website. I navigated to all available screens. There is no visible way to cancel the subscription. What’s worse is that under the “My Packages Section” it is mentioned:

Below is a list of your current packages and upgrades if available

Excellent! I can upgrade my subscription (i.e. pay more) but there is no direct way to cancel it! I sent an email to their support and I am waiting for their response.

I still have good faith in the League and I hope that my horrible experience was due to incompetent software engineers who can’t provide vital information available at first glance and can’t support some standard functionality like unsubscribing.


Update:  The situation is a joke. I sent them two emails without any reply. I tried to login to my account on the web and it says the account has been locked. Ok, I wanted to cancel my subscription, but I have already paid for 30 days! If you forbid me to login at least return the amount of money already paid. I am not going to spend any more time on this.

I am using VirtualBox 4.3.2. I have recently upgraded to OSX Mavericks and after I close VirtualBox it doesn’t seem to close properly and it’s still running. Doing force quit doesn’t seem to close VirtualBox.

The worse part is that I can’t seem to be able to shutdown my laptop! When try to shutdown after having run VirtualBox the shutdown process gets stuck and the only way to shutdown properly is by pressing the “Power On/Off” button on the laptop for some time.

The solution that works for me, is to go to the “Login Window” screen (by clicking on my account name on the top right corner, next to the clock -> Login Window…”. Then I click on “Shutdown” from that screen and it works.

The vast majority of the posts in this blog are about software development. A good part of most of my posts have some source code. My previous template was a three column one. Most of the code didn’t fit into the middle column of the template, so people had to scroll all the time and formatting was awful.

I tried quite a few templates, but they didn’t match what I wanted. Finally I ended up Continue reading

I am using Logback to do most of my logging. I am using a third party library for some computation. Luckily the library uses slf4j, meaning it’s agnostic of the logging implementation.

The library caches two collections of items and depending on the circumstances the item I am looking for may be in any of the two collections. This is not important. What is important, is that the library for some reason logs an error if an item cannot be found in the first collection.

I wanted to get rid of this message because it was cluttering my logs. But I didn’t want to disable all logging from this specific class, because it may print some useful logs. I just wanted to get rid of this specific log. There is a way to do it Continue reading

I was reading a blog post the other day that in order to upgrade from OSX Lion to OSX Mavericks you need to first upgrade to mountain lion (paying the $20 upgrade fee). Checking the description by apple as pointed out here: http://www.apple.com/osx/how-to-upgrade/
it is evident that there is no such requirement:

You can upgrade to OS X Mavericks from Snow Leopard (10.6.8), Lion (10.7), or Mountain Lion (10.8).

So, I have backed up everything and I am going to start the upgrade process now!

Since Spring 3.2 it should be possible to use a qualifier in the “Async” annotation of a method, to indicate which specific executor to use. For example, I have the following class, that is supposed to collect the HTML from a website asynchronously:

HTMLFetcher Interface

TestHTMLFetcher Class

And the following excerpt from the context.xml file:

This didn’t work! I submitted 10 tasks to the executor and 10 thread, instead of 1 as I had instructed it had been created. I digged into the Spring code a bit and found the AnnotationAsyncExecutionInterceptor class that was doing tbe job of assigning tasks from methods annotated as async to executors. Putting  a breakpoint on its getExecutorQualifier method it became evident why it doesn’t work.

You need to annotate the interface method rather than the class with the:

annotation. In my example that is the getHTML method of the HTMLFetcher interface. It now works. I am not sure if it was done on purpose (i.e. if it’s part of the specification). I don’t have time to read the related documentation or search the Spring Jira. However, I would assume that the right place to put the annotation is the implementation. I may want to have two implementations of the same method, one decorated with “Async” that will be asynchronously executed and another without any annotation that will be synchronously executed.

By default on Windows Eclipse autocomplete shortcut is: Ctrl+Space. In my Mac laptop I use this combination for the operating system’s spotlight quick search. As a result, I wanted to change the default autocomplete shortcut. What you need to do is:

1. Go to Window->Preferences (Eclipse -> Preferences on Mac).

2. In the new window that pops up, go to “General -> Keys”

3. Find the “Content Assist” command and change it to whatever you like (in my case I chose Cmd+Space).

4. Don’t forget to click on “Save” on this pop up window!