Habits help you manage the complexity of code. You apply existing skill and knowledge automatically to the detail while focusing on the bigger picture. But because you acquire habits largely by imitation, and rarely question them, how do you know your habits are effective? Many of the habits that programmers have for naming, formatting, commenting and unit testing do not stand up as rational and practical on closer inspection. Kevlin Henney examines seven coding habits that are not as effective as programmers believe, and to suggest alternatives.
Welcoming Speech: Hakan Saglam, Peak Games. Heinz Kabutz covers a live coding session on how Java NIO can be used for non-blocking communication and without using too many threads.
Slides: Consider this talk a 45 minute boot camp about libgdx. Mario will introduce you to the overall idea behind libgdx, show you how to create your first project, run and debug it on all supported platforms and introduce the bare minimum of libgdx's API to write a very simple game. After attending the talk you should be well equipped to dive into the documentation and samples of libgdx to start writting your first game!
Chad Fowler recounts the pains and joys of migration. This talks has its bases on the following questions: How do you maintain a radically heterogeneous system with a small group of developers? How do you monitor a fleet of disparate microservices? How do you make it perform acceptably? How does it change the way you think about deployment?
The Free Software Movement campaigns for computer users' freedom to cooperate and control their own computing. The Free Software Movement developed the GNU operating system, typically used together with the kernel Linux, specifically to make these freedoms possible. Free software is the only way to stop your digital devices from directly snooping on you; however, digital surveillance uses other methods too, that must be stopped through political means in order for democracy to be possible.
Keychain, disk encryption, Common Crypto, certificates. Security can be daunting for Cocoa developers. There are so many frameworks filled with words you’ve never heard before solving problems you don’t understand. And why does so much of it have to be in C? The truth is that good security is hard, but the code doesn’t have to be. This session will show you how to best use the many security tools Apple provides. You’ll learn how to properly encrypt with AES, how to make the most of iOS’s device encryption features, how to best manage SSL, and more. If you’re using AES for anything, but don’t know what an HMAC is, you need to attend this session.
Slides: Everyone knows the pain of convoluted code as an application grows and feature after feature is being added. In this talk Peter will let you explore ideas how to grow your project in a healthy, maintainable way, how to manage dependencies, how to design code around testability, how to write plugins and even some practical solutions around the idea of aspect oriented programming. This is all based on a large-scale 150k lines project and Peter will show some production code as well.
This talk presents five partially baked ideas - these are some of my hobby projects that have bubbled up to the surface. I've been playing on and off with the ideas in this talk for the last 40 odd years - Some of the question I've been pondering ask questions like: - How do we store data forever? - How can we add trust to the web? - How can we reduce the entropy of software? - How can we make a personal computation infrastructure? I can't pretend that I have answers to these question, but only a set of half baked ideas as to how they might be solved - and a few small prototypes. Erlang started as a half-baked idea and few small prototypes - so I thought I test some of these ideas and see if any of them gather interest.
Slides: Eric presents ProGuard - the open-source optimizer and obfuscator that is integrated in the Android SDK. ProGuard reduces the size of applications, improves their performance, and makes them more difficult to reverse-engineer. Eric presents some typical results on what to expect from ProGuard, discuss the latest developments and provide some background that should help mobile developers get the best out of ProGuard.
Slides: Chris highlights the benefits and different techniques of doing concurrent programming and show how developers can avoid some obvious and some not so obvious mistakes.
Swift has now been around for almost two years, and the language has evolved. What hasn't changed are the APIs in Apple's SDK you work with every day. As much as you want to embrace Swift, you still must understand the SDK conventions, many of which originated in the Cocoa era. Continuing to write Swift like Objective-C is not ideal or sustainable. Michele Titolo looks at existing patterns and how to make them more friendly in Swift.
Istanbul Tech Talks is a global developer conference gathering engineers for a day of deep-dive sessions on the hot topics in software engineering.
Microservices architecture is one of the most trendy topics in IT these days. Everyone looks at Netflix, LinkedIn or Zalando and tries to be like them. It’s all very good. But at heart of this revolution lie some well known ideas on modularity and decoupling. And guess what? Idea of modular Java applications is also not new. Even term “microservice” has been in use on JVM since many, many years. However, the main technology for modular Java - OSGi - was always struggling to gain proper attention and we’re still waiting for modules in JDK itself. In this talk I’d like to explain (and show during quick demo) why you shouldn’t too easily dismiss both OSGi and Java 9 - in many use cases, with little effort they can give you important benefits, without having to spin hundreds of VMs or containers.
At SoundCloud, each development team operates the systems that they own, and they own the systems that they build. By eliminating dedicated Operations and SRE roles, our engineers have the autonomy they need to iterate fast, while maintaining cohesion and reliability in our platform. Learn how we organise deployment, on-call, shared infrastructure, and the role of core and infrastructure engineering.
Ash Furrow shares his recent real-world experience with Swift as a case study in an evaluation of Swift's production readiness. He provides a chance of taking advantage of the lessons they learned to make the best decisions about Swift. Session Slides:
Performance optimization has always thought to be a fine art as it could not be easily formalized, or constrained into one solid workflow. However, there are common patterns all performance engineers could follow in their investigations. Kirk Pepperdine describes some approaches and tools to analyse modern application performance problems in J2SE and hardware. Session Slides:
In complex and dynamic distributed systems, instrumenting application code to expose suitable metrics is of paramount importance for meaningful whitebox monitoring. But what are suitable metrics? In which ways are they useful? And how do they differ from logging? Using Prometheus as an example for a next-generation service monitoring system, all those questions will be answered. To put the learned lessons into action, Björn Rabenstein instruments a toy HTTP service live on stage.
The animation foundations in iOS are well-designed, intuitive, and powerful. What can we learn about how they are built, the capabilities that they give, and the assumptions that they are built upon, that we can bring to our own software design? Whether we are building apps or SDKs or doing frontend or backend, good framework and API design is universal. Let's learn together from one of the best examples.
So, you now scorn AsyncTasks.Or maybe you've got battle tested patterns for using them. Maybe you have discovered RxAndroid and will just never need to worry about concurrency again. That's great! Do you actually know the details, though? Can you actually distinguish between snake oil and solution? Don't take somebody else's word for it! Take a deep dive into the internals of Android's concurrency constructs, look at the code, and understand them for yourself! In this session, Blake Meike focuses on: * AsyncTasks without the mythology * Looper/Handler: the core of Android Concurrency * IntentServices: palliative, not panacea * Services: Binder, processes and lifecycles
Have you ever needed to access a data source in your application? Trick question! Are there developers who would answer no to that question? Of course not! Join me and I'll walk you through just how quick and easy data access can be with F 's Type Providers. I'll cover connecting to several different data sources using the relevant type providers, as well as when and how to write your own. Before we part, you'll be on your way to type provider mastery!
Slides: Android is now the most popular software platform in the world and millions of people use it in their everyday life. One of the largest challenges for application developers is how to make their applications consume as little network and battery as possible. Although the Android platform has improved a lot over the years, there are still lots of things that developers need to think about. In this session, Erik goes through the different choices and what they will mean to your application. Learn about the latest protocols, Android platform tricks and how to get the most out of an Android device without draining its battery.
Istanbul Tech Talks is an annual international development conference gathering all engineering professionals and tech enthusiasts for a day of deep-dive sessions on the hot topics in software engineering. This year's Istanbul Tech Talks has taken place on April 27, 2015. Session slides could be found at
Istanbul Tech Talks is a global developer conference gathering engineers for a day of deep-dive sessions on the hot topics in software engineering. This year's Istanbul Tech Talks has taken place on April 5, 2016. Session slides could be found at
A story on the journey about how Spotify transitioned from a client-based app to a server-based one. Hector tells more about how they leverage their internal frameworks and how did this framework occurred within their organization which is extremely modular.
Welcoming Speech: Ilkin Balkanay, Peak Games. Saul Mora talks about Object Oriented Function Programming. Functional programming is finally a first class citizen in the Cocoa toolset! But, as you may have heard, Swift is not necessarily a pure functional language. And in embracing the functional paradigm, do you need to throw out your knowledge and experience with Object Oriented programming? Saul Mora shows that it turns out you can have your cake and eat it too! Session Slides:
Istanbul Tech Talks is a global developer conference gathering engineers for a day of deep-dive sessions on the hot topics in software engineering.
Slides: What developers want is localization which is uniform across platforms (Android, iOS, Windows Phone, HTML/5), fully supports static and dynamic phrases, eliminates mixing and matching file types, and integrates seamlessly (largely transparently) into the development process. Welcome to Localization 2.0, the next generation. If you have already undertaken localization, this talk will show you the benefits of Localization 2.0 and how to achieve them. If you haven't begun localization, learn how to avoid the costly shortcomings of outdated localization approaches.
Slides: Max presents TextKit - probably the most significant recent addition to UIKit. iOS 7's new interface replaces icons and bezels with text, all of which is now driven by the new framework. Max covers how TextKit came to be, what it's all about, and, by means of a couple of examples, how things that took weeks before can now be solved in a few lines of code.
Istanbul Tech Talks is the international mobile development conference gathering all engineering professionals, students and mobile enthusiasts for a day of deep-dive sessions on the hot topics in mobile technology.
Some of your users are on mobile browsers that may be more advanced than the desktop browsers of other users, but chances are those phones with their advanced browsers may have similar memory and bandwidth constraints to the computer you threw out or recycled 5 years ago. While as developers we’re finally enjoying the ubiquity of modern browsers accessing the web, it’s the devices themselves that are now creating constraints we always need to consider. The issue with mobile isn’t “Old IE”, but rather battery life, latency, memory and UI responsiveness. In this session we'll discuss best practices to make sure your site performs well, no matter how your user is accessing your content.
Slides: When Artsy released a mobile app we had to re-think how we could translate an ever changing web experience into something small and beautiful. We built it with a tight time-frame, a small team and a collection of ever changing specs and iOS betas. Orta will discuss the ways that they dealt with the aftermath of 3 months sprinting, and 2 months cleanup before another release could happen. How we built the mobile Artsy website simultaneously so that there was always a backup. And finally where the app is now, and how both visually and architecturally the app is changing to slowly become as elegant as the works presented inside it.
Tutorial: Nathan focuses on how developers can code better by defining in a provable way how code should function before it is written. Test-driving code reduces the penchant for writing code developers don't need while increasing productivity on the code they do need, and provides a working model of how each part of the system works, deterring regressions. Don't believe him? Come follow along with Nathan as he walks through testing a simple game before writing a lick of production code.
Acceleration drives changes to an organization’s processes and skills, just as the original shift to Agile from waterfall. Organizations reluctant to address such changes, however, inhibit the acceleration. Indeed, their attempts to accelerate often result in lower morale and flawed delivery; these failures drive conservative (and destructive) attitudes against change. In this talk, Fred George addresses a myriad of drivers for faster delivery.
Building, testing, assembling, and releasing software has become a very demanding and complex process over the past years. Multiple components built in multiple languages, distributed teams in different timezones working on different parts of the system, several stages of quality insurance, various software distribution channels, and so on. At the same time, the pressure to release new versions of the software has also tremendously increased and fast high-quality deliveries have become essential for the survival and success of many products. A suitable platform to build and release your software needs to handle the high complexity of today’s build requirements while at the same time still scaling in terms of performance. Gradle is the most powerful player amongst the build platforms and is chosen by companies like LinkedIn, Netflix, and others that rely strategically on continuous and fast delivery of their software. In this presentation, we will take a look at how Gradle allows you to elegantly model your build requirements, how Gradle manages to scale its performance to very large builds, and how you can get deep insights into the behavior of your Gradle builds. Demos will be given on features like the Daemon, Composite Builds, Incremental Builds, Compile Avoidance, Build Cache, Build Scans, and other features that maybe sound a bit obscure to you right now but whose concepts and application you will soon understand and appreciate.
Nearly a billion people access Facebook on mobile every day. Simon Whitaker tells us more about the challenges of developing at scale for mobile while ensuring people feel safe and secure.
Slides: Niklas introduces and runs demos of RoboVM - a new open-source project with the goal of bringing Java and other JVM languages to iOS devices. The RoboVM ahead-of-time compiler translates Java bytecode into native code that runs directly on the CPU without the overhead of an interpreter. Access to the iOS Cocoa Touch APIs is provided through a Java to Objective-C bridge enabling the development of apps with truly native UIs and full hardware access.
Hugo Domenech-Juarez discusses about the possibilities that Android provides by using BLE to connect to sensors and actuators around you. He shares some tips and tricks learned from building a SDK for interacting with the WunderBar, a BLE enabled starter kit for the Internet of Things, and his experiences on how to make your connections secure and fast. Session Slides:
Spring Boot, the new convention-over-configuration centric framework from the Spring team at Pivotal, marries Spring's flexibility with conventional, common sense defaults to make application development move swiftly and enjoyable. It's ideally suited for building microservices and distributed systems and makes streamlining devops practices simple. Join Spring Boot committer Stéphane Nicoll for a look at what Spring Boot is, why it's turning heads, why you should consider it for your next application (REST, web, batch, big-data, integration, whatever!) and how to get started.
Vincent Garrigues talks about the transformation in the SoundCloud regarding the way they work. As SoundCloud grew, its backend infrastructure got more complex with the addition of many microservices. Ensuring their apps to work with these microservices in production is key to SoundCloud's continuing success. Session Slides:
Every year, with each release of iOS and OSX, Interface Builder gains new features that we could easily have missed out or overlooked. Dimitri Dupuis-Latour goes through all those power features that Interface Builder has to offer, including hidden gems and tips & tricks, so we can build your next- generation UI, with less code and more features. Session Slides:
An agile software development was introduced to focus more on individuals, interactions, working software, customer collaboration and responding to change. An agile team usually consists of 4 to 6 members including product owner, testers, designers, developers and agile coach. It is straightforward for smaller companies to apply. As a company grows, you might wonder how to keep the agile. Spotify has mainly formed agile teams based on features. However, teams’ autonomous could be restricted by an application architecture. We’ve changed an application architecture to support a scaled agile. Several ideas are borrowed from a longest time used architecture, WWW(world wide web). In this talk, we describe our application architecture with lessons.
In this talk, Simon Stewart covers some of the technologies and approaches that Facebook use to allow their engineers to work with confidence and speed on the codebase, while at the same time ensuring solid and timely releases.Every two weeks Facebook releases a new version of their flagship Android application which is one of the most widely used apps in the world. The codebase is worked on by a large engineering team. Session Slides: