How, why and what has lead us to the Milan Kotlin Community Conference.
On April 19, 20 we attended the Droidcon IT, the 5th edition of this Android-centric conferenced based in Turin.
The venue was Officine Grandi Riparazioni (OGR), a former trains repair workshop. This huge industrial building has now been converted to a space for big events, like conferences, concerts or exhibitions.
The conference format was inusual: there were three big stages, side to side, with no walls in the middle, so broadcasting the speakers wouldn’t have been feasible… that’s why the organizers resorted to Silent Arena, providing a set of headphones to each attendee. A simple switch from red to green to blue light, and the headphone changed channel to one of the three talks going on at the same time. We were a bit skeptical at the beginning, but the solution proved very effective and worked seamlessly, allowing people not to miss a word even while having a coffee break. Here’s a picture of how NOT to use the headphones:
The first to get the ball rolling was Rebecca Franks from Johannesburg, South Africa.
Her inspirational talk about continuous improvement, learning and sharing was a great way to start the day with the right vibe!
In her talk, Francesca explained the project she worked on during her PhD Biomedical Engineering.
Her team has developed a platform for continuous monitoring of sedated patients; this platform, based both on a local server, Android devices and cloud services, allows physicians to monitor the values and rates of anesthetic, painkiller and sedatives administered to patients, and accurately increase or decrease infusion as needed.
In addition to having a practical and immediate value, the patient data are then saved and available on the cloud platform Pryv, and go in time to enrich the project database.
A very interesting project, which shows the potential of Android in a context as delicate as surgery.
In the summer of 2017, a new flavor of Bluetooth technology was introduced: Bluetooth Mesh Networks.
Martin Woolley presented a roundup of the concepts that are the foundation of this technology, and offered possibile applications to cover entire buildings using Bluetooth meshes, that allowed communication between different devices over distances far longer than the standard Bluetooth.
First of all, they underlined the current status of this set of technlogies: we are yet at the earlier stage, and even if things are evolving quite rapidly, we cannot say for sure that they are working as expected, at least not all the times.
They made us a practical examples; there put together a simple app that allows people to find infos about a conference (schedule, speakers and so on), using well-know technologies a Tensor Flow, Firebase and Dialog Flow.
A talk is not enough to learn a wide topic like this one, but in this session we learnt for sure a little bit about this new (and exiciting) technology.
Maria put together a nice collection of advices for developers in search of the right library to include.
She remarked how to deal with external dependencies, how to decide when it’s good have a thirdy-part library in your project and how to choose the right one based on common health indicators (like how many updates and contibutors, stabilty of the APIs and so on).
She also reminded us how to deal with licenses: we often ignore them, especially when using open-source code, but this can lead us into troubles.
A nice recap, we appreciated it.
David Hogue, UX Design Lead at Google, held the keynote for the second (and final) day of droidcon.
He shared with us his experience in aiming for the best design solutions. He gave tips on how to recognize unneeded complexity in a design, explained many good reasons why simplicity should be a goal (and when, on the contrary, too much simplicity could be a problem), and some techniques that can be helpful in making an application simpler, easier to use and – in the end – more successful.
The right amount of simplicity should minimize the effort for the users to reach their goal, while making them confident they are going to get the expected result. On the other hand, too much simplicity can be harmful when applied in the wrong context: e.g. the payment process should not be so fast and simple that users would miss important warnings about the product they are buying. Balancing is not an easy task, and David’s tips can be precious.
Native apps or cross-platform development? The newest answer to this dilemma is: neither! And both!
Kotlin/Native might not be mature enough for all environments yet, but it’s growing fast, and the opportunities it’s opening are very promising.
Marcin Moskała showed us the architecture of a multi-platform Kotlin project, that allows sharing code for multiple target platforms: web, Android, iOS. The choice is between a native, faster development targeting different platforms (Kotlin/Native, Kotlin/JS, Kotlin/JVM) and a faster execution with specific native libraries and solutions, using Kotlin/Native for all target environments.
Lorenzo Quiroli came to the rescue of all Kotlin beginners with a set of useful tips and tricks, including idiomatic constructs that we’d better learn.
He gave several interesting and helpful suggestions, like: did you know you can use
@JvmStatic and their friends to improve the readability of a mixed codebase when introducing Kotlin in a Java environment? And what about Kotlin smart cast and why do
var declarations break them? And what’s the difference between a field in a companion object and a top level
const val? Have a look at his presentation for even more tips.
Stefan May explained some of the magic behind Gradle and used Kotlin DSL to create a Gradle plugin.
Very interesting behind the scenes peek, useful to better understand what happens in the mysterious world of Gradle.
Android KTX are a set of Kotlin extensions for Android app development.
Roberto Orgiu explained many of the available functions with clear examples, going in depth with some “behind the scenes” peeks about the main features of the language that made this possible.
Among the others: how to manage animations, edit preferences, destructuring colors in their components, and much more.
The penultimate Kotlin-centered talk of the day came from Fabio Collini, Google Developer Expert from Florence.
Starting from the shortcuts all Kotlin neophytes (should) have learnt to love and use when they want to convert a Java class into an exquisite Kotlin file in IntelliJ Idea (
Alt+Shift+Ctrl+K, depending on your O.S.), Fabio showed us there is much more to Kotlin than just a few cosmetic syntax changes.
From data classes to collections, from companion objects to asynchronous code and delegates, the rabbit hole is very deep.
Kotlin Coroutines are still quite new (they are still an experimental feature, in fact).
Erik Hellman introduced us to the power of this programming model, showing how they work in abstract and in practice.
A much more linear approach to managing the subtleties of asynchronous programming, without incurring in the dreaded callback hell: very interesting!
We all love testing, right?
Well, maybe we do not always love writing tests, but we sure love having them to save us from countless hours of debugging.
Zac Sweers had a lot of suggestions about ways to make our tests more useful, manageable and meaningful.
How, why and what has lead us to the Milan Kotlin Community Conference.
Racconto del camp aziendale svoltosi a Pontida, agriturimo Polisena
4o articolo sul mondo Vert.x a cura di Marco
3o articolo sul mondo Vert.x a cura di Marco
2o articolo sul mondo Vert.x a cura di Marco
NoSlidesConf: una conferenza diversa dal solito
Racconto della conferenza presso l'università degli studi Carlo Bo di Urbino
#IAD17: Racconto della giornata di unconference presso l'Università degli Studi Carlo Bo di Urbino
Racconto del camp aziendale svoltosi all'agriturismo La Camilla
Resoconto del camp aziendale svoltosi all'Oasi di Galbusera Bianca
CloudConf 2017 a Torino. Come è andata?
Il racconto della giornata al Mini Italian Agile Day tenutasi a Vimercate.
Nel week-end del 25-26 novembre 2016 si è svolto il Codemotion Milano 2016.
Francesco Sacchi e Ferdinando Santacroce ci raccontano com'è andata.
Il racconto della nostra giornata alla Angular Conf 2016 a Torino, sia come spettatori e soprattutto come sponsor.
Un racconto di come è andata la nostra giornata di team building, tra sorrisi e battaglie ;)
Cronistoria sulla nostra partecipazione alla 5^ edizione della Node.Js Italian Conference, con tante belle foto, stickers e...leggete :)
In questo breve intervista viene presentata Intré e il suo innovativo approccio allo sviluppo di software.
Primo post sulla programmazione in Scala dedicato a future e promise, due costrutti fondamentali per la programmazione concorrente.
Questa è una guida passo passo su come esporre dati live da un'applicazione C# console ad un web browser usando le WebSocket. L'esempio è stato testato su Windows 7.
Se state cercando di inviare una Push Notification al vostro iOS6 iPhone/iPad usando Sencha Touch 2.2 probabilmente avrete incontrato diversi problemi. In questo articolo vedremo passo passo come configurare i certificati, impostare il file Sencha package.json ed inviare una push notification con uno script PHP o C#.
E' possibile programmare script in Atlassian Jira usando Groovy. Questi script possono essere eseguiti allo scattare di un evento come alla creazione di una issue o al suo aggiornamento. Sfruttando questo principio vediamo come creare uno script che crea i sub-task in automatico alla creazione di una Issue.
Questo è un breve test di come è possibile controllare Lego Mindstorm con Cloudfoundry usando HTML5 e WebSockets.
Questo articolo descrive come intercettare l'interrupt GPIO di una beagle bone e aggiornare, via web sockets, una pagina web usando node.js.
Come controllare e monitorare i device usando una piattaforma Cloud? La soluzione è stata presentata al Graphical Web 2012 a Zurigo.