Agility, Java programming, New technologies and more…
  • rss
  • Home
  • Management
  • Agile Programming
  • Technology
  • Linux
  • Event
  • Android app
  • Contact
  • About the author
  • English
  • Francais

Devoxx UK 2018 – Day 1

Fabian Piau | Monday May 21st, 2018 - 10:46 PM
  • Print
  • Twitter
  • LinkedIn
  • Facebook
  • Pocket

 Version française disponible

This year I attended the 2 days of conference at Devoxx UK taking place in London on 10-11th May. This article is a summary of the notes I took during the first day. If you’re interested in more details in a talk, you can watch the associated video.

Devoxx UK took place in the Business Design Centre in London

Devoxx UK took place in the Business Design Centre in London


A Future without Servers, with Danilo Poccia

How to build the best software with the best user experience?

Work backwards from the customer and before starting any implementation:

  1. Write a Press Release
  2. Write the FAQ
  3. Define the Customer experience
  4. Write the User manual

The idea is to get your system simple. A complex system was simple at the beginning, it became complex!

Architecture is changing:

  • 10 years ago: we are splitting our monolith applications using XML and SOAP for the communication
  • 5 years ago: we are creating micro services architecture using REST/JSON or binary protocol for the communication
  • Now: we are building event-driven architecture with ephemeral functions

What about the data?

Data repositories are becoming a source of events. Each event is an immutable information about business.

There is a shift from ACID (Atomic, Consistent, Isolated, Durable) to ACID 2.0 (Associative, Commutative, Idempotent, Distributed).

With event-driven design, we think cause / effect instead of triggers: “Service B is caused by A” instead of “Service A triggers B”. We use notification and acknowledgement mechanism.

So what does the future will look like?

We will write only business logic code!


Let’s Get Lazy: Exploring the Real Power of Streams, with Venkat Subramaniam

Venkat Subramaniam is a very good speaker. It was the first time I was hearing him and I was impressed by his way of presenting, I suggest you to watch one of his videos.

Haskell is a lazy language by default. With Scala, it’s possible by using the keyword “lazy”. But what about Java? The keyword “lazy” doesn’t exist but it’s possible with functional code and streams introduced with Java 8.

Imperative code has high ceremony and has accidental complexity. You tell what to do and how to do it.

Functional code has less ceremony and less complexity. You tell what to do. It is very easy to read from top to bottom.

However, if the code is “cute”, it may not be sustainable. So what about performance? E.g. Do we compute all the collection to take only the first one? FindFirst() is the terminal operation of execution. Until we call it, nothing (i.e. all the intermediate operations) will be executed.

Stream does not execute a function for every object in the collection, instead it executes a collection of functions for every object, but only as needed.

Stream is not a collection of objects, it’s a collection of functions.

Lambda are stateless.

List<Integer> numbers = Arrays.asList(1, 2, 3);
Stream<Integer> stream = numbers.stream()
                            .map (e -> e * 2); // This is a lambda
stream.forEach(System.out::println);

Closure carry immutable state, be very careful when using them.

List<Integer> numbers = Arrays.asList(1, 2, 3);
final int factor = 2;
Stream<Integer> stream = numbers.stream()
                            .map (e -> e * factor); // This is a closure
stream.forEach(System.out::println);

Laziness makes the use of infinite streams possible, otherwise the program below would be an infinite loop.

Stream<Integer> infiniteStream = Stream.iterate(0, e -> e + 1);
List<Integer> numbers = infiniteStream 
                          .limit(5)
                          .collect(Collectors.toList());


Kotlin for Java Programmers, with Venkat Subramaniam

I stayed in the same room as I really like Venkat’s first talk. With the same way of presenting, this second talk was very good as well.

As I never experiment Kotlin, it was a nice introduction for me. This JVM-based language is really getting popular these days, especially since Jetbrain is pushing it to be the main language for Android programming. Venkat gave us a lot of different tricks to make the code concise and suggest us to play with it ourselves using the REPL (kotlinc). No doubt it is less verbose than Java and comes with very nice features (including null safety and the lazy keyword…). I will probably give it a try at some point.


How to use AI and Java to train your application to recognize people by name, with Ruth Yakubu

Ruth introduced us Microsoft Face API running on its cloud computing platform Azure. Face API is one of the “cognitive” services Microsoft provides, e.g. there is a service to recognize speech and process natural language.

She showed us an application written with Spring Boot that is interacting with Face API. First, she uploaded a set of pictures of the actor Matthew McConaughey (if you don’t know him, he was the main character in Interstellar) to train the model. Then she uploaded a new picture of him and his wife that the system did not know yet. The algorithm recognizes that it was the actor with a high precision while it did not know who the woman was but it was able to give an accurate description of her (smiley woman in her thirties, etc.).

It is possible to build your own Machine Learning algorithm with Java, for example using the library DeepLearning4J. When creating a model, it is important to separate the data into 2 groups, training data (80%) and test data (20%) so you can verify your model has a good prediction. It is also important to use GPUs not only CPUs to improve the performances, now the libraries are taking advantage of this, including DL4J.


Building a self-driving RC car, with Tim van Eijndhoven

It was an interesting talk to create a self-driving (toy) car based on a Radio Control (RC) kit. They build this prototype as part of a challenge. The idea is to get the car to drive autonomously and follow an itinerary (a path delimited by 2 white lines) with potential curves and obstacles.

If Tesla can do it, why not us? At our scale, of course…

On top of the RC kit, they added a Raspberry Pi, a power convertor/supply, a camera and a safe shutdown (useful when the car gets out of range of the WiFi so it doesn’t crash somewhere…). The total budget is around 300 euros.

Regarding the technologies they use:

  • Vert.x, reactive application on the JVM, event driven and non-blocking
  • OpenCV library (Computer Vision) to process the video stream in real-time and make sure the car is following the white lines

There are a lot of things to think about, the environment is probably the most challenging. The algorithm can get lost depending on:

  • The surface (patterned carpet, tiles, dark road)
  • The weather (sunny, rainy, the program is very sensitive to brightness change)
  • And other random things (window reflection, mirror effect)

They have many ideas of improvement for the future:

  • It is not needed to analyze all images coming from the video stream (especially on a straight line). Currently, they analyze one image every 100ms (why 100ms? because it takes this amount of time to process one)
  • It is not needed to analyze the whole image (some part can be discarded, what is above the horizon is not needed)
  • Having the computation done on the car itself instead of a laptop over the WiFi, to avoid network latency (however the computational power of Raspberry Pi can be limited)
  • Use AI and deep leaning algorithm so the car gets better at navigating using a training set: videos when the car is remotely controlled by a human (however it can take ages to build many tracks and take many videos)


Cloud Native Java, part deux, with Josh Long

Josh is Spring Developer Advocate at Pivotal, it was the first time I was attending one of his talk. I really enjoyed it and I was very impressed by the speed of speech and coding simultaneously without forgetting multiple jokes. Such a brilliant speaker.

Josh used https://start.spring.io/ to generate a little project to manage reservations using Spring Cloud (built on Spring Boot). Why you should use this online tool to initialize your project? Watch the video to get the answer from Josh, it was hilarious!

He chose Kotlin for the service (because why not?) with some endpoints to get messages and reservations using a MongoDB reactive datastore. The service was loading some data in a react way during the start up.

He chose Java for the client using various technology coming out of the box with Spring (Eureka, Spring security, Hystrix for internal load balancer and fallbacks). The client was able to query the service to retrieve the data.

At the end of the demo, he also shows us some serverless architecture using RIFF, a FaaS for Kubernetes. He wrote a function to make a string uppercase, then using the command line to invoke the function deployed in Kubernetes. He did not have the time to show us the call from a service, but we got the idea.


My first day at Devoxx was great, this year I tried to attend more innovative talks about Serverless and Machine Learning, a mix of live coding and theory. I will post my summary of day 2 soon, so stay tuned!

#DevoxxUK letters in the hall

#DevoxxUK letters in the hall

Related posts

Java 11A Java 11 migration successful story devoxxDevoxx UK 2018 – Day 2 Fosdem 2013Fosdem 2013 Impressions springQCon London 2016 – Spring Framework 5 – Preview & Roadmap
Comments
No Comments »
Categories
Event
Tags
conference, devoxx, london
Comments rss Comments rss

TransferWise, Revolut and Monzo, a small revolution for travelers and expats

Fabian Piau | Saturday January 20th, 2018 - 07:06 PM
  • Print
  • Twitter
  • LinkedIn
  • Facebook
  • Pocket

 Version française disponible

Update
June, 11th, 2019 : Curve card enables you to combine all your existing cards in one.
April 22, 2018 : TransferWise is now providing a debit card for its borderless accounts.

For this first article of the year 2018, I will present 3 financial services proven and used by myself for several months, even years. They allow me to make significant savings on my foreign currency transactions by avoiding the high fees of traditional banks. This article is in no way sponsored, but I have allowed myself to include some referral links.

For those who know me or follow me, it’s been a while since I live in England, 3 years already! I also travel abroad to discover new countries, new cultures and incidentally escape from the London Fog…

After arriving in England, I quickly needed to open a local bank account where the currency is, of course, not the Euro, but the Pound Sterling.

To deposit money into this account (while waiting for my first pay), I had to transfer money from my French account to my English account. In the pre-Brexit era when the Pound was very strong, it was a little painful… And like if it was not enough, my bank would also take its share with a rather exorbitant fee on my transfer. To avoid being ripped off twice, I looked on the Internet and browsed some forums looking for advice. I quickly decided to choose TransferWise.


TransferWise

The principle is simple and based on common sense. British people sometimes need euros, for example when they travel in Europe; conversely, European people need pounds when they come to England. TransferWise allows you to link these requests by acting as an intermediary. The company has accounts in different currencies and distributes the amounts between people. For example, for a transfer of 1000 euros to a British account (so about 900 pounds at the moment), the system may need 2 people (one person who wants to convert 400 pounds in euros and another who wants to convert 500 pounds in euros) or 3 people (who want to convert 300 pounds in euros each) or 9 people (who want to convert 100 pounds each). I guess you understand how the system works!

Once the account of TransferWise is registered with your traditional bank (this may take some time depending on your bank) and the transfer has been made from your original account, you will receive the money quickly in your destination account (usually in 1 day).

You will not be charged because your original account and the TransferWise account are using the same currency. It’s not a big surprise that TransferWise will charge a fee, but almost insignificant (e.g. 5 euros for a transfer of 1000 euros). You can do a simulation on their site, the fee is proportional to the amount transferred.

More recently, TransferWise has set up the borderless account. With this “multi-account” you can receive transfers in different currencies in a transparent way, you just need a click to activate a currency and get your corresponding local bank details (IBAN / BIC) that you can then forward to to the person who owes you money. Since April 2018, you will receive a debit card so you can use it to pay anywhere with your borderless account.

It is important to note that the transfer is executed at the market rate. Since you decide when you want to make the transfer, it is wise to do it when the rate is the most advantageous for you. In my case, it was much more interesting to make pound-to-euro transfers before Brexit.

Also in my example, I mentioned the Pound and Euro exchange, but many currencies are supported: the Swiss Franc, the US Dollar, the Japanese Yen, etc.

Feel free to look for yourself and use my referral link to open your account (and your first transfer will be free).


If you can use TransferWise for money transfers between accounts, how can you manage your expenses on the spot when you are travelling around the world? Who has not already paid a high fee when withdrawing abroad or when paying the bill at a restaurant? Who has not already made a large withdrawal at an ATM to avoid fixed costs, taking the risk to walk around with a large amount of money?


Revolut

Opening a Revolut account makes perfect sense. It’s an online bank, which means that you won’t find any physical offices, you manage everything yourself from the application on your smartphone: from changing the PIN code to the deactivation of the card, or the change of your address. Revolut is free, you just have to pay a small fee (5 pounds or equivalent in your currency) to receive your multi-currency debit card at home, unless you use my referral link to avoid entry fees.

You can convert currencies in advance from the application to ensure your exchange rate (advanced use) or it will be automatically calculated in the country according to the current rate and usage of your card (personally, I find it sufficient). The exchange rate is very low and matches the interbank rate (it is therefore a very low rate close to the real one without extra fee).

Revolut strongly advises its customer to keep an account in a traditional bank in case the card is not accepted, it is a Mastercard so it should not be a problem, but you will probably be happy to have your good old Visa card on hand, just in case.

The mobile application is well made with a breakdown of your expenses by category, an instant notification on your smartphone for each expense (useful for a contactless payment to verify the amount), the possibility of refunding another person instantly or share an expense easily.

I take the example of trips abroad, but nothing prevents you from using it every day by topping up your card regularly. You will be able to see your expenses by category, month after month, and refine your budget.

Wondering where is the scam? Well, it’s like TransferWise, there is not really a catch! But there are withdrawal and card payment limits (daily, weekly and monthly). Frankly, unless you travel for 6 months a year or you are really bad at spreading out your expenses, it should be enough for you. It is still possible to subscribe to the premium option to increase the limits and access additional services.

Revolut is a young, fast-growing company available in several countries. New features are added every month (cryptocurrency exchange, insurance, credit, etc.).

Again, feel free to have a look for yourself and use my referral link to open your account for free. There is very little chance for you to regret it.


Monzo

Monzo is also an online bank. It provides a very similar service to Revolut, so you will receive a Mastercard card to make payments in different currencies at the interbank rate.

I must say that I use it for longer and more regularly than Revolut. Unfortunately at that time, the service is only available in UK. Unlike Revolut, there is no charge to receive the card, there is no premium option available, and it’s totally free. However, there is a waiting list to open an account (a few weeks at most).

They are still in a beta test phase, but it’s been a year since I am with them, I had no problem. It’s a bit like Gmail which has been in beta for years… However, it is possible that Monzo change its business model and start charging its users when their customer database will be big enough, hard to say, but as long as the service is free, you may just try it!

Unlike Revolut, Monzo focuses exclusively on the multi-currency expenses and reporting aspect, you won’t find any insurance, crypto exchange or other services. But what it does, it does it very well! Personally I find the smartphone app a little more convenient. They have limits too, but higher than on Revolut.

In my case, using both services and having 2 debit cards indirectly raise the limits. Also, it is possible that a Revolut card does not work in a place abroad, while it works with Monzo, and vice versa.


Curve

Last but not least, Curve is also an online bank. The main benefit of this card is that it allows you to group all your cards in one, like a wrapper. If you do not want to take all your cards with you all the time: Revolut, Monzo or any other professional or personal cards, it is possible to use only one: the Curve card. From the application, a simple tap is enough to select the card that will be active. It’s efficient and will make your wallet a little lighter. Note that there may be some limitations in case of disputes, but this will be suitable for everyday use. And since it’s free, why not giving it a try?

You can use my referral link to open your account and get £5 for free. Use code “EKGQQJQN” at sign up.


Once is not custom, I did not look at the technical side, but the post is still about new technologies in the banking system, I hope you’ve found the reading interesting. It also shows that small startups (Fintech) can move the lines of the banking landscape and shape our future. It is critical for traditional banks to constantly innovate to stay in the race, not sure they have all made the shift in time, and the customers of yesterday are no longer the young people of today.

And perhaps you will embrace online banking through your smartphone and even save some money… At least I don’t see any reason not to try!

Related posts

kubernetesFlagger – Canary deployments on Kubernetes EclEmmaEclEmma – Do you need a good cover for this winter ? hostingChoose the web hosting service that fits your needs webservicesAPI, REST, JSON, XML, HTTP, URI… What language do you speak?
Comments
No Comments »
Categories
Technology
Tags
bank, tool, society
Comments rss Comments rss
Page 5 of 491…34567…102030…49
Download CarmaBlog App

RSS feeds

  • RSS Feed RSS - Posts
  • RSS Feed RSS - Comments

Most viewed posts

  • Changing the language in Firefox - 115,004 views
  • Using Google Forms / Drive / Docs to create an online survey - 61,842 views
  • FAQ – Online survey with Google Forms / Drive / Docs - 44,394 views
  • Customizing Gnome 3 (Shell) - 29,207 views
  • The meaning of URL, URI, URN - 16,127 views
  • Java EE & CDI vs. Spring - 14,894 views
  • Open Street Map, better map than Google Maps? - 13,869 views
  • Comparing NoSQL: Couchbase & MongoDB - 13,580 views
  • Firefox Nightly, Aurora, Beta, Desktop, Mobile, ESR & Co. - 12,757 views
  • First steps with Apache Camel - 11,793 views

Recent Comments

  • Fabian Piau on FAQ – Online survey with Google Forms / Drive / DocsBonjour, un formulaire ouvert avec Google est forc…
  • Aurélie on FAQ – Online survey with Google Forms / Drive / DocsBonjour J'ai créé il y a quelques temps un questio…
  • Fabian Piau on FAQ – Online survey with Google Forms / Drive / DocsBonjour, ce message de confirmation est commun à l…
  • Simon on FAQ – Online survey with Google Forms / Drive / DocsBonjour, J'ai une question concernant le message d…
  • Léooon on FAQ – Online survey with Google Forms / Drive / DocsJ'en suis même certaine... Très bien merci beaucou…

