Tag Archive: news

Codemotion Amsterdam – Day 1

Last week was the event, Codemotion Amsterdam 2016. Codemotion is known for organizing conferences having high-quality software content and this was the first time they organized a conference in Amsterdam. It was a two day conference with talks on technology trends like Microservices, Graph data stores and upcoming front-end trends like Redux and React Native etc.  I attended the conference along with my Luminis colleague Jettro who was also a speaker at the conference.


The morning started with a very interesting keynote WWW: World Wide Web, not Wealthy Westerners’ Web by Bruce Lawson (Opera).  The talk gave insights into how the majority of the world is still not connected to the internet, especially developing countries like India, China and countries in Africa have a large potential internet userbase. These developing countries have a good GDP growth thus more and more people are buying smart phones and getting connected to Internet. The talk discussed strategies used in order to make internet browsing affordable in developing countries as internet data plans are expensive and can be upto 10 % of the monthly income of the users in these countries. Image compression and removal of ads by proxy browsers like Opera mini very effectively cuts down on data usage thus helpful for consumers in developing countries. The talk also discussed Progressive web apps, which gives the user an app like experience while still running in full screen mode of the mobile browser. This is something very useful if you are living in a developed country and have a flaky mobile network and an expensive data plan as instead of downloading the complete App you can use a Progressive web app.

After the keynote, there were multiple parallel sessions and attendee could attend anyone based on their interests. I choose the attend the session “Managing Connected Big Data in Art with Neo4j Graph Database” by Lorenzo Speranzoni. The session focussed on graph databases specially Neo4J, and a real life use-case along with a demo. The presenter discussed how important it is to build relationships between data points instead of just collecting them. Currently, most of the NoSql datastores focus on storing large amounts of data and running analytics on it whereas Neo4j specializes in storing relationships as first class citizens. Storing relationships isn’t possible in traditional RDBMS due to tabular data and rigid schema structure thus with the growing surge in Big Data it becomes imperative to have a data store which stores not just data points but their relationships as well.  The speaker presented a nice demo of Neo4J being used to show the relationship between artists and their paintings, the museums that have those paintings and the cities having those museums.  This talk was followed by a talk on Microservices.

“Living on the Edge (Service): Bundling Microservices to Optimize Consumption for Devices with Spring Cloud & Netflix” by Mark Heckler, this talk was focussed on building effective microservices using the Spring stack, especially Spring Boot and Spring Cloud along with the Spring Netflix modules. The talk gave a very brief overview of microservices and the “12 factor app” methodology.  The presenter, Mark quickly turned the talk into a live coding session, which was fun. He explained all major modules of Spring stack like Eureka for service discovery, Zuul for routing / Edge services and Hystrix as circuit breaker for handling failures.  Using these modules he created a microservice based web app and deployed it on his local machine. This session gave a nice overview of various capabilities of spring and netflix components for development and deployment of microservices.

Next, I attended the talk “Sinfonier: How I turned my grandmother into a data analyst” , this talk was about Sinofier which is a visual tool for generating Apache Storm topologies. Using this tool one can create Apache storm topologies. Complex real-time computation pipelines can be created using the visual tool which automatically creates the underlying configurations and the computation code can be provided by specifying a GitHub link.  A demo was given using Shodan as the data source and displaying the relationships within that data using Neo4j. I liked the tool but I feel that it’s still in preliminary stages and needs to have stronger support and contribution from the community in order to be widely adopted. Next talk I attended about React Native for developing cross platform mobile apps.

“React Native – Unleash the power of React in your device”  by Eduard Tomàs. This talk gave a nice overview of the React Native framework from Facebook, key features of the framework were discussed along with some shortcomings as it’s still in adoption phase. React Native can be used to develop cross platform Apps for both iOS and Android. Javascript and other standard web technologies are used by the framework to develop Apps. The framework is built around components, wherein each component would store the functionality and some state as well, which seems like a good idea but doesn’t scale well. To fix this issue React Native implements the concept of “Single source of truth” which means there would be one master state for your application and then the master would propagate that state to the child components. So if there is a change in master component’s state then those changes are propagated downwards to child components. Since child component get their state from master component thus they themselves are easy to test as they are stateless.

In React Native the UI of the built application is native but the UI related code can’t be fully shared between iOS and Android. React API provides components to access key functionalities of Android and iOS platform like Camera, Geolocation etc. In case, the developer needs to access some specific mobile platform features which isn’t yet available in React then they need to create their own module in mobile native code and then use that module in React. After the talk I had a quick chat with the Speaker, he said that most of the major features of mobile platform are available as components in React but still there is work to be done and the React framework still needs to be more mature in order to be widely adopted.

Next talk I attended was “Everything you always wanted to know about highly available distributed databases” by Javier Ramirez. This talk was focussed on various strategies, scenarios and good practices for making sure that distributed databases are always available and fault tolerant. The talk started with describing incidents of service failures of major cloud vendors thus emphasizing “Failures happen quite more often than we think”. It then discussed the common master-slave strategy for data replication and fault tolerance and it’s shortcomings, and how it’s an operation heavy process to replicate data on all slaves and thus leading to scalability of reads but not on writes. The Master-Master strategy was then discussed which has high latency when in synchronous mode but, when in asynchronous mode it give rise to poor conflict resolution. The talk shared the key needs of distributed cluster setup, namely, something that runs on cheap hardware, low latency and is able to grow or shrink fast depending on the load. The talk also provided insights into the tradeoffs inherent in distributed systems owing to CAP theorem.  The next talk I attended was about highly performant REST API design.

Boxcars and Cabooses: When one more XHR is too much” by Peter Chittum (Salesforce). This talk focussed on making REST API design more performant by bundling together of REST calls. The presenter discussed scenarios wherein a client App may need access to multiple resources at the same time, and individual rest calls may prove to be a performance hog thus it “Boxcarring” technique can be a good alternate. In “Boxcarring” multiple calls are batched together which can contain upto 25 sub-requests, failure in one transaction won’t affect other requests in the Batch. This can be changed using a flag field in the request which would cause the failure of the whole batch request even if one sub-request fails.  At the end of the talk, there was short demo showcasing various scenarios including error handling and failure scenarios.

The closing keynote of the first day was “The Most Important Feature You Can Provide to Your Team, Company and Customers” by Leslie Hawthorn, this talk focussed on the “Human” element of software development. Importance of “empathy” as being one of the core values of the organization. Some tips were discussed for building empathy and importance of human communication. The need to be inclusive in your values and expectations and not to have unwritten rules and avoiding assumptions as much as possible. Making it “ok to fail” is also important for organizations to adapt to rapidly changing world.


Luminis DevCon 2016

On Tuesday 19th April, it was Luminis’ Annual DevCon event at Ede Cinemec. It was my first Luminis DevCon and I was looking forward to it. The event attracted technology professionals from varied backgrounds and domains across the Netherlands. Whether one is an experienced front-end developer or a budding data scientist, there were some interesting takeaways for all techies. Apart from being an excellent opportunity to network with industry professionals, the conference also had sessions on latest technology trends like IoT, Microservices and Automation.

Luminis DevCon

The morning started with the opening keynote by CEO of Luminis, Hans Bossenbroek. The keynote emphasized that software development is an art and developers need to continually improve their craftsmanship in order to produce the best products, an analogy was drawn from basketball, in which players spend countless hours to perfect their ball shooting skills. The talk also touched on the gender disparity that exists in the technology sector, and the huge difference in troubleshooting skills of a highly skilled developer and an average developer both having the same job title at various organizations. This was followed by a talk by Chris Moon.

Chris Moon was invited to deliver an inspirational keynote session on challenging our limits and taking ownership of what we do. Chris is an ex-British Army officer who was working for a charity in East Africa and helping them in clearing land mines when he was blown up in the minefield which resulted in losing his arm and leg. Despite his loss, he continues to inspire people by regularly taking part in marathons across the world and delivering talks on how taking ownership of our actions can bring about a positive impact in our life.

After the keynote, sessions there were multiple parallel sessions and attendees could attend any one depending on their interest, I choose to attend the one on Automation testing of the angular front-end by Robert and Jago from Luminis Technologies, the session focussed on “Protractor” which is an end-to-end test framework for AngularJS applications. The session included live programming by the presenters and discussing various strategies related to testing the applications across various browsers and the plethora of tools available for front-end developers for effectively testing all aspects of an angular application.

The next talk that I was really looking forward to was the “Ingest Node” feature of the ElasticSearch. This new feature is part of ElasticSearch 5.0 which is still in alpha version. Here, at Luminis Amsterdam, we have a lot of experience in ElasticSearch technologies and Byron had also recently written a blog post on the same topic. With the help of this new feature we can now change and enrich the documents while they are being inserted in the ES cluster whereas earlier we required a much more complex setup to achieve the same but now using this Ingest node it becomes straightforward to apply various processors (like pipelines of logstash) for enrichment of incoming documents. This talk was followed by lunch and, thankfully, there was some food stuff for vegetarians as well 🙂

After lunch there was another keynote session “History of Programming” by Mark Rendle, it was light humoured and interesting session on the history of various programming languages, their evolution and how it all started. It also discussed some fascinating paradoxes of the computing world and relation between some of the newer programming languages and idioms with the ones of 60s and 70s. This talk was followed by a talk on Data Science.

“Help! They Dumped a Dataset on Our Doorstep” , this talk was presented by Richard Berendsen, who is also my colleague at Luminis Amsterdam, this talk provided insights into various steps required to extract information from a dataset and each step had a correlated code sample. Starting from data cleaning, data exploration, prediction task formulation, evaluation and setup thus the steps every data scientist needs to take in order to extract information which might be of interest for the business. The talk also touched upon the necessary tools like jupyter (python notebook) and various python libraries like panda, numpy and scikit. The talk definitely motivated me to improve my python and data science skills.

For the last talk I choose to attend the talk “KNWU RaceDirector (How I Learned to Stop Worrying and Trust Blackboards)”, this was an interesting post as it discussed how to develop a hybrid web/desktop application. The bicycle racing domain itself presented a challenge for the developers as the domain itself is esoteric with its own set of challenges. The presenter, Angelo, talked about how the application state and rules were created from events coming from the race, use of blackboard pattern which itself is not very common and how technologies like Angular, OSGi, Amdatu along with blackboard pattern came together for the getting the application up and running in a matter of weeks.

After the talks were over there were drinks and an opportunity to network with developers from across the Netherlands, share ideas and their opinions on various talks. It was a day well spent and looking forward to the DevCon next year.

Useful Links

DevCon Program Schedule with Bio of speakers  – https://devcon.luminis.eu/#program 

Github Repo for Help! They Dumped a Dataset on Our Doorstep” – https://github.com/luminis-ams/devcon-2016-rb