September 21st and 22nd

Venue

Rebouças Convention Center - São Paulo City

São Paulo is a huge city. If it's your first time here, check a good guide such as WikiTravel. You'll stay mostly around Downtown.

Goals

The goal is to implement a truly "International" programming-focused conference in Brazil. Meant to introduce Brazilian programmers to the world - and hopefully Latin America in general next time.

We already have many great Brazilian conferences, but all of them are meant just for the Brazilian Audience.

The problem: we only speak Brazilian Portuguese in Brazil. So no one else in the world can see what we are doing.

The solution: it is about time we present in the tech industry lingua-franca: English. Let's start showing off what we are capable to a larger audience.

In 2017 we took the chance to prove that such an event has a place.

And we succeeded!

Now, we are going to improve the formula in 2018 and bring even more great speakers to the big stage!

Come make history with us!

Program

September 21st - Friday
  • To be defined

  • Do you know the most powerful intellectual weapon ever known? Secrecy. On it depended individuals' lives and nations' survival throughout human history.

    Every single transaction we do relies upon cryptography to ensure our data is private. Or, is it?

    The art of war teaches us to rely not on the likelihood of the enemy's not coming, but on our own readiness to receive him; not on the chance of his not attacking, but rather on the fact that we have made our position unassailable. The question is: is there such thing as an unbreakable code?

    This talk walks through the history of Cryptography and the slippery balance between code makers and code breakers. Let's see how each side had the upper hand at different times and explain the most famous ciphers and the process to break them. It expects no previous knowledge on the subject and will work as an entry point to those how may be intrigued enough to pursue the mysterious path of ciphers and codes.

    Track 2 Ruby, Clojure, Elixir comparative study

    Ruby has Rails; Elixir has OTP, Clojure has... rainbow parenthesis?

    After writing my fair share of each, I'm often intrigued by how small details unroll into significant changes in both code style and approachability. Let's take a brief tour on each of these three languages and see how they are similar, where they differ and what they appeal.

    Here I'll share my insights and opinions about those lovely opinionated tools. You might be surprised, as there is more than meets the eye!

  • Track 1 The GDPR impact in database project

    The GDPR will enter into force on 05/26/2018. This law protects the European citizen data and can impact the business of your company. IF the database project is done in order to comply with this law, your company saves time and money.
    Follow me on this survey and see how to create a DB according to GDPR.

    Track 2 Deep Learning - Segmentation, Identification and Classification

    A simple way to learn how to build a knowledge base, reuse a community base, and adapt your learning case by demonstrating the impact of CPU X GPU results, all with python <3!

    The objective of the talk is to demonstrate how to use some tools in python so that the public can understand the steps of segmentation, learning and classification, with the algorithm of search and segmentation selective search, and the network of deep learning with caffe and digits.

  • LUNCH BREAK

  • Track 1 Blockchain + Tracking = Awesome Analytics

    The Blockchain. Mention it and the vast majority of people will think about "bitcoin" or some other cryptocurrency system or, perhaps, with some shady ICO scheme their cousin is cooking up. The reality is however that there are far, far more practical blockchain applications with immediate potential impact to established industries than most of us realize. In this session, we will look into the application of this buzzword to tracking events & reliably generating analytics in situations where there is little to no trust amongst the involved parties or where exact counts map directly to $$$.

    Track 2 Use of graph-oriented database in the detection of fraud in quotas for the exercise of parliamentary activity

    This paper proposes the use of graph oriented databases to detect
    possible frauds in Quota for the Exercise of Parliamentary Activity, and the re-
    lationships between CEAP and open data from TSE regarding donations to 2014
    brazilian elections. The use of these technologies, facilitates the manipulation
    of closely related data, both in terms of query complexity, and information vi-
    sualization. The proposal in question was validated with a case study, using
    the open data of the Quota for the Exercise of the Parliamentary Activity of the
    Chamber of Deputies, and open data from TSE. It was developed an ETL to
    extract the data and fill the database, then the queries were made to detect the
    possible frauds and to obtain information about the data. After that a web system was developed to communicate with the database and extract useful information for the society. Also the system has a collaborative intent, so people can contribute with information such like partnership of deputies with companies, or deputies relationships, so the fraud detection can improve even more.

  • Track 1 Terminal With Your Life

    I think you are living in any terminal tools, such as shell(tcsh, Bash, Zsh and others), REPL(IRB, Python Interpreter and others), MySQL command-line tool, The GNU Project Debugger(GDB) and others. All of them use GNU Readline that is a line editor library with Emacs/vi key binding on the virtual console.

    Unix like operating systems have terminal processing in the kernel and have some layers, such as video driver, keyboard driver, terminal emulator, line discipline and TTY driver. On top of that, you are using terminal emulators, such as Terminal.app, xterm, PuTTY, wsl-terminal, tmux, GNU Screen and others. And then after that, you are living in terminal tools on the system stack.

    I'll talk about the overview of terminal system stack and details of GNU Readline and terminal tools. I'm writing "Reline" that is Ruby's new Readline compatible implementation, and writing some large new features for IRB, and discussing problems of that with Ruby core team. That new features will be released on Ruby 2.6.

    Track 2 Elegant R: Tips from a Software Developer

    R is an extremely productive language for data science. Because of my software development background, I've put a lot of effort in finding techniques and packages to make my code as elegant and concise code. In this presentation we are going to explore some of these techniques, and see how they can be used to improve your code.

    Code hands on will include:

    - Using functions for basic code reutilization
    - Using the with statement to reduce verbosity
    - Using magrittr "pipe" operator for fluent data manipulation
    - Using dplyr for readable data frame manipulation
    - How to organize your common function in reusable R packages
    - Using Python libraries seamlessly with reticulate, directly from R using
    - Using RStudio Addins for easy equation input
    - Using RStudio Snippets for fast "templated" code input
    - Renaming many variables with "find all" in selection
    - Using bookdown as a replacement for Latex when writing scientific essays
    - Quick glimpse over "tidyverse" packages, which make R development easy-peasy

  • Track 1 Scaling customer service

    At Nubank we are building a mass scale financial technology platform. Our goal is to offer products that delight our customers and are easy to use.

    But no matter how hard we try to deliver the best experience to our customers, we can't completely prevent bad things from happening. Sometimes we create bugs on our side; sometimes our UX fails to fully abstract away the complexity of financial systems and that creates confusion for the end user; we even have to deal with failures in banking systems which are completely out of our control, but will eventually affect the experience of our customers.

    Keeping a high level of customer satisfaction with a user base of over 4 million customers (and growing) without necessarily having to hire thousands of support agents is extremely challenging.

    In this talk, I will go over how we use modern technologies and Machine Learning to keep growing our customer base without linearly increasing our headcount and how we package all of that in a good UX.

    Track 2 An Overview of Multiplatform Kotlin

    Since its first stable version, Kotlin stands out for being a modern, concise, and powerful language. Supporting not only the JVM (and the Android platform), its initial support for transpiling to JavaScript, and most recently the native build, Kotlin shows itself as a promising possibility for code sharing between different platforms in a project. In this presentation, we will discover how this works, advantages, possibilities, and limitations of its use today.

  • COFFEE BREAK

  • Track 1 Stop hating your test suite!

    We all know that automated tests are extremely important because, among other reasons, they guarantee code quality and correct application behavior. Despite this, many times we end up with a test suite that, additionally to being hard to understand and maintain, is not trustworthy.
    This talk will show you how to recognize and avoid some of the most common problems that make us hate our tests, as well as give you tips on how to improve them.

    Track 2 Scaling your applications with Kubernetes and Docker

    High availability, high consistency, high disponibility are the popular words when we think about Web Applications but when our application increase, we have many problems and situations to solve. The objective of this talk is show the Kubernetes' power and facility to you can get conquer all of this keywords in your projects, exploring the best of Kubernetes has to you

  • Track 1 AgileVentures - Crowdsourced learning and Software Development as part of a Distributed Team

    Ruby on Rails, EmberJS, Elixir, React, Ethereum- How a group of horizontally-organized developers dedicated to crowdsourced learning and pair programming is developing better software.

    Daily Scrums, almost daily mobbing sessions, contributing to real open-source projects, and knowledge sharing-with people from all over the world.

    My experiences of taking part in a volunteer-driven distributed team.

    Specifically, highlighting the dockerization of the main site that connects new developers/volunteers with other non-profit open-source projects, and how together we made a lasting change of the software.

    Track 2 Writing a simple game in Rust

    Do you want to learn Rust? Already know Rust but it's a little... hm... Rusty? Games are a great way to discover the features of the language and get your hands dirty with it.

    I'm doing this for a while and speaking about it. Already did in JavaScript, Python, Ruby, and now it's time to do it in Rust.

    We will learn some basic concepts of game development and how to implement them in Rust. In the end, we will have a simple but fully functional snake game running.

  • To be defined

September 22nd - Saturday
  • The Return of Software Vulnerabilities in the Brazilian Voting Machines

    This talk presents a detailed and up-to-date security analysis of the voting software used in Brazilian
    elections by more than 140 million voters. It is based on results obtained recently in a restricted hacking challenge organized by the Superior Electoral Court (SEC), the national electoral authority. During the event, multiple serious vulnerabilities (hard-coded cryptographic keys and insufficient integrity checks, among others) were detected in the voting software, which when combined compromised the main security properties of the equipment, namely ballot secrecy and software integrity. We trace the history of the vulnerabilities to a previous security analysis, providing some perspective about how the system evolved in the past 5 years. As far as we know, this was the most in-depth compromise of an official large-scale voting system ever performed under such severely restricted conditions.

  • Track 1 How to Improve UX with Machine Learning: Insights and learnings until now

    The future where machines can think and speak as we humans are increasingly present. Therefore, it is important to explore some of the technical properties and constraints of machine learning systems and how this implies in designing the user experience. How to develop a design approach around these technologies? Also, how to incorporate the power of machine learning into UX work? The idea is to bring insights and notes on these issues.

    Track 2 Put Git to work: increase the quality of your project, and let git do the boring work for you

    Why limit Git for version control only? Git can reduce your work, improve the quality of your Rails projects and even speed up your deployments. All you need is simple to implement integration between Git and your project.
    Run your tests faster, accelerate your CI automation, make your deployments more predictable and error-free. The tips in this presentation will solve hard problems in your project and get more time for you to do what is really important.
    Once you put Git to work for you, you'll have more time for what matters, while your customers get a higher quality software!

  • Track 1 Rescuing GitLab from CSS Bloat

    We’ve all been there. Whether it’s inheriting a codebase with a lot of CSS debt or just careless mistakes from the past coming to haunt us in the present. In this talk, I will share some strategies my coworkers and I have taken when refactoring CSS bloat. Through this talk, you should expect to learn from my mistakes and have a better understanding on what approaches you can do to manage CSS technical debt.

    Track 2 State Machine in Elixir with Machinery

    Great software should be easy to understand and improve, but usually, developers tend to bring unnecessary complexity to the code base. Building a state machine is one of those things that usually brings a lot of boilerplate and overall complexity with it, but what if we had a better and simple way to build states machines while keeping our sanity, simplicity and capacity to easily extend it?

    In this talk we’ll understand state machines:
    - how it’s a well-defined concept that developers all around have been using
    - how implementing it without thinking about it can lead to some really nasty code smells
    - what solutions we have for it in the Elixir ecosystem

    But we won’t stop there, I’ll also share how I have been through it and solved this problem myself by building an opensource library called Machinery, and how it can help you to build nice, clean and expandable state machines while providing you with some great features.

  • LUNCH BREAK

  • Track 1 Building your own flavored Markdown with Ruby

    Markdown is a nice and simple markup language that tries to re-use some earlier plaintext formatting conventions used in emails and documentation, as a markup syntax to convert to many different targets, from the most common: HTML, to the less known LaTeX or as a PDF E-Book writing solution.

    While not all markdown is born the same, few standards exists, but each one with their own set of extensions and quirks. You are going to learn how to build yet another one that suits your own needs, by following the path of GitLab Kramdown.

    Track 2 It's about (run)time -- Elixir beyond the hype

    Elixir is one of the fastest growing programming languages of the current generation. In the last three years of day-by-day work, I see more and more companies adopting it as their primary language, be it for a rewrite or brand new endeavor.

    However, despite the reliable - and fun! - choice, it is not always clear what are the actual benefits of this adoption compared to the broad set of alternatives.

    In this talk, we are going to do a deep dive into what lies beyond the language - the Erlang/OTP runtime - and explore what makes this adoption worthwhile. We will see how the runtime differs from the mainstream industry, which is both an advantage and a liability. No hype, but a responsible engineering perspective.

    Armed with that knowledge, you will be able to make informed choices and decide for yourself if Elixir is, or isn't worth your investment - of time and money.

  • Track 1 Desmystifying compilers by writing your own

    Learning more about compilers is a great way to demystify what happens from the moment you start to build your code to its output. This demystification is a quite good step in becoming a better developer and expanding our horizons; not only this knowledge is important to understand how tools like Babel, virtual machines, and other stuff from our everyday routine work but it also allows us to see in-depth how code optimization, reverse engineering and other obscure techniques are done.

    In this talk, I'll use as a case study a compiler that I'm currently working on to show you how to build one from scratch using Elixir–explaining each phase of a compilation process and how Elixir can help us on this challenge–and, in the end of the day, I'll have obtained your Compilers 101 degree.

    Track 2 Web Security Engineering - Protect all layers of your project

    Practical demonstration of how to identify security issues in all layers of web applications and how to use modern shields.

    Learn the key techniques of web-safe development across all layers of your project. Front / back-end, business layer, databases, blobs and servers. A hands-on lecture that shows security engineering for developers across various web technologies.

    - Engenharia de Segurança web - Proteja todas as camadas de seu projeto

    Demonstração prática de como identificar problemas de segurança em todas as camadas de aplicações web e como utilizar blindagens modernas.

    Aprenda as principais técnicas de desenvolvimento seguro para web em todas as camadas do seu projeto. Front/back-end, camada de negócios, bancos de dados, blobs e servidores. Uma palestra prática que mostra a engenharia de segurança para desenvolvedores em diversas tecnologias web.

  • Track 1 Build Nodejs APIs using Serverless

    Serverless lets you focus on coding and testing instead of provisioning infrastructure, configuring web servers, debugging your configuration, managing security settings, and all the drudgery normally associated with getting an app up and running. In this session, you’ll discover how to use Visual Studio Code and the Azure Functions extension to speed up your work.

    Track 2 I wrote a Ruby Library to help me compose my music album

    One year ago, I started developing a software library, called Coltrane, to help myself dealing with complexness of music theory. It's now included in popular ruby library lists such as Awesome Ruby (http://awesome-ruby.com) and Ruby Toolbox (http://ruby-toolbox.com). It was my first real open source project and during the course of this development, I stumbled upon many issues, dilemmas and questions. I'd like to share the experience and talk about the challenges of translating the music theory to Ruby, software vs art, computer-assisted art, multi-disciplinarity, repeating patterns of mainstream music, and how art software can evolve us into a better society.

  • COFFEE BREAK

  • Track 1 React Native is the new black

    I will talk about React Native replacing native mobile development languages such as objective-c, java and swift.
    Covering some topics of why, how, when and when not replacing them, also i will be showing react native pros and cons.
    My objective in this talk is to show to my audience how React Native can be a good option for their projects.

    Track 2 Out of the JavaScript Box: Front-End Rust Programming

    As WebAssembly achieves ever greater browser adoption, the era where one must write JavaScript or compile to JavaScript to target the front-end is at an end. In this talk, we'll be talking about the advantages and disadvantages of using Rust on the Web, and walk through the development cycle of a simple web app.

  • Track 1 How does your application behaves when everything goes wrong?

    During the last five years, I did some high throughput mission-critical applications. Using an experience of software architecture and resilience I acquired during my career, I tried to apply to these applications.

    To the basics like Request Cache, Timeouts an Retries, to Circuit Breaker, I'll also introduce new architecture and resilience patterns to the audience. The target is to find the closest possible thing like an Unbreakable Architecture for your software.

    All applied to real problems and real software (cases) I did.

    Track 2 How to DESTROY any idea with a little (really, too little) Psychology.

    Steve Blank brought one of the greatest maxims of Design: "No business plan survives first contact with user".
    Getting through many design thinking sessions, it was also great for me to understand how the human brain works in innovation sessions. That is the point of this talk: Understand peoples ideas and BREAK it to the bone with only two Psychology assets: Bias and Fallacies.

    Getting rid of bias and identifying fallacies is vital to lead us to innovation and no matter how technically skilled you are. No matter how many languages and frameworks you know.

    We will talk about UX, innovation, design processes and the most common types of bias and fallacies regarding product or feature conception.

    Technology is social.

  • To be defined