Recent posts

  • Flagger – Monitor your Canary deployments with Grafana - 9 months and 2 weeks ago
  • Flagger – Canary deployments on Kubernetes - 10 months and 3 weeks ago
  • Flagger – Get Started with Istio and Kubernetes - 11 months and 1 week ago
  • Expedia CoderDojo in London - 1 year and 8 months ago
  • Volunteering at Devoxx4Kids - 1 year and 11 months ago
  • A Java 11 migration successful story - 2 years and 3 months ago
  • Tips to make your WordPress website secure - 2 years and 6 months ago
  • Devoxx UK 2018 – Day 2 - 2 years and 10 months ago
  • Devoxx UK 2018 – Day 1 - 2 years and 10 months ago
  • TransferWise, Revolut and Monzo, a small revolution for travelers and expats - 3 years and 2 months ago
  • Autocomplete for Git - 3 years and 10 months ago
  • Swagger, the automated API documentation - 4 years and 1 month ago
  • Microservices architecture – Best practices - 4 years and 6 months ago
  • FAQ – Online survey with Google Forms / Drive / Docs - 4 years and 11 months ago
  • QCon London 2016 – Project Jigsaw in JDK 9 – Modularity comes to Java - 4 years and 11 months ago
Buy me a coffee

Language

  • Français
  • English

Follow me!

Follow me on Linkedin
Follow me on Twitter
Follow me on Stackoverflow
Follow me on Github
Follow me on Rss
Link to my Contact

Email subscription

Enter your email address to receive notifications of new posts.

Tags

.net agility android bash best practices blog cache cloud computing conference continuous integration css developer devoxx docker docs drive eclipse extreme programming firefox flagger forms google helm hibernate istio java job jug kubernetes london mobile computing overview performance plugin programmer qcon script sharing society spring tool ubuntu windows wordpress

Links

  • Blog Ippon Technologies
  • Blog Publicis Sapient
  • Blog Zenika
  • Classpert
  • CommitStrip
  • Coursera
  • Le Touilleur Express
  • Les Cast Codeurs Podcast
  • OCTO talks !
  • The Twelve-Factor App

Categories

  • Event (15)
  • Linux (3)
  • Management (7)
  • Agile programming (29)
  • Technology (44)

Archives

  • June 2020 (1)
  • May 2020 (2)
  • July 2019 (1)
  • May 2019 (1)
  • December 2018 (1)
  • October 2018 (1)
  • June 2018 (1)
  • May 2018 (1)
  • January 2018 (1)
  • May 2017 (1)
  • March 2017 (1)
  • October 2016 (1)
  • April 2016 (2)
  • March 2016 (1)
  • November 2015 (1)
  • May 2015 (1)
  • February 2015 (1)
  • December 2014 (1)
  • November 2014 (1)
  • September 2014 (2)
  • August 2014 (1)
  • July 2014 (2)
  • June 2014 (1)
  • April 2014 (1)
  • March 2014 (1)
  • February 2014 (2)
  • January 2014 (1)
  • December 2013 (1)
  • November 2013 (1)
  • October 2013 (3)
  • September 2013 (5)
  • July 2013 (1)
  • June 2013 (1)
  • May 2013 (1)
  • April 2013 (1)
  • March 2013 (2)
  • February 2013 (1)
  • January 2013 (2)
  • December 2012 (2)
  • October 2012 (1)
  • September 2012 (1)
  • July 2012 (1)
  • May 2012 (1)
  • April 2012 (1)
  • March 2012 (1)
  • February 2012 (1)
  • January 2012 (2)
  • December 2011 (1)
  • November 2011 (2)
  • October 2011 (2)
  • September 2011 (1)
  • July 2011 (1)
  • June 2011 (2)
  • April 2011 (1)
  • March 2011 (1)
  • February 2011 (1)
  • January 2011 (2)
  • November 2010 (2)
  • September 2010 (1)
  • August 2010 (1)
  • July 2010 (1)
  • June 2010 (1)
  • May 2010 (1)
  • April 2010 (1)
  • March 2010 (1)
  • February 2010 (1)
  • December 2009 (1)
  • November 2009 (1)
  • October 2009 (2)
  • September 2009 (2)
  • August 2009 (3)
  • July 2009 (1)
  • June 2009 (2)
Follow me on Twitter
Follow me on Linkedin
Follow me on Stackoverflow
Follow me on Rss
Link to my Contact
Follow me on Github
 
Fabian Piau | © 2009 - 2021
All Rights Reserved | Top ↑