Throughout 2017, it was our great honour (and pleasure) to go up on stage at a variety of different events and conferences, where we shared from our coding expertise with dev-communities world-wide. Here's a quick digest of some of the talks that our developers delivered. Enjoy!
Starting with our Back-end developers. This year we shared our deep Back-end insights around the world on topics such as: SSR, Scala, Data, Event-Sourcing and Testing. Here are a few highlights:
Future of Serverless
// Yoav Abrahami (yoavabrahami), XPDAYS 2017, Kyiv
In 1998, James R. callan wrote a book titled "Collaborative Computing With Delphi 3", in which he asserted that with technology, predicting the future is now possible. This is the book from which Yoav learned about Micro-Services Architecture, way before the buzzword became popular. Four years ago, we made another prediction in the serverless space; Given recent events and the fulfillment of this prediction, Wix is taking the risk of predicting the future of serverless computing and where it should be 4 years from now.
In this talk, Yoav explains what makes a platform for web-sites and web-apps.
Bifurcation Without Schism: The Scala Ecosystem
// Tomer Gabel (tomerg), ScalaDays, Copenhagen
Since the dawn of time, the Scala community has been fairly split in two: functional programming aficionados on one end of the spectrum, and Scala-as-a-better-Java on the other. It is remarkable that the two communities coexist happily, and Tomer believes there is a valuable lesson to be learned here, because the Scala community is also split along a much more divisive axis: the language aficionados looking to exploit the language to its fullest, and the "blue collar" developers striving for simplicity.
Tomer lately came to the realization that this apparent bifurcation of the community, if managed carefully and its challenges tackled head-on, is actually a GOOD thing because it means we get the best of both worlds: crazy-powerful libraries alongside a practical, productive language for your everyday job!
In this talk he outlines what he thinks these challenges are, and hopes to start a discussion on how to solve them.
Experimenting on Humans (or, ‘everything you want from a/b testing’)
// Talya Gendler, XPDAYS 2017, Kyiv
How do you know what 100 millions users like? Wix.com is conducting hundreds of experiments per month on production to understand which features our users like and which hurt or improve our business. At Wix Engineering we have developed our 3rd generation experiment system called Petri, which was open sourced. Petri helps us maintain some order in a chaotic system that keeps changing.
In this talk, Talya explains how it works, and what are the patterns in conducting experiments that have a minimal effect on performance and user experience.
Building Event-Driven Microservices with Event Sourcing and CQRS
// Lidan Hifi (lidanh), Voxxed Days, Belgrade
Lidan leads the notification team at Wix, building awesome products for managing businesses online. In this talk, Lidan shares insights from the past 3 years, as he and his colleagues, designed and implemented several large-scale systems that are based on Event-Sourcing and CQRS.
APIs the New Way
// Volodymyr Tsukur (flushdia), JavaDay UA, Kyiv (RU)
In this next talk, Volodymyr shows GraphQL in real, practical action under Java sauce, elaborate on our experience with GraphQL at Wix, show how it compares to REST, and, like with every other technology, understand its limits and shortcomings.
Redirect HTTP to HTTPS, How Hard Can it Be?
// Marius Vaitkus (marius_vaitkus), Devoxx, Belgium
Rendering a response on both http and https is considered harmful for SEO - you might get penalized for duplicate content. The obvious solution, is to just redirect all urls from http to https. A series of unfortunate events and honest mistakes turned it into a much more exciting journey with lessons to be learned.
Watch Marius, as he shares what we learned along the way.
The Joy of Scala
// Maxim Novak (maximnovak), jeeconf, Kyiv
After joining Wix three years ago, Maxim was exposed to the world of Scala. While the maturity and wide range of tools Java offers, is great, the language doesn’t seem to keep up with market requirements as other languages do. In Scala, the code is much more concise, less ceremonious, immutable by default, combines functional with object oriented, seamlessly interoperates with Java and the JVM ecosystem, and many software engineering patterns are already baked into the language. Most importantly – Scala is FUN!
In this lecture, Maxim exposes you to basics of Scala and shows the benefits of this modern programming language. By the end of this session, you too, will hopefully convert to Scala and never look back.
Building DSLs with Scala - DSLs Are Everywhere
// Alon Muchnick (alon_much), ScalaUA2017, Kyiv
DSLs are everywhere. Have you ever used SQL, Ant or maybe HTML? If so, you were using a DSL, maybe without realizing it. Domain-Specific Languages, or DSLs, provide convenient syntactical means of expressing goals in a given problem domain. A well-crafted DSL communicates the essence and means of the domain it represents in a natural way, so that you don’t even think about its underlying technology. Scala’s rich, flexible syntax combined with its OO and functional features makes writing DSLs a breeze.
In this talk, Alon introduces the concept of DSLs, where to best apply them, their pros and cons, and how to integrate DSLs into your core application. We will see, a practical example of how to lever the tools Scala gives us and build our very own tax calculation DSL.
Understanding Mock Libraries
// Vaidas Pilkauskas (liucijus), jeeconf, Kyiv
Mocking plays an important role in unit testing, and is a great way to isolate your dependencies, that your system under test depends on. Many of us do not question libraries we use, what problems they solve. And some of us have strong opinions on what mocking is, and what it is not.
In this talk, Vaidas retrospects on the current state of popular mocking frameworks like Mockito and JMock and explains how are they different from each other and where their weaknesses are. The second part of the talk is an analysis of what it takes to write a mocking framework from scratch in Java 8. Source code for the example mocking library can be found here.
Scala Refactoring for Fun and Profit
// Tomer Gabel (tomerg), ScalaSwarm, Portugal
By refactoring a real, live codebase, this talk by Tomer will provide you with new tools and increased confidence in Scala. Between the provided examples and the ensuing discussion, you will walk away with a better feel for Scala and how to employ it in the real world.
Decomposing distributed monolith with Node.js
// Vilius Lukošius (@viliusl), Agile, Lithuania
Wix transitioned from monolith to microservices around 8 years ago. Or did it? We have hundreds of microservices in production with teams working on separate independent services or groups of services with decoupled deployments and SLAs. Sounds like a microservice architecture, but there is a dark truth to it – single platform (jvm), shared libraries (framework), fat clients (binary dependencies).
Better known in the industry as a distributed monolith; There is no easy way or incentive to get rid of it, but there is a way! In this talk, Vilius tells the story of how much fun it was, what path we took and where we are now with getting to a proper polyglot microservice architecture.
A Better Approach for Testing Microservices: Introducing Test Kits in Practice
// Maxim Novak (maximnovak), XPDAYS 2017, Kyiv
Micro-services are the new black; everyone is using them. Alas, when your system is composed of many micro-services, testing becomes more challenging. The straight-forward approach for E2E testing no longer suffices and for integration tests it doesn’t even exist. A better way to test in this kind of an environment would be to work with a test kit of the micro-service you are interacting with.
By the end of Maxim's talk, you will learn how to create a test-kit that covers your micro-service. Testing this way will grant you a much higher level of confidence, and will portray a more accurate picture of your assumptions vs. reality. Overall it will make any integration between micro-services easier, from which your team mates will benefit and make your company progress faster.
Rapid Development With Microservices
// Noam Almog (NoamSon), XPDAYS 2017, Kyiv
Micro-services is not a buzzword anymore, it influences our development process as well as our organizational structure. But still, when we start a new service, we want to move fast. Can we move fast while architecting our system correctly? After developing a number of services at Wix, Noam shares some of his experience with developing and architecting systems while keeping a high velocity.
// Dan Shappir (DanShappir), fwdays 2017, Kyiv
Why RTL Support Is So Hard: Detours in Abstraction
// Aaron Greenwald (aaronjgreenwald), BuildStuff 2017, Lithuania
Not all languages are written with your standard, old-fashioned alphabets. Some modern languages, like English, are even written backwards: from left to right! Because Western hegemony has shaped the way the modern world has developed, many of the 500 million people that are native speakers of right to left languages deal with switching between writing systems constantly every day.
Unfortunately, much of the software we all use makes this experience difficult and confusing. This talk, by Aaron Greenwald, is an advanced, abstract talk on what exactly makes supporting RTL text, and particularly bi-directional text, so complicated and just why these problems are still largely unsolved in so much of today’s software.
Screenshots in Automated Testing: When? How? Why?
// Anna Tsibulskaya, Seleniumconf, Berlin
We're using screenshots more and more often in our day-to-day life and of course, in our automation process. When do we need to make screenshots? How to make them as part of automation tests and why we are doing it? This talk, by Anna Tsibulskaya, is dedicated to answering these questions.
Build Your Own React
// Ofir Dagan (ofirdagan2), DevDays 2017, Riga
Ever wondered what’s behind react’s magic? What makes it tick? How does it really work? As developers we are trained not to take anything for granted. Everything that happens has a line of code behind it. If we want to improve as developers, the more we’ll understand how stuff works the better we’ll become.
In this lecture, Ofir explains the main idea behind react and how it works by writing a live simplified version of react during his session.
Test State Pattern – For a Sane & Stable Automation
// Roi Ashkenazi, Selenium Camp, Kyiv
With more breaking points and less stability, E2E tests are very hard to maintain. The automation guild at WixEngineering have reduced the amount of flaky tests by utilizing what we define as the “Test State Pattern”, where every test transitions between states according to its behavior.
In this lecture, Roi talks about the motivation, implementation and discusses how everyone can achieve the same.
Testing & React Native: Lessons from the Battlefield
// Aaron Greenwald (aaronjgreenwald), React Amsterdam
Wix has been about cutting edge web development for a while, and we're all about TDD. When we started mobile with RN, we struggled to replicate our test-heavy workflow that we'd grown to love. We lacked tooling, best practices, and general know-how.
In this talk, you'll hear about what works and what doesn't. You'll find out what methods we tried and rejected so you won't have to make the same mistakes, and you'll get pointers toward approaches that we've found work so you can get started on the right foot.
Detox - Graybox E2E Tests Library for React Native
// Rotem Mizrachi-Meidan (rotemmiz), ReactNext 2017, TLV
In this lecture, Rotem Mizrachi-Meidan presents Detox, our end-to-end testing and automation library for mobile apps.
We, at Wix Engineering, have our own dev-centric culture, built around empowering engineers not only as employees, but as contributing members to the global software community. Watch these lectures to understand more about the unique culture we are crafting.
Dev-Centric Culture at Wix
// Aviran Mordo (@aviranm), GitHub Day, TLV
Many people believe that DevOps is a fresh name for the operations team in your organization or the toolbox you use in order to manage your systems. We believe that DevOps is more than that - it's all about the culture.
In this talk, Aviran presents the problems of the traditional, most common, development pipeline and how we solved them at Wix, from his perspective as a developer. He also gives some proven techniques and tools from our experience, in order to improve the agility and quality of your organization.
// Vaidas Pilkauskas (liucijus), Agile, Lithuania
The concept of clean code is well known by many developers. But, if you ask them what it is, many of them mostly talk about software design. While naming and abstractions are very important in code comprehension.
In this talk, Vaidas focuses on fundamentally important comprehension factor—code structure. The talk covers three main factors that burden reading the code: unoptimized reading experience, visual noise, and obfuscated relations between code parts.
For more engineering updates and insights: