Worked with gamedev, hardware, social networks analysis instruments. Is acquainted with Java, Perl and Ruby. Focuses on development of highly loaded backend on Go for more than 2 years. He does GIS & algorithmic solutions implementation.
Being CEO of ITooLabs, he decided to develop a telephone switch using early Go versions in 2012 and didn't regret. Alex found himself in coding, driving his company, architecture designing and speaking at the conferences.
Google Developer Expert on machine learning, a relentless user of Open Source. Former systems programmer, today he pretends that he knows deep learning, and evangelize ML on the source code. Suffers from a lack of generics in Go.
Head of development department at Gett RnD. Started with system programming, he is now engaged in web. Loves to find a middle ground between the desires of business and possibilities of development.
Time;Hall 1;Hall 2
09.00;Registration and coffe.;
10.15;Brad Fitzpatrick. Go: looking back and looking forward.;
11.00;Brian Ketelsen. Repeatable Builds with vgo.;
12.15;Vadim Markovtsev. How to measure the code's mood in a git repository.;Grigorij Eleskin. The pros and cons of Go in comparison with Pony language.
12.45;Elena Grahovac. Automating architecture diagrams.;Alexey Naidyonov. Including a JS interpreter into Go product.
13.15;Marko Kevac. Introduction to s2 geo library with usage examples at Badoo.;Oleg Shevelev. Gometalinter is our everything.
14.40;Dmitry Vyukov. Fuzzing: the new unit testing.;Maxim Ryndin. Product development with Go: a history of one project.
15.20;Jessie Frazelle. 101 Ways to Compile a Go Binary.;Sergey Kamardin. Restarting Go applications gracefully.
16.00;Brian Ketelsen. Go best practices.;Andrey Drozdov. Building search ecosystem with Go.
17.10;Stas Afanasiev. Write your own cryptocurrency in Go.;Vitaliy Levchenko. You write tests wrong.
17.50;Aleksey Akulovich. Networking in Go.;Andrew Minkin. Go + grpc backend for mobile application in production.
18.30;Andrey Smirnov. Creating the effective client library statsd.;Konstantin Cherkasoff. OpenTracing not only for distributed tracing.
Go: looking back and looking forward.
Go best practices
101 Ways to Compile a Go Binary. Learn about the Go linker, interesting bugs and how they were fixed in the Go linker, and fun ways to link and build your applications for different use cases.
Repeatable Builds with vgo.
Fuzzing: the new unit testing. Fuzzing is a software testing technique that involves providing invalid, unexpected, or random data as inputs to a program. This talk covers types of fuzzers, how they work and an existing implementation for Go -- go-fuzz. We will write and run a real fuzzer. Find some bugs in the standard library. Also I will talk about how fuzzers can guess correct CRC checksums in input data, help with regression testing, find logical bugs in code and how we are using fuzzing inside of Google.
Introduction to s2 geo library with usage examples at Badoo. Taxi services, social networks, games, maps - they all regularly collect and process the location of users. I'll introduce you to one of the libraries designed for easy work with coordinates. You will see it's major usage examples, learn how to apply it to high-performance services in Go and know what s2 is used for in Badoo.
How to measure the code's mood in a git repository. Let's take Sentiment Neuron (a model for determining the tonality of text) and Tensorflow's bindings for Go. Then we extract comments from the sources using Babelfish and run the repository's code through Hercules. As a result, by typing a few lines, we will plot the chart describing how the tonality of the development has been changing by the time.
Networking in Go. We will see the options for working with HTTP, TCP, UDP, both from stdlib and some third-party solutions, from high-level to direct syscalls and their options. There will be examples of the code, implementation's comparisons, and required benchmarks.
Creating the effective client library statsd. A step-by-step introduction to creating an effective (both from memory and from the CPU point of views) client library for the statsd protocol. Since in the case of statsd aggregation is performed on the server side, the application sends metrics to statsd at a very high speed, several metrics per each measured action. The monitoring library should not be a bottleneck and should not have a significant impact on application performance.
Write your own cryptocurrency in Go. I will write a proof-of-concept cryptocurrency and show how it works under the hood: generating wallets, creating a transaction on one side, adding the transaction in the block, and confirming of this block by the "miners", receiving this transfer on the other side, etc. The emphasis will be on how Go is applied in this case - its pros, cons, existing solutions and libraries and so on.
Building search ecosystem with Go. In my talk, I'll show the design of search engines on examples, what has already been done in the Go community, compare the performance of the "self-made" search engine in Go and the solutions on the "riot" framework. Also, I will tell you how to build a search infrastructure in the company and quickly put into operation new search algorithms.
Including a JS interpreter into Go product. IToolLabs have a platform which runs on commodity hardware and yet scales easily while delivering a complex business calls processing. This processing is programmed using scripts written in built-in programming language, a dialect of ECMAScript. That was quite an interesting experience to say the least, and we're eager to share it and answer some questions, like: - why would anyone in sane mind want to include an interpreter into Go product? - how to integrate interpreter with Go concurrency? - how to build a cluster with tons of small interpreted tasks to process calls at scale? - how does Go's GC manage to deal with that hell? - oh, and how to deploy and operate all this at five nines? … and many more.
Restarting Go applications gracefully. What is the graceful restart? What is it for? How does it work on Linux? How to implement it in Go? How does the feasibility of the graceful restart depend on a protocol? We will talk about it and processes' wrappers.
Go + grpc backend for mobile application in production. The talk about grpc in a real case: alternatives, issues, advantages, exploitation. We will discus tracing and debugging, how to balance grpc on servers and much more.
Automating architecture diagrams. If your project includes several different services, message brokers and storages sometimes you might want to have an architecture diagram to explain how these resources interact with each other. A whiteboard sketch is probably the simplest way to show it, but this approach has some weak sides: such plans don't provide enough details, and it's hard to keep them up to date. Let's discuss how we can automate the building of architecture diagrams and how to write a tool for it.
The pros and cons of Go in comparison with Pony language. We will talk about the main advantages of Go and compare it with Pony - the main future competitor for the resources utilization of multi-core systems. We will understand what disadvantages Go acquired because of the direction to easy learning ability of many employees in a company and maintaining the overall code style during development. We will learn what advantages can be gained in the future from Pony, which has been developing taking into account Go / Erlang / Scala experience in actor-based ideas.
You write tests wrong. Do you happen to had written code, ran unit tests, and then checked the result manually in different cases? Are there often bugs in your application that unit tests did not catch? Do you have a feeling that your tests work poorly? Or vice versa, do you spend too much time on tests? Many of us were learning to write tests by intuition, on the residual principle. This created the situation that we see around us. I'll tell you what problems your tests might have, how to write tests well, and how to learn to do it systematically. In Go.
OpenTracing not only for distributed tracing. Distributed Tracing significantly simplifies the operation of large systems with multiple microservices. However, this does not mean that tracing is useless for simple services and monolithic applications. The talk will cover OpenTracing as a unified approach to backend services, which is applicable not only to large systems.
Gometalinter is our everything. Oleg will show you how to test code without writing tests (and with them too), learn how to do linters and find out more about your code than before.
Product development with Go: a history of one project. There is a perception that Go as a compiled language with static typing is not convenient enough for product development. In this talk, we will discuss the pros and cons of writing code, unit and component tests with Go. All the examples are taken from a real project, launched by the first team of the Moscow office of Gett RnD.
One of the most popular classifieds site in Russia. We have tens of thousands of rps to the backend, hundreds of millions ads in the database, terabytes of images in the storage, and a powerful system of automated moderation, on machine learning basis. Monthly audience of the project is a quarter of Russian population.
Mail.Ru Group is a leading IT-company and the most intellectual company in Russia. There are over 40 unique businesses with various technologies and internal climate. Mail.Ru Group develops IT-education in Russia and runs technology forums, international Olympiads and hakatons.
A leader in the field of distribution of aviation services in Russia and IT provider for the aviation industry: products and solutions for airlines, selling agencies, air transport, and airports. Now we are starting a new big project in Go!
JetBrains has a passion for making developers more productive: we design intelligent development tools to simplify your challenging tasks and automate the routine ones. We offer top-notch IDEs and team productivity tools, and our latest offering is GoLand, a brand new Go IDE based on IntelliJ Platform
We are performing the complex development of highly loaded portal, from projecting and development of design, to programming and building the project infrastructure, with the use self-learning neural networks technologies.
The largest online cinema in Russia, which audience exceeds 40 million unique visitors per month. Every month users spend on ivi more than 70 million hours and carried more than 250 million video views. Online cinema has more than 62 thousand units of content.
In 2007, Google began working on a new language designed to be efficient at both creating and running software at scale. Two years later, Google released the Go programming language as an open-source project to make programming fast, productive, and most importantly, fun.