August 16th and 17th
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.
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 and 2018 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 2019 and bring even more great speakers to the big stage!
Come make history with us!
August 16th - Friday
Track A-B Running multiple Nubanks at once
We are going to talk about how we built, maintain and scale our microservices architecture. We are a fast-growing digital bank with a lot of challenges regarding scalability, operability and reliability and we would like to present a structured talk about the key components of our ecosystem and also how they interact with each other.
There’s a few characteristics that are not so usual and gives us a lot of leverage when compared to our competitors, things like Sharding and Homogeneous Codebase, using functional programming as our main paradigm. Also, we build and maintain abstractions that help our engineering team to smoothly operate and constantly improve their microservices, and furthermore the products we offer to customers.
One of things we use to achieve high levels of resilience and reliability is Kubernetes with our own developed tooling and abstractions, which allows us to provide fast interaction cycle and an even more optimized way to deploy services and other infrastructure parts. For instance, we deploy things like Thanos, Prometheus and Grafana using those abstractions to ensure fast-ish manner to release and control software versioning.
By dealing with a regulated environment with high requirements around, specially, uptime, SLAs and SLOs we’ve learned how to properly interact with large and complex distributed systems, keeping core platform systems like Kafka, used among services for asynchronous communication, on the highest levels of reliability.
On daily basis we operate a lot of services, we would like to spread our case, what things we did work, what doesn't work, what drove our decisions. It is a opportunity to learn from others and make it feasible since we use a lot of technologies which are open source to everybody.Track C-D Teaching Clojure
Clojure is a highly trending language with many applications. Many programmers have heard of or studied LISP. Are they willing to learn Clojure and Functional Programming?
Can we teach such hipster stuff on 100+-year-old public institutions? Can we motivate students to return to their college after graduating?
This talk will describe the experience of teaching Clojure and Functional Programming on an extension course in IFSP Campinas, a public institution with more than 20 campuses in the São Paulo state.
Track A-B How GitLab scaled Git access with Go and what we gained from it
Back in the early days of GitLab.com, we've used to run Rails worker processes, Sidekiq background processes, and Git storage on a single server, a typical monolith. As expected, it's easy to deploy and maintain, though really hard to scale. Having a single server means we're only able to scale vertically, which becomes increasingly expensive and limiting.
At a given time, we had to run multiple servers, which meant Git repositories had to be available to all server nodes. For that, we first went for the "quick-win", NFS. It rapidly showed its limitations regarding observability, single point of failure and high latency.
Beside alternative solutions, we decided to slightly redesign the system and create a Go service called Gitaly, which now acts as a "git database" service for GitLab.com.
This talk will go through the history of how we've gradually separated it from the monolith using Feature flags, Protocol Buffers, gRPC and Go.Track C-D Bulletproof API's
In high-availability systems is necessary to deal with inevitable failures. Whether they are temporary or not, we can have a direct impact in the user experience.
Bulletproof API's is a set of practices, techniques, and implementations that focus in providing resilience, identifying the type of failure and making possible to recover quickly, reducing or even eliminating the impact in the user experience.
Some topics that will be covered:
* Circuit Breakers
* How to identify and deal with different types of traffic
* Effective metrics analysis
* A real case and how the techniques were applied
At the end of the talk, it will be possible to understand how resilience approaches can impact the improvement of the users final experience.
An objective view of tools that we have available in the market.
And the importance of identifying temporary failures and how to deal with them.
Track A-B Understanding the role of Artificial Intelligence in the present and in the future
Artificial Intelligence, which was just a distant future, is now part of our daily lives. Alexa, Google Home, Siri, among other assistants, help us with housework and are examples of the participation of robots in our daily life. Drones are confused with birds and cars can drive without our hands touching the steering wheel. If this is our present, what lies ahead?Track C-D Collaborative koloring with Kotlin
The best way to test limits is to challenge yourself. For this talk we wanted to test some limits by mixing the subjects we've been more excited about recently - Kotlin, games and architecture - challenging ourselves to create a collaborative game using Kotlin in the whole tech stack and being able to explain each design decision and approach and, of course, have fun. Let's add some color to Kotlin!
Track A-B Concurrency, Scalability and Transactions -- Myths and Surprises
Concurrency is here to stay. Nowadays most web-servers make use of concurrency in order to reap multi-core hardware benefits. Because of that, our server-side software is getting more and more concurrent. However, there is one piece of *concurrency* I see too many developers ignoring: "the database".
Although relational databases give us ACID properties, this at all doesn't imply race conditions in multi-statement operations.
In this talk we will explore the interaction between massive concurrent servers, databases and transaction isolation. We will explain what isolation is and what are the "real" guarantees we get from them. We will also show some common mistakes and pitfals in ensuring consistency in high concurrent scenarios and, of course, how to avoid them.Track C-D React UI: get hooked!
Track A-B Why your company should have a Developer's Kit and how to build one
Today modern application can be composed of multiple pieces that is not always easy to fit together. From the majestic monolith to the micro-service based architecture, there is also a good chance you depend on multiple daemons with a pleteora of configuration parameters that needs be defined in harmony so you can run a fully capable development environment.
While some approaches like docker composer may be useful to some users, you are making a tradeoff of performance and convenience, by removing the ability to run things natively. You are also making harder for any more advanced debugging techniques on a lower leve of your stack.
In this talk I will show you how you can build a Developer's Toolkit that compromises nothing: performance, convenience still gives you the ability to do system-level debugging, without any docker required.Track C-D Micro-frontends: the golden circle
As a developer, we are always aware of the latest trends and buzzwords in technology. One of the latest that have been surfacing for me in the frontend word is the idea of micro-frontends. In summary, the idea is to apply the same idea of microservices into our frontend code. The first time I heard something about this was on the RubyConf of 2016, the same year that this term appeared on the ThoughtWorks Technology Radar. As our company, teams, and code are growing, we start to face new challenges and that was one of the reasons we started looking into this topic. In this presentation I plan to use the Golden Circle methodology to analyze this topic:
* Why use micro-frontends?
* What is the motivation behind doing it, and when should you use it or not.
* How to implement micro-frontends?
* Which are the technical constraints and the available strategies/libraries to implement it.
* Also how we are researching and experimenting with this on Pipefy.
* What is micro-frontends?
* Knowing Why and How, we can do a recap of what is micro-frontends, its advantages and disadvantages to using in your application.
Track A-B The AI 'Black Box'
As humans we're inherently biased. Sometimes it's explicit and other times it's unconscious, but as we move forward with technology how do we keep our biases out of the algorithms we create? We need to have a conversation about how AI 'Black Box' should be governed and ask who is responsible for overseeing the ethical standards of these algorithms; and the need for gender balance — having access to large and diverse points of view helps to train algorithms to maintain the principle of fairness.Track C-D Data Science in Ruby? Is it possible? Is it Fast? Should we use it?
In this talk we'll review the state of the tools for data science in Ruby!
Python is the "crown jewel" of the data science languages today, but many of us work mostly with Ruby for the business applications, and it is important to use the best tool for each job.
So we'll analyse gems and groups of gems available in Ruby for Data Science
* their performance
* features available
* is ruby is being used for data science at all?
* Should we use it? and when?
* what are the alternatives?
And after this talk you'll have enough information to choose the toolset to use for your next data science project, or event to "add some data science" to your existing project.
Track A-B Evolving Web legacy systems with Microfrontends and Web Components
Itaú Unibanco has one of the largest and oldest internet banking of the world, it has a long old story, a story that we are not always proud to tell about. But we can't just rewrite everything from the ground up, if we want to update it we need to find a way to do it coexisting with the legacy for a long time. This is not a introductory and conceitual talk, that's a story of how are using a microfrontend architecture with the Web Component technology, how we are scaling these tools for thousands of developers working on it at the same time, and finally automatizing everything we could in the way! We hope our story can bring some hope and ideas for other companies out there to deal with their own legacy.Track C-D When Stand-up Comedy Meets Machine Learning
Stand-up Comedy is an art that plays an important role in human history and in recent years it became a trend business in our modern society. Like any other business, this one is also governed by the law of supply and demand, but in this case, the demand is for laughs. To meet this demand in a professional way, comedians are often required to take a step back in art and learn several techniques to better format their show and maximize the chances of success. In this talk, you will be presented to an experimental approach that uses Machine Learning to extract the underlying format of any stand-up performance and create profiles for posterior analysis. With this approach, we can identify interesting patterns that allow us to use it for recommendation systems or simply as an insight generation tool.
August 17th - Saturday
Track A-B DevOps for Blockchain Apps
We know that DevOps is a set of best practices to smoothly deliver project delivery by integrating processes, tools and teams.
This is no different in the blockchain universe.
Let's understand how we can have quality, integration and delivery fluidly in applications, smartcontracts or blockchain projects.
We'll look at some practices and platforms like Azure DevOps and Azure Blockchain Development Kit that can help you with pipeline operations and CI / CD strategies as well.Track C-D GraphQL + Apollo Server + Azure Functions = Magic
Serverless applications have been helping many companies to spend less money on infrastructure, application management and performance by passing the responsibility to their 3rd-party provider platforms. The union between GraphQL and Serverless functions is are a great solution to create applications with no worries about scaling, performance, and maintainability. In this talk attendees will see how to start in the Serverless architecture world by use of Azure Functions platform and expose their services using GraphQL and Apollo Server, providing a rich and secure frontend.
We will take a look at the following topics:
- Introduction to Azure Functions
- Benefits and Drawbacks adopting Serverless architectures
- Adopting GraphQL, Apollo Server and Azure Functions in real scenarios
- Tips and tricks about production experiences
Track A-B Migrating to an Event Sourced system
This is a case-study about migrating a regular app with relational data to an event-sourced system.
We are EmCasa, a real estate startup using react, react native and elixir as our main stack. As a company committed to be data-driven, we chose to migrate to an event-sourced system to be able to capture our data in a immutable and permanent fashion and have flexibility to display in various forms.
This talk will guide the audience through our exploration, decision and migration process with pain points, benefits and actual code examples (bonus: we're open source).
Will also briefly touch and illustrate on topics like CQRS and DDD which supports our migration very well and helps model our data and domain language more accordingly to the business we're trying to model.
A draft of the topics follow below:
- Introduction to our stack
- Frontend: React, Next.js, React Native, Apollo
- Backend: Elixir, PostgreSQL, Absinthe, Phoenix
- Data: Redshift, Metabase
- Motivation to migrate
- First clue: GraphQL and Command/Query segregation
- Pain: Read/Write modelling incompatibilities
- Fits nicely: Event-driven architecture (internally)
- Aims to improve: Domain-modelling and communication with business
- Migrating IDs → UUIDs
- How to provide a "kickoff" migration step
- Thinking about strong/eventual consistency
- Modelling aggregates
- From CRUD → Domain's ubiquitous language
- Talking to the outside world: APIs and integrationsTrack C-D Have a SQL and Eat it Too!
Experience report about using CockroachDB, and how it gives a familiar full-compatible SQL interface on top of a globally distributed database - something that til' some time is only found on NoSQL databases
Track A-B Building .NET software with focus on performance and scalability - a Warren Brasil study case
This talk will explain the main technological challenges (along with their solutions) to build Warren's investment core with two main focuses - performance and scalability. The focus on these two concepts is particularly important because, being a financial institution, Warren has a variety of complex processes running recurrently for an exponentially growing base of customers.
The talk will cover 4 main points:
- The challenges, approaches and gains (losses, also) of migrating from Microsoft SQL Server to Amazon Aurora MySQL database
- How to dose the use of Entity Framework, Dapper and DB procedures to create scalable and performant code
- Why not to use IIS in our Web APIs
- The main differences between the concept of performance in our processing core and the Web APIs
The talk will use the .NET stack to bring all-technology concepts to the table, like the use of cloud databases, Object-Relational Mapping importance, RESTful API performance and how to create applications that perform the same for 100 or 1 million users.Track C-D Maintaining a big open source project: lessons learned
About a year ago, I started to maintain Devise - one of the most popular Ruby Gems available. I had no knowledge of the code and a little experience with open source from a side project I developed myself.
Obviously, this was a very challenging task and I made a lot of mistakes in the process. The good thing is I learned a lot too.
In this talk, I will share with you some of the lessons I learned that I think can be valuable not only for open source but for our day-to-day work too.
Track A-B Dissecting NodeJS - How it works under the hood
NodeJS has grown a lot since when it was created. This enormous growth has led to people using this awesome runtime without even knowing what it is! In this talk we'll dissect NodeJS bit by bit and explain how does this runtime lives and works under the hood.
You'll learn a lot about OPCODES, the V8 engine, implementation details and how this so-called event-loop works after all.Track C-D Back to the Future - with TypeScript
Track A-B Automated Machine Learning
Modeling predictive systems is hard. There is a plethora of Machine Learning algorithms we could try, each of them with several variants — hyper-parameters that we could tune for better results. Moreover, we often can only reach the algorithms' true potential after making transformations in our data that take into account how the algorithm work and how the dataset is structured — a process called feature engineering.
It is not uncommon for Data Scientists in the industry to cut that experimental process short since delivering results fast is often more valuable to businesses than investing a long time often only to achieve small improvements. Beginners with a smaller toolbox might also have a hard time achieving top-notch results.
Having that in mind, we'll show Python packages that automate feature engineering and also model selection with hyper-parameter tuning. That way, many experiments are performed in our behalf, and with their logs in hand we can take quick modeling decisions and do Data Science more effectively.Track C-D s/15 years old TCP Service/Elixir HTTP Microservice/g - Backend for e-commerce marketplace Ad Insertion
On this talk, you'll see the challenges we had at OLX to replace a 15 years old C TCP Service, with lots of memory leaks, using a legacy large database and also unsuitable for maintenance. The new Elixir Microservice had to come without service interruption so there were also rollout challenges with all client platforms like mobile, web and also mass insertion.
Track A-B Goodbye D3, Hello ECharts
If you need data visualization on the frontend, most developers will tell you to use D3. D3 is a great library but it may not always be the best approach for your product. D3 provides a lot of low level tools for visualization but most products don’t really need to build from the ground up. At GitLab, we had a hard time reaching velocity with D3 on the frontend, especially with our smaller team. We researched a lot of other tools and found ECharts to be a great replacement. In this talk, I will share about our journey, how we increased velocity with ECharts and how you can use ECharts for your next data visualization.Track C-D GraalVM for Polyglots: Harder, Better, Faster, Stronger?
It is much faster than usual language setups, has lower runtime overhead. It can be run in databases with no overhead. Let's take a closer look for you to check by yourself if it is or not a good pick!
Track A-B Programming for entertainment: Music and its perpetual inertia
One thing that caught my attention throughout the years were I adopted music and music production as a hobby, is the fact that their technologies are in a constant state of inertia, trying to recreate what was done in the past, and even more than that, pushing itself back into the analog era, all in the name of questionable higher fidelity and easily reproducible warmth and identity.
This talk will not only analyse the current state of technology and programming in the world of music, compare it to the current states on different media, and also present a doorway into programming for musical production, using the JUCE framework, one of the most used frameworks for cross-platform audio applications, together with C++, as a mean of sparking curiosity and interest, to try and push it out of this meaningless inertia, as well as presenting the challenges and required skills involved in it.Track C-D The Day I Reverse Engineered a Gameboy Advance Game
Gameboy Advance was one of the most popular video game platforms of its time and, because of it, many people worked together as a community to study and to document its architecture and develop ROM hacking and other interesting tools.
It turns out that this video game is a fantastic way to start studying reverse engineering: its architecture is very well documented and simpler if compared to the current game console generation – and, of course, it is very fun to work in a game-related project.
So... what do you think of learning reverse engineering through this challenge: developing a level editor for a GBA game called "Klonoa: Empire of Dreams"?
We need to understand the architecture behind ARM hardware, apply reverse engineering in order to discover how the logic of the game works, and then use our front-end knowledge (JS + React.js) to build a level editor.
Track A-B Is There A Needle In The Haystack? Using Python To Narrow Down The Search For Life In Our Galaxy
The Milky Way is a spiral galaxy, but what you might not know is that life in any planet - or moon, or basically anything - that crosses one of the Galaxy's arms is (probably) doomed.
Looking for life in other planets is a herculean task, there are just too many of them. But what if we can look only into those that, like our solar system, swirls calmly around, never crossing the danger zone? That can make the task doable.
Why are the arms dangerous? Why does our sun look safe? What does it have to do with code (hint: it has something to do with Python and galpy)? Well, come aboard and see it yourself.Track C-D Career Abroad - How the best Technologists are conquering the World
Whether you have just started or you are already working in Tech for a couple of years, I’m pretty sure that you have asked yourself the following questions at some point:
* How does a successful career in Tech look like? What are my career options?
* How can I advance my career and take it to the next level?
* How do I become valuable to my company? What separates the best performers from the average performers?
* How can I prepare myself to the upcoming changes in our industry?
* How can I market myself?
* How can I crack the interview process to the best companies?
* How do I negotiate my salary?
* How can I have more autonomy in my job? How can I work 100% remotely?
* How can I get a job abroad?
Back in 2009, I had the same questions, but I could not find the answer to most of them. There was not much out there in Portuguese back then. (Yes, I only got to learn English much later on.)
Today, living and working in New York City for the past 5 years, I would like to share the tips that I wished I had received 10+ years ago when I was starting my career in Tubarão, Santa Catarina, Brazil.
I'm currently writing a book that I plan to launch this year about Career Abroad in IT. For that, I'm interviewing a total of 50 Successful Technologists working on most important Tech Hubs around the world.
This talk will be a summary of my experience and the main lessons that I learned from those 50 professionals.
Topics: Career, Goals, Job Resumes & Interviewing, Soft Skills, Psychology, Personal Knowledge and Productivity, Mastering English as a Second Language.