Pada 26 November,
ScalaConf 2019 , sebuah konferensi profesional untuk para pengembang Scala, akan berlangsung di
Infospace . Mungkin yang pertama di Rusia.
Menjelang acara, kami meminta
Vadim Chelyshov (
dos65 ), kepala ScalaConf 2019 PC, untuk berbicara tentang laporan dan konsep konferensi.

Inilah yang kami pelajari: di konferensi, kami menunggu pengkhotbah pemrograman fungsional, empat laporan berbahasa Inggris, alat baru yang akan menyelesaikan masalah insinyur data, laporan tentang mengapa Scala Plugin tidak kompatibel dengan kompiler Scala, Profesor Haskell, dan banyak pemrograman fungsional. Kami juga berbicara tentang batas-batas pengembangan pengembang Scala, mengapa tidak ada jones di antara mereka, tentang "holivar" antara Scala dan Haskell, dan tentang "gelembung" informasi komunitas. Detail di bawah potongan.
Konsep
Halo, Vadim! Tanpa pertanyaan - ceritakan tentang konsep konferensi?
Saya mengecewakan - tidak ada konsep umum. Kami tidak puas dengan konferensi Scala di Rusia. Tidak banyak kejadian seperti itu yang terjadi sebelum organisasi untuk memikirkan betapa tidak lazimnya kejutan itu. Ini adalah konferensi Scala, dan ada banyak.
Apakah ini berarti bahwa komunitas yang menghadiri konferensi tidak memiliki harapan?Ada harapan. Ini adalah harapan bahwa akan ada laporan dan pembicara keren, dan itu sesuai dengan Scala. Ini adalah harapan bahwa Anda tidak perlu pergi ke laporan terkait tentang Haskell atau Java untuk menghadiri dua setengah presentasi yang saya datangi.
Apakah itu karena ada beberapa konferensi Scala di Rusia?Kita dapat mengatakan bahwa
konferensi itu nol . Ketika saya menulis artikel investigasi tentang gerakan Scala, saya menemukan informasi bahwa beberapa peristiwa terjadi di St. Petersburg. Orang menyebutnya konferensi, tetapi itu adalah mitap - satu trek untuk 3-4 pembicara. Pada bulan September, sebuah pertemuan diadakan, di mana 400 orang dinyatakan dan ini dianggap sebagai konferensi. Tidak ada yang lain. Sisanya adalah mitaps di St. Petersburg, Moskow, sesuatu di Novosibirsk dan hampir nol di kota-kota lain.
Konferensi Scala di Rusia sudah menjadi acara.
Catatan Bagian pertama dan kedua dari penyelidikan. Yang terakhir akan segera hadir - tetap disini.Ternyata ScalaConf 2019 adalah konferensi profesional pertama tentang Scala?Ya, dengan beberapa asumsi. Keunikannya adalah bahwa sebelum itu tidak ada situs khusus untuk Scala. Biasanya ini adalah konferensi Jawa, di mana orang-orang berbatu adalah domba hitam, acara campuran di FP, dan mitaps. Jika ini bukan Moskow atau St. Petersburg, maka mitaps juga tercampur.
ScalaConf 2019 adalah platform berbatu pertama untuk rockies.
Pada rapat umum atau konferensi campuran, pembicara Scala harus menyesuaikan diri dengan audiens, menjatuhkan banyak topik dan mengurangi kerumitan laporan. Presentasi hardcore muncul di konferensi FP, tetapi Anda tidak bisa memberi tahu tentang Scala saja.
Tidak akan ada batasan pada ScalaConf 2019. Hanya Scala, hanya hardcore.
Scala.js
Scala mendominasi dua area: Big Data dan backend. Oleh karena itu, tidak ada tugas mendasar untuk mempersiapkan bagian N dengan sejumlah penutur di masing-masing. Kami melanjutkan dari laporan yang, dipilih yang keren dan diberi label: sesuatu yang lebih tentang backend, sesuatu tentang FP. Pembagian menjadi beberapa bagian bersifat nominal, dan laporan dari blok Bahasa / Tuning akan sejelas dari Big Data. Pembicara akan berbicara untuk semua orang.
Satu-satunya pengecualian adalah Scala.js, yang ditulis beberapa orang, juga di frontend. Lebih sering ini adalah percobaan, lebih jarang keputusan yang bermakna untuk mencapai keuntungan tertentu. Scala.js cocok untuk basis kode kompleks pada Scala jika Anda ingin menggunakannya di dalam browser. Saya melihat contoh kompiler yang baik untuk bahasa blockchain menggunakan alat ini. Pengembang dapat menambahkannya secara interaktif langsung ke browser: Anda menulis dalam bahasa, kompiler memeriksa validitas dan sorotan.

Kami menambahkan laporan “
Scala.js - apakah alat ini cocok untuk Anda? "Agar orang melihat contoh penggunaan. Pengembang fullstack yang menulis backend dan frontend sama baiknya tidak ada. Pengembang rata-rata jarang menulis front-end dan dia tidak ingin mengambil JS atau TypeScriprt. Dia berpikir: “Bisakah saya mencoba Scala.js? Ya, bukan itu aku, tidak ada yang akan mengerti aku. ”
Tidak perlu menggunakan Scala.js ketika ada alat dan perpustakaan dari dunia frontend. Karenanya, sedikit orang yang bereksperimen dengan Scala.js, dan topiknya sangat menarik.
Alexander Sharikhin hanya akan menceritakan tentang pengalamannya menggunakan Scala.js di eLama.
Teknologi niche Scala.js sudah matang, bekerja, dan memiliki komunitas tertentu. Ada beberapa masalah dengan integrasi perpustakaan JS populer, tetapi semua orang yang menggunakan Scala.js dalam proyek nyata merespons secara positif.Evgeny Tokarev, anggota PC ScalaConf 2019 .
Backend
Ada dua laporan di blok ini - tentang pencarian dan pengindeksan dan tentang Akka. Laporan pertama oleh Andrei Korzinev - akankah ada sesuatu seperti "kasus" pada metode bekerja dengan indeks di Auto.ru?Secara historis, mereka pertama kali menggunakan Apache Lucene di Jawa, kemudian membuangnya dan menulis
YoctoDB mereka di Jawa. Sekarang mereka melakukan iterasi ketiga pada Scala untuk kontrol lebih besar atas hasil kueri.

Scala digunakan untuk distribusi, dalam aplikasi multi-threaded dan sangat jarang untuk proyek serupa. Pengembang Scala lebih cenderung berfokus pada kebenaran dan sedikit khawatir tentang kinerja. Untuk tugas rata-rata, pengembang sudah mendapatkan kinerja tinggi tanpa melakukan upaya apa pun.
Proyek Avto.ru adalah salah satu yang menggabungkan kebenaran dan kinerja. Karena itu, laporan Andrei unik. Dia akan berbicara tentang indeks yang kinerjanya penting: byte buffer, varhandless. Laporan format ini jarang. Mesin pencari adalah tugas dari level yang berbeda dan sangat berbeda dari rata-rata.
Beberapa menulis mesin pencari mereka sendiri, bahkan lebih sedikit melakukannya di Scala.
Nikita Melkozerkov akan memberi tahu "secara umum" tentang salah satu pendekatan untuk bekerja dengan Akka?
Dia akan
berbicara tentang Akka Persistence dan FoundationDB . Akka Persistence adalah perpustakaan yang dikonfigurasi untuk Akka dan memungkinkan Anda untuk dengan mudah menyimpan semua acara, menyimpan, mengambil dan tidak khawatir tentang hal itu. Baginya, perpustakaan tambahan ditulis yang menghubungkan Akka Persistence ke basis data apa pun.
Akka Persistance hanya dapat bekerja di luar kotak dengan LevelDB. Semua backend penyimpanan lainnya adalah plugin dari komunitas. Mereka tidak sering diperbarui, dan ada kekhawatiran membawa mereka ke dalam proyek yang serius. Oleh karena itu, sulit untuk memilih dengan apa menggunakan Akka Persistance.
Setahun yang lalu, Apple
membuka perpustakaan Foundation Source OpenDB, dan semua orang bersemangat. Ini keren, terdistribusi, super-benar dan dapat diandalkan karena fakta bahwa setiap malam pengembang mensimulasikan satu triliun tes. Semua orang terinspirasi oleh acara tersebut, dan Nikita menulis plugin Akka Persistance untuk FoundationDB.
Dalam 40 menit Nikita akan berbicara tentang FoundationDB dan keuntungannya, mengapa Cassandra tidak bekerja, tentang Pengadaan Acara, tentang tahapan utama dan fitur penulisan plugin di Akka Persistance. Saya berharap Nikita akan dapat meyakinkan semua orang bahwa untuk memperbaiki atau menulis sebuah plugin untuk penyimpanan yang diperlukan tidak menakutkan atau sulit, dan masalah masalah stabilitas akan hilang.
Pengembangan Pengembang Scala dan Pemrograman Fungsional
Laporan Olga Makhasoeva adalah satu-satunya di soft skill dan itu di blok FP. Bagaimana itu terjadi: soft skill tidak sepenting keterampilan teknis atau masyarakat tidak siap untuk laporan seperti itu?
Pada konferensi Scala pertama, kami tidak mampu membuat banyak kuliah tentang soft skill. Itu akan membuang-buang waktu dan sumber daya. Ternyata kami dapat mengganti orang yang dapat memberi tahu kami tentang sesuatu yang teknis dan berguna dengan laporan yang dapat kami dengarkan di konferensi lain.
Pada saat yang sama, kami ingin menambahkan keynote ke dalam program dan Olga membantu kami. Ceramahnya tentang soft skill, "
Seni Mengajukan Pertanyaan, " muncul dengan sempurna. Dia berdiri dengan laporan tentang AF, karena tidak ada cara untuk membuat blok terpisah untuk itu.
Saya ingin mengajukan hipotesis bahwa pengembang Scala lebih berorientasi teknis.Scala memiliki banyak hal teknis untuk dibicarakan dan ditemukan. Dalam bahasa arus utama, Anda dapat dengan cepat mempelajari suatu bahasa, berkenalan dengan ekosistem dan mencapai batas teknis. Lebih jauh berkembang hanya dalam manajemen, dalam soft skill atau pekerjaan studi di level rendah. Dalam Scala dan FP, ada banyak ruang untuk pendalaman: cara mendapatkan lebih banyak jaminan dari kode, cara menuliskannya dengan lebih benar, singkatnya, lebih cepat dan lebih andal, untuk mengekspresikannya secara lebih ringkas.
Scala memiliki banyak teknik dan pendekatan yang tidak pernah berakhir.
Anda dapat mempelajari bidang terkait, membaca bahasa lain, dan menambahkan yang terbaik ke Scala. Kami memperluas wawasan kami agar lebih mungkin menemukan sesuatu yang bermanfaat dan menarik. Tidak ada konferensi tahun lalu di mana pun mereka berbicara tentang Final Tagless. Setahun telah berlalu, semua orang telah tenang dan melihat pendekatan yang digunakan dalam ZIO. Aliran baru dan segar untuk belajar di FP dan Scala tidak pernah berakhir. Jika Anda melihat cukup dalam, bahkan dalam kerangka satu permintaan tarik Scala, Anda dapat menggali sepanjang hari.
Sumber berita utama adalah obrolan khusus, akun Twitter publik seperti
Scala Center , dan blog individual, seperti tim Akka atau
Scala-lang , yang menerbitkan posting tentang solusi bahasa yang penting. Namun, ada sejumlah besar informasi, sulit untuk mengikuti semuanya. Satu-satunya sumber daya yang menyelamatkan adalah
Scala Times . Ini adalah buletin mingguan dengan intisari posting, rilis, tweet, dan berita di dunia dan komunitas Scala. Saya sudah berlangganan Scala Times selama tiga tahun sekarang. Tapi saya jarang melakukannya, saya melihat-lihat judul dan deskripsi singkat. Ketika dibutuhkan, saya dapat mengingat bahwa saya pernah melihat ini dan mencari, tetapi tidak lagi.
Pada suatu waktu, saya mencoba mengembangkan
intis Scalanews.org . Kami mencoba bekerja dengan informasi sebagai jurnalis: kami mempelajari berbagai sumber, dan bukan hanya Scala Times, membaca, membongkar, menulis eyeliners. Kami ingin pembaca mendapat manfaat dari artikel dan mengingat sesuatu. Tetapi informasinya adalah laut, dan proyek ini secara bertahap memudar.
Di Scala, Anda dapat mempelajari segala sesuatu tanpa batas, tetapi apakah ada langkah untuk tumbuh?Sudah lama ada
sistem gradasi untuk Scala. Tidak diketahui siapa yang diciptakan olehnya, tetapi ini menggambarkan tingkat pengembang: pengguna yang percaya diri, penulis perpustakaan, dan banyak lagi. Pada halaman khusus konferensi John
LambdaConf , level penguasaan konsep dari level 6 hingga 8 dilukis. Ada beberapa level, tapi saya tidak yakin mereka sedang digunakan.
Saya juga memikirkan gradasi pada Juni, Pertengahan, Senior. Apakah ada hal seperti itu?Ya, tapi tidak umum. Jika di lowongan mereka menulis tag, maka ini seniornya. Jarang menengah atau bahkan junior. Seringkali, pengembang yang sudah menulis dalam bahasa lain pergi ke Scala. Mereka beralih ke Scala dengan pengalaman dalam pengembangan, dan ini jelas bukan Juni.
Pengembang tingkat lanjut pindah ke Scala.
Oleh karena itu usia rata-rata pengembang yang tinggi.
Laporan berbahasa Inggris: skandal, rekursi, API
Ada empat pembicara asing di blok pemrograman fungsional. Mari kita mulai dengan John A. De Hus.Semua orang kenal John.

John sangat aktif: menghadiri semua acara, terlibat dalam perpustakaan ZIO dan secara aktif mempromosikannya, ia baru-baru ini tampil di Scala Meetup. John mempromosikan AF dan dia berhasil. Dia adalah master perhatian yang menyambar.
Akibatnya, ia berpartisipasi dalam banyak skandal. Misalnya, pada tahun 2019, beberapa drama dunia terjadi: ZIO dan Scalaz
dikeluarkan dari gedung Scala,
Typelevel.scala melarang John untuk
berpartisipasi dalam proyek mereka, dan
Skills Matter menutup pintu masuk ke semua acara mereka. Travis Brown, yang dikaitkan dengan Typelevel.scala, merilis sebuah pos di mana ia menuduh John atas semua dosa. Acara-acara ini dibahas bahkan oleh orang-orang yang jauh dari Scala, misalnya, di podcast Radio-T.
Dalam arti tertentu, John melakukan semuanya dengan benar - berada dalam tampilan penuh dan dapat mengabarkan AF kepada massa. Dia saat ini menyelenggarakan konferensi Scala di London pada akhir 2019 dan telah mengundang banyak pembicara keren. Pada ScalaConf 2019, ia akan tampil dengan
keynote Snake Oils & Elixirs .
Kisah menarik John bersama Scalaz Sparta. Dia meluncurkan maraton di mana dia menawarkan bimbingan, pengorganisasian, dan membantu menciptakan ekosistem Scalaz untuk pengembang yang tidak terlibat dalam Open Source. 300 orang merespons, kelompok kerja yang berkepentingan dibentuk, 30 repositori dibuka. Hampir tidak ada yang dipecat. Tidak mungkin bahwa orang hanya akan berkumpul dan akan tetap termotivasi untuk menulis perpustakaan yang mungkin tidak diperlukan dalam pekerjaan mereka saat ini.
Valentin Kassas juga berpartisipasi dalam maraton. Mungkin proyeknya akan dirilis dengan sukses - dia masih terlibat di dalamnya. "
Laporan " Valentine akan berurusan dengan pola rekursi. Ini adalah topik untuk tingkat lanjut, tetapi sedikit yang memahaminya. Selama bertahun-tahun, pengembang telah berusaha mengatasi skema. Mungkin Valentine akhirnya akan membantu untuk memahami topik ini.
Konferensi pemrograman fungsional tanpa menyebutkan skema rekursi - uang sia-sia.

Pembicara ketiga adalah
Adam Warski . Dia berpartisipasi dalam Open Source dan proyek komersial, sebagai salah satu pendiri perusahaan pengembangan perangkat lunak. Tahun lalu telah merilis banyak perpustakaan, oleh API, misalnya. Dia mengerjakannya secara kualitatif, mempromosikan di komunitas. Setiap orang yang mengikuti kehidupan komunitas Scala harus mengenalnya.
Pembicaraannya akan tentang perpustakaan Tapir. Ini sangat membantu dengan dokumentasi Swagger. Biasanya sakit menulis Sombong. Hal terbaik yang kami dapatkan dari ini adalah konstruksi mengerikan mengerikan di tumpukan penjelasan, yang mungkin masih tidak sesuai dengan apa yang Anda tulis di sana.
Tapir memecahkan masalah ini dan memberikan deskripsi Swagger secara gratis. Satu-satunya proyek serupa adalah untuk
Oleg Nizhnikov dari ScalaConf 2019 PC, tetapi Tapir lebih PR, karena Adam mahir dalam hal ini.
Tetapi kualitas produk tidak terpengaruh. Anda harus membuat kompromi besar, akan lebih mudah untuk mengatur API untuk mencakup semua kasus dan jari Anda tidak akan terhubung. Adam tampaknya telah berhasil.
Setelah mempelajari bahasa dan memecahkan masalah praktis, pengembang Scala melihat ke arah FP. Selama 4 tahun terakhir, sebagian besar laporan di konferensi asing telah dikaitkan dengan FI dan pendekatannya untuk memecahkan masalah praktis. Oleh karena itu, kami tertarik pada penutur asing - mereka berbicara tentang FP, terutama.Evgeny Tokarev, anggota PC ScalaConf 2019
Pembicara asing terakhir adalah
Wojtek Pitula . Dia bekerja untuk Sony di departemen keamanan informasi. Dalam laporan "
Keajaiban integrasi - ekosistem lebih baik daripada kerangka kerja apa pun " ia akan menceritakan bagaimana ia membuat aplikasi tempat ia meletakkan semua perpustakaan yang berfungsi.
Laporan asing akan dalam bahasa Inggris. Apakah akan ada terjemahan, terjemahan?Tidak, tidak akan terjadi apa-apa. Pengembang terus dihadapkan dengan istilah teknis, membaca dokumentasi, manual, studi dalam bahasa Inggris - ada semua sumber utama.
Kami berasumsi bahwa kita semua mengerti bahasa Inggris.
Jika benar-benar tidak dapat dipahami, maka akan ada kode di layar dan dari sana dimungkinkan untuk memahami apa yang terjadi. Jika tidak sama sekali, maka selalu ada laporan alternatif dalam bahasa Rusia di kamar sebelah.
Hanya tentang alternatifnya. Akankah Daniil Smirnov juga berbicara tentang skema, seperti Valentin?
Hampir. Mereka berdua menulis perpustakaan yang terkait dengan skema. Keduanya menggunakan sumber inspirasi yang sama -
Xenomorph . Tetapi perpustakaan sama sekali berbeda, seperti seperangkat fitur. Perpustakaan Daniel lebih sederhana dan teratur - ambil dan gunakan. Valentine memiliki lebih banyak bel dan peluit, DSL spesifiknya sendiri, lebih banyak fitur dan dia melangkah lebih jauh dari Xenomorph.
Daniel
akan menunjukkan proyek Morphling-nya. Tetapi proyek ini dapat menakuti orang yang tidak siap: menyebarkan tipe dengan lubang, frasa aneh seperti "HMutu" - horor. Oleh karena itu, tujuan dari laporan ini adalah untuk mengatasi ketakutan ini dan menemukan kesederhanaan dan kemudahan penggunaan skema, bahkan dalam bentuk ini.
Untuk tujuan eksperimental, kami sengaja mengurangi jumlah laporan menjadi 20 menit. Laporan Daniel adalah salah satunya. Saya menghadiri acara Daniel baru-baru ini, dan saya dapat mengatakan bahwa dia melakukan pekerjaannya dengan baik karena keterbatasan waktu. Tema-tema Daniel dan Valentine berpotongan, tetapi pergi pada waktu yang berbeda untuk membahas seluruh topik rekursi dan skema.
Alexandra Golubitskaya membandingkan ZIO dan Future. Ini adalah produk John. Apakah mereka terkoordinasi?
Ya tentu saja Alexandra secara aktif terlibat dalam penulisan ZIO, mereka saling membantu dengan laporan. Ketika John menunjukkan beberapa fitur di konferensi, dia berterima kasih kepada Alexander atas persiapannya. Dia juga salah satu penyelenggara acara di London. Sekarang mereka sedang mempersiapkan fitur baru dalam ZIO - chunks. Jika sudah siap untuk tanggal konferensi, maka Alexandra akan
membicarakannya .
Selanjutnya adalah Artem Seleznev dan Scala Tanpa JDBC.
JDBC adalah standar lama yang digunakan dalam bahasa JVM untuk bekerja dengan database relasional. Implementasi spesifik ditulis untuk database tertentu. JDBC tidak berkembang, ini adalah standar tetap dan tidak ada yang bisa menolaknya. Semua orang meludah, marah, tetapi terus mengunyah kaktus - tidak ada alternatif. Ada perpustakaan yang memberikan driver asinkron, tetapi mereka tidak populer. Rob Norris telah mendengar
perpustakaan Skunk , tetapi telah dikembangkan selama lebih dari setahun dan tidak jelas kapan akan dirilis.
Artyom akan
memberi tahu bagaimana cara turun dengan JDBC. Untuk melakukan ini, ia menulis driver-nya "pada lutut" - alat cukup untuk melakukannya sendiri dan dengan gaya fungsional. Dalam laporan itu, ia akan menunjukkan cara menulis driver, dan bahwa "pada lutut" tidak lebih sulit dan tidak lebih buruk daripada yang semua orang pikirkan.
JetBrains, Holivars, dan Big Data
Di blok berikutnya "Bahasa / Tuning" laporan pertama Andrey Kozlov dan Mikhail Mutsianko. Akankah mereka berbicara tentang salah satu produk JetBrains? Dalam program ini, saya menghitung 3 laporan dari 18 pembicara dari JetBrains. Apakah itu terhubung dengan sesuatu?
Saya juga memperhatikan ini ketika saya mulai membuat jadwal grid. Ini terjadi secara kebetulan dan tidak ada yang secara sengaja mempromosikan JetBrains. Perusahaan mempekerjakan banyak orang yang dekat dengan AF, meskipun produk utama mereka bukan tentang itu.
Andrey Kozlov dan
Mikhail Mutsianko sedang mengerjakan Scala Plugin, yang kita semua gunakan. Mereka jelas tidak berlebihan di sini.

Ada masalah lama bahwa Scala Plugin tidak cocok dengan kompiler Scala. Kompiler kode Scala alternatif ditulis dalam plugin agar IDE-nya berfungsi. Oleh karena itu, ada perbedaan dalam produk - di beberapa tempat kode ini praktis valid, benar, dikompilasi oleh kompiler Scala, tetapi dalam IDE itu berwarna merah. Ini membuat frustrasi, tetapi seiring waktu Anda terbiasa, ada lebih sedikit zona merah.
Jelas, situasinya tidak baik, tetapi kompiler Scala bukanlah hal yang termudah. Sebagian besar pengembang tidak menyadari masalah dan tantangan yang dihadapi pengembang IDE. Kemungkinan besar, situasi ini akan berlanjut lebih jauh, tetapi Andrey Kozlov dan Mikhail Mutsianko hanya ingin
memberi tahu sudut pandang mereka. Mereka ingin menjelaskan mengapa ini terjadi, mengapa harus demikian, apa persyaratan untuk kompiler, mengapa menulisnya dan mengapa plugin ditulis seperti itu. Ada upaya untuk mengungkap rahasia ini, mereka datang kepada kami untuk merekam podcast, tetapi masih belum jelas.
Melanjutkan JetBrains dan sedikit lompatan ke Big Data. «» - — , IDE. ?
, Big Data. . : , , , , . .
, - .
JetBrains — . AppsConf . ScalaConf 2019 ?
, « Haskell»
DOT — . DOT, . , «» Haskell Scala. , - , — .
?, :)
, «» Haskell Scala?, . Scala Java — . Haskell Scala. Haskell ( ), Scala , , .
. Scala Haskell .
«» . , - :)
, , Haskell, , , , Scala.
Scala?
, . . , , ensime,
scalafix , fastparse. Scalafix .
, Open Source,
.
, , .
«» GraalVM. , ?
GraalVM . —
Scala Native , Java . , JVM.
-, GraalVM —
. , . . . GraalVM,
, , . , GraalVM. , , , , . .
, GraalVM ?. , GraalVM . . — GraalVM . .
, - GraalVM . . GraalVM « ». , , , . .
? , Big Data?
, . Big Data, , . , ..
Yupana — HBase time-series , . , . , —
Yupana, , .
Open Source .
ScalaConf 2019 . , -. 12 — . , . ScalaConf 2019!