Monday, October 24, 2016

Voxxeddays Thesaloniki - a quick note #vdthes

Last Thursday & Friday, I did a short trip to Greece in order to attend the very first Voxxed Days in Greece, it took place in Thessaloniki

First of all, I would like to congratulate, the master mind behind the overall organization +Patroklos Papapetrou , who eventually succeeded and materialized a long lasting dream (for many of us), to establish in our small country, a  conference and activities that would bridge the gap between our small IT market with the rest of world or even the bigger European Markets and developer communities.

The 'Voxxed' family of conferences, is the ideal way for putting our country back in the map of IT conferences, and a great start to warm up again the local developer community.

So overall for me, the most important thing, is not if this particular first attempt was successful  (which was). The real important thing is (Athens or Thessaloniki) Voxxed Days,  to continue to exist next year and the year after, so that the local community can grow on them and vice versa! So we all need to support this initiative. The price was more than fair and I want to make a call to all the developers (and their companies) in Athens, in a few months time, to support the Athens Voxxed days.

So I am really excited we are going to have an Athens Voxxed Days, which I'm planning to attend and already thinking maybe submitting a talk as well.

During the conference I had the chance to talk with lots of  'blog' friends. Developers and subscribers of my blog. Thank you guys, I promise to keep the blog live and maybe make a new attempt on the podcast.

I was very happy to meet some old friends and talk about the latest state of the Greek IT market, like Spyros Anastasopoulos (one of the founding members of JHUG). You can read his thoughts and review about the conference here. I wish we had more IT professionals like Spyros, both technically but in terms of professional ethics. 

Eventually my trip was...very short, so I could not enjoy the beautiful city of Thessaloniki, maybe next time!

See you all in Voxxed Days Athens!

Monday, October 10, 2016

Set default file associations on MacOSX with duti..and save some time

Wow, how many lost minutes or  hours, every day, because I did not know this a long time ago. I am bit ashamed.

How many times, while working on your mac you get to Open a File, and the system by default opens an editor or an application that is usually set by default. I can not count how many times I have killed Xcode when trying to open a shell script, a csv file a java source file or whatever. When I was fully irritated, I was right clicking the file, and I was manually changing the 'Open With' option. This is the end!

Step 1:  Install duti from brew  (give the guy a Star in github plz) : 

brew install duti

Step 2:  Check the current default application for a specific file extension, e.g '.java' files :

duti -x java

It will prompt something like the following, indicating that Xcode is the default editor.
/Applications/ ---> this is the bundle ID

Step 3:  Find the 'bundle ID' of the application you want to be default editor. 

I want to open by default with IntelliJ, so I need to find the bundle ID. Thanks to this excellent post, I found out about osascript (its bundled in MacOS)

osascript -e 'id of app "IntelliJ IDEA"'

It will output the following :


Step 4:  Use duti to update the .java file association to IntelliJ.

duti -s com.jetbrains.intellij .java all


Do you want to do more? For example usually I want Sublime to open many files.

Get the Bundle ID

osascript -e 'id of app "Sublime Text 2"'

And set some 'known file types'

duti -s com.sublimetext.2 .sh  all
duti -s com.sublimetext.2 .md  all
duti -s com.sublimetext.2 .txt  all
duti -s com.sublimetext.2 .json  all
duti -s com.sublimetext.2 .xml  all
duti -s com.sublimetext.2 .adoc  all

Sunday, August 28, 2016

A dream come true...teaching - Professional Java developer: Tools and best practices

I always enjoyed sharing knowledge. One of the reasons I blog is to share my knowledge on things around my job as a software engineer. Founding and running (with a handful of friends) the first Java User Group in Greece back in 2003, was due to the fact that we could not get sufficient training or access to personal development around our work, so we wanted to shared and re-use the knowledge we had as a small developer community. When I get to work, at any job, in any place, one of the things I look for during my first days, is how much knowledge is there for me, so I can read and get up to speed. I always enjoy, 'training' young developers, show them what I know, bringing them up to speed, shaping their 'developer' personality. 

I am really happy and excited that in a month's time I am going to fulfill a big dream, teaching. I am not an academic, I am a professional, a software engineer and under this context I am going to share some my views, experiences and knowledge, in a short course at the City University of London. You can find the link here. The title is ' Professional Java developer: Tools and best practices ' . My main goal is not to become a teacher, for me the whole initiative is mostly giving back some of my passion and love for my work as a software engineer,  to people that are willing to walk the same road and join me-us in the software development market/world.

The course's main target is to infuse the experiences and standards of today's Java developer job market into a short  course. I am planning a more hand's on learning experience, with an opinionated agenda rather a classic academic computer science course, that you will get as an undergraduate computer science student. I want to provide (as much as possible) the main skills and knowledge that any junior Java developer is nice to have and be familiar with, when he/she joins for the first time a company and a software development team. At least introduce them and then let the student expand on this knowledge.

The agenda and course content is almost finalized (with some minor exceptions) but I am planning to go through topics like
  • Modern Java IDE's - using effectively a Java IDE
  • Using code versioning tools like Git.
  • Latest Java  language's features.
  • Build tools for the Java related, walking through the basics of Maven or Gradle.
  • Testing with Java, using frameworks and libraries towards test driven or behavior driven development
  • Modern enterprise development with Java, a walk through to the available enterprise level micro frameworks, like Spring Boot, Wildfly Swarm, Vertx etc.
  • Development of RestFul API's in Java, using available tools and libraries. 
  • Cloud and Devops tools for the Java developer, a walk through tools like Vagrant, Docker, Amazon Webservices, the cloud.
  • Coding dojo's where we will investigate and learn about, 'famous' Java libraries that you most probably going to 'use' in your Job and it would be nice to know about them.
  • Tips and exercises similar to many interview questions a junior java developer might encounter during his/her job hunt. 
The course is suitable for different kinds of people
  • Computer science undergraduates that are preparing to enter the market
  • IT professionals that they want to have a quick intro to the practices and tooling of the Java world
  • Non IT professionals that are converging to the IT industry and specifically to software development using Java - but are already familiar to developing code with Java

I am very excited, I hope we could start on the 8th of October (assuming that there is enough interest and students). The class is going to be every Saturday from 10 to 5 (or so) and is a 5 part course, meaning 5 Saturdays.

Special thanks to my friend Dionisis Dimakopoulos, who eventually was the one that had the idea and gave me this opportunity, to share my passion through this course. 

Saturday, May 28, 2016

Soldo, my first step as a customer to the 'smart' payments world.

As I have written many times in this blog, from the moment I had the chance to work in the development of 'traditional' retail banking software, I immediately became interested as a 'customer' & software engineer to this new wave of rival services and applications, especially those related with micro-payments and 'electronic' wallets. Despite the fact that traditional banks, today move forward modernizing most of their 'retail' service offering, I still believe they are less flexible and a bit slower  comparing to other companies in the field.

For a month or so, I have been using 'daily' the e-payment solution of Soldo. The company is one of the newcomers in the electronic-micro payments world. Currently their service is in beta, so I was very happy to be one of the  few to try and evaluate their offering. Special thanks to my friend M.Charatzas.

So how does it work? When I 'entered' the service, I simply had to download an iOS application, complete the registration (adding my personal details). Upon activation, I got an 'electronic' wallet where I could see my balance, top up my account, search my transactions, get a virtual credit card (Mastercard) and a new real card (sent via post).  My new wallet (or account), can be credited either by regular bank account transfer, or by using one of my regular 'cards' from my traditional bank and 'debit' it. The overall process took just a few minutes, and the real card was sent within one week. Sweet!

During my initial week I did transfer a small amount of money to my new wallet, and started using the e-card and the regular one (it is contact less as well) in different places. In general I did not have any problem, only in one place the contact- less payment was not working). The real added value of these services is not the regular debit/credit card use. This is something already provided by traditional services. 

So the more you get to use the app, the more you get addicted to the plethora of information around your payments. The notifications upon each payment (or failed payment) are instant, the transaction history is simple enough and easy to use, so I can scroll through my payments and check available details. I am able to see during the previous month, when and how much money I did spent. I really like the 'today' view, where you get to check how much money you spent this very day.

Also I am able to control many aspects of the regular and virtual card like, like the max amount I can debit the card in each transaction (I guess parents would really love that kind of feature), or the basic types of payments my card can be used for. For example I can enable or disable my Sold Card, for 'Online' payments, 'cash points' or payments 'abroad'. Of course at the end of the day, in case someone, steals your card, with the switch you can completely de-activate it and report that has been compromised.

The more I use, this kind of interactive payments, the more I get a feeling that I am in control of the overall process. So kind of 'security'. This is the main reason I am eventually switching to a 100% daily use of my Sold wallet. For example, there are a few cases, that I do feel a bit unsure when my card is 'walking' around 'shops' or restaurants, or when you get to a very busy place where a dozen of people 'attack' the point of sales, example a bar, and the personnel just swipe 1000 cards per minute trying to serve the people. In all these cases, I have stopped using my regular card in favor of Soldo, the moment my card is debited I get the notification and I can see what is happening or double check. 

Also, during traveling out of the UK, I can complete my transactions, based on the current 'exchange' rate of GBP and the Euro, with no extra fees! How cool is that!
Up until now the experience was very nice and I am very happy with this kind of services and offerings. I find my self to use this card more often comparing to my regular bank's card and it I think I might switch completely for day to day use and online shopping.
I am sure there are other products and services out there and I am very excited in general, because retail banking and micro-payments is a world where I totally believe there is room for improvement and innovation, both in the IT (software development) and business wise. 

So hello new world of micro-payments and e-wallets! 

Tuesday, May 24, 2016

Kubernetes London Meetup - picking up momentum #kubernetes #london

One of the great things, when living in London is that you have access to meetup's and communities  for almost every technology you will ever manage to get interested in. After attending the first EU Kubernetes Conference - KubeCon (2 months ago), this was my second time attending the 'Kubernetes London Community' in one of their regular meetup's at the premises of SkillsMater.

I would like to give credits to the 2 main organizers Peter Idah & Milos Gajdos for working towards, building a vibrant community for a technology that IMHO is not only trending but will become very relevant. I am might be a bit biased, but Kubernetes is one of the few 'things' out of this DevOps / Containers / Microservices tsunami of technologies, that is going to make a change - market wise. Thumbs up to 'GoogleCloud' for sponsoring beers and pizzas before the talks - good job. I would be very happy next time with an uber cool 'Kubernetes TShirt' for my summer vacation!

The Dev in the DevOps

I always feel, like a silent minority in that kind of meetups, especially the Kubernetes one. Despite the fact that I totally relate to the concepts and the technology, I do belong more to the Dev side of the DevOps culture rather than the Ops. As I have stated numerous times and in some of my 'introductory' talks around Kubernetes, I came 'close' to this technology and evaluated it's potential strengths, from the software developer's / architect perspective rather the Ops or DevOps developer. For me Kubernetes is an excellent abstraction for concerns that as a software developer I don't have to worry about, especially when I need to focus on delivering  / writing business code. These abstractions safeguard concerns and mitigate risks that I will have in the future, when my solution potentially will need to be flexible, scale-able, deployment environment neutral etc. I do follow the developments of the go language, I do try to relate to the complexities and specifics of AWS or Google Container Engine, but the main priority for me is the 'code' the solutions me and the team I belong to, needs to write and architect. I am not glorifying the Ops centric technologies, I see them as an enabler and a problem solver for 'business and technical concerns' many software solutions will face. But, as you might have experienced before, a lot of software projects do die, or never get to the mainstream in order to phase challenges that technologies or environments like Kubernetes or the Cloud have to offer. I do worry about the fact that 'we' the developers, have found a new 'box' of emerging technologies, that for sure are relevant but we kind of settle (or we consider uncool) the actual code written to provide the solutions. Still out main concern should be whatever lives within the container - and not the container neither the infrastructure around it. Yes they are important but not the main priority. Enough for my devs first rant - I hope I don't get flamed by the 'Ops' audience - which I have total respect.

About the meet-up 

The first talk was from Martin Devlin, from Pearson Plc, Bitesize PaaS Project. They are using Kubernetes for then 'upcoming' platform. I did keep some notes regarding some of the 'solutions' they keep in the mix for their platform. Unfortunately I did not have the chance to elaborate, but I kind of wondered, why you would need to use services like Consul, or Vault within Kubernetes where actually the framework already abstracts and provides in some extend this needs. Maybe at Pearson they do have special cases and requirements, which of course I can not relate to. The 'Vault' section was interesting enough. A kind and positive reminder to the 'Martin' for any future presentation, it would be nice he could add some more diagrams and more slides so that we can have a better idea of their solution and what was presented.

The second talk, was from Justin Santa Barbara. Really great talk, from one of the most important committers of Kubernetes, responsible for the AWS support. One of the many questions I get to have or hear in talks regarding Kubernetes adoption, is 'Can we use this in AWS, can we use this feature of AWS with Kubernetes? etc. So it was really great to have Justin presenting and passing his views and describing the current state and road map towards this area.

I really liked his 'all kubernetes' view of things, which totally makes sense for me. Kubernetes is  providing a rich set of functionality in different 'areas' around application deployment, that eventually containerized applications that will be 'living' inside this environment could be aware of these (capabilities) or even use them. 

Very nice interactive presentation and I do hope the London Kubernetes community to host more committers and devs of Kubernetes in the future. In my notes from Justin's presentation was, the 'PetSet' Controllers that is coming soon enough, and will eventually answer the question ' How about hosting my cluster-aware  MySQL  or ElasticSearch within kubernetes. Last but not least, there were a lot of questions around the applicability and availability of the 'Ubernetes' type of deployment (meaning multiple kube clusters in different regions/zones - acting as one).

It was really, time well spent yesterday and I am really looking forward for the future meetups and developments of this 'emerging London community'. If you are considering adopting, or trialing Kubernetes within your company in London, I totally encourage you to join this community and share the experience. 

Go Kube!