The IndicThreads.com Software Developer Conference will be held on 3-4 June in Pune, India. Sessions at the conference deal with MicroServices, IoT, Functional & Reactive Programming, Java, Bitcoin, Angular, Http/2, Augmented Reality, Web Tech & more… Click the “Register” link above to grab your seat.
This presentation is about how Augmented Reality is enabling Enterprises to connect the digital and physical world in order to deliver innovative consumer experience. In the past, IT technologies have primarily focused on driving efficiency gains in product development and services for enterprises. Today, digital technologies such as Internet of Things and Augmented Reality are not just revolutionizing every business, but also every aspect of businesses.
There is a lot of buzz on the visible disruptions being brought about by IoT and Augmented Reality in diverse industries. Surprisingly, there is limited awareness on how Augmented Reality coupled with IoT, are fundamentally changing the way enterprises operate and how the products are being created, operated & serviced. Enterprises need both, IoT and Augmented Reality, to be able fully realize the potential of disruptive innovation and compete in marketplace. This presentation will be about the new opportunities developers and IT leaders should think about in the digital era.
There is a lot of excitement about IoT these days. With IoT topping the list of interests from business stakeholders, analysts as well as various vendors, the buzz around it is only set to increase. The use of IoT essentially needs to enable service excellence by differentiation through customer experience. However, in reality, there are still a lot of gaps in understanding when it comes to an enterprise trying to put IoT in practice. One has to think through multiple considerations, both technology and operational, to make usage of IoT a reality in their business.
This session is aimed at discussing the real world problems that enterprises face when it comes to implementing IoT, the technical considerations that ought to be resolved and the end-end architecture of IoT solution to provide business value to customers. This session would discuss the problems such as – How do I collect data from intelligent devices? How do I analyze IoT Data? How do I integrate IoT data & events with enterprise infrastructure? I would like to discuss these questions in the context of two specific use cases – Asset Tracking and Remote Monitoring. This session would also elaborate on the practical considerations such as adopting a phased approach for real world IoT deployments etc.
Currently a search for Security and IoT, throws up a number of ‘fear-mongering’ articles about how bad things can happen, and then there are many that advertise the use of a certain product for addressing security. But very few attempt to explain the security context, at the IoT device level. As hobbyists or budding IoT developers, people are quite confused as to how this applies to their project. So this talk is an attempt to break-down the problem and understand the most common security issues that could surface and the typical solutions for the same. The talk will look at the security problems and their solutions in three contexts: a) remote access of connected devices b) local network access and c) physical access.
Though it is not entirely a new idea, Microservices seem to have peaked in popularity in recent years, what with numerous blogs, articles and conferences evangelizing the benefits of building software systems in this style. The coming together of trends like Cloud, DevOps and Continuous Delivery has contributed to this popularity. Designing, evolving, and versioning a microservice architecture is not trivial, and over time several design patterns and best practices have evolved. Some of the more popular patterns are Circuit – Breaker and Bulkhead.
Although it looks simple and straightforward but there are many aspects to consider while transitioning to microservices. Quite often many teams have failed in this process either because they do not educate themselves on what really means ‘doing microservices’ or by just thinking that using a specific tool suddenly you moved into this new ear. By just using Docker, Kubernetes, Neftlix libs etc you are not doing microservices. It is a far more complex process, that also needs organizational and team changes.
This session provides an overview of patterns and practices, especially considerations for fault tolerance. Some of the areas covered would be:
– What to monitor and how to monitor
– What to do when dependencies fail to respond in time
– How to develop microservices to withstand failure and incorporate fallbacks
– Considerations for a slow or saturated network
– Practical considerations for DevOps
– Overview of tools and techniques for comprehensive criteria for migrating applications to a PaaS.
– Concrete approaches for migrating apps to a PaaS including buildpacks, Service Proxy, Dockerization, Orchestration and Bosh
This session aims to provide tips and tricks for building resilient and fault tolerant microservices.
Micro services are increasingly used to tackle complexity of addressing business requirements. Understanding MicroServices architecture needs some understanding trade off involved in distributed systems. In the talk, I’ve tried to highlight how the model shifts from strong consistency to eventual consistency in Micro services. I will talk about some interesting techniques I’ve used in projects to tackle challenges posed by distributed components. I will also talk about various consistency models( viz. Read My Writes, Consistent Prefix) which developers/architects can used to make interesting tradeoffs. This is talk is going to be on architectural patterns and not related to any specific technology.
Collection Streams, introduced in Java 8, requires a software developer to start thinking in declarative paradigm. For one who has been accustomed to the imperative paradigm, writing declarative code is not immediately intuitive. My goal from this talk to help the attendees make the transition to the new paradigm easy and start harnessing the power of Streams.
– Solving a problem declarative style
– External Iteration and Internal Iteration
– Stream as a Builder
– Intermediate Operations (filtering, slicing, mapping)
– Terminal Operation (reduction and collection)
– Reduction (finding, matching)
– Collection (Collectors, grouping and downstream)
As hardware keeps becoming massively parallel and as modern software development methodologies like Agile keep maturing, programming languages and their runtime environments are attracting unprecedented focus. Programming languages are expected to act as brokers between the solutions to business problems and the hardware environments where these solutions are realised. The one programming paradigm that has been receiving a lot of oxygen in the recent past is that of Functional Programming. In fact, Java’s introduction of lambdas offers quite a significant hint about the times to come.
Functional programming is good old concept. Functional programming languages have existed for around six decades now. It is important to appreciate why functional programming is picking up steam in the current times. Functional languages offer programmers a plethora of features that making programming a very pleasurable experience. What makes the functional paradigm so different from the imperative paradigm? Why is functional programming getting lucrative today? We intend to present a study of popular functional languages – their history, their hallmark features, the state-of-the-art features and where the functional paradigm, as a whole, is poised to go. We also intend to do some live-coding in languages purely functional languages to elucidate certain characteristics of functional languages.
The Go Language has been creating ripples in the server and backend programming world. There are a lot of tutorials that explain the mechanics of using this language for a person who understands either Java, C or Ruby. Learning a new language is not about comparing with the way other languages think, its more about learning a new way of thinking. In this talk, we will discuss the language from the perspective of Go Language specifications writers. We will cover the basics of the language, the strength areas and the published future roadmap.
Termed as one of the biggest advancements in web technology, HTTP/2 is built on top of Google’s SPDY protocol. Its specification was approved and published as a Web-wide standard protocol earlier this year. It aims to make the web faster, more efficient and secure. HTTP/2 improves speed by opening a single connection as opposed to multiple connections, thus reducing additional load on the server. HTTP/2 is binary, rather than text protocol, which makes it more compact and efficient. This reduces the overhead of translating information from text to binary.
HTTP/2 offers various features such as multiplexing, header compression, server push, request prioritization, and security. While the HTTP/2 specification does not require TLS, all major browser vendors have indicated that they will only support HTTP/2 over a TLS connection. This means to take advantage of HTTP/2 will need to be served over HTTPS.
Impact on developers:
The good news is that the HTTP/2 retains HTTP/1.1’s syntax such as http method names, headers and status codes, thus allowing existing applications to be delivered without any modification.
HTTP/2 is a huge step toward making the web faster and more responsive. With major browsers providing support, it’s definitely something to move on to
In today’s interconnected world, which is no longer limited to hi-tech gadgets or computers, smartphones and tablets etc., now the scope is getting extended to even the most ordinary yet smart devices you use in your everyday life. Advanced sensors have made it possible today for any\ every device to become part of the network of physical objects called the Internet of Things. This is the Internet of Things (IoT). Its billions of devices and a trillion connected sensors promise users better experiences with their products because the IoT can supply the data to quickly resolve unforeseen problems.
Testing the Internet of things, thus, refers to the validation process of various aspects related to internet connectivity and hence comes the challenge of maintaining quality. With IoT seeing a massive growth spurt (Gartner predicts that by 2020, the world will have 26 billion devices or more), testing has to expand its horizons to take into account the various ways we are using this technology. And because software drives everything, and software quality is key.
This paper talks about following structured approach to meet quality in IoT applications.
Identify different areas of IoT testing from software QA perspective
Define complexity in ensuring quality of software’s supporting IoT
Define software QA’s Role and scope
Identify essential testing types for IoT Testing
Embrace shift in paradigm from traditional testing to more user centric testing
Distinguish software and hardware testing use cases
Look forward for any opportunity for any tool support and automation techniques
Due to the heterogeneous nature of IoT Services, Solid strategic test planning is required to cover the depth and breadth of IoT testing. Solid strategic test planning is required to cover the depth and breadth of IoT testing. This presentation captures the aspects of IoT that are relevant to software QA organizations. Further, it elaborates the shift in testing approach required in QA in order to meet the customer needs to be successful.
Bitcoin is an interesting new cryptocurrency – a technology that allows anonymous but fully secure and fully decentralized “cash” transactions. If you have been paying attention either in the finance technology industry or the startup funding scene, you’ll know that Bitcoin is getting a lot of hype, and even some of the most conservative technology companies – i.e. banks – have started research efforts related to Bitcoin to ensure that they’re not caught napping if Bitcoin disrupts their industry.
But, there is a far bigger picture here that is important to understand. The core technology underlying Bitcoin is the Blockchain. This is essentially a protocol/algorithm that allows untrusted third-parties to exchange information with each other in a fully secure, fully decentralized way without the fear of repudiation. This has a potential to disrupt many industries and change how we do business in lots of domains – from domain name servers to Government.
In this talk, I will give an overview of what is Bitcoin, how it works, what is the blockchain, what is the fundamental problem is solves, and what are some potential disruptive applications of the blockchain. Specifically, I will be touching on the following aspects:
– The cryptographic algorithms underlying the blockchain, that allow it to be secure and reliable in spite of not requiring any central authority
– The distributed consensus algorithm that allows arbitrary untrusted servers on the internet to agree on the current state of the system
– The Bitcoin transaction language that allows it to be used in creative ways for interesting and complex transactions and contracts
There are no real pre-requisites for this talk; it should be accessible to anyone with a general familiarity with the technology industry and the internet.
Go Language is an emerging hotbed of innovation in the world of web based api programmers. It has the advantage of Google’s backing, but more importantly its design intent of building internet scale applications. This session will cover building a full blown secure web application using the Go Language and third party libraries.
RxJava is a library that helps in writing code using reactive paradigm. When writing programs using RxJava, the hardest part is thinking in Reactive, which requires one to let go of old imperative and stateful habits of programming, and start thinking in a different paradigm. At my work in ThoughtWorks I have been using RxJava for more that six months in production applications. My talk will be based on the knowledge that I gained and lessons that I learnt from my practical experience of RxJava.
My goals from this talk are:
(1) To demystify the reactive paradigms concepts for the attendees and
(2) Provide enough information about the mechanics of RxJava so that attendees can straight away start experimenting with the library
The topics that I will be talking about are:
– Introduction to Reactive Programming
– Creating Observable (the source)
– Creating Observer (the consumer)
– Subscribing (connecting consumer to source)
– Operators (for Transforming, Filtering and Combining)
– Building Resilience (Error handling)
– Using Concurrency (Schedulers)
– Unit Testing Utilities
Areas covered during the talk:
● What is Live stream?
● Some video domain terminology like RTSP, HLS, DVR, Player, Transcoding, Adaptive bitrate etc
● Architecture of the application
● Challenges faced while scaling the application
● Load stats and success stories
● How we used prediction.io for generating recommendations: Recommendation system on Grails
● Use of hadoop and spark for realtime processing
● Better understanding of Video domain based and live streaming applications
● Getting started with Micro services
● How one can quickly move away from Monolith
● Spending less and still not using the Monolith approach
● How one can scale the application quickly to handle load
● On demand scaling : Auto scaling
UnConference is a participant-driven session for short, open discussions on various topics of interest to delegates. A delegate can present a question / make a point in a couple of minutes followed by an open discussion where speakers as well as others from the assembly contribute their views. The Unconference has been working wonderfully well at IndicThreads Conferences, helping delegates crowd source opinions and answers on various topics of intrigue and interest. The topics for the UnConference are decided via listings at the venue